コード例 #1
0
ファイル: rcyoucmds.py プロジェクト: joeshaw/rug
    def execute(self, server, options_dict, non_option_args):

        if not server_has_patch_support(server):
            rctalk.error("Current rcd daemon does not have patch support")
            sys.exit(1)

        patches = []
        patch_table = []

        multiple_channels = 1

        query = []
        clist = []

        for a in non_option_args:
            cl = rcchannelutils.get_channels_by_name(server, a)
            if rcchannelutils.validate_channel_list(a, cl):
                clist = clist + cl

        if non_option_args and not clist:
            sys.exit(1)

        query = map(lambda c: ["channel", "=", c["id"]], clist)

        if len(clist) > 1:
            query.insert(0, ["", "begin-or", ""])
            query.append(["", "end-or", ""])

        if options_dict.has_key("installed-only"):
            query.append(["name-installed", "=", "true"])
        elif options_dict.has_key("uninstalled-only"):
            query.append(["patch-installed", "=", "false"])

        if len(clist) == 1:
            multiple_channels = 0

        patches = server.rcd.you.search(query)

        if options_dict.has_key("sort-by-channel"):
            for p in patches:
                rcchannelutils.add_channel_name(server, p)

            patches.sort(lambda x,y:cmp(string.lower(x["channel_name"]), string.lower(y["channel_name"])) \
                         or cmp(string.lower(x["name"]), string.lower(y["name"])))
        else:
            patches.sort(lambda x, y: cmp(string.lower(x["name"]),
                                          string.lower(y["name"])))

        if multiple_channels:
            keys = ["installed", "channel", "name", "version", "product"]
            headers = ["S", "Channel", "Name", "Version", "Product"]
        else:
            keys = ["installed", "name", "version", "product"]
            headers = ["S", "Name", "Version", "Product"]

        # If we're getting all of the packages available to us, filter out
        # ones in the "hidden" channels, like the system packages channel.
        patches = rcpackageutils.filter_visible_channels(server, patches)

        for p in patches:
            row = rcformat.package_to_row(server, p,
                                          options_dict.has_key("no-abbrev"),
                                          keys)
            patch_table.append(row)

        if patch_table:
            rcformat.tabular(headers, patch_table)
        else:
            rctalk.message("--- No Patches found ---")
コード例 #2
0
ファイル: rcpackagecmds.py プロジェクト: joeshaw/rug
    def execute(self, server, options_dict, non_option_args):

        if options_dict.has_key("search-descriptions"):
            key = "text"
        else:
            key = "name"

        if options_dict.has_key("match-words"):
            op = "contains_word"
        else:
            op = "contains"

        query = []
        for s in non_option_args:
            query.append([key, op, s])

        if query and options_dict.has_key("match-any"):
            query.insert(0, ["", "begin-or", ""])
            query.append(["", "end-or", ""])

        if options_dict.has_key("installed-only"):
            query.append(["package-installed", "=", "true"])
        elif options_dict.has_key("uninstalled-only"):
            query.append(["package-installed", "=", "false"])

        if options_dict.has_key("channel"):
            cname = options_dict["channel"]
            clist = rcchannelutils.get_channels_by_name(server,cname)
            if not rcchannelutils.validate_channel_list(cname, clist):
                sys.exit(1)
            c = clist[0]

            query.append(["channel", "=", c["id"]])

        packages = server.rcd.packsys.search(query)

        if options_dict.has_key("locked-only") or options_dict.has_key("unlocked-only"):
            if options_dict.has_key("locked-only"):
                packages = filter(lambda p:p["locked"], packages)
            elif options_dict.has_key("unlocked-only"):
                packages = filter(lambda p:not p["locked"], packages)

        # Filter out packages which are in "hidden" channels, like the
        # system packages channel.
        packages = rcpackageutils.filter_visible_channels(server, packages)

        package_table = []
        no_abbrev = options_dict.has_key("no-abbrev")

        for p in packages:
            row = rcformat.package_to_row(server, p, no_abbrev,
                                          ["installed", "channel", "name", "version"])
            package_table.append(row)

        if package_table:
            
            if options_dict.has_key("sort-by-channel"):
                package_table.sort(lambda x,y:cmp(string.lower(x[1]), string.lower(y[1])) or\
                                   cmp(string.lower(x[2]), string.lower(y[2])))
            else:
                package_table.sort(lambda x,y:cmp(string.lower(x[2]), string.lower(y[2])))
                
            rcformat.tabular(["S", "Channel", "Name", "Version"], package_table)
        else:
            rctalk.message("--- No packages found ---")
