mirror of
https://github.com/ItsDrike/dotfiles.git
synced 2025-04-28 05:02:26 +00:00
OOP: Dotfile Creation
This commit is contained in:
parent
bab2696bac
commit
c38e4b043f
3 changed files with 60 additions and 8 deletions
|
@ -1,4 +1,4 @@
|
|||
from util import Path, Print, Install
|
||||
from util import Path, Print, Install, Input
|
||||
from datetime import datetime
|
||||
|
||||
|
||||
|
@ -11,6 +11,7 @@ class InstallationChecks:
|
|||
@staticmethod
|
||||
def get_installation_path(standard_paths):
|
||||
dir_exists, path = Path.check_dir_exists(standard_paths)
|
||||
if dir_exists:
|
||||
path = path.replace('~', '$HOME')
|
||||
|
||||
return dir_exists, path
|
||||
|
@ -84,8 +85,36 @@ class Dotfiles:
|
|||
self.dotfiles_location = Path.join(Path.WORKING_FLODER, 'files')
|
||||
|
||||
def start(self):
|
||||
Print.action('Installing dotfiles')
|
||||
|
||||
# Check for necessary packages
|
||||
self.initial_checks()
|
||||
|
||||
# Check backup
|
||||
if Input.yes_no(
|
||||
'Do you wish to create backup of your current dotfiles?'):
|
||||
self.make_backup()
|
||||
else:
|
||||
Print.warning(
|
||||
'Proceeding without backup, you will loose your current dotfiles settings'
|
||||
)
|
||||
|
||||
# Symlinks or Files
|
||||
create_dotfiles = Input.multiple('Do you wish to create dotfiles?', [
|
||||
'symlinks (dotfiles/ dir will be required)',
|
||||
'files (dotfiles/ dir can be removed afterwards)'
|
||||
])
|
||||
|
||||
if create_dotfiles == 'symlinks':
|
||||
self.use_symlinks = True
|
||||
elif create_dotfiles == 'files':
|
||||
self.use_symlinks = False
|
||||
else:
|
||||
Print.err('Symlink creation aborted (canceled by user.)')
|
||||
return False
|
||||
|
||||
self.create_dotfiles()
|
||||
|
||||
def initial_checks(self):
|
||||
if not InstallationChecks.check_zsh():
|
||||
InstallationChecks.installation_error('zsh')
|
||||
|
@ -124,6 +153,20 @@ class Dotfiles:
|
|||
def personalized_changes(self, file):
|
||||
pass
|
||||
|
||||
def create_dotfiles(self):
|
||||
file_list = Path.get_all_files(self.dotfiles_location)
|
||||
for target_file in file_list: # Loop through every file in dotfiles
|
||||
self.personalized_changes(target_file)
|
||||
|
||||
# Remove dotfiles_location from file path
|
||||
file_blank = target_file.replace(f'{self.dotfiles_location}/', '')
|
||||
destination = Path.join(Path.get_home(), file_blank)
|
||||
|
||||
if self.use_symlinks:
|
||||
Path.create_symlink(target_file, destination)
|
||||
else:
|
||||
Path.copy(target_file, destination)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
dotfiles = Dotfiles()
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
#!/bin/python3
|
||||
from util import Print
|
||||
import re
|
||||
|
||||
|
||||
def yes_no(question):
|
||||
|
@ -30,7 +31,7 @@ def multiple(question, options):
|
|||
options {list} -- list of possible options (strings)
|
||||
|
||||
Returns:
|
||||
str -- one of options
|
||||
str -- one of options (without content in brackets in the end)
|
||||
'''
|
||||
def get_input_range(max):
|
||||
while True:
|
||||
|
@ -55,7 +56,14 @@ def multiple(question, options):
|
|||
|
||||
answer = get_input_range(len(options))
|
||||
if answer != 0:
|
||||
return options[answer - 1]
|
||||
result = options[answer - 1]
|
||||
result = re.sub(r'\(.*\)$', '',
|
||||
result) # remove bracket content in the end
|
||||
if result[
|
||||
-1] == ' ': # remove remaining space (might happen after removing brackets)
|
||||
result = result[:-1]
|
||||
return result
|
||||
|
||||
else:
|
||||
return False
|
||||
|
||||
|
|
|
@ -4,8 +4,6 @@ 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
|
||||
|
@ -111,7 +109,7 @@ def ensure_dirs(path, file_end=False, absolute_path=True):
|
|||
if check_file_exists(path) or file_end:
|
||||
path = get_parent(path)
|
||||
|
||||
if not check_dir_exists(path):
|
||||
if not check_dir_exists(path)[0]:
|
||||
Command.execute(f'mkdir -p {path}')
|
||||
Print.comment(f'Creating directory {path}')
|
||||
|
||||
|
@ -156,4 +154,7 @@ def join(*paths):
|
|||
Returns:
|
||||
str -- Joined paths
|
||||
'''
|
||||
return os.path.join(paths)
|
||||
return os.path.join(*paths)
|
||||
|
||||
|
||||
WORKING_FLODER = get_parent(os.path.dirname(os.path.realpath(__file__)))
|
||||
|
|
Loading…
Add table
Reference in a new issue