From 4dc5cea89ab8d5b72314e0ed1ab9d5ae711baaa3 Mon Sep 17 00:00:00 2001 From: emma Date: Thu, 17 Nov 2022 15:09:19 -0500 Subject: [PATCH] fixed some problems with the command structure --- README.md | 187 +++++++++++++++++++++++++++++++----------------------- 1 file changed, 106 insertions(+), 81 deletions(-) diff --git a/README.md b/README.md index c1d158e..a59ef82 100644 --- a/README.md +++ b/README.md @@ -68,12 +68,9 @@ Liberapay](https://liberapay.com/assets/widgets/donate.svg)](https://liberapay.c - A `man(1)` entry ### Low Priority: -- `fish(1)` autocomplete -- `bash(1)` autocomplete -- `zsh(1)` autocomplete -- [Nushell](https://www.nushell.sh/) autocomplete +- Shell autocomplete - Configurable search result display like [Starship](https://starship.rs) -- Versioning system repository package management & compilation +- Version-control system repository package management & compilation ## External-Dependent: - Conflict resolution @@ -86,38 +83,34 @@ Liberapay](https://liberapay.com/assets/widgets/donate.svg)](https://liberapay.c [Modrinth REST API docs](https://docs.modrinth.com/api-spec/) -# File Architecture +# File Structure ``` -~/.hopper/ -├── hopper.conf -├── cache/ +├── "$XDG_CONFIG_HOME"/hopper.toml +├── "$XDG_CACHE_HOME"/hopper/ │ ├── 1.19.1/ │ │ └── fabric/ │ └── 1.18.2/ │ ├── forge/ │ └── plugin/ -└── templates/ +└── "XDG_DATA_HOME"/templates/ └── example-template.hop -> ~/.minecraft/mods/example-template.hop ``` # Hopfile Structure -Hopfiles will contain a Minecraft version number, a list of packages, the name -of the type of package it uses, and any references to other hopfiles it's based -on, or "templates". If a hopfile is based on other template hopfiles, it -inherits the packages from them. A hopfile does not inherit the package or -Minecraft version from a template. +Hopfiles will contain a Minecraft version number, a list of packages, and any +references to other hopfiles on which it's based, or "templates". If a hopfile +is based on other template hopfiles, it inherits the packages from them. A +hopfile does not inherit the package or Minecraft version from a template. ``` -template = example-template - -mc-version = 1.19.2 - -type = fabric +template = "example-template" +mc-version = "1.19.2" [packages] -sodium +fabric-mod = [ "sodium", "lithium" ] +resource = "alacrity" ``` # Hopper Configuration File Structure @@ -129,99 +122,131 @@ which to compile mods. The latter will use a (potentially custom) build file format to be defined at a later date. ``` -[hopfiles] -file = ~/.minecraft/mods/1.19.1.hop +hopfiles = [ + "~/.minecraft/mods/template.hop", + "~/.minecraft/1.91.1/mods/1.19.1.hop" +] -# Mod Hosts - -[Modrinth] -api = https://api.modrinth.com/ - -[CurseForge] -api = https://api.curseforge.com/ - -# Git Repositories - -[Iris Shaders] -source = git+https://github.com/IrisShaders/Iris.git +[sources] +modrinth = "https://api.modrinth.com/" +curseforge = "https://api.curseforge.com/" +git = [ + "git+https://github.com/IrisShaders/Iris.git" + "git+https://github.com/CaffeineMC/sodium-fabric.git" +] ``` # Docs ## Usage -`hopper [SUBCOMMAND] [OPTIONS]` - -## Common OPTIONS: - -`-d`, `--dir [FILE]` - - Specifies the path for the hopfile being utilized - -`-f`, `--filename [FILE]` - - Saves to a specific file name. - -`-m`, `--mc-version [VERSION]` - - Specifies for what VERSION of Minecraft PACKAGES are being managed - -`-t`, `--type [TYPE]` - - Specifies what TYPE of PACKAGEs is being referenced. TYPEs include -modloader names like `fabric`, `forge`, and `quilt`, as well as `resource` packs -and mod`pack`s. +`hopper [options...] [subcommand...]` +## OPTIONS `-v`, `--verbose` - Includes debug information in the output of `hopper` commands. + Includes debug information in the output of `hopper` subcommands. -## SUBCOMMANDs +## SUBCOMMANDS -`get [OPTIONS] PACKAGE` +`get [options...] [targets...]` - Searches for a PACKAGE, displays the results, and downloads any selected -PACKAGES to the local cache. + Searches for packages, displays the results, and downloads any selected +packages to the local cache. If multiple targets are specified, results are +displayed in order of specification. -OPTIONS +### OPTIONS + + `-d`, `--dir [directory...]` + +  Specifies the directory to download to (default is "$XDG_CACHE_HOME"/hopper/). + + `-m`, `--mc-version [version...]` + +  Specifies for what version of Minecraft packages are being retrieved.  `-n`, `--no-confirm`   Does not display search results and downloads exact matches to the cache. Requires `--mc-version` and `--type` be specified. -`init [OPTIONS] --mc-version VERSION --type TYPE TEMPLATE` + `-t`, `--type [types...]` + +  Specifies what types of packages are being queried. + +`init [options...]`  Creates a hopfile in the current directory and adds it to the global known -hopfiles list in the configuration file. If a TEMPLATE is passed as an -argument, the hopfile is added as a new template. A name is generated -using the VERSION and TYPE specified unless `--filename` is used. +hopfiles list. -OPTIONS +### OPTIONS - `--template [TEMPLATE1,TEMPLATE2...]` + `-d`, `--dir [directory...]` -  Specifies TEMPLATE hopfiles' names upon which to base the new -hopfile. +  Specifies the directory in which the hopfile is being created. -`install [OPTIONS] PACKAGE` + `-f`, `--hopfile [hopfiles...]` - Adds a PACKAGE to the current hopfile and runs `hopper update`. If the -PACKAGE cannot be found in the package cache, it runs `hopper get` first. +  Specifies templates upon which to base the new hopfile. Hopfile +names should be comma-delineated. -OPTIONS + `-m`, `--mc-version [version]` - `--template [TEMPLATE1,TEMPLATE2...]` +  Specifies for what version of Minecraft packages are being managed. -  Specifies a template hopfile to which to install mods + `-t`, `--type [type...]` -`list [OPTIONS]` +  Specifies what type of packages will be listed in this hopfile. + +`install [options...] [packages...]` + + Adds packages to the current hopfile, symlinking them to its directory. If +the package cannot be found in the package cache, `hopper get` is run first. + +### OPTIONS + +  `-f`, `--hopfile [hopfiles...]` + +  Specifies hopfiles to which mods will be added. Hopfile names and +paths should be comma-delineated. + +`list [options...]`  Lists all installed packages. -`update [OPTIONS] PACKAGE` +### OPTIONS + +  `-f` `--hopfile [hopfiles...]` + +  Lists packages installed in a specified hopfile. + + `-m`, `--mc-version [version]` + +  Specifies for what version of Minecraft packages are being managed. + + `-t`, `--type [types...]` + +  List all packages of a specified type. + +`update [options...]` + + Updates installed packages and adds mods if they're missing to directories +with known hopfiles. + +### OPTIONS + + `-f`, `--hopfile [hopfiles...]` +  Updates only packages in the specified hopfile. Note that this +option creates a new file and symlink as it does not update the packages for +other hopfiles. + + `-t`, `--type [types...] [packages...]` + +  Updates only packages of a specified type. Optionally takes a list +of packages as an argument. + + `-m`, `--mc-version [version]` + +  Specifies for what version of Minecraft packages are being updated. - Updates installed PACKAGEs and adds mods if they're missing to directories -with known hopfiles. If a PACKAGE is passed, `--type` must be specified so that -hopper `update`s the correct package. \ No newline at end of file