ErrorCode processCmd()

in aios/filesystem/fslib/tools/fsutil/FsUtilMain.cpp [100:195]


ErrorCode processCmd(int argc, char **argv) {
    if (argc >= 2) {
        if (strcmp(argv[1], FsUtil::COPY_CMD.c_str()) == 0) {
            if (argc == 5 && strcmp(argv[2], "-r") == 0) {
                return FsUtil::runCopy(argv[3], argv[4], true);
            } else if (argc == 4) {
                return FsUtil::runCopy(argv[2], argv[3], false);
            }
        } else if (strcmp(argv[1], FsUtil::MOVE_CMD.c_str()) == 0 && argc == 4) {
            return FsUtil::runMove(argv[2], argv[3]);
        } else if (strcmp(argv[1], FsUtil::RENAME_CMD.c_str()) == 0 && argc == 4) {
            return FsUtil::runRename(argv[2], argv[3]);
        } else if (strcmp(argv[1], FsUtil::MKDIR_CMD.c_str()) == 0) {
            if (argc == 4 && strcmp(argv[2], "-p") == 0) {
                return FsUtil::runMkDir(argv[3], true);
            } else if (argc == 3) {
                return FsUtil::runMkDir(argv[2], false);
            }
        } else if (strcmp(argv[1], FsUtil::LISTDIR_CMD.c_str()) == 0) {
            if (argc == 3) {
                return FsUtil::runListDir(argv[2]);
            } else if (argc == 4) {
                if (strcmp(argv[3], "-R") == 0) {
                    return FsUtil::runListDirWithRecursive(argv[2], "");
                } else if (strcmp(argv[2], "-R") == 0) {
                    return FsUtil::runListDirWithRecursive(argv[3], "");
                }
            } else if (argc == 5) {
                if (strcmp(argv[3], "-R") == 0) {
                    return FsUtil::runListDirWithRecursive(argv[2], argv[4]);
                } else if (strcmp(argv[2], "-R") == 0) {
                    return FsUtil::runListDirWithRecursive(argv[4], argv[3]);
                }
            }
        } else if (strcmp(argv[1], FsUtil::REMOVE_CMD.c_str()) == 0 && argc == 3) {
            return FsUtil::runRemove(argv[2]);
        } else if (strcmp(argv[1], FsUtil::CAT_CMD.c_str()) == 0 && argc == 3) {
            return FsUtil::runCat(argv[2]);
        } else if (strcmp(argv[1], FsUtil::MD5_SUM_CMD.c_str()) == 0 && argc == 3) {
            return FsUtil::runMd5Sum(argv[2]);
        } else if (strcmp(argv[1], FsUtil::ZCAT_CMD.c_str()) == 0 && argc == 3) {
            return FsUtil::runZCat(argv[2]);
        } else if (strcmp(argv[1], FsUtil::GETMETA_CMD.c_str()) == 0 && argc == 3) {
            return FsUtil::runGetMeta(argv[2]);
        } else if (strcmp(argv[1], FsUtil::ISEXIST_CMD.c_str()) == 0 && argc == 3) {
            return FsUtil::runIsExist(argv[2]);
        } else if (strcmp(argv[1], FsUtil::FLOCK_CMD.c_str()) == 0 && argc == 4) {
            return FsUtil::runFlock(argv[2], argv[3]);
        } else if (strcmp(argv[1], FsUtil::FORWARD_CMD.c_str()) == 0 && (argc == 4 || argc == 5)) {
            return FsUtil::runForward(argv[2], argv[3], argc == 4 ? "" : argv[4]);
        } else if (strcmp(argv[1], FsUtil::ENCRYPT_CMD.c_str()) == 0) {
            if (argc == 4) {
                return FsUtil::runEncrypt(argv[2], argv[3], nullptr, false);
            }
            if (argc == 5) {
                return FsUtil::runEncrypt(argv[2], argv[3], argv[4], false);
            }
            if (argc == 6 && strcmp(argv[5], "--base64") == 0) {
                return FsUtil::runEncrypt(argv[2], argv[3], argv[4], true);
            }
        } else if (strcmp(argv[1], FsUtil::DECRYPT_CMD.c_str()) == 0) {
            if (argc == 4) {
                return FsUtil::runDecrypt(argv[2], argv[3], nullptr, false);
            }
            if (argc == 5) {
                return FsUtil::runDecrypt(argv[2], argv[3], argv[4], false);
            }
            if (argc == 6 && strcmp(argv[5], "--base64") == 0) {
                return FsUtil::runDecrypt(argv[2], argv[3], argv[4], true);
            }
        } else if (strcmp(argv[1], FsUtil::DECRYPT_CAT_CMD.c_str()) == 0) {
            if (argc == 3) {
                return FsUtil::runDecryptCat(argv[2], nullptr, false);
            }
            if (argc == 4) {
                return FsUtil::runDecryptCat(argv[2], argv[3], false);
            }
            if (argc == 5 && strcmp(argv[4], "--base64") == 0) {
                return FsUtil::runDecryptCat(argv[2], argv[3], true);
            }
        } else if (strcmp(argv[1], FsUtil::DECRYPT_ZCAT_CMD.c_str()) == 0) {
            if (argc == 3) {
                return FsUtil::runDecryptZCat(argv[2], nullptr, false);
            }
            if (argc == 4) {
                return FsUtil::runDecryptZCat(argv[2], argv[3], false);
            }
            if (argc == 5 && strcmp(argv[4], "--base64") == 0) {
                return FsUtil::runDecryptZCat(argv[2], argv[3], true);
            }
        }
    }

    printFsUtilCmdUsage();
    return EC_BADARGS;
}