Added
Link Here
|
0 |
- |
1 |
/* |
|
|
2 |
* Copyright (C) 2011, François Rey <egit_@_francois_._rey_._name> |
3 |
* and other copyright owners as documented in the project's IP log. |
4 |
* |
5 |
* This program and the accompanying materials are made available |
6 |
* under the terms of the Eclipse Distribution License v1.0 which |
7 |
* accompanies this distribution, is reproduced below, and is |
8 |
* available at http://www.eclipse.org/org/documents/edl-v10.php |
9 |
* |
10 |
* All rights reserved. |
11 |
* |
12 |
* Redistribution and use in source and binary forms, with or |
13 |
* without modification, are permitted provided that the following |
14 |
* conditions are met: |
15 |
* |
16 |
* - Redistributions of source code must retain the above copyright |
17 |
* notice, this list of conditions and the following disclaimer. |
18 |
* |
19 |
* - Redistributions in binary form must reproduce the above |
20 |
* copyright notice, this list of conditions and the following |
21 |
* disclaimer in the documentation and/or other materials provided |
22 |
* with the distribution. |
23 |
* |
24 |
* - Neither the name of the Eclipse Foundation, Inc. nor the |
25 |
* names of its contributors may be used to endorse or promote |
26 |
* products derived from this software without specific prior |
27 |
* written permission. |
28 |
* |
29 |
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND |
30 |
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, |
31 |
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
32 |
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
33 |
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR |
34 |
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
35 |
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
36 |
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; |
37 |
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER |
38 |
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, |
39 |
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
40 |
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF |
41 |
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
42 |
*/ |
43 |
|
44 |
package org.eclipse.jgit.pgm; |
45 |
|
46 |
import java.text.MessageFormat; |
47 |
import java.util.Collection; |
48 |
import org.eclipse.jgit.api.Git; |
49 |
import org.kohsuke.args4j.Option; |
50 |
|
51 |
@Command(usage = "usage_Status", common = true) |
52 |
class Status extends TextBuiltin { |
53 |
|
54 |
@Option(name = "-u", usage = "usage_showUntracked") |
55 |
private boolean showUntracked = false; |
56 |
|
57 |
@Override |
58 |
@SuppressWarnings("boxing") |
59 |
protected void run() throws Exception { |
60 |
org.eclipse.jgit.api.Status status = new Git(db).status().call(); |
61 |
Collection<String> added = status.getAdded(); |
62 |
Collection<String> changed = status.getChanged(); |
63 |
Collection<String> removed = status.getRemoved(); |
64 |
Collection<String> modified = status.getModified(); |
65 |
Collection<String> missing = status.getMissing(); |
66 |
Collection<String> untracked = status.getUntracked(); |
67 |
int nbToBeCommitted = added.size() + changed.size() + removed.size(); |
68 |
if (nbToBeCommitted > 0) { |
69 |
out.println("# " + CLIText.get().toBeCommitted); |
70 |
printList(CLIText.get().newFile, added); |
71 |
printList(CLIText.get().modified, changed); |
72 |
printList(CLIText.get().removed, removed); |
73 |
} |
74 |
int nbNotStagedForCommit = modified.size() + missing.size(); |
75 |
if (nbNotStagedForCommit > 0) { |
76 |
out.println("# " + CLIText.get().notStagedForCommit); |
77 |
printList(CLIText.get().modified, modified); |
78 |
printList(CLIText.get().removed, missing); |
79 |
} |
80 |
int nbUntracked = untracked.size(); |
81 |
if (showUntracked && nbUntracked > 0) { |
82 |
out.println("# " + CLIText.get().untrackedFiles); |
83 |
printList(CLIText.get().untracked, untracked); |
84 |
} |
85 |
out.println(MessageFormat.format(CLIText.get().summaryStatus, |
86 |
nbToBeCommitted, nbNotStagedForCommit, nbUntracked)); |
87 |
} |
88 |
|
89 |
protected int printList(String prefix, Collection<String> list) { |
90 |
if (list != null && !list.isEmpty()) { |
91 |
for (String filename : list) |
92 |
out.println("#\t" + prefix + filename); |
93 |
return list.size(); |
94 |
} else |
95 |
return 0; |
96 |
} |
97 |
} |