hof / mod
hof/mod
is a command for managing CUE and Hof modules.
Use it to initialize a new module, set versioned dependencies,
and fetch them with a single command.
$ hof help fmt
hof mod is CUE dependency management based on Go mods.
### Module File
The module file holds the requirements for project.
It is found in cue.mod/module.cue
---
// These are like golang import paths
// i.e. github.com/hofstadter-io/hof
module: "<module-path>"
cue: "v0.5.0"
// Required dependencies section
require: {
// "<module-path>": "<module-semver>"
"github.com/hofstadter-io/ghacue": "v0.2.0"
"github.com/hofstadter-io/hofmod-cli": "v0.8.1"
}
// Indirect dependencies (managed by hof)
indirect: { ... }
// Replace dependencies with local or remote
replace: {
"github.com/hofstadter-io/ghacue": "github.com/myorg/ghacue": "v0.4.2"
"github.com/hofstadter-io/hofmod-cli": "../mods/clie"
}
---
### Authentication and private modules
hof mod prefers authenticated requests when fetching dependencies.
This increase rate limits with hosts and supports private modules.
Both token and sshkey base methods are supported, with preferences:
1. Matching entry in .netrc
machine github.com
login github-token
password <github-token-value>
2. ENV VARS for well known hosts.
GITHUB_TOKEN
GITLAB_TOKEN
BITBUCKET_USERNAME / BITBUCKET_PASSWORD or BITBUCKET_TOKEN
The bitbucket method will depend on the account type and enterprise license.
3. SSH keys
the following are searched: ~/.ssh/config, /etc/ssh/config, ~/.ssh/id_rsa
### Usage
there are two main commands you will use, init & tidy
# Initialize the current folder as a module
hof mod init <module-path> (like github.com/org/repo)
# Refresh dependencies, discovering any new imports
hof mod tidy
# Add a dependency
hof mod get github.com/hofstadter-io/hof@v0.6.8
hof mod get github.com/hofstadter-io/hof@v0.6.8-beta.6
hof mod get github.com/hofstadter-io/hof@latest // latest semver
hof mod get github.com/hofstadter-io/hof@next // next prerelease
hof mod get github.com/hofstadter-io/hof@main // latest commit on branch
# Update dependencies
hof mod get github.com/hofstadter-io/hof@latest
hof mod get all@latest
# Symlink dependencies from local cache
hof mod link
# Copy dependency code from local cache
hof mod vendor
# Verify dependency code against cue.mod/sums.cue
hof mod verify
# This helpful output
hof mod help
Usage:
hof mod [command]
Aliases:
mod, m
Available Commands:
clean clean hof's module cache
get add a new dependency to the current module
init initialize a new module in the current directory
link symlink dependencies to cue.mod/pkg
publish publish a module
tidy recalculate dependencies and update mod files
vendor copy dependencies to cue.mod/pkg
verify verify integrity of dependencies
Flags:
-h, --help help for mod
Global Flags:
-E, --all-errors print all available errors
-i, --ignore-errors turn off output and assume defaults at prompts
-D, --include-data auto include all data files found with cue files
-V, --inject-env inject all ENV VARs as default tag vars
-I, --input stringArray extra data to unify into the root value
-p, --package string the Cue package context to use during execution
-l, --path stringArray CUE expression for single path component when placing data files
-q, --quiet turn off output and assume defaults at prompts
-d, --schema stringArray expression to select schema to apply to data files
--stats print generator statistics
-0, --stdin-empty A flag that ensure stdin is zero and does not block
-t, --tags stringArray @tags() to be injected into CUE code
-v, --verbosity int set the verbosity of output
--with-context add extra context for data files, usable in the -l/path flag
Use "hof mod [command] --help" for more information about a command.