summaryrefslogtreecommitdiff
path: root/dots_manager/cli.py
diff options
context:
space:
mode:
Diffstat (limited to 'dots_manager/cli.py')
-rw-r--r--dots_manager/cli.py30
1 files changed, 21 insertions, 9 deletions
diff --git a/dots_manager/cli.py b/dots_manager/cli.py
index f152a96..6621954 100644
--- a/dots_manager/cli.py
+++ b/dots_manager/cli.py
@@ -1,16 +1,28 @@
-from dots_manager.args import parse_arguments
-from dots_manager.env import initialize_environment
+import sys
+import shutil
+from dots_manager.config import Environment, parse_arguments
from dots_manager.template import compile_dotfiles
from dots_manager.stow import apply_stow_operation_to_packages
def main():
args = parse_arguments()
- env = initialize_environment(args)
+ env = Environment.from_argv(args)
- if args.clean:
- apply_stow_operation_to_packages(args.comp, args.target, "-D", env)
- if args.compile:
- compile_dotfiles(args.source, args.comp, env)
- if args.stow:
- apply_stow_operation_to_packages(args.comp, args.target, "--no-folding", env)
+ if args.clean and not (
+ apply_stow_operation_to_packages(args.output, args.target, "--delete", env)
+ and (not args.output.exists() or shutil.rmtree(args.output) is None)
+ ):
+ env.logger.error("could not clean up stowed dotfiles <_mood.sad>")
+ sys.exit(1)
+ if args.compile and not compile_dotfiles(args.source, args.output, env):
+ env.logger.error("could not compile dotfiles <_mood.sad>")
+ sys.exit(1)
+ if args.stow and not apply_stow_operation_to_packages(
+ args.output, args.target, "--no-folding", env
+ ):
+ env.logger.error("could not stow dotfile packages <_mood.sad>")
+ sys.exit(1)
+
+ env.logger.info("done! <_mood.happy>")
+ sys.exit(0)