package gitlet; /** Driver class for Gitlet, a subset of the Git version-control system. * @author Bassem Halim */ public class Main { /** Usage: java gitlet.Main ARGS, where ARGS contains * ... */ public static void main(String[] args) { if (args.length == 0) { System.out.println("Please enter a command"); System.exit(0); } String firstArg = args[0]; if (firstArg.equals("init")) { validateNumArgs(args, 1); Repository.initialize(); } Repository.isInit(); switch (firstArg) { case "init": break; case "add": //TODO check if file content is the same as in head commit //TODO: check if staged for removal and remove it validateNumArgs(args, 2); String filename = args[1]; Repository.add(filename); break; case "commit": if (args.length != 2 || args[1].isEmpty()) { System.out.println("Please enter a commit message."); } else { Repository.commit(args[1], null); } break; case "log": validateNumArgs(args, 1); Repository.log(); break; case "checkout": switch (args.length) { case 2: //java gitlet.Main checkout [branch name] Repository.checkoutBranch(args[1], false, null); break; case 3: //java gitlet.Main checkout -- [file name] verifiyOperand(args[1], "--"); Repository.checkout(args[2], null); break; case 4: //java gitlet.Main checkout [commit id] -- [file name] verifiyOperand(args[2], "--"); Repository.checkout(args[3], args[1]); break; default: System.out.println("Incorrect Operands."); } break; case "rm": validateNumArgs(args, 2); Repository.remove(args[1]); break; case "global-log": validateNumArgs(args, 1); Repository.globalLog(); break; case "find": validateNumArgs(args, 2); String msg = args[1]; Repository.find(msg); break; case "status": validateNumArgs(args, 1); Repository.status(); break; case "branch": // gitlet branch [branch name] validateNumArgs(args, 2); Repository.branch(args[1]); break; case "rm-branch": //gitlet rm-branch [branch name] validateNumArgs(args, 2); Repository.rmBranch(args[1]); break; case "reset": //gitlet reset [commit ID] validateNumArgs(args, 2); Repository.reset(args[1]); break; case "merge": //gitlet merge [branch name] validateNumArgs(args, 2); Repository.merge(args[1]); break; default: System.out.println("No command with that name exists."); } } /** * Return True if we have the exact expected number of elements in args * @param args */ private static void validateNumArgs(String[] args, int expected) { if (args.length != expected) { System.out.println("Incorrect Operands."); System.exit(0); } } private static void verifiyOperand(String arg, String expected){ if (!arg.equals(expected)) { System.out.println("Incorrect Operands."); System.exit(0); } } }