Commit 8e0a17b5 authored by Seblu's avatar Seblu
Browse files

Add reduce and sort functions to version ctrl

parent 4cb79b55
Loading
Loading
Loading
Loading
+7 −16
Original line number Diff line number Diff line
@@ -27,7 +27,6 @@ from archversion.error import BaseError, MissingConfigFile, NoSuchFile
from archversion.error import ERR_FATAL, ERR_ABORT, ERR_UNKNOWN
from archversion.pacman import parse_pkgbuild, pkgbuild_set_version, pkgbuild_update_checksums
from archversion.version import VersionController
from collections import OrderedDict
import argparse
import logging
import os
@@ -87,15 +86,12 @@ def parse_argv():

def command_check(args, vctrl):
    '''Handle check command call'''
    # filter packages
    # reduce the package list
    if len(args.packages) > 0:
        for pkg in list(vctrl.packages):
            if pkg not in args.packages:
                vctrl.packages.pop(pkg, None)
        vctrl.reduce_packages(args.packages)
    # sort packages if asked
    if args.sort:
        vctrl.packages = OrderedDict(sorted(vctrl.packages.items(),
                                            key=lambda t: t[0]))
        vctrl.sort_packages()
    # start checking
    try:
        vctrl.print_versions(args.diff_new, args.diff_cache)
@@ -106,18 +102,13 @@ def command_check(args, vctrl):

def command_list(args, vctrl):
    '''Handle list command call'''
    # sort if asked
    if args.sort:
        # sort packages
        vctrl.packages = OrderedDict(sorted(vctrl.packages.items(),
                                            key=lambda t: t[0]))
        # sort cache
        vctrl.cache = OrderedDict(sorted(vctrl.cache.items(),
                                         key=lambda t: t[0]))
    # call the right action
    if args.what == "config":
        if args.sort:
            vctrl.sort_packages()
        vctrl.print_names()
    elif args.what == "cache":
        if args.sort:
            vctrl.sort_cache()
        vctrl.print_cache()
    elif args.what == "modes":
        vctrl.print_modes()
+20 −0
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@
from archversion import USER_AGENT
from archversion.pacman import parse_pkgbuild, Pacman
from archversion.error import InvalidConfigFile, VersionNotFound
from collections import OrderedDict
from urllib.request import urlopen, Request
import json
import logging
@@ -53,6 +54,25 @@ class VersionController(object):
            "none": self.get_version_none
            }

    def reduce_packages(self, packages):
        '''Keep only the give packages list'''
        for pkg in list(self.packages):
            if pkg not in packages:
                self.packages.pop(pkg, None)

    def sort_packages(self):
        '''Sort package list by name'''
        self.packages = self.sort_dict(self.packages)

    def sort_cache(self):
        '''Sort package list by name'''
        self.cache = self.sort_dict(self.cache)

    @staticmethod
    def sort_dict(larousse):
        '''Sort a dictionary into and OrderedDict'''
        return OrderedDict(sorted(larousse.items(), key=lambda t: t[0]))

    @staticmethod
    def get_version_upstream(name, value):
        '''Return upstream version'''