hof

module
v0.6.8-rc.5 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 19, 2023 License: Apache-2.0

README

hof - the high code framework

hof is a tool that weaves together data models, code generation, and task engine with CUE. Enhance your workflow and automate repetitive development. Language and technology agnostic.

  1. data model - define & manage data models - the source of truth
  2. code generation - data + template = _ (anything) - technology agnostic
  3. app blueprints - bootstrap config and other files - consistent skaffolding
  4. task engine - composable, extendable tasks and workflows - a DAG engine
  5. modules - composable data models & generators - an ecosystem
how hof works

hof is a CLI tool you will add to your workflows. It is technology agnostic, captures common patterns and boilerplate, has modules that span technologies, and continues to work as your application evolves.

  • data model management so you can checkpoint, diff, and calculate migrations
  • code generation to scaffold consistent code and boilerplate across the stack
  • diff3 to support custom code, data model updates, and code regeneration
  • modular and composable code generators with dependency management

hof uses CUE extensively to power the DX and implementation.

Learn more about CUE: cuelang.org | cuetorials.com

Documentation

Please see docs.hofstadter.io to learn more.

The getting-started section will take you on a tour of hof. The first-example section shows you how to build and use a generator.

Join us on Slack! https://hofstadter-io.slack.com We are more than happy to answer your questions.

Install or try hof on github

Download hof just once. After that hof will prompt you to update and install new releases as they become available.

You can always find the latest version on our GitHub releases page or use hof to install a specific version of itself with hof update --version vX.Y.Z.

# Homebrew
brew install hofstadter-io/tap/hof

# Latest Release
go install github.com/hofstadter-io/hof/cmd/hof@latest

# Latest Commit
go install github.com/hofstadter-io/hof/cmd/hof@_dev

# Shell Completions (bash, zsh, fish, power-shell)
echo ". <(hof completion bash)" >> $HOME/.profile
source $HOME/.profile

# Show the help text
hof --help

Contributing & Community

Interested in helping out or hanging out? The best ways to get started are

  1. The Contributing Guild
  2. Joining the Community

Main Commands

hof
hof - the high code framework

  Learn more at https://docs.hofstadter.io

Usage:
  hof [flags] [command] [args]

Main commands:
  create                dynamic blueprints from any git repo
  datamodel             manage, diff, and migrate your data models
  gen                   modular and composable code gen: CUE & data + templates = _
  flow                  run CUE pipelines with the hof/flow DAG engine
  fmt                   format any code and manage the formatters
  mod                   CUE dependency management based on Go mods

Additional commands:
  help                  help about any command
  update                check for new versions and run self-updates
  version               print detailed version information
  completion            generate completion helpers for your terminal
  feedback              open an issue or discussion on GitHub

Flags:
  -h, --help             help for hof
      --inject-env       inject all ENV VARs as default tag vars
  -p, --package string   the Cue package context to use during execution
  -q, --quiet            turn off output and assume defaults at prompts
  -t, --tags strings     @tags() to be injected into CUE code
  -v, --verbosity int    set the verbosity of output

Use "hof [command] --help / -h" for more information about a command.

Directories

Path Synopsis
cmd
hof
context
This package provides a context for Tasks and a registry for their usage in flows.
This package provides a context for Tasks and a registry for their usage in flows.
lib
connector
Package connector ...
Package connector ...
diff3
Package diff3 implements a three-way merge algorithm Original version in Javascript by Bryan Housel @bhousel: https://github.com/bhousel/node-diff3, which in turn is based on project Synchrotron, created by Tony Garnock-Jones.
Package diff3 implements a three-way merge algorithm Original version in Javascript by Bryan Housel @bhousel: https://github.com/bhousel/node-diff3, which in turn is based on project Synchrotron, created by Tony Garnock-Jones.
fmt
gen
gotils/auth
Package auth provides access to user-provided authentication credentials.
Package auth provides access to user-provided authentication credentials.
gotils/browser
Package browser provides utilities for interacting with users' browsers.
Package browser provides utilities for interacting with users' browsers.
gotils/intern/syscall/windows/sysdll
Package sysdll is an internal leaf package that records and reports which Windows DLL names are used by Go itself.
Package sysdll is an internal leaf package that records and reports which Windows DLL names are used by Go itself.
gotils/intern/textutil
package textutil contains text processing utilities.
package textutil contains text processing utilities.
gotils/lockedfile
Package lockedfile creates and manipulates files whose contents should only change atomically.
Package lockedfile creates and manipulates files whose contents should only change atomically.
gotils/lockedfile/internal/filelock
Package filelock provides a platform-independent API for advisory file locking.
Package filelock provides a platform-independent API for advisory file locking.
gotils/mmap
The mmap package provides an abstraction for memory mapping files on different platforms.
The mmap package provides an abstraction for memory mapping files on different platforms.
gotils/par
Package par implements parallel execution helpers.
Package par implements parallel execution helpers.
gotils/renameio
Package renameio writes files atomically by renaming temporary files.
Package renameio writes files atomically by renaming temporary files.
gotils/robustio
Package robustio wraps I/O functions that are prone to failure on Windows, transparently retrying errors up to an arbitrary timeout.
Package robustio wraps I/O functions that are prone to failure on Windows, transparently retrying errors up to an arbitrary timeout.
gotils/testenv
Package testenv provides information about what functionality is available in different testing environments run by the Go team.
Package testenv provides information about what functionality is available in different testing environments run by the Go team.
gotils/txtar
Package txtar implements a trivial text-based file archive format.
Package txtar implements a trivial text-based file archive format.
hof
This package manages the #hof: _ configuration and the various @<hof>() attributes
This package manages the #hof: _ configuration and the various @<hof>() attributes
mod
mod/mvs
Package mvs implements Minimal Version Selection.
Package mvs implements Minimal Version Selection.
mod/parse/lazyregexp
Package lazyregexp is a thin wrapper over regexp, allowing the use of global regexp variables without forcing them to be compiled at init.
Package lazyregexp is a thin wrapper over regexp, allowing the use of global regexp variables without forcing them to be compiled at init.
yagu/configdir
Package configdir provides a cross platform means of detecting the system's configuration directories.
Package configdir provides a cross platform means of detecting the system's configuration directories.
yagu/par
Package par implements parallel execution helpers.
Package par implements parallel execution helpers.
Package testscript provides support for defining filesystem-based tests by creating scripts in a directory.
Package testscript provides support for defining filesystem-based tests by creating scripts in a directory.
test

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL