Add READMEs
This commit is contained in:
parent
fbdcc4ec39
commit
b85cf3b580
9 changed files with 14 additions and 159 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -1 +0,0 @@
|
|||
__pycache__
|
2
README.md
Normal file
2
README.md
Normal file
|
@ -0,0 +1,2 @@
|
|||
# Config
|
||||
Config files for the software I use.
|
|
@ -1,16 +0,0 @@
|
|||
import pathlib
|
||||
|
||||
|
||||
def make_abs_path(path, root):
|
||||
if not path.is_absolute():
|
||||
return root.joinpath(path)
|
||||
return path
|
||||
|
||||
def get_io(conf, root):
|
||||
return (
|
||||
make_abs_path(pathlib.Path(conf.get("in")).expanduser(), root),
|
||||
make_abs_path(pathlib.Path(conf.get("out")).expanduser(), root),
|
||||
)
|
||||
|
||||
def get_yn(args, prompt):
|
||||
return args.default_yes or (not args.default_no and input(prompt).strip().lower() in ["y", ""])
|
|
@ -1,84 +0,0 @@
|
|||
import argparse
|
||||
import logging
|
||||
import logging.config
|
||||
import pathlib
|
||||
import shutil
|
||||
import subprocess
|
||||
import sys
|
||||
import tomllib
|
||||
|
||||
from . import get_io, get_yn
|
||||
|
||||
|
||||
logging.config.fileConfig(pathlib.Path(__file__).with_name("log.conf"))
|
||||
log = logging.getLogger("config")
|
||||
|
||||
_argp = argparse.ArgumentParser(
|
||||
prog="Config",
|
||||
description="Install custom configurations",
|
||||
)
|
||||
|
||||
_argp.add_argument("-c", "--config", default="config.toml", type=pathlib.Path, help="Configuration file location")
|
||||
_argp.add_argument("-y", "--default-yes", action="store_true", help="Default yes to questions")
|
||||
_argp.add_argument("-n", "--default-no", action="store_true", help="Default no to questions")
|
||||
|
||||
args = _argp.parse_args()
|
||||
|
||||
log.info("Config installation starting")
|
||||
|
||||
log.info(f"Loading configuration file <{args.config}>.")
|
||||
try:
|
||||
with open(args.config, "rb") as _config_file:
|
||||
config = tomllib.load(_config_file)
|
||||
except FileNotFoundError:
|
||||
log.error(f"Configuration file <{args.config}> does not exist.")
|
||||
sys.exit(1)
|
||||
|
||||
_root = args.config.parent
|
||||
|
||||
for _name, _conf in config.items():
|
||||
match _name.lower():
|
||||
case "winget":
|
||||
log.info("Installing packages using winget.")
|
||||
for _package in _conf.get("packages"):
|
||||
_test = subprocess.run(("winget", "list", "--id", _package))
|
||||
if _test.returncode == 0:
|
||||
if not get_yn(args, f"<{_package}> is already installed; reinstall [Yn] ? "):
|
||||
log.info(f"> Skipping <{_package}> install.")
|
||||
continue
|
||||
log.info(f"> Installing {_package} using winget.")
|
||||
subprocess.run(("winget", "install", _package))
|
||||
case "windowsoptionalfeatures":
|
||||
log.info("Enabling Windows Optional Features.")
|
||||
for _feature in _conf.get("features"):
|
||||
log.info(f"> Enabling {_feature}.")
|
||||
subprocess.run(("dism", "-Online", "-Add-Capability", f"-CapabilityName:{_feature}"))
|
||||
case _:
|
||||
_in, _out = get_io(_conf, _root)
|
||||
log.info(f"Installing {_name} configuration from <{_in}> to <{_out}>.")
|
||||
if not _in.is_file():
|
||||
log.error(f"> {_name} configuration <{_in}> could not be found.")
|
||||
sys.exit(1)
|
||||
|
||||
if _out.exists():
|
||||
if _out.is_file():
|
||||
if not get_yn(args, f"<{_out}> already exists; replace [Yn] ? "):
|
||||
log.info(f"> Skipping {_name} configuration.")
|
||||
continue
|
||||
else:
|
||||
log.info(f"> Installing {_name} configuration.")
|
||||
else:
|
||||
log.error(f"> <{_out}> already exists and is not a file.")
|
||||
sys.exit(1)
|
||||
|
||||
if not _out.parent.exists():
|
||||
_out.parent.mkdir(parents=True)
|
||||
elif not _out.parent.is_dir():
|
||||
log.error(f"> {_name} configuration could not be installed as <{_out.parent}> is not a directory.")
|
||||
sys.exit(1)
|
||||
|
||||
try:
|
||||
shutil.copyfile(_in, _out)
|
||||
except OSError:
|
||||
log.error(f"> {_name} could not be configured: destination <{_out}> is not writable.")
|
||||
sys.exit(1)
|
|
@ -1,27 +0,0 @@
|
|||
[loggers]
|
||||
keys=root,config
|
||||
|
||||
[handlers]
|
||||
keys=consoleHandler
|
||||
|
||||
[formatters]
|
||||
keys=simpleFormatter
|
||||
|
||||
[logger_root]
|
||||
level=INFO
|
||||
handlers=consoleHandler
|
||||
|
||||
[logger_config]
|
||||
level=INFO
|
||||
handlers=consoleHandler
|
||||
qualName=config
|
||||
propagate=0
|
||||
|
||||
[handler_consoleHandler]
|
||||
class=StreamHandler
|
||||
level=INFO
|
||||
formatter=simpleFormatter
|
||||
args=(sys.stdout,)
|
||||
|
||||
[formatter_simpleFormatter]
|
||||
format=%(asctime)s - %(name)s#%(levelname)s %(message)s
|
2
src/Git/README.md
Normal file
2
src/Git/README.md
Normal file
|
@ -0,0 +1,2 @@
|
|||
# Git
|
||||
Install to `~/.gitconfig`.
|
5
src/Neovim/README.md
Normal file
5
src/Neovim/README.md
Normal file
|
@ -0,0 +1,5 @@
|
|||
# Neovim
|
||||
## Linux
|
||||
Install to `~/.config/nvim/init.vim`.
|
||||
## Windows
|
||||
Install to `$HOME\AppData\Local\nvim\init.vim`.
|
5
src/PowerShell/README.md
Normal file
5
src/PowerShell/README.md
Normal file
|
@ -0,0 +1,5 @@
|
|||
# Powershell
|
||||
Install to `$HOME\Documents\PowerShell\Profile.ps1`.
|
||||
|
||||
## Older versions
|
||||
Install to `$HOME\Documents\WindowsPowerShell\Profile.ps1`.
|
|
@ -1,31 +0,0 @@
|
|||
[Winget]
|
||||
packages = [
|
||||
"Git.Git",
|
||||
"Neovim.Neovim",
|
||||
"GnuPG.GnuPG",
|
||||
"SyncTrayzor.SyncTrayzor",
|
||||
"Discord.Discord",
|
||||
"Microsoft.PowerToys",
|
||||
#"Microsoft.Office",
|
||||
"Mozilla.Thunderbird",
|
||||
"Valve.Steam",
|
||||
"EpicGames.EpicGamesLauncher",
|
||||
"GOG.Galaxy",
|
||||
]
|
||||
|
||||
[WindowsOptionalFeatures]
|
||||
features = [
|
||||
"Media.MediaFeaturePack"
|
||||
]
|
||||
|
||||
[PowerShell]
|
||||
in="PowerShell/profile.ps1"
|
||||
out="~/Documents/WindowsPowerShell/profile.ps1"
|
||||
|
||||
[Git]
|
||||
in="Git/gitconfig-win"
|
||||
out="~/.gitconfig"
|
||||
|
||||
[Neovim]
|
||||
in="Neovim/init.vim"
|
||||
out="~/AppData/Local/nvim/init.vim"
|
Loading…
Reference in a new issue