コード例 #3
0
ファイル: rcyoucmds.py プロジェクト: joeshaw/rug
    def execute(self, server, options_dict, non_option_args):

        if not server_has_patch_support (server):
            rctalk.error ("Current rcd daemon does not have patch support")
            sys.exit(1)

        patches = []
        patch_table = []

        multiple_channels = 1

        query = []
        clist = []

        for a in non_option_args:
            cl = rcchannelutils.get_channels_by_name(server, a)
            if rcchannelutils.validate_channel_list(a, cl):
                clist = clist + cl

        if non_option_args and not clist:
            sys.exit(1)

        query = map(lambda c:["channel", "=", c["id"]], clist)

        if len(clist) > 1:
            query.insert(0, ["", "begin-or", ""])
            query.append(["", "end-or", ""])

        if options_dict.has_key("installed-only"):
            query.append(["name-installed", "=", "true"])
        elif options_dict.has_key("uninstalled-only"):
            query.append(["patch-installed", "=", "false"])

        if len(clist) == 1:
            multiple_channels = 0

        patches = server.rcd.you.search (query)

        if options_dict.has_key("sort-by-channel"):
            for p in patches:
                rcchannelutils.add_channel_name(server, p)

            patches.sort(lambda x,y:cmp(string.lower(x["channel_name"]), string.lower(y["channel_name"])) \
                         or cmp(string.lower(x["name"]), string.lower(y["name"])))
        else:
            patches.sort(lambda x,y:cmp(string.lower(x["name"]),string.lower(y["name"])))

        if multiple_channels:
            keys = ["installed", "channel", "name", "version", "product"]
            headers = ["S", "Channel", "Name", "Version", "Product"]
        else:
            keys = ["installed", "name", "version", "product"]
            headers = ["S", "Name", "Version", "Product"]

        # If we're getting all of the packages available to us, filter out
        # ones in the "hidden" channels, like the system packages channel.
        patches = rcpackageutils.filter_visible_channels(server, patches)

        for p in patches:
            row = rcformat.package_to_row(server, p, options_dict.has_key("no-abbrev"), keys)
            patch_table.append(row)

        if patch_table:
            rcformat.tabular(headers, patch_table)
        else:
            rctalk.message("--- No Patches found ---")
コード例 #4
0
    def execute(self, server, options_dict, non_option_args):

        if options_dict.has_key("search-descriptions"):
            key = "text"
        else:
            key = "name"

        if options_dict.has_key("match-words"):
            op = "contains_word"
        else:
            op = "contains"

        query = []
        for s in non_option_args:
            query.append([key, op, s])

        if query and options_dict.has_key("match-any"):
            query.insert(0, ["", "begin-or", ""])
            query.append(["", "end-or", ""])

        if options_dict.has_key("installed-only"):
            query.append(["package-installed", "=", "true"])
        elif options_dict.has_key("uninstalled-only"):
            query.append(["package-installed", "=", "false"])

        if options_dict.has_key("channel"):
            cname = options_dict["channel"]
            clist = rcchannelutils.get_channels_by_name(server, cname)
            if not rcchannelutils.validate_channel_list(cname, clist):
                sys.exit(1)
            c = clist[0]

            query.append(["channel", "=", c["id"]])

        packages = server.rcd.packsys.search(query)

        if options_dict.has_key("locked-only") or options_dict.has_key(
                "unlocked-only"):
            if options_dict.has_key("locked-only"):
                packages = filter(lambda p: p["locked"], packages)
            elif options_dict.has_key("unlocked-only"):
                packages = filter(lambda p: not p["locked"], packages)

        # Filter out packages which are in "hidden" channels, like the
        # system packages channel.
        packages = rcpackageutils.filter_visible_channels(server, packages)

        package_table = []
        no_abbrev = options_dict.has_key("no-abbrev")

        for p in packages:
            row = rcformat.package_to_row(
                server, p, no_abbrev,
                ["installed", "channel", "name", "version"])
            package_table.append(row)

        if package_table:

            if options_dict.has_key("sort-by-channel"):
                package_table.sort(lambda x,y:cmp(string.lower(x[1]), string.lower(y[1])) or\
                                   cmp(string.lower(x[2]), string.lower(y[2])))
            else:
                package_table.sort(
                    lambda x, y: cmp(string.lower(x[2]), string.lower(y[2])))

            rcformat.tabular(["S", "Channel", "Name", "Version"],
                             package_table)
        else:
            rctalk.message("--- No packages found ---")