fixed some problems with the command structure

This commit is contained in:
Emma Tebibyte 2022-11-17 15:09:19 -05:00
parent 716579f824
commit 4dc5cea89a
1 changed files with 106 additions and 81 deletions

187
README.md
View File

@ -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.