tikhomirov@13: /*
tikhomirov@19:  * Copyright (c) 2010, 2011 Artem Tikhomirov 
tikhomirov@13:  */
tikhomirov@13: package com.tmate.hgkit.console;
tikhomirov@13: 
tikhomirov@19: import static com.tmate.hgkit.ll.HgRepository.TIP;
tikhomirov@19: 
tikhomirov@64: import org.tmatesoft.hg.core.Path;
tikhomirov@64: import org.tmatesoft.hg.core.RepositoryTreeWalker;
tikhomirov@64: import org.tmatesoft.hg.core.LogCommand.FileRevision;
tikhomirov@64: 
tikhomirov@13: import com.tmate.hgkit.fs.RepositoryLookup;
tikhomirov@19: import com.tmate.hgkit.ll.HgManifest;
tikhomirov@13: import com.tmate.hgkit.ll.HgRepository;
tikhomirov@19: import com.tmate.hgkit.ll.Nodeid;
tikhomirov@13: 
tikhomirov@13: /**
tikhomirov@13:  *
tikhomirov@13:  * @author artem
tikhomirov@13:  */
tikhomirov@13: public class Manifest {
tikhomirov@13: 
tikhomirov@13: 	public static void main(String[] args) throws Exception {
tikhomirov@13: 		RepositoryLookup repoLookup = new RepositoryLookup();
tikhomirov@13: 		RepositoryLookup.Options cmdLineOpts = RepositoryLookup.Options.parse(args);
tikhomirov@13: 		HgRepository hgRepo = repoLookup.detect(cmdLineOpts);
tikhomirov@13: 		if (hgRepo.isInvalid()) {
tikhomirov@13: 			System.err.printf("Can't find repository in: %s\n", hgRepo.getLocation());
tikhomirov@13: 			return;
tikhomirov@13: 		}
tikhomirov@13: 		System.out.println(hgRepo.getLocation());
tikhomirov@64: 		hgRepo.getManifest().walk(0, TIP, new Dump());
tikhomirov@64: 		//
tikhomirov@64: 		new RepositoryTreeWalker(hgRepo).dirs(true).walk(new RepositoryTreeWalker.Handler() {
tikhomirov@64: 			
tikhomirov@64: 			public void begin(Nodeid manifestRevision) {
tikhomirov@64: 				System.out.println(">> " + manifestRevision);
tikhomirov@64: 			}
tikhomirov@64: 			public void dir(Path p) {
tikhomirov@64: 				System.out.println(p);
tikhomirov@64: 			}
tikhomirov@64: 			public void file(FileRevision fileRevision) {
tikhomirov@64: 				System.out.print(fileRevision.getRevision());;
tikhomirov@64: 				System.out.print("   ");
tikhomirov@64: 				System.out.println(fileRevision.getPath());
tikhomirov@64: 			}
tikhomirov@64: 			
tikhomirov@64: 			public void end(Nodeid manifestRevision) {
tikhomirov@64: 				System.out.println();
tikhomirov@64: 			}
tikhomirov@64: 		}); 
tikhomirov@13: 	}
tikhomirov@22: 
tikhomirov@22: 	public static final class Dump implements HgManifest.Inspector {
tikhomirov@22: 		public boolean begin(int revision, Nodeid nid) {
tikhomirov@22: 			System.out.printf("%d : %s\n", revision, nid);
tikhomirov@22: 			return true;
tikhomirov@22: 		}
tikhomirov@22: 
tikhomirov@22: 		public boolean next(Nodeid nid, String fname, String flags) {
tikhomirov@22: 			System.out.println(nid + "\t" + fname + "\t\t" + flags);
tikhomirov@22: 			return true;
tikhomirov@22: 		}
tikhomirov@22: 
tikhomirov@22: 		public boolean end(int revision) {
tikhomirov@22: 			System.out.println();
tikhomirov@22: 			return true;
tikhomirov@22: 		}
tikhomirov@22: 	}
tikhomirov@13: }