Mercurial > hg4j
annotate cmdline/org/tmatesoft/hg/console/Manifest.java @ 462:ad0322a4af20
Update tests not to fail with Mercurial 2.2 changes, run tests with gradle
| author | Artem Tikhomirov <tikhomirov.artem@gmail.com> | 
|---|---|
| date | Wed, 20 Jun 2012 16:52:39 +0200 | 
| parents | d78cb5ca3053 | 
| children | 6526d8adbc0f | 
| rev | line source | 
|---|---|
| 13 
df8c67f3006a
Basic manifest parsing to analyze what's in there
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 1 /* | 
| 415 
ee8264d80747
Explicit constant for regular file flags, access to flags for a given file revision
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
299diff
changeset | 2 * Copyright (c) 2010-2012 TMate Software Ltd | 
| 72 
9a03a80a0f2f
Command-line frontend moved to separate source root with new package statement
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
64diff
changeset | 3 * | 
| 
9a03a80a0f2f
Command-line frontend moved to separate source root with new package statement
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
64diff
changeset | 4 * This program is free software; you can redistribute it and/or modify | 
| 
9a03a80a0f2f
Command-line frontend moved to separate source root with new package statement
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
64diff
changeset | 5 * it under the terms of the GNU General Public License as published by | 
| 
9a03a80a0f2f
Command-line frontend moved to separate source root with new package statement
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
64diff
changeset | 6 * the Free Software Foundation; version 2 of the License. | 
| 
9a03a80a0f2f
Command-line frontend moved to separate source root with new package statement
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
64diff
changeset | 7 * | 
| 
9a03a80a0f2f
Command-line frontend moved to separate source root with new package statement
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
64diff
changeset | 8 * This program is distributed in the hope that it will be useful, | 
| 
9a03a80a0f2f
Command-line frontend moved to separate source root with new package statement
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
64diff
changeset | 9 * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
| 
9a03a80a0f2f
Command-line frontend moved to separate source root with new package statement
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
64diff
changeset | 10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 
| 
9a03a80a0f2f
Command-line frontend moved to separate source root with new package statement
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
64diff
changeset | 11 * GNU General Public License for more details. | 
| 
9a03a80a0f2f
Command-line frontend moved to separate source root with new package statement
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
64diff
changeset | 12 * | 
| 
9a03a80a0f2f
Command-line frontend moved to separate source root with new package statement
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
64diff
changeset | 13 * For information on how to redistribute this software under | 
| 
9a03a80a0f2f
Command-line frontend moved to separate source root with new package statement
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
64diff
changeset | 14 * the terms of a license other than GNU General Public License | 
| 102 
a3a2e5deb320
Updated contact address to support@hg4j.com
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
74diff
changeset | 15 * contact TMate Software at support@hg4j.com | 
| 13 
df8c67f3006a
Basic manifest parsing to analyze what's in there
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 16 */ | 
| 72 
9a03a80a0f2f
Command-line frontend moved to separate source root with new package statement
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
64diff
changeset | 17 package org.tmatesoft.hg.console; | 
| 13 
df8c67f3006a
Basic manifest parsing to analyze what's in there
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 18 | 
| 299 
45dc79e545f5
Recognize flag options (options with no arguments) in command line sample apps
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
249diff
changeset | 19 import static org.tmatesoft.hg.console.Options.asSet; | 
| 74 
6f1b88693d48
Complete refactoring to org.tmatesoft
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
72diff
changeset | 20 import static org.tmatesoft.hg.repo.HgRepository.TIP; | 
| 19 
40532cdc92fc
Inspector (visitor) for manifest
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
13diff
changeset | 21 | 
| 427 
31a89587eb04
FIXMEs: consistent names, throws for commands and their handlers. Use of checked exceptions in hi-level api
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
423diff
changeset | 22 import org.tmatesoft.hg.core.HgManifestHandler; | 
| 249 
4c3b9f679412
Deprecated HgLogCommand.FileRevision gone, top-level HgFileRevision is bright and shiny replacement
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
143diff
changeset | 23 import org.tmatesoft.hg.core.HgFileRevision; | 
| 143 
b9700740553a
Command line tools parse and respect most of command-line arguments
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
133diff
changeset | 24 import org.tmatesoft.hg.core.HgManifestCommand; | 
| 74 
6f1b88693d48
Complete refactoring to org.tmatesoft
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
72diff
changeset | 25 import org.tmatesoft.hg.core.Nodeid; | 
| 423 
9c9c442b5f2e
Major refactoring of exception handling. Low-level API uses RuntimeExceptions, while checked are left for higher level
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
415diff
changeset | 26 import org.tmatesoft.hg.repo.HgInvalidControlFileException; | 
| 
9c9c442b5f2e
Major refactoring of exception handling. Low-level API uses RuntimeExceptions, while checked are left for higher level
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
415diff
changeset | 27 import org.tmatesoft.hg.repo.HgInvalidRevisionException; | 
| 415 
ee8264d80747
Explicit constant for regular file flags, access to flags for a given file revision
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
299diff
changeset | 28 import org.tmatesoft.hg.repo.HgManifest; | 
| 74 
6f1b88693d48
Complete refactoring to org.tmatesoft
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
72diff
changeset | 29 import org.tmatesoft.hg.repo.HgRepository; | 
| 133 
4a948ec83980
core.Path to util.Path as it's not Hg repo dependant
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
131diff
changeset | 30 import org.tmatesoft.hg.util.Path; | 
| 64 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
22diff
changeset | 31 | 
| 13 
df8c67f3006a
Basic manifest parsing to analyze what's in there
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 32 | 
| 
df8c67f3006a
Basic manifest parsing to analyze what's in there
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 33 /** | 
| 
df8c67f3006a
Basic manifest parsing to analyze what's in there
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 34 * | 
| 72 
9a03a80a0f2f
Command-line frontend moved to separate source root with new package statement
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
64diff
changeset | 35 * @author Artem Tikhomirov | 
| 
9a03a80a0f2f
Command-line frontend moved to separate source root with new package statement
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
64diff
changeset | 36 * @author TMate Software Ltd. | 
| 13 
df8c67f3006a
Basic manifest parsing to analyze what's in there
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 37 */ | 
| 
df8c67f3006a
Basic manifest parsing to analyze what's in there
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 38 public class Manifest { | 
| 
df8c67f3006a
Basic manifest parsing to analyze what's in there
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 39 | 
| 
df8c67f3006a
Basic manifest parsing to analyze what's in there
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 40 public static void main(String[] args) throws Exception { | 
| 299 
45dc79e545f5
Recognize flag options (options with no arguments) in command line sample apps
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
249diff
changeset | 41 Options cmdLineOpts = Options.parse(args, asSet("--debug", "-v", "--verbose")); | 
| 74 
6f1b88693d48
Complete refactoring to org.tmatesoft
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
72diff
changeset | 42 HgRepository hgRepo = cmdLineOpts.findRepository(); | 
| 13 
df8c67f3006a
Basic manifest parsing to analyze what's in there
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 43 if (hgRepo.isInvalid()) { | 
| 
df8c67f3006a
Basic manifest parsing to analyze what's in there
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 44 System.err.printf("Can't find repository in: %s\n", hgRepo.getLocation()); | 
| 
df8c67f3006a
Basic manifest parsing to analyze what's in there
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 45 return; | 
| 
df8c67f3006a
Basic manifest parsing to analyze what's in there
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 46 } | 
| 143 
b9700740553a
Command line tools parse and respect most of command-line arguments
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
133diff
changeset | 47 final boolean debug = cmdLineOpts.getBoolean("--debug"); | 
| 
b9700740553a
Command line tools parse and respect most of command-line arguments
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
133diff
changeset | 48 final boolean verbose = cmdLineOpts.getBoolean("-v", "--verbose"); | 
| 427 
31a89587eb04
FIXMEs: consistent names, throws for commands and their handlers. Use of checked exceptions in hi-level api
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
423diff
changeset | 49 HgManifestHandler h = new HgManifestHandler() { | 
| 64 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
22diff
changeset | 50 | 
| 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
22diff
changeset | 51 public void begin(Nodeid manifestRevision) { | 
| 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
22diff
changeset | 52 } | 
| 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
22diff
changeset | 53 public void dir(Path p) { | 
| 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
22diff
changeset | 54 } | 
| 249 
4c3b9f679412
Deprecated HgLogCommand.FileRevision gone, top-level HgFileRevision is bright and shiny replacement
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
143diff
changeset | 55 public void file(HgFileRevision fileRevision) { | 
| 415 
ee8264d80747
Explicit constant for regular file flags, access to flags for a given file revision
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
299diff
changeset | 56 try { | 
| 
ee8264d80747
Explicit constant for regular file flags, access to flags for a given file revision
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
299diff
changeset | 57 if (debug) { | 
| 
ee8264d80747
Explicit constant for regular file flags, access to flags for a given file revision
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
299diff
changeset | 58 System.out.print(fileRevision.getRevision());; | 
| 
ee8264d80747
Explicit constant for regular file flags, access to flags for a given file revision
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
299diff
changeset | 59 } | 
| 
ee8264d80747
Explicit constant for regular file flags, access to flags for a given file revision
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
299diff
changeset | 60 if (debug || verbose) { | 
| 
ee8264d80747
Explicit constant for regular file flags, access to flags for a given file revision
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
299diff
changeset | 61 HgManifest.Flags flags = fileRevision.getFileFlags(); | 
| 
ee8264d80747
Explicit constant for regular file flags, access to flags for a given file revision
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
299diff
changeset | 62 Object s; | 
| 
ee8264d80747
Explicit constant for regular file flags, access to flags for a given file revision
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
299diff
changeset | 63 if (flags == HgManifest.Flags.RegularFile) { | 
| 
ee8264d80747
Explicit constant for regular file flags, access to flags for a given file revision
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
299diff
changeset | 64 s = Integer.toOctalString(0644); | 
| 
ee8264d80747
Explicit constant for regular file flags, access to flags for a given file revision
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
299diff
changeset | 65 } else if (flags == HgManifest.Flags.Exec) { | 
| 
ee8264d80747
Explicit constant for regular file flags, access to flags for a given file revision
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
299diff
changeset | 66 s = Integer.toOctalString(0755); | 
| 
ee8264d80747
Explicit constant for regular file flags, access to flags for a given file revision
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
299diff
changeset | 67 } else if (flags == HgManifest.Flags.Link) { | 
| 
ee8264d80747
Explicit constant for regular file flags, access to flags for a given file revision
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
299diff
changeset | 68 s = "lnk"; | 
| 
ee8264d80747
Explicit constant for regular file flags, access to flags for a given file revision
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
299diff
changeset | 69 } else { | 
| 
ee8264d80747
Explicit constant for regular file flags, access to flags for a given file revision
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
299diff
changeset | 70 s = String.valueOf(flags); | 
| 
ee8264d80747
Explicit constant for regular file flags, access to flags for a given file revision
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
299diff
changeset | 71 } | 
| 
ee8264d80747
Explicit constant for regular file flags, access to flags for a given file revision
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
299diff
changeset | 72 System.out.printf(" %s ", s); | 
| 
ee8264d80747
Explicit constant for regular file flags, access to flags for a given file revision
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
299diff
changeset | 73 } | 
| 
ee8264d80747
Explicit constant for regular file flags, access to flags for a given file revision
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
299diff
changeset | 74 System.out.println(fileRevision.getPath()); | 
| 
ee8264d80747
Explicit constant for regular file flags, access to flags for a given file revision
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
299diff
changeset | 75 } catch (HgInvalidControlFileException e) { | 
| 
ee8264d80747
Explicit constant for regular file flags, access to flags for a given file revision
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
299diff
changeset | 76 e.printStackTrace(); | 
| 
ee8264d80747
Explicit constant for regular file flags, access to flags for a given file revision
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
299diff
changeset | 77 } catch (HgInvalidRevisionException e) { | 
| 
ee8264d80747
Explicit constant for regular file flags, access to flags for a given file revision
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
299diff
changeset | 78 e.printStackTrace(); | 
| 143 
b9700740553a
Command line tools parse and respect most of command-line arguments
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
133diff
changeset | 79 } | 
| 64 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
22diff
changeset | 80 } | 
| 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
22diff
changeset | 81 | 
| 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
22diff
changeset | 82 public void end(Nodeid manifestRevision) { | 
| 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
22diff
changeset | 83 } | 
| 143 
b9700740553a
Command line tools parse and respect most of command-line arguments
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
133diff
changeset | 84 }; | 
| 
b9700740553a
Command line tools parse and respect most of command-line arguments
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
133diff
changeset | 85 int rev = cmdLineOpts.getSingleInt(TIP, "-r", "--rev"); | 
| 457 
d78cb5ca3053
Get rid of ambiguity in method name
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
427diff
changeset | 86 new HgManifestCommand(hgRepo).dirs(false).changeset(rev).execute(h); | 
| 22 
603806cd2dc6
Status of local working dir against non-tip base revision
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
19diff
changeset | 87 } | 
| 13 
df8c67f3006a
Basic manifest parsing to analyze what's in there
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 88 } | 
