The High Code Framework (low-code for devs)

hof - the high code framework

The hof tool tries to remove redundent development activities by using high level designs, code generation, and diff3 while letting you write custom code directly in the output. ( low-code for developers )

  • Users write Single Source of Truth (SSoT) design for data models and the application generators
  • hof reads the SSoT, processes it through the code generators, and outputs directories and files
  • Users can write custom code in the output, change their designs, and regenerate code in any order
  • hof can be customized and extended by only editing text files and not hof source code.
  • Use your own tools, technologies, and practices, hof does not make any choices for you
  • hof is powered by Cue (https://cuelang.org & https://cuetorials.com)

Install

You will have to download hof the first time. After that hof will prompt you to update and install new releases as they become available.

# Install (Linux, Mac, Windows)
curl -LO https://github.com/hofstadter-io/hof/releases/download/v0.5.15/hof_0.5.15_$(uname)_$(uname -m)
mv hof_0.5.15_$(uname)_$(uname -m) /usr/local/bin/hof

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

# Show the help text
hof --help

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

Documentation

Please see https://docs.hofstadter.io to learn more.

Join us on Slack! https://hofstadter-io.slack.com (invite link)

Example

There are currently hof modules for:

  • hofmod-cli - CLI infrastructure based on the Golang Cobra library.
  • hofmod-server - API server based on the Golang Echo library.

You can see them used in:

  • hof uses hofmod-cli
  • saas uses hofmod-server

The following is a single file example:

package gen

import (
	// import hof's schemas for our generator
	"github.com/hofstadter-io/hof/schema"
)

// A schema for our generator's input
#Input: {
	name: string
	todos: [...{
		name: string
		effort: int
		complete: bool
	}]
}
// create a generator
#Gen: schema.#HofGenerator & {
	// We often have some input values for the user to provide.
	// Use a Cue definition to enforce a schema
	Input: #Input

	// Required filed for generator definitions, details can be found in the hof docs
	PackageName: "dummy"

	// Required field for a generator to work, the list of files to generate
	Out: [...schema.#HofGeneratorFile] & [
		todo,
		done,
		debug,
	]

	// In is supplied as the root data object to every template
	// pass user inputs to the tempaltes here, possibly modified, enhanced, or transformed
	In: {
		INPUT: Input
		Completed: _C
		Incomplete: _I
	}

	// calculate some internal data from the input
	_C: [ for t in Input.todos if t.complete == true { t } ]
	_I: [ for t in Input.todos if t.complete == false { t } ]

	// the template files
	todo: {
		Template: """
		Hello {{ .INPUT.name }}.

		The items still on your todo list:

		{{ range $T := .Incomplete -}}
		{{ printf "%-4s%v" $T.name $T.effort }}
		{{ end }}
		"""
		// The output filename, using string interpolation
		Filepath: "\(Input.name)-todo.txt"
	}
	done: {
		Template: """
		Here's what you have finished {{ .INPUT.name }}. Good job!

		{{ range $T := .Completed -}}
		{{ $T.name }}
		{{ end }}
		"""
		Filepath: "\(Input.name)-done.txt"
	}

	// useful helper
	debug: {
		Template: """
		{{ yaml . }}
		"""
		Filepath: "debug.yaml"
	}
}

