View Javadoc
1   package emissary.util;
2   
3   import org.slf4j.Logger;
4   import org.slf4j.LoggerFactory;
5   
6   import java.io.IOException;
7   import java.io.InputStream;
8   import java.nio.file.Files;
9   import java.nio.file.Path;
10  import java.util.Properties;
11  
12  /**
13   * POJO for parsing and returning values from a git properties file. The properties file is created during the maven
14   * build process by the git-commit-id-maven-plugin
15   *
16   */
17  public class GitRepositoryState {
18  
19      private static final Logger LOG = LoggerFactory.getLogger(GitRepositoryState.class);
20  
21      private final String tags;
22      private final String branch;
23      private final String dirty;
24      private final String remoteOriginUrl;
25      private final String commitIdAbbrev;
26      private final String commitId;
27      private final String describe;
28      private final String describeShort;
29      private final String commitUserName;
30      private final String commitUserEmail;
31      private final String commitMessageFull;
32      private final String commitMessageShort;
33      private final String commitTime;
34      private final String closestTagName;
35      private final String closestTagCommitCount;
36      private final String buildUserName;
37      private final String buildUserEmail;
38      private final String buildTime;
39      private final String buildHost;
40      private final String buildVersion;
41  
42      private GitRepositoryState(Properties properties) {
43  
44          this.tags = properties.get("git.tags").toString();
45          this.branch = properties.get("git.branch").toString();
46          this.dirty = properties.get("git.dirty").toString();
47          this.remoteOriginUrl = properties.get("git.remote.origin.url").toString();
48  
49          this.commitIdAbbrev = properties.get("git.commit.id.abbrev").toString();
50          this.commitId = properties.get("git.commit.id.full").toString();
51          this.describe = properties.get("git.commit.id.describe").toString();
52          this.describeShort = properties.get("git.commit.id.describe-short").toString();
53          this.commitUserName = properties.get("git.commit.user.name").toString();
54          this.commitUserEmail = properties.get("git.commit.user.email").toString();
55          this.commitMessageFull = properties.get("git.commit.message.full").toString();
56          this.commitMessageShort = properties.get("git.commit.message.short").toString();
57          this.commitTime = properties.get("git.commit.time").toString();
58          this.closestTagName = properties.get("git.closest.tag.name").toString();
59          this.closestTagCommitCount = properties.get("git.closest.tag.commit.count").toString();
60  
61          this.buildUserName = properties.get("git.build.user.name").toString();
62          this.buildUserEmail = properties.get("git.build.user.email").toString();
63          this.buildTime = properties.get("git.build.time").toString();
64          this.buildHost = properties.get("git.build.host").toString();
65          this.buildVersion = properties.get("git.build.version").toString();
66      }
67  
68      public static GitRepositoryState getRepositoryState() {
69          return getRepositoryState("emissary.git.properties");
70      }
71  
72      public static GitRepositoryState getRepositoryState(String gitProperties) {
73          Properties properties = new Properties();
74          try {
75              properties.load(GitRepositoryState.class.getClassLoader().getResourceAsStream(gitProperties));
76          } catch (IOException ie) {
77              LOG.error("Failed to get repository state", ie);
78          }
79          return new GitRepositoryState(properties);
80      }
81  
82      public static GitRepositoryState getRepositoryState(Path gitProperties) {
83          Properties properties = new Properties();
84          try (InputStream propertiesStream = Files.newInputStream(gitProperties)) {
85              properties.load(propertiesStream);
86          } catch (IOException ie) {
87              LOG.error("Failed to get repository state", ie);
88          }
89          return new GitRepositoryState(properties);
90      }
91  
92      public static String dumpVersionInfo(GitRepositoryState gitRepositoryState, String applicationName) {
93          return String.format("%s Version: %s - built on %s - git hash: %s", applicationName, gitRepositoryState.buildVersion,
94                  gitRepositoryState.buildTime, gitRepositoryState.getCommitIdAbbrev());
95      }
96  
97      public String getTags() {
98          return tags;
99      }
100 
101     public String getBranch() {
102         return branch;
103     }
104 
105     public String getDirty() {
106         return dirty;
107     }
108 
109     public String getRemoteOriginUrl() {
110         return remoteOriginUrl;
111     }
112 
113     public String getCommitIdAbbrev() {
114         return commitIdAbbrev;
115     }
116 
117     public String getCommitId() {
118         return commitId;
119     }
120 
121     public String getDescribe() {
122         return describe;
123     }
124 
125     public String getDescribeShort() {
126         return describeShort;
127     }
128 
129     public String getCommitUserName() {
130         return commitUserName;
131     }
132 
133     public String getCommitUserEmail() {
134         return commitUserEmail;
135     }
136 
137     public String getCommitMessageFull() {
138         return commitMessageFull;
139     }
140 
141     public String getCommitMessageShort() {
142         return commitMessageShort;
143     }
144 
145     public String getCommitTime() {
146         return commitTime;
147     }
148 
149     public String getClosestTagName() {
150         return closestTagName;
151     }
152 
153     public String getClosestTagCommitCount() {
154         return closestTagCommitCount;
155     }
156 
157     public String getBuildUserName() {
158         return buildUserName;
159     }
160 
161     public String getBuildUserEmail() {
162         return buildUserEmail;
163     }
164 
165     public String getBuildTime() {
166         return buildTime;
167     }
168 
169     public String getBuildHost() {
170         return buildHost;
171     }
172 
173     public String getBuildVersion() {
174         return buildVersion;
175     }
176 }