2 KiB
2 KiB
requirements.txt
- cli-ui -> build user interface in the terminal
- colorama -> dependency of cli-ui
- unidecode -> dependency of cli-ui
- ruamel.yaml -> load and dump yaml with python
- path -> create path objects (alternative to os.path)
bootstrap.sh
- installs pip
- uses pip to install from requirements.txt
- installs rustup
- uses cargo to install fd-find and exa
- copies xkb-symbols: https://medium.com/@damko/a-simple-humble-but-comprehensive-guide-to-xkb-for-linux-6f1ad5e13450
configs.yml
- holds the symlinks, git clones and config writes
install.py
main()
- parses args: undefined number of programs as a list
- has a flag to overwrite (--force)
- Installer is a class, --force flag is passed to constructor
- runs Installer.install with the programs list
class Installer(force=False)
- self.conf -> load
configs.yml
- self.this_dir = getcwd()
- self.home = ~ (expanduser)
- self.force = force
- install():
- if no program in list, programs are found in self.conf
- for each program, run install_program(program)
- install_program(program)
- print program name
- look up program conf and assign to
todo
variable - for each action in
todo
, call corresponding method
- do_clone(url, dest, branch='master'):
- create dirs for dest recursively
- use subprocess to issue git clone command
- do_copy(src, dest):
- create dirs for dest recursively
- copy a config file to dest
- do_download(*, url, dest, executable=False):
- create dirs for dest recursively
- fetch url to dest
- if it should be executable, chmod it to 755
- do_run(args):
- args is a list
- from that list, create a command
- subprocess.check_call(command)
- do_symlink(src, dest):
- if is_dir make tree from parent.parent
- if not is_dir make tree from parent
- if dest is a link, remove it
- create the symlink
- do_write(src, contents):
- create path to src
- format the content with self.this_dir and self.home
- add newline at end
- write to file