// Add the @gen(<name>,<name>,...) to denote usage of a generator
Gen: _ @gen(todos)
// Construct the generator
Gen: #Gen & {
	Input: {
		// from first.cue
		name: gen.data.name
		todos: gen.data.tasks
	}
}
Owner
_Hofstadter
Developing new ways to develop
_Hofstadter
Comments
  • feat: add generic git package manager

    feat: add generic git package manager

    This PR add the ability to pull dependencies from another remote than github.com. It also manages private repositories (using ssh auth) and repository with a longer path (e.g. GitLab and its - infamous - subgroups).

    We can obviously improve this PR (managing v0.0.0 tag, basic auth) but I wanted to first take the temperature 😊

    If that looks OK to you, we can even drop the GitHub API + Zip stuff and use this generic function instead.

  • Use hof as code generator

    Use hof as code generator

    Hello,

    I would like to use hof to generate code using cuelang as the IDL.

    Is it possible to provide an example on how to do this? The tests indicate this should be possible

    The goal is to define the datamodels/schemas in cuelang and use templates(preferably using mustache templating) to generate different target clients.

    Any help is highly appreciated. Thanks :)

  • build(deps): bump github.com/labstack/echo/v4 from 4.7.2 to 4.9.0

    build(deps): bump github.com/labstack/echo/v4 from 4.7.2 to 4.9.0

    Bumps github.com/labstack/echo/v4 from 4.7.2 to 4.9.0.

    Release notes

    Sourced from github.com/labstack/echo/v4's releases.

    v4.9.0

    Security

    • Fix open redirect vulnerability in handlers serving static directories (e.Static, e.StaticFs, echo.StaticDirectoryHandler) #2260

    Enhancements

    • Allow configuring ErrorHandler in CSRF middleware #2257
    • Replace HTTP method constants in tests with stdlib constants #2247

    v4.8.0

    Most notable things

    You can now add any arbitrary HTTP method type as a route #2237

    e.Add("COPY", "/*", func(c echo.Context) error 
      return c.String(http.StatusOK, "OK COPY")
    })
    

    You can add custom 404 handler for specific paths #2217

    e.RouteNotFound("/*", func(c echo.Context) error { return c.NoContent(http.StatusNotFound) })
    

    g := e.Group("/images") g.RouteNotFound("/*", func(c echo.Context) error { return c.NoContent(http.StatusNotFound) })

    Enhancements

    • Add new value binding methods (UnixTimeMilli,TextUnmarshaler,JSONUnmarshaler) to Valuebinder #2127
    • Refactor: body_limit middleware unit test #2145
    • Refactor: Timeout mw: rework how test waits for timeout. #2187
    • BasicAuth middleware returns 500 InternalServerError on invalid base64 strings but should return 400 #2191
    • Refactor: duplicated findStaticChild process at findChildWithLabel #2176
    • Allow different param names in different methods with same path scheme #2209
    • Add support for registering handlers for different 404 routes #2217
    • Middlewares should use errors.As() instead of type assertion on HTTPError #2227
    • Allow arbitrary HTTP method types to be added as routes #2237
    Changelog

    Sourced from github.com/labstack/echo/v4's changelog.

    v4.9.0 - 2022-09-04

    Security

    • Fix open redirect vulnerability in handlers serving static directories (e.Static, e.StaticFs, echo.StaticDirectoryHandler) #2260

    Enhancements

    • Allow configuring ErrorHandler in CSRF middleware #2257
    • Replace HTTP method constants in tests with stdlib constants #2247

    v4.8.0 - 2022-08-10

    Most notable things

    You can now add any arbitrary HTTP method type as a route #2237

    e.Add("COPY", "/*", func(c echo.Context) error 
      return c.String(http.StatusOK, "OK COPY")
    })
    

    You can add custom 404 handler for specific paths #2217

    e.RouteNotFound("/*", func(c echo.Context) error { return c.NoContent(http.StatusNotFound) })
    

    g := e.Group("/images") g.RouteNotFound("/*", func(c echo.Context) error { return c.NoContent(http.StatusNotFound) })

    Enhancements

    • Add new value binding methods (UnixTimeMilli,TextUnmarshaler,JSONUnmarshaler) to Valuebinder #2127
    • Refactor: body_limit middleware unit test #2145
    • Refactor: Timeout mw: rework how test waits for timeout. #2187
    • BasicAuth middleware returns 500 InternalServerError on invalid base64 strings but should return 400 #2191
    • Refactor: duplicated findStaticChild process at findChildWithLabel #2176
    • Allow different param names in different methods with same path scheme #2209
    • Add support for registering handlers for different 404 routes #2217
    • Middlewares should use errors.As() instead of type assertion on HTTPError #2227
    • Allow arbitrary HTTP method types to be added as routes #2237
    Commits
    • 16d3b65 Changelog for 4.9.0
    • 0ac4d74 Fix #2259 open redirect vulnerability in echo.StaticDirectoryHandler (used by...
    • d77e8c0 Added ErrorHandler and ErrorHandlerWithContext in CSRF middleware (#2257)
    • 534bbb8 replace POST constance with stdlib constance
    • fb57d96 replace GET constance with stdlib constance
    • d48197d Changelog for 4.8.0
    • cba12a5 Allow arbitrary HTTP method types to be added as routes
    • a327884 add:README.md-Third-party middlewares-github.com/go-woo/protoc-gen-echo
    • 61422dd Update CI-flow (Go 1.19 +deps)
    • a9879ff Middlewares should use errors.As() instead of type assertion on HTTPError
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

  • hof adhoc generator not working with absolute paths

    hof adhoc generator not working with absolute paths

    OS: Linux ubuntu 20.04 Shell: bash

    I am trying to use adhoc generator to generate some code with following command hof gen /scripts/configs/chartapijson.cue -T /scripts/templates/chartgen.go -O /scripts/out/ it gives following error [Named template "/scripts/templates/chartgen.go" not found for AdhocGen /scripts/templates/chartgen.go AdhocGen templates: []] while initializing adhoc generator same command works if i use relative path for template

    any idea what could be wrong?

  • Bug with `hof completion fish`

    Bug with `hof completion fish`

    $ hof completion fish | source
    - (line 1): function: _: cannot use reserved keyword as function name
    function _ --wraps hof --description 'alias _=hof';  hof $argv; end
    ^
    from sourcing file -
    	called on line 70 of file /opt/homebrew/Cellar/fish/3.4.1/share/fish/functions/alias.fish
    in function 'alias' with arguments '_=hof'
    	called on line 2 of file -
    from sourcing file -
    

    The error is in the first few lines of hof completion fish:

    
    alias _="hof"
    #compdef _=hof
    #compdef _hof _
    
    # fish completion for hof                                  -*- shell-script -*-
    
    function __hof_debug
        set -l file "$BASH_COMP_DEBUG_FILE"
        if test -n "$file"
    

    To get this to work, I need to do the following:

    hof completion fish | string replace -r '(alias _="hof")' '#$1' | source
    
  • docs: add private module documentation

    docs: add private module documentation

    Adding doc for #69.

    @verdverm I'm not quite sure how running the hof gen command, sorry for the newbiness. I've also seen that you've opened #71 so maybe you want to close this one in favor of putting everything over there.

  • Mod docs n tests

    Mod docs n tests

    Changes:

    1. Rewrite some of the auth logic, trying to add auth to requests when available, regardless of private repo or not. This is desirable so that API limits are greater (for example we have seen CI errors from hitting the API rate limiting with public only deps)
    2. Enable private module tests in CI

    TODO:

    • [ ] more private module tests
      • [x] authentication methods
      • [x] gitlab
      • [x] plain git
    • [ ] Documentation
      • [x] CLI docs
      • [ ] website docs

    • can we lookup auth per provider once and store in mem for reuse as we process the dep graph?
  • [WIP] Script Upgrade - part 2

    [WIP] Script Upgrade - part 2

    continued implementation for #60

    • [x] AST changes for wait / inline exec / multiline strings
    • [x] Runtime that processes AST (lots, add to docs and put link here)
    • [x] AST node recording stdio, status, time, history
    • [ ] update tests
    • [ ] docs
  • Multiple generators not working, deleting previous gens' output

    Multiple generators not working, deleting previous gens' output

    When multiple generators are in the same Cue file and are invoked, the current generator will remove previous generators output because of how shadow directory is being used to clean per generator.

    Using the remaining shadow files for cleanup needs to be moved, or we should support the nested, dependent, collections of generators. Or both? Need to think about the process flow and semantics here.


    Workaround

    The current work around involves making all but one generator a definition, and then the one that is a value is simply concatenates the "Out" field from the other generators.

    package site
    
    import (
      "list"
    
      hof "github.com/hofstadter-io/hof/schema"
      "github.com/hofstadter-io/hofmod-hugo/gen"
    
      "github.com/hofstadter-io/site/design"
    )
    
    
    HofGenComponents :: gen.ComponentGen & {
      Outdir: "output"
      Components: design.Components
    }
    
    HofGenSections :: gen.SectionGen & {
      Outdir: "output"
      Sections: design.Sections
    }
    
    HofGenLayouts :: gen.LayoutGen & {
      Outdir: "output"
      Sections: design.Layouts
    }
    
    HofGenAll: hof.HofGenerator & {
      Outdir: "output"
      PackageName: ""
      Out: list.FlattenN([
        HofGenComponents.Out,
        HofGenSections.Out,
        HofGenLayouts.Out,
      ], 1)
    }
    
  • Setting default outdir for generators not working in certain circumstances

    Setting default outdir for generators not working in certain circumstances

    We are unable to set a default in the generator and skip setting when the generator is used...

    maybe we need a default in the schema? getting a fail to unmarshal even with the default there

  • examples from within a generator module must be run from the root

    examples from within a generator module must be run from the root

    I should be able to run hof gen from a nested example directory and have it work

    Problem synopsis

    example/             // imports gen 
    
    gen/...                 // points into dirs like below, relative to the module root
    
    templates/...
    partials/...
    static/...
    

    When hof is run from the module root, this works fine. When hof is run from a subdir, those relative paths should include a ../ for each directory we are nested from the root.

    Not sure if it is better to use relative or just rework what the prefix should be...

    $ '
    > missing out in "loading shadow"
    > 
    > need to account for subdir from 
    > 
    > should we put .hof next to cue.mod?
    > 
    > what if there is none...
    > 
    > also check / fix when no cue.mod found in current changes
    > 
    > good first hire issue, add in fs.FS to simplify things
    > 
    > this subdir issue effects template loading and shadow resolution (if we consolidate .hof when cue.mod found)
    

    Issue with shadow and subdir

    tony at penguin in ~/hof/mods/openapi/test/dev on main*
    $ hof gen -v2
    CueDirs: /home/tony/hof/mods/openapi /home/tony/hof/mods/openapi/test/dev ../..
    Loading CUE from: []
    Loading Generator: go
    
                    You are running the 'go' generator
                            with PackageName: ""
    
                    Note, that when running hof from inside a generator module,
                    it currently must be run from the root.
    
                    See GitHub issue: https://github.com/hofstadter-io/hof/issues/103
                    Creating Adhoc Generator
    runGen.doGen: fast: true
    genOnce.doGen: fast: true
    Loading Generator: go
    
                    You are running the 'go' generator
                            with PackageName: ""
    
                    Note, that when running hof from inside a generator module,
                    it currently must be run from the root.
    
                    See GitHub issue: https://github.com/hofstadter-io/hof/issues/103
                    Creating Adhoc Generator
    Loading shadow @ ".hof/shadow/go"
      adding: out/Error.go
      adding: out/NewPet.go
      adding: out/Pet.go
      adding: out/main.go
    Writing output
    tony at penguin in ~/hof/mods/openapi/test/dev on main*
    
    
  • build(deps): bump setuptools from 62.6.0 to 65.5.1 in /formatters/tools/black

    build(deps): bump setuptools from 62.6.0 to 65.5.1 in /formatters/tools/black

    Bumps setuptools from 62.6.0 to 65.5.1.

    Release notes

    Sourced from setuptools's releases.

    v65.5.1

    No release notes provided.

    v65.5.0

    No release notes provided.

    v65.4.1

    No release notes provided.

    v65.4.0

    No release notes provided.

    v65.3.0

    No release notes provided.

    v65.2.0

    No release notes provided.

    v65.1.1

    No release notes provided.

    v65.1.0

    No release notes provided.

    v65.0.2

    No release notes provided.

    v65.0.1

    No release notes provided.

    v65.0.0

    No release notes provided.

    v64.0.3

    No release notes provided.

    v64.0.2

    No release notes provided.

    v64.0.1

    No release notes provided.

    v64.0.0

    No release notes provided.

    v63.4.3

    No release notes provided.

    v63.4.2

    No release notes provided.

    ... (truncated)

    Changelog

    Sourced from setuptools's changelog.

    v65.5.1

    Misc ^^^^

    • #3638: Drop a test dependency on the mock package, always use :external+python:py:mod:unittest.mock -- by :user:hroncok
    • #3659: Fixed REDoS vector in package_index.

    v65.5.0

    Changes ^^^^^^^

    • #3624: Fixed editable install for multi-module/no-package src-layout projects.
    • #3626: Minor refactorings to support distutils using stdlib logging module.

    Documentation changes ^^^^^^^^^^^^^^^^^^^^^

    • #3419: Updated the example version numbers to be compliant with PEP-440 on the "Specifying Your Project’s Version" page of the user guide.

    Misc ^^^^

    • #3569: Improved information about conflicting entries in the current working directory and editable install (in documentation and as an informational warning).
    • #3576: Updated version of validate_pyproject.

    v65.4.1

    Misc ^^^^

    • #3613: Fixed encoding errors in expand.StaticModule when system default encoding doesn't match expectations for source files.
    • #3617: Merge with pypa/distutils@6852b20 including fix for pypa/distutils#181.

    v65.4.0

    Changes ^^^^^^^

    v65.3.0

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

  • Expose filenames into template data

    Expose filenames into template data

    This would be helpful on a per-file basis, maybe?

    How to deal with situations where one file needs to reference another file's path, when that path is generated as part of the hof gen config? How to deal with this when the same data generates multiple files or when multiple paths are needed? What can we automatically inject vs what can we leave to user config? Maybe a touch of injection and an example for how to handle the complex cases?

  • Template helpers & pipeline syntax

    Template helpers & pipeline syntax

    Most template helpers support both calling & pipeline syntax. There are two which don't (join & lookup), which we should probably fix, assuming it doesn't break too much

  • Document data files during code gen

    Document data files during code gen

    hof can generate data files directly from CUE / inputs without using the template engine. This is a much better choice generally.

    We need to document this.

    https://docs.hofstadter.io/reference/hof-gen/schema/#file

    Set the Val, Filepath, and DatafileFormat fields on your file. This way you can use the power and correctness of CUE, while also having it generate with all the other regular files.

  • indentation helpers and docs

    indentation helpers and docs

    The indentation helper ought to match what Helm does, since many people are used to that now.

    We also need to document best practices for working with indentation.

  • hof generate doesn't work if cue file is not present in same directory

    hof generate doesn't work if cue file is not present in same directory

    i am using hof in a script like this hof gen $SRCD/chartapijson.cue -T $SRCT/chartgen.go -O $TRGT where SRCD is the directory for cue files, SRCT is directory for template files and TRGT is directory for output files.

    This does not work if the cue file is not present in the directory from where the script is called. It gives "file does not exist" error however if i place a dummy cue file than it works fine. It takes the config data from the cue file in SRCD directory and generates output correctly.

    It would be great if this restriction can be removed.

elPrep: a high-performance tool for analyzing sequence alignment/map files in sequencing pipelines.
elPrep: a high-performance tool for analyzing sequence alignment/map files in sequencing pipelines.

Overview elPrep is a high-performance tool for analyzing .sam/.bam files (up to and including variant calling) in sequencing pipelines. The key advant

Nov 2, 2022
wkhtmltopdf Go bindings and high level interface for HTML to PDF conversion
wkhtmltopdf Go bindings and high level interface for HTML to PDF conversion

wkhtmltopdf Go bindings and high level interface for HTML to PDF conversion. Implements wkhtmltopdf Go bindings. It can be used to convert HTML docume

Dec 17, 2022
other glyph sets for high-dpi 1-bit monochrome

hd1b_other other glyph sets for high-dpi 1-bit monochrome Currently included glyph sets: Hangul (Korean): U+1100..U+11FF, U+3131..U+318E, U+AC00..U+D7

Aug 29, 2022
Nune - High-performance numerical engine based on generic tensors

Nune (v0.1) Numerical engine is a library for performing numerical computation i

Nov 9, 2022
Nune-go - High-performance numerical engine based on generic tensors

Nune (v0.1) Numerical engine is a library for performing numerical computation i

Nov 9, 2022
🎄 My code for the Advent of Code of year 2021 in Go.

Advent of Code 2021 This repository contains all code that I wrote for the Advent of Code 2021. This year I chose to try and learn Go. Enjoy! Built wi

Dec 9, 2021
Antch, a fast, powerful and extensible web crawling & scraping framework for Go

Antch Antch, inspired by Scrapy. If you're familiar with scrapy, you can quickly get started. Antch is a fast, powerful and extensible web crawling &

Jan 6, 2023
F' - A flight software and embedded systems framework

F´ (F Prime) is a component-driven framework that enables rapid development and deployment of spaceflight and other embedded software applications.

Jan 4, 2023
GoC2 - MacOS Post Exploitation C2 Framework
GoC2 - MacOS Post Exploitation C2 Framework

goc2 c2 client/server/paylod GoC2 - MacOS Post Exploitation C2 Framework Custom C2 for bypassing EDR and ease of use.

Dec 23, 2022
A toaster component for hogosuru framework
A toaster component for hogosuru framework

Toaster component for hogosuru Toaster implementation for hogosuru How to use? Create a hogosurutoaster.Toaster or attach it to a hogosuru container a

Mar 24, 2022
Entitas-Go is a fast Entity Component System Framework (ECS) Go 1.17 port of Entitas v1.13.0 for C# and Unity.

Entitas-Go Entitas-GO is a fast Entity Component System Framework (ECS) Go 1.17 port of Entitas v1.13.0 for C# and Unity. Code Generator Install the l

Dec 26, 2022
A framework for constructing self-spreading binaries
A framework for constructing self-spreading binaries

A framework that aids in creation of self-spreading software Requirements go get -u github.com/redcode-labs/Coldfire go get -u github.com/yelinaung/go

Jan 2, 2023
Tanzu Framework provides a set of building blocks to build atop of the Tanzu platform and leverages Carvel packaging

Tanzu Framework provides a set of building blocks to build atop of the Tanzu platform and leverages Carvel packaging and plugins to provide users with a much stronger, more integrated experience than the loose coupling and stand-alone commands of the previous generation of tools.

Dec 16, 2022
An easy-to-use Map Reduce Go parallel-computing framework inspired by 2021 6.824 lab1. It supports multiple workers on a single machine right now.

MapReduce This is an easy-to-use Map Reduce Go framework inspired by 2021 6.824 lab1. Feature Multiple workers on single machine right now. Easy to pa

Dec 5, 2022
Extensions for the melatonin test framework

melatonin-ext - Extensions for the melatonin test framework These packages extend melatonin to provide additional test contexts for testing various 3r

Nov 27, 2021
Highly customizable archive and index framework for EPITA
Highly customizable archive and index framework for EPITA

epitar.gz Highly customizable archive and index framework for EPITA. Get started

Nov 28, 2022
Keyboard-firmware - Go Keyboard Firmware framework

Go Keyboard Firmware framework This is an experimental project that I am using t

Dec 31, 2022
Morse Code Library in Go

morse Morse Code Library in Go Download and Use go get -u -v github.com/alwindoss/morse or dep ensure -add github.com/alwindoss/morse Sample Usage pac

Dec 30, 2022
Automatically generate Go test boilerplate from your source code.
Automatically generate Go test boilerplate from your source code.

gotests gotests makes writing Go tests easy. It's a Golang commandline tool that generates table driven tests based on its target source files' functi

Jan 3, 2023