Beispiel #1
0
def execute(helix, argv):
    if len(argv) <= 1:
        __usage()
        return 0

    base = ArgsX.Base(len(argv), argv, 1)
    lopt = [ArgsX.LongOpt("remove", ArgsX.Options["req_arg"], "r"),
            ArgsX.LongOpt("list", ArgsX.Options["no_args"], "l"),
            ArgsX.LongOpt("info", ArgsX.Options["req_arg"], "i"),
            ArgsX.LongOpt("clear", ArgsX.Options["no_args"], None)]
    mdbman = MDBmanager()
    while True:
        ret = ArgsX.argsx(base, "r+li+", lopt, "-")
        if ret == ArgsX.Status["finish"]:
            break

        if ret == "r":
            try:
                mdbman.uninstall(argv[base.argptr])
            except DbKeyError:
                perror("No package with the name %s" % argv[base.aptr])
            break
        elif ret == "l":
            _list = mdbman.get_installed_pack()
            if not _list:
                pinfo("Empty, no package installed!")
            else:
                print()
                for pack in _list:
                    print("[Package]:\t"+pack)
                print()
            break
        elif ret == "i":
            try:
                print("\nAuthor: %s" % mdbman.get_pack_author(argv[base.aptr]))
                print("About: %s" % mdbman.get_pack_about(argv[base.aptr]))
                print("Version: %f" % mdbman.get_pack_version(argv[base.aptr]))
                print("Modules:")
                modules = mdbman.get_module_from_pack_name(argv[base.aptr])
                for module in modules:
                    print("*\t%s" % module)
                print("\nBase:")
                bases = mdbman.get_base_from_pack_name(argv[base.aptr])
                for base in bases:
                    print("*\t%s" % base)
                print("\nLib:")
                libs = mdbman.get_lib_from_pack_name(argv[base.aptr])
                for lib in libs:
                    print("*\t%s" % lib)
                print("\nMan pages:")
                manps = mdbman.get_manp_from_pack_name(argv[base.aptr])
                for manp in manps:
                    print("*\t%s" % manp)
                print()
            except DbKeyError:
                perror("The package %s not exists" % argv[base.aptr])
        elif ret == ArgsX.Status["longopt"]:
            if lopt[base.laptr].name == "clear":
                sure = input("Initialize ? Are you sure(y/n)?")
                if sure == "y":
                    pwarning("Irreversible operation in progress...")
                    _list = mdbman.get_installed_pack()
                    for pack in _list:
                        print("\n%s:" % pack.upper())
                        mdbman.uninstall(pack)
                    psuccess("Operation terminated!", "\n")
                else:
                    pinfo("Operation canceled!")
        elif ret == ArgsX.Status["lowarg"]:
            print("Options: " + argv[base.aptr - 1] + " required an argument")
            break
        elif ret == ArgsX.Status["badargs"]:
            perror("Bad Option!")
            break
        elif ret == ArgsX.Status["otherdata"]:
            try:
                mdbman.install(argv[base.argptr])
            except FileNotFoundError:
                perror(argv[base.argptr] + " not found! Process Aborted!")
            break
        base.aptr += 1
    return 0