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
14
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 }