1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43 package org.eclipse.jgit.pgm;
44
45 import java.io.IOException;
46 import java.util.ArrayList;
47 import java.util.List;
48
49 import org.eclipse.jgit.api.DescribeCommand;
50 import org.eclipse.jgit.api.Git;
51 import org.eclipse.jgit.api.errors.GitAPIException;
52 import org.eclipse.jgit.api.errors.RefNotFoundException;
53 import org.eclipse.jgit.errors.InvalidPatternException;
54 import org.eclipse.jgit.lib.ObjectId;
55 import org.eclipse.jgit.pgm.internal.CLIText;
56 import org.kohsuke.args4j.Argument;
57 import org.kohsuke.args4j.Option;
58
59 @Command(common = true, usage = "usage_Describe")
60 class Describe extends TextBuiltin {
61
62 @Argument(index = 0, metaVar = "metaVar_treeish")
63 private ObjectId tree;
64
65 @Option(name = "--long", usage = "usage_LongFormat")
66 private boolean longDesc;
67
68 @Option(name = "--tags", usage = "usage_UseTags")
69 private boolean useTags;
70
71 @Option(name = "--always", usage = "usage_AlwaysFallback")
72 private boolean always;
73
74 @Option(name = "--match", usage = "usage_Match", metaVar = "metaVar_pattern")
75 private List<String> patterns = new ArrayList<>();
76
77
78 @Override
79 protected void run() {
80 try (Gitit.html#Git">Git git = new Git(db)) {
81 DescribeCommand cmd = git.describe();
82 if (tree != null) {
83 cmd.setTarget(tree);
84 }
85 cmd.setLong(longDesc);
86 cmd.setTags(useTags);
87 cmd.setAlways(always);
88 cmd.setMatch(patterns.toArray(new String[0]));
89 String result = null;
90 try {
91 result = cmd.call();
92 } catch (RefNotFoundException e) {
93 throw die(CLIText.get().noNamesFound, e);
94 }
95 if (result == null) {
96 throw die(CLIText.get().noNamesFound);
97 }
98
99 outw.println(result);
100 } catch (IOException | InvalidPatternException | GitAPIException e) {
101 throw die(e.getMessage(), e);
102 }
103 }
104 }