summaryrefslogtreecommitdiff
path: root/clean_repo.py
blob: 29d446dee9c17d941405d90af5dc988042fdfa3b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#! /usr/bin/python
#-*- encoding: utf-8 -*-
from repm.filter import *
import argparse

def remove_from_blacklist(path_to_db, blacklisted_names,
                          debug=config["debug"]):
    """ Check the blacklist and remove packages on the db"""
    
    pkgs=[pkg for pkg in pkginfo_from_db(path_to_db) if
          pkg["name"] in blacklisted_names]
    if pkgs:
        lista=" ".join(pkgs)
        cmd =  "repo-remove " + path_to_db + " " + lista
        printf(cmd)
        a = check_output(cmd)
    if debug:
        printf(a)
        return pkgs, cmd

def cleanup_nonfree_in_dir(directory, blacklisted_names):
    pkgs=pkginfo_from_files_in_dir(directory)
    for package in pkgs:
        if package["name"] in blacklisted_names:
            os.remove(package["location"])

if __name__ == "__main__":
    parser = argparse.ArgumentParser(
        description="Clean a repo db and packages")
    parser.add_argument("-b", "--database", type=str,
                        help="dabatase to clean")
    parser.add_argument("-d", "--directory", type=str,
                        help="directory to clean")
    args=parser.parse_args()

    if args.directory:
        cleanup_nonfree_in_dir(args.database, listado(config["blacklist"]))

    if args.database:
        pkgs=pkginfo_from_db(args.database)
        remove_from_blacklist(args.database, pkgs,
                              tuple(listado(config["blacklist"]) +
                                    listado(config["pending"])))
    if not args.directory and not args.database:
        parser.print_help()