bbarchivist.scripts.kompressor.kompressor_main()   B
last analyzed

Complexity

Conditions 6

Size

Total Lines 44
Code Lines 38

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 6
eloc 38
nop 0
dl 0
loc 44
rs 8.0346
c 0
b 0
f 0
1
#!/usr/bin/env python3
2
"""Compress all files in a directory."""
3
4
import os  # path operations
5
import sys  # load arguments
6
7
from bbarchivist import archiveutils  # main program
8
from bbarchivist import argutils  # arguments
9
from bbarchivist import utilities  # bool parsing
10
11
__author__ = "Thurask"
12
__license__ = "WTFPL v2"
13
__copyright__ = "2015-2019 Thurask"
14
15
16
def kompressor_main():
17
    """
18
    Parse arguments from argparse/questionnaire.
19
20
    Invoke :func:`bbarchivist.barutils.compress` with those arguments.
21
    """
22
    parser = argutils.default_parser("bb-kompressor", "Compress files")
23
    parser.add_argument(
24
        "-m",
25
        "--method",
26
        help="Compression method",
27
        nargs="?",
28
        default=None,
29
        dest="method",
30
        type=argutils.valid_method)
31
    parser.add_argument(
32
        "-nv",
33
        "--no-verify",
34
        help="Don't verify archives",
35
        action="store_false",
36
        default=True,
37
        dest="verify")
38
    parser.add_argument(
39
        "folder",
40
        help="Working directory, default is local",
41
        nargs="?",
42
        default=None)
43
    parser.set_defaults()
44
    args = parser.parse_args(sys.argv[1:])
45
    args.folder = utilities.dirhandler(args.folder, os.getcwd())
46
    if args.method is None:
47
        method = archiveutils.compress_config_loader()
48
        if method == "7z" and not utilities.prep_seven_zip(False):
49
            method = "zip"
50
    else:
51
        method = args.method
52
    psz = utilities.prep_seven_zip(False)
53
    szexe = utilities.get_seven_zip(False) if (method == "7z" and psz) else None
54
    workfolder = args.folder
55
    archiveutils.compress_config_writer()
56
    print(" ")
57
    archiveutils.compress(workfolder, method, szexe, None)
58
    if args.verify:
59
        archiveutils.verify(workfolder, method, szexe, "arcsonly")
60
61
62
if __name__ == "__main__":
63
    kompressor_main()
64