commit 785853c1b9dfecfaeda8cbedaa02400cffd6a2c3
parent 3d407479b933a59b56b073340b965b7d32f27ddd
Author: GeaRSiX <gearsix@tuta.io>
Date: Sat, 25 Jul 2020 22:49:25 +0100
DOTFM_CSV_FILE now tracks installed dotfiles
renamed DOTFM_CSV_FILE filename to installed.csv
added INSTALLED_DOTFILES (loads from DOTFM_CSV_FILE in dotfm_init)
dotfm_install appends to DOTFM_CSV_FILE & INSTALLED_DOTFILES
updated dotfm_list to use DOTFM_CSV_FILE properly
Diffstat:
1 file changed, 23 insertions(+), 7 deletions(-)
diff --git a/src/dotfm.py b/src/dotfm.py
@@ -26,7 +26,7 @@ USER = os.getenv('USER') # $USER calling dotfm
ARGS = sys.argv # parsed arguments
EDITOR = os.getenv('EDITOR') or 'nano' # text editor to modify dotfiles with
VERSION = 'v1.0.2'
-DOTFM_CSV_FILE = '/home/{}/.config/dotfm/dotfm.csv'.format(USER)
+DOTFM_CSV_FILE = '/home/{}/.config/dotfm/installed.csv'.format(USER)
KNOWN_DOTFILES = [ # dotfiles that dotfm knows by default
# location # aliases
['/home/{}/.config/dotfm/dotfm.csv'.format(USER), 'dotfm.csv', 'dotfm'],
@@ -40,6 +40,7 @@ KNOWN_DOTFILES = [ # dotfiles that dotfm knows by default
['/home/{}/.config/rc.conf'.format(USER), 'rc.conf', 'ranger.conf'],
['/home/{}/.config/user-dirs.dirs'.format(USER), 'user-dirs.dirs', 'xdg-user-dirs'],
]
+INSTALLED_DOTFILES = [] # appended to during dotfm_init
#-----------
# FUNCTIONS
@@ -72,7 +73,7 @@ def validate_dotfiledir_path(dirname, dotfiledir_path):
error_exit('DOTFILE DIRECTORY \"{}\" ({}) is not a directory'.format(dotfile, dotfiledir_path))
def dotfm_init():
- """ If DOTFM_CSV_FILE does not exist, create it.
+ """ If DOTFM_CSV_FILE does not exist, create it. If it does, load it's values into KNOWN_DOTFILES
Will prompt the user where they want the file to be created at,
if that location does not match DOTFM_CSV_FILE, DOTFM_CSV_FILE
will be a symbolic link to that location.
@@ -123,6 +124,15 @@ def dotfm_init():
if os.path.abspath(location) != DOTFM_CSV_FILE:
os.system('ln -fsv {} {}'.format(os.path.abspath(location), DOTFM_CSV_FILE))
+ # append to INSTALLED_DOTFILES
+ INSTALLED_DOTFILES.append(KNOWN_DOTFILES[0])
+ else: # load existing values into INSTALLED_DOTFILES
+ dotfm_csv = open(DOTFM_CSV_FILE, "r")
+ dotfm_csv_reader = csv.reader(dotfm_csv)
+ for dfl in dotfm_csv_reader:
+ INSTALLED_DOTFILES.append(dfl)
+ dotfm_csv.close()
+
def dotfm_install(dotfile):
""" check "KNOWN_DOTFILES" to see if an alias matches "dotfile" basename, if it does create a
symbolic link from "dotfile" to the matching "KNOWN_DOTFILES" location (index 0).
@@ -168,6 +178,16 @@ def dotfm_install(dotfile):
# create symbolic link to dotfile
else:
os.system('ln -vs {} {}'.format(dotfile, dest))
+ # append to DOTFILE_CSV_FILE and INSTALLED_DOTFILES
+ LOGGER.info('appending to installed dotfiles...')
+ dotfm_csv = open(DOTFM_CSV_FILE, "a")
+ for i, item in enumerate(dfl):
+ if i == 0:
+ dotfm_csv.write(item)
+ else:
+ dotfm_csv.write(',{}'.format(item))
+ dotfm_csv.close()
+ INSTALLED_DOTFILES.append(dfl)
break
# handle unrecognised dotfile alias
@@ -233,18 +253,14 @@ def dotfm_list(dotfile):
LOGGER.info('listing dotfm files')
found = False
- dotfm_csv = open(DOTFM_CSV_FILE, "r")
- dotfm_csv_reader = csv.reader(dotfm_csv)
LOGGER.info('\t{} Location'.format('Aliases...'.ljust(35)))
- for dfl in dotfm_csv_reader:
+ for dfl in INSTALLED_DOTFILES:
# list all dotfile locations
if dotfile == 'all':
dfln = '"' + '", "'.join(dfl[1:]) + '"'
LOGGER.info('\t{} {} -> {}'.format(dfln.ljust(35), dfl[0], os.path.realpath(dfl[0])))
# list specific dotfile location
else:
- if found == True:
- break
for name in dfl:
if dotfile == name:
found = True