comparison cmdline/org/tmatesoft/hg/console/Cat.java @ 143:b9700740553a

Command line tools parse and respect most of command-line arguments
author Artem Tikhomirov <tikhomirov.artem@gmail.com>
date Thu, 17 Feb 2011 22:16:25 +0100
parents a3a2e5deb320
children 6b55f10ef54b
comparison
equal deleted inserted replaced
142:37a34044e6bd 143:b9700740553a
14 * the terms of a license other than GNU General Public License 14 * the terms of a license other than GNU General Public License
15 * contact TMate Software at support@hg4j.com 15 * contact TMate Software at support@hg4j.com
16 */ 16 */
17 package org.tmatesoft.hg.console; 17 package org.tmatesoft.hg.console;
18 18
19 import org.tmatesoft.hg.internal.DigestHelper; 19 import static org.tmatesoft.hg.repo.HgRepository.TIP;
20
21 import java.io.OutputStream;
22 import java.nio.ByteBuffer;
23
20 import org.tmatesoft.hg.repo.HgDataFile; 24 import org.tmatesoft.hg.repo.HgDataFile;
21 import org.tmatesoft.hg.repo.HgRepository; 25 import org.tmatesoft.hg.repo.HgRepository;
22 import org.tmatesoft.hg.repo.HgInternals; 26 import org.tmatesoft.hg.util.ByteChannel;
23 27
24 28
25 /** 29 /**
26 * @author Artem Tikhomirov 30 * @author Artem Tikhomirov
27 * @author TMate Software Ltd. 31 * @author TMate Software Ltd.
33 HgRepository hgRepo = cmdLineOpts.findRepository(); 37 HgRepository hgRepo = cmdLineOpts.findRepository();
34 if (hgRepo.isInvalid()) { 38 if (hgRepo.isInvalid()) {
35 System.err.printf("Can't find repository in: %s\n", hgRepo.getLocation()); 39 System.err.printf("Can't find repository in: %s\n", hgRepo.getLocation());
36 return; 40 return;
37 } 41 }
38 HgInternals debug = new HgInternals(hgRepo); 42 int rev = cmdLineOpts.getSingleInt(TIP, "-r", "--rev");
39 String[] toCheck = new String[] {"design.txt", "src/com/tmate/hgkit/ll/Changelog.java", "src/Extras.java", "bin/com/tmate/hgkit/ll/Changelog.class"}; 43 OutputStreamChannel out = new OutputStreamChannel(System.out);
40 boolean[] checkResult = debug.checkIgnored(toCheck); 44 for (String fname : cmdLineOpts.getList("")) {
41 for (int i = 0; i < toCheck.length; i++) {
42 System.out.println("Ignored " + toCheck[i] + ": " + checkResult[i]);
43 }
44 DigestHelper dh = new DigestHelper();
45 for (String fname : cmdLineOpts.files) {
46 System.out.println(fname); 45 System.out.println(fname);
47 HgDataFile fn = hgRepo.getFileNode(fname); 46 HgDataFile fn = hgRepo.getFileNode(fname);
48 if (fn.exists()) { 47 if (fn.exists()) {
49 int total = fn.getRevisionCount(); 48 fn.content(rev, out, true);
50 System.out.printf("Total revisions: %d\n", total); 49 System.out.println();
51 for (int i = 0; i < total; i++) {
52 byte[] content = fn.content(i);
53 System.out.println("==========>");
54 System.out.println(new String(content));
55 int[] parentRevisions = new int[2];
56 byte[] parent1 = new byte[20];
57 byte[] parent2 = new byte[20];
58 fn.parents(i, parentRevisions, parent1, parent2);
59 System.out.println(dh.sha1(parent1, parent2, content).asHexString());
60 }
61 } else { 50 } else {
62 System.out.println(">>>Not found!"); 51 System.out.printf("%s not found!\n", fname);
63 } 52 }
64 } 53 }
65 } 54 }
55
56 private static class OutputStreamChannel implements ByteChannel {
57
58 private final OutputStream stream;
59
60 public OutputStreamChannel(OutputStream out) {
61 stream = out;
62 }
63
64 public int write(ByteBuffer buffer) throws Exception {
65 int count = buffer.remaining();
66 while(buffer.hasRemaining()) {
67 stream.write(buffer.get());
68 }
69 return count;
70 }
71 }
66 } 72 }