tikhomirov@10: /* tikhomirov@20: * Copyright (c) 2010, 2011 Artem Tikhomirov tikhomirov@10: */ tikhomirov@10: package com.tmate.hgkit.console; tikhomirov@10: tikhomirov@18: import static com.tmate.hgkit.ll.HgRepository.TIP; tikhomirov@18: tikhomirov@10: import com.tmate.hgkit.fs.RepositoryLookup; tikhomirov@10: import com.tmate.hgkit.ll.HgRepository; tikhomirov@10: import com.tmate.hgkit.ll.LocalHgRepo; tikhomirov@10: tikhomirov@10: /** tikhomirov@10: * tikhomirov@10: * @author artem tikhomirov@10: */ tikhomirov@10: public class Status { tikhomirov@10: tikhomirov@10: public static void main(String[] args) throws Exception { tikhomirov@10: RepositoryLookup repoLookup = new RepositoryLookup(); tikhomirov@10: RepositoryLookup.Options cmdLineOpts = RepositoryLookup.Options.parse(args); tikhomirov@10: HgRepository hgRepo = repoLookup.detect(cmdLineOpts); tikhomirov@10: if (hgRepo.isInvalid()) { tikhomirov@10: System.err.printf("Can't find repository in: %s\n", hgRepo.getLocation()); tikhomirov@10: return; tikhomirov@10: } tikhomirov@10: System.out.println(hgRepo.getLocation()); tikhomirov@10: ((LocalHgRepo) hgRepo).loadDirstate().dump(); tikhomirov@18: final StatusDump dump = new StatusDump(); tikhomirov@18: dump.showIgnored = false; tikhomirov@18: dump.showClean = false; tikhomirov@20: final int r1 = 0, r2 = 11; tikhomirov@20: System.out.printf("Status for changes between revision %d and %d:\n", r1, r2); tikhomirov@20: hgRepo.status(r1, r2, dump); tikhomirov@20: System.out.println("\nStatus against working dir:"); tikhomirov@18: ((LocalHgRepo) hgRepo).statusLocal(TIP, dump); tikhomirov@18: } tikhomirov@18: tikhomirov@18: private static class StatusDump implements HgRepository.StatusInspector { tikhomirov@18: public boolean hideStatusPrefix = false; // hg status -n option tikhomirov@18: public boolean showCopied = true; // -C tikhomirov@18: public boolean showIgnored = true; // -i tikhomirov@18: public boolean showClean = true; // -c tikhomirov@18: tikhomirov@18: public void modified(String fname) { tikhomirov@18: print('M', fname); tikhomirov@18: } tikhomirov@18: tikhomirov@18: public void added(String fname) { tikhomirov@18: print('A', fname); tikhomirov@18: } tikhomirov@18: tikhomirov@18: public void copied(String fnameOrigin, String fnameAdded) { tikhomirov@18: added(fnameAdded); tikhomirov@18: if (showCopied) { tikhomirov@18: print(' ', fnameOrigin); tikhomirov@18: } tikhomirov@18: } tikhomirov@18: tikhomirov@18: public void removed(String fname) { tikhomirov@18: print('R', fname); tikhomirov@18: } tikhomirov@18: tikhomirov@18: public void clean(String fname) { tikhomirov@18: if (showClean) { tikhomirov@18: print('C', fname); tikhomirov@18: } tikhomirov@18: } tikhomirov@18: tikhomirov@18: public void missing(String fname) { tikhomirov@18: print('!', fname); tikhomirov@18: } tikhomirov@18: tikhomirov@18: public void unknown(String fname) { tikhomirov@18: print('?', fname); tikhomirov@18: } tikhomirov@18: tikhomirov@18: public void ignored(String fname) { tikhomirov@18: if (showIgnored) { tikhomirov@18: print('I', fname); tikhomirov@18: } tikhomirov@18: } tikhomirov@18: tikhomirov@18: private void print(char status, String fname) { tikhomirov@18: if (!hideStatusPrefix) { tikhomirov@18: System.out.print(status); tikhomirov@18: System.out.print(' '); tikhomirov@18: } tikhomirov@18: System.out.println(fname); tikhomirov@18: } tikhomirov@10: } tikhomirov@10: }