1
2
3
4
5
6
7
8
9
10
11
12 package org.jenkinsci.plugins.darcs.cmd;
13
14 import hudson.util.ArgumentListBuilder;
15 import org.apache.commons.lang.Validate;
16
17
18
19
20
21
22
23
24
25
26
27
28 public class DarcsChangesBuilder extends DarcsBaseCommandBuilder implements DarcsCommandCreator {
29
30
31
32
33 private static final String COMMAND = "changes";
34
35
36
37 private String repoDir = "";
38
39
40
41 private boolean xmlOutput;
42
43
44
45 private boolean summary;
46
47
48
49 private boolean count;
50
51
52
53 private int last;
54
55
56
57
58
59
60 DarcsChangesBuilder(final String darcsExe) {
61 super(darcsExe, COMMAND);
62 }
63
64
65
66
67
68
69
70
71
72
73 public DarcsChangesBuilder repoDir(final String directory) {
74 Validate.notEmpty(directory);
75 repoDir = directory;
76 return this;
77 }
78
79
80
81
82
83
84 public DarcsChangesBuilder xmlOutput() {
85 xmlOutput = true;
86 return this;
87 }
88
89
90
91
92
93
94 public DarcsChangesBuilder summary() {
95 summary = true;
96 return this;
97 }
98
99
100
101
102
103
104
105
106 public DarcsChangesBuilder count() {
107 count = true;
108 return this;
109 }
110
111
112
113
114
115
116
117 public DarcsChangesBuilder last(final int amount) {
118 if (amount < 1) {
119 throw new IllegalArgumentException("Amount must not be less than 1!");
120 }
121
122 last = amount;
123 return this;
124 }
125
126 @Override
127 public DarcsCommand create() {
128 final ArgumentListBuilder arguments = createArgumentList();
129
130 if (repoDir.length() > 0) {
131 arguments.add(String.format("--repo=%s", repoDir));
132 }
133
134 if (count) {
135 arguments.add("--count");
136 return new DarcsCommand(arguments);
137 }
138
139 if (xmlOutput) {
140 arguments.add("--xml-output");
141 }
142
143 if (summary) {
144 arguments.add("--summary");
145 }
146
147 if (last > 0) {
148 arguments.add(String.format("--last=%d", last));
149 }
150
151 return new DarcsCommand(arguments);
152 }
153 }