Update VTSM to support custom manifest files

Turns out I already laid the foundation, I simply forgot to implement it
myself. Whoops!
This commit is contained in:
Gabriel Arazas 2020-09-21 23:58:25 +08:00
parent cef34b86cb
commit 49930ab3d8
2 changed files with 15 additions and 2 deletions

View File

@ -86,7 +86,8 @@ The best way to describe VTSM is basically GNU Stow with a generic shell runner.
VTSM takes inspiration from GNU Stow (obviously) and https://github.com/holman/dotfiles[how Zach Holman's dotfiles are set].
When managing your dotfiles, VTSM is going to be your friend/workmate.
All VTSM needs is a directory containing a package list stored in `locations.json` with the name of the packages and their target path.
All VTSM needs is a directory containing a package list stored in a JSON file with the name of the packages and their target path.
By default, it searches for a file named `locations.json`.
.An example of what `locations.json` could be
[source, json]
@ -315,6 +316,17 @@ For creating or editing Rofi themes, read the manual entry of `rofi-theme`.
Also, view the related https://wiki.archlinux.org/index.php/Rofi[Arch Wiki entry].
=== https://github.com/naelstrof/slop[slop]
A select operator for X-based systems with all the fanciful bell and whistles.
* Config located at link:slop[`slop`].
* The usual target path is at `$HOME/.config/slop`.
* Minimum version (from `slop --version`):
** v7.5
* It only contains customized selection shaders and whatnot that may be used for my custom scripts.
=== https://github.com/baskerville/sxhkd[sxhkd]
Stands for "Simple X Hotkey Daemon".

3
vtsm
View File

@ -134,6 +134,7 @@ def setup_args():
argparser.add_argument("-c", "--commands", metavar = "command", help = "Executing the specified commands. All of the commands are treated as they were entered in the shell.", nargs = "*", default = ["echo {package} is set at {location}"])
argparser.add_argument("-d", "--directory", metavar = "path", help = "Set the directory of the package data file.", type = Path, nargs = "?", default = Path(os.getcwd()))
argparser.add_argument("-m", "--manifest", metavar = "manifest", help = "Specify what metadata file to be used (e.g., locations.json).", type = Path, nargs = "?", default = DEFAULT_PACKAGE_DATA_FILE)
argparser.add_argument("--exclude", metavar = "package", help = "Exclude the given packages.", type = str, nargs = "+", default = [])
argparser.add_argument("--include", metavar = ("package", "location"), help = "Include with the following packages.", type = str, nargs = 2, action = "append", default = [])
argparser.add_argument("--only", metavar = "package", help = "Only execute with the given packages.", type = str, nargs = "+", default = [])
@ -153,7 +154,7 @@ def parse_args(parser, argv):
args = parser.parse_args(argv)
try:
package_dir = PackageDir(args.directory)
package_dir = PackageDir(args.directory, args.manifest)
# Include the following packages.
for package, target in args.include: