File: empty_cmd.py

package info (click to toggle)
trash-cli 0.24.5.26-0.3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 1,972 kB
  • sloc: python: 9,789; sh: 121; makefile: 11
file content (79 lines) | stat: -rw-r--r-- 3,298 bytes parent folder | download
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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
import os
from datetime import datetime
from typing import TextIO, Callable

from trashcli.empty.clock import Clock
from trashcli.empty.console import Console
from trashcli.empty.empty_action import EmptyAction, EmptyActionArgs
from trashcli.empty.errors import Errors
from trashcli.empty.existing_file_remover import ExistingFileRemover
from trashcli.empty.is_input_interactive import is_input_interactive
from trashcli.empty.parser import Parser
from trashcli.empty.print_time_action import PrintTimeAction, PrintTimeArgs
from trashcli.fs import ContentsOf
from trashcli.fstab.volume_listing import VolumesListing
from trashcli.fstab.volume_of import VolumeOf
from trashcli.lib.dir_reader import DirReader
from trashcli.lib.exit_codes import EX_OK
from trashcli.lib.print_version import PrintVersionAction, PrintVersionArgs
from trashcli.trash_dirs_scanner import TopTrashDirRules


class EmptyCmd:
    def __init__(self,
                 argv0,  # type: str
                 out,  # type: TextIO
                 err,  # type: TextIO
                 volumes_listing,  # type: VolumesListing
                 now,  # type: Callable[[], datetime]
                 file_reader,  # type: TopTrashDirRules.Reader
                 dir_reader,  # type: DirReader
                 content_reader,  # type: ContentsOf
                 file_remover,  # type: ExistingFileRemover
                 version,  # type: str
                 volumes,  # type: VolumeOf
                 ):
        self.volumes = volumes
        self.file_remover = file_remover
        self.dir_reader = dir_reader
        self.file_reader = file_reader
        self.volumes_listing = volumes_listing
        self.argv0 = argv0
        self.out = out
        self.err = err
        self.version = version
        self.now = now
        self.content_reader = content_reader
        self.parser = Parser()
        self.program_name = os.path.basename(argv0)
        errors = Errors(self.program_name, self.err)
        clock = Clock(self.now, errors)
        console = Console(self.program_name, self.out, self.err)
        self.empty_action = EmptyAction(clock,
                                        self.file_remover,
                                        self.volumes_listing,
                                        self.file_reader,
                                        self.volumes,
                                        self.dir_reader,
                                        self.content_reader,
                                        console)
        self.print_version_action = PrintVersionAction(self.out,
                                                       self.version)
        self.print_time_action = PrintTimeAction(self.out, clock)

    def run_cmd(self, args, environ, uid):
        args = self.parser.parse(
            default_is_interactive=is_input_interactive(),
            args=args,
            argv0=self.argv0,
            environ=environ,
            uid=uid)

        if type(args) is PrintVersionArgs:
            return self.print_version_action.run_action(args)
        elif type(args) is EmptyActionArgs:
            return self.empty_action.run_action(args)
        elif type(args) is PrintTimeArgs:
            return self.print_time_action.run_action(args)

        return EX_OK