public static Command processArgs(String[] args, String programName) 
            throws Exception {
        if(args.length == 0) {
            printHelp(programName);
            return null; // Never reached
        }

        if(args.length == 1) {
            return new Command(args[0], null, null, Command.Commands.List);
        }
        if(args.length == 2 && args[0].equals("-l")) {
            return new Command(args[1], null, null, Command.Commands.List);
        }

        if(args[0].equals("-w")) {
            return processTags(args, Command.Commands.Overwrite);
        }
        if(args[0].equals("-a")) {
            return processTags(args, Command.Commands.Append);
        }
        
        printHelp(programName);
        return null; // Never reached
    }