diff --git a/dotfiles_install.py b/dotfiles_install.py index 4ae0340..701f54c 100644 --- a/dotfiles_install.py +++ b/dotfiles_install.py @@ -1,12 +1,38 @@ +from util import Path, Print +from datetime import datetime + + class Dotfiles: def __init__(self): + self.backup_location = Path.join(Path.WORKING_FLODER, 'Backups') + self.dotfiles_location = Path.join(Path.WORKING_FLODER, 'files') self.initial_checks() def initial_checks(self): pass def make_backup(self): - pass + Print.action('Creating current dotfiles backup') + # time will be used as backup directory name + cur_time = str(datetime.now()).replace(' ', '--') + backup_dir = Path.join(self.backup_location, cur_time) + Path.ensure_dirs(backup_dir) + + # Loop through every file in dotfiles_location + for file in Path.get_all_files(self.dotfiles_location): + # Remove dotfiles_location from file path + file_blank = file.replace(f'{self.dotfiles_location}/', '') + + # Use path in home directory + from_pos = Path.join(Path.get_home(), file_blank) + # Use path in backup directory + to_pos = Path.join(backup_dir, file_blank) + + # If file is in home directory, back it up + if Path.check_file_exists(from_pos): + Path.copy(from_pos, to_pos) + + Print.action('Backup complete') def personalized_changes(self, file): pass diff --git a/util/Path.py b/util/Path.py index 6210bbd..6e3d85f 100644 --- a/util/Path.py +++ b/util/Path.py @@ -4,6 +4,8 @@ import pathlib from util import Command, Print +WORKING_FLODER = os.path.dirname(os.path.realpath(__file__)) + def check_dir_exists(paths): '''Check for directory/ies existence @@ -145,3 +147,13 @@ def copy(path, copied_path): ensure_dirs(copied_path, file_end=True) Command.execute(f'cp {path} {copied_path}') Print.comment(f'Copied {path} to {copied_path}') + + +def join(*paths): + '''Join paths together + (This function is here to avoid re-importing os module in other scripts) + + Returns: + str -- Joined paths + ''' + return os.path.join(paths)