A build tool from space, down on earth.

Overview

Bob

Inspired by Make and Bazel · Made for humans

Latest Release GoDoc Build Status

Bob is a build system, a task runner as well as tooling for Git Multi-repos, all bundled into a single binary.

With bob, you can:

  • Build your programs efficiently, as Bob tracks build inputs and caches compiled outputs, providing fast incremental builds.
  • Run local development environments, whether they are simple binaries, docker-compose files, or a mix of both.
  • Multi-Repo Tooling Easily manage multi-repo setups, with bulk Git operations.

⚠️ ⚠️ ⚠️ Warning: Bob and its documentation is in a early stage. Most of the features are fully-functional and tested, but some details are yet to be ironed out.

Install

To install and start using Bob, do:

go install github.com/Benchkram/bob

For shell autocompletion (bash and zsh supported) add source <(bob completion) to your .bashrc/.zshrc.

Build System

Bobs generates its internal build graph from tasks described in a bob.yaml file (we usually refer to it as "bobfile").
The basic components of a task are:

  • input: Whenever an input changes, the task's commands need to be re-executed [default: *]
  • cmd: Commands to be executed
  • target: File(s) or directories that are created when the commands are run and can be reused in other tasks.

Example of a bob.yaml file:

tasks:
  build:
    input: ./main.go
    cmd: go build -o ./app
    target: ./app

Multiline sh and bash commands are entirely possible, and are powered by mvdan/sh.

Take a look into the server-db example for a step-by-step tutorial.

Local Development

Our goal is to create a world-class local development experience by integrating seamlessly with the build-system and enabling you to start right after cloning a repository. Let the build-system create binaries and docker images, then execute & control them from one terminal using bob run. No more back-and-forth tab switching.

Ideally, those are the only two commands necessary to get started when joining a new project that uses Bob:

git clone
bob run

Web Server Example

Individual steps for web server development are likely similar to this:

  1. Code generation using an IDL, like openapi or protobuf
  2. Compile a server binary
  3. Run a database in docker
  4. Run the server

Those build/run tasks can be described in a bob.yaml file. This allows bob run to launch and give you control to a local development environment.

An in-depth example is available here.

Multi-repo Git Tooling

Bob enables a natural feeling git workflow for Git multi-repo setups without relying on Git Submodules.

To do this, Bob uses the concept of a "workspace" to track other git repositories. Inside a workspace you can use the usual every day git-operations through bob with visually enhanced output for the multi-repo cases.

Here is an example of bob git status in a workspace:

Highlighted directories indicate child Git repositories and therefore bob git add and bob git commit will only operate on the repository a file belongs to allowing to create repository overlapping commits all together.

⚠️ So far only bob clone and bob git status are implemented.

Take a look into the git package's README for the current status of bob git

Setting Up a Workspace

To set up a new bob workspace you first have to initialize it:

bob workspace init

This creates a .bob.workspace file and initializes a new git repository in the current directory.

Adding repositories to the workspace:

bob workspace add [email protected]:Benchkram/bob.git
bob clone # calls git clone for missing repos

Cloning an existing workspace from a remote git repository:

bob clone [email protected]:Benchkram/bob.git

Dependencies

A list of Bob's top dependencies:

  • charmbracelet/bubbletea - Used in Bob's Terminal User Interface
  • docker/compose - Enables us to run docker-compose files the same way docker compose does
  • sh - Parsing/execution of shell commands
Comments
  • Adding native libraries as dependencies

    Adding native libraries as dependencies

    I have a rust project with serde as a dependency. When I tried to use bob to build it, I got the following error

    = note: ld: library not found for -liconv
            clang-13: error: linker command failed with exit code 1 (use -v to see invocation)
    

    I tried to add libiconv to the dependencies in bob.yaml but the error remained

    dependencies:
      - cargo
      - clang_13
      - libiconv
    ...
    

    However, I could compile it successfully with nix-shell -p cargo clang_13 libiconv.

    How do I add these native libraries so that bob can find them?

    bug 
    opened by kirans-bp 5
  • install script

    install script

    Testing

    Download the latest version

    You can omit cd if you don't want the binary installed globally.

    cd /usr/local/bin
    curl -L https://raw.githubusercontent.com/benchkram/bob/b71503511064242db6c05f637491e16cd1f0d881/install.sh | sh
    

    Download a specific version

    You can omit cd if you don't want the binary installed globally.

    cd /usr/local/bin
    curl -L https://raw.githubusercontent.com/benchkram/bob/b71503511064242db6c05f637491e16cd1f0d881/install.sh | BOB_VERSION=0.5.1 sh
    

    To test the file locally

    Checkout this branch and:

     env BOB_VERSION=0.5.2 ./install.sh
    

    then you can run:

    ./bob --version
    

    You can also specify BIN_DIR which will install bob in working-directory/BIN_DIR/

     env BOB_VERSION=0.5.2  BIN_DIR=bin ./install.sh
    
    opened by zuzuleinen 3
  • Configurable project name

    Configurable project name

    Closes #12

    • If empty, set project name based on the project's absolute filesystem path
    • Validate uniqueness of project name across aggregated bobfiles
    • Project name passed to tasks, so that artifacts can be properly stored if needed (e.g. in a remote store)
    • Playground generation slightly modified to help test the project name
    opened by rdnt 3
  • bob init

    bob init

    closes #265

    Usage:

    In a directory without bob.yaml:

    bob init for projects without remote cache bob init projectURL with remote cache

    When running bob build afterwards don't forget about '--insecure'

    opened by zuzuleinen 2
  • bob init command

    bob init command

    Maybe we should create a bob init which should similar to git init.

    bob init creates a bob.yaml if it doesn't exist in the working directory with a build command which does an echo hello world. Maybe the nixpkgs can be pinned to latest stable version

    bob init projectURL should work similiar to bob init but also add a project.

    If there is already a bob.yaml file inside working directory it should display a user error.

    enhancement 
    opened by zuzuleinen 2
  • Full hermetic mode for run tasks

    Full hermetic mode for run tasks

    Once https://github.com/benchkram/bob/issues/97 is merged we should add https://github.com/benchkram/bob/issues/131 functionality for run tasks as well.

    enhancement 
    opened by zuzuleinen 2
  • Bob run: Correct error message if blocking docker-containers are running

    Bob run: Correct error message if blocking docker-containers are running

    ###Scenario Have a docker container running which is using e.g. port 8080. Have a run task which starts a container which also would use port 8080.

    ###Current behavior Bob will just exit with either no message or a bad stack trace.

    ###Expected behavior Proper user error parsed info from docker-compose message.

    bug 
    opened by puengel 2
  • `bob run` shows output only after initial build

    `bob run` shows output only after initial build

    This blocks the TUI for a too long time

    The commander should return without starting any long running tasks. Upstream code can then start the build after the TUI is started.

    https://github.com/benchkram/bob/blob/36981b6f3c49f839e5678550a358f6faa8473daf/bob/run.go#L52

    bug run 
    opened by Equanox 2
  • Bump github.com/compose-spec/compose-go from 1.2.7 to 1.7.1

    Bump github.com/compose-spec/compose-go from 1.2.7 to 1.7.1

    Bumps github.com/compose-spec/compose-go from 1.2.7 to 1.7.1.

    Release notes

    Sourced from github.com/compose-spec/compose-go's releases.

    v1.7.1

    What's Changed

    Full Changelog: https://github.com/compose-spec/compose-go/compare/v1.7.0...v1.7.1

    v1.7.0

    What's Changed

    New Contributors

    Full Changelog: https://github.com/compose-spec/compose-go/compare/v1.6.0...v1.7.0

    v1.6.0

    ℹ️ Upgrade Notes

    • Minimum supported Go version is v1.18

    🐛 Fixes

    • env: fix errors on valid interpolation expressions
    • env: fix a bunch of escaping/parsing edge cases

    What's Changed

    Full Changelog: https://github.com/compose-spec/compose-go/compare/v1.5.1...v1.6.0

    v1.5.1

    What's Changed

    New Contributors

    Full Changelog: https://github.com/compose-spec/compose-go/compare/v1.5.0...v1.5.1

    v1.5.0

    What's Changed

    ... (truncated)

    Commits
    • 999ce24 Merge pull request #321 from ndeloof/9756
    • 5c50f88 merge exposes, heathchecks.test
    • 9df6287 Merge pull request #318 from glours/add-withconsistency-func
    • 87bd752 Merge pull request #316 from glours/check-service-secrets
    • 3badf87 add WithConsistency function to enable/disable consistency check
    • 4493cba Merge pull request #317 from milas/bump-deps
    • f4c01e4 build: bump dependencies
    • 918dbe8 loader: read from file if ConfigFile.Content is empty (#315)
    • a9ba921 check existence of resources to avoid creation of empty one in WithoutUnneces...
    • 8570d50 check if secrets defined in services are defined
    • 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)
    dependencies 
    opened by dependabot[bot] 1
  • Bump github.com/charmbracelet/bubbletea from 0.20.0 to 0.23.1

    Bump github.com/charmbracelet/bubbletea from 0.20.0 to 0.23.1

    Bumps github.com/charmbracelet/bubbletea from 0.20.0 to 0.23.1.

    Release notes

    Sourced from github.com/charmbracelet/bubbletea's releases.

    v0.23.1

    This bugfix release addresses an issue that was introduced by v0.23.0 and prevented programs from re-using stdin after a tea.Program had finished execution.


    Changelog

    Fixed!


    Thoughts? Questions? We love hearing from you. Feel free to reach out on Twitter, The Fediverse, or Discord.

    v0.23.0

    If you are closely following Bubble Tea's development, you may have already noticed that we have been really busy fixing a lot of issues and merged more than just a couple of feature requests in recent weeks. This v0.23.0 release is in fact our biggest update since the initial release of the package: in the last 3 months over 100 commits have reached us by more than 30 individual contributors! Thank you everyone! 💕

    Here's a quick overview of what has changed:

    Custom Outputs

    Don't want to render your beautiful TUI to stdout? A buffer or an alternative file descriptor like stderr seems more appropriate? We got you covered now:

    Render to stderr

    p := tea.NewProgram(model, tea.WithOutput(os.Stderr))
    

    Render to a Buffer

    var buf bytes.Buffer
    p := tea.NewProgram(model, tea.WithOutput(&buf))
    

    Run Like the Wind

    We've introduced the aptly named method Program.Run which replaces and deprecates the existing Program.Start and Program.StartReturningModel methods. This unifies and clarifies the blocking behavior of the Bubble Tea program execution.

    The old methods will continue to work for now, but please update your programs accordingly:

    p := tea.NewProgram(model, tea.WithOutput(os.Stderr))
    model, err := p.Run() // instead of p.Start or p.StartReturningModel
    ...
    </tr></table> 
    

    ... (truncated)

    Commits
    • 94d6f50 docs: update readme
    • 9c20a80 fix: don't close stdin
    • e079831 Remove references to io/ioutil package
    • 7ba62d4 chore(deps): bump github.com/charmbracelet/glamour in /examples
    • 2d10416 [codespell]: Fix typos.
    • 741f2d3 fix: pass actual stdout's fd to command
    • 4f83c62 chore: apply ProgramOptions before checking context
    • 280bc6f docs: clean up readme
    • bc2befe docs: picture tag is causing display issues on Firefox
    • 3938164 docs: new readme footer
    • 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)
    dependencies 
    opened by dependabot[bot] 1
  • Fix broken logo URL in README.md

    Fix broken logo URL in README.md

    The Bob logo at the top of the README points to https://bob.build/assets/logo.654a7917.svg, which is no longer a valid URL for this file as it returns a 404. There is a working image link on https://bob.build/, the only difference is the hash(?) in the file name, now 070b920e instead of 654a7917.

    Previously with

    <img  width="300" src="https://bob.build/assets/logo.654a7917.svg" />
    

    ->

    This change with

    <img  width="300" src="https://bob.build/assets/logo.070b920e.svg" />
    

    ->

    opened by jessie-murray 1
  • Bump github.com/schollz/progressbar/v3 from 3.11.0 to 3.12.1

    Bump github.com/schollz/progressbar/v3 from 3.11.0 to 3.12.1

    Bumps github.com/schollz/progressbar/v3 from 3.11.0 to 3.12.1.

    Release notes

    Sourced from github.com/schollz/progressbar/v3's releases.

    v3.12.1

    What's Changed

    New Contributors

    Full Changelog: https://github.com/schollz/progressbar/compare/v3.12.0...v3.12.1

    v3.12.0

    What's Changed

    New Contributors

    Full Changelog: https://github.com/schollz/progressbar/compare/v3.11.0...v3.12.0

    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)
    dependencies 
    opened by dependabot[bot] 0
  • Bump github.com/onsi/gomega from 1.20.1 to 1.24.1

    Bump github.com/onsi/gomega from 1.20.1 to 1.24.1

    Bumps github.com/onsi/gomega from 1.20.1 to 1.24.1.

    Release notes

    Sourced from github.com/onsi/gomega's releases.

    v1.24.1

    No release notes provided.

    v1.24.0

    1.24.0

    Features

    Introducting gcustom - a convenient mechanism for building custom matchers.

    This is an RC release for gcustom. The external API may be tweaked in response to feedback however it is expected to remain mostly stable.

    Maintenance

    • Update BeComparableTo documentation [756eaa0]

    v1.23.0

    1.23.0

    Features

    • Custom formatting on a per-type basis can be provided using format.RegisterCustomFormatter() -- see the docs here

    • Substantial improvement have been made to StopTrying():

      • Users can now use StopTrying().Wrap(err) to wrap errors and StopTrying().Attach(description, object) to attach arbitrary objects to the StopTrying() error
      • StopTrying() is now always interpreted as a failure. If you are an early adopter of StopTrying() you may need to change your code as the prior version would match against the returned value even if StopTrying() was returned. Going forward the StopTrying() api should remain stable.
      • StopTrying() and StopTrying().Now() can both be used in matchers - not just polled functions.
    • TryAgainAfter(duration) is used like StopTrying() but instructs Eventually and Consistently that the poll should be tried again after the specified duration. This allows you to dynamically adjust the polling duration.

    • ctx can now be passed-in as the first argument to Eventually and Consistently.

    Maintenance

    • Bump github.com/onsi/ginkgo/v2 from 2.3.0 to 2.3.1 (#597) [afed901]
    • Bump nokogiri from 1.13.8 to 1.13.9 in /docs (#599) [7c691b3]
    • Bump github.com/google/go-cmp from 0.5.8 to 0.5.9 (#587) [ff22665]

    v1.22.1

    1.22.1

    Fixes

    • When passed a context and no explicit timeout, Eventually will only timeout when the context is cancelled [e5105cf]
    • Allow StopTrying() to be wrapped [bf3cba9]

    Maintenance

    • bump to ginkgo v2.3.0 [c5d5c39]

    v1.22.0

    1.22.0

    ... (truncated)

    Changelog

    Sourced from github.com/onsi/gomega's changelog.

    1.24.1

    Fixes

    • maintain backward compatibility for Eventually and Consisntetly's signatures [4c7df5e]
    • fix small typo (#601) [ea0ebe6]

    Maintenance

    • Bump golang.org/x/net from 0.1.0 to 0.2.0 (#603) [1ba8372]
    • Bump github.com/onsi/ginkgo/v2 from 2.4.0 to 2.5.0 (#602) [f9426cb]
    • fix label-filter in test.yml [d795db6]
    • stop running flakey tests and rely on external network dependencies in CI [7133290]

    1.24.0

    Features

    Introducting gcustom - a convenient mechanism for building custom matchers.

    This is an RC release for gcustom. The external API may be tweaked in response to feedback however it is expected to remain mostly stable.

    Maintenance

    • Update BeComparableTo documentation [756eaa0]

    1.23.0

    Features

    • Custom formatting on a per-type basis can be provided using format.RegisterCustomFormatter() -- see the docs here

    • Substantial improvement have been made to StopTrying():

      • Users can now use StopTrying().Wrap(err) to wrap errors and StopTrying().Attach(description, object) to attach arbitrary objects to the StopTrying() error
      • StopTrying() is now always interpreted as a failure. If you are an early adopter of StopTrying() you may need to change your code as the prior version would match against the returned value even if StopTrying() was returned. Going forward the StopTrying() api should remain stable.
      • StopTrying() and StopTrying().Now() can both be used in matchers - not just polled functions.
    • TryAgainAfter(duration) is used like StopTrying() but instructs Eventually and Consistently that the poll should be tried again after the specified duration. This allows you to dynamically adjust the polling duration.

    • ctx can now be passed-in as the first argument to Eventually and Consistently.

    Maintenance

    • Bump github.com/onsi/ginkgo/v2 from 2.3.0 to 2.3.1 (#597) [afed901]
    • Bump nokogiri from 1.13.8 to 1.13.9 in /docs (#599) [7c691b3]
    • Bump github.com/google/go-cmp from 0.5.8 to 0.5.9 (#587) [ff22665]

    1.22.1

    Fixes

    • When passed a context and no explicit timeout, Eventually will only timeout when the context is cancelled [e5105cf]
    • Allow StopTrying() to be wrapped [bf3cba9]

    ... (truncated)

    Commits
    • 3eef0d7 v1.24.1
    • 4c7df5e maintain backward compatibility for Eventually and Consisntetly's signatures
    • 1ba8372 Bump golang.org/x/net from 0.1.0 to 0.2.0 (#603)
    • f9426cb Bump github.com/onsi/ginkgo/v2 from 2.4.0 to 2.5.0 (#602)
    • ea0ebe6 fix small typo (#601)
    • d795db6 fix label-filter in test.yml
    • 7133290 stop running flakey tests and rely on external network dependencies in CI
    • ed1156b v1.24.0
    • 756eaa0 Update BeComparableTo documentation
    • 6015576 finish documenting gcustom
    • 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)
    dependencies 
    opened by dependabot[bot] 0
  • Bump github.com/deepmap/oapi-codegen from 1.10.1 to 1.12.3

    Bump github.com/deepmap/oapi-codegen from 1.10.1 to 1.12.3

    Bumps github.com/deepmap/oapi-codegen from 1.10.1 to 1.12.3.

    Release notes

    Sourced from github.com/deepmap/oapi-codegen's releases.

    Fix the generated error handling for Gin

    In v1.12.0 we added support for custom error handling to be used in the generated Gin code.

    Unfortunately, we didn't produce the right code, so this would cause (compilation) errors.

    Fix big issue with marshaling binary strings

    v1.12.0 introduced a File type which intercepts schemas of type:string, format:binary, but it incorrectly implemented the json.Marshaler interface and was lacking tests to catch the problem. This version fixes the marshaling of fields of that type.

    Prior versions of oapi-codegen turned those into a []byte, and you can still annotate your spec with x-go-type if you need []byte

    Fix an issue with command line parsing

    • The -o flag specifying the output filename was being ignore in very simple invocations of oapi-codegen without a configuration file. This is fallout from trying to be compatible with old and new style configs.

    Many bug fixes

    Major changes to functionality

    • In the last release, we changed the configuration file format to a new syntax, and added flags to read the old version, but it turns out that this default-on change broke a lot of automation, sorry about that. In this release, we've done our best to auto-detect the configuration version, so both styles of config options should work. The explicit version selection flags have not been removed.
    • Gorilla router (deepmap/oapi-codegen#594)
    • "strict" server generation, meaning one which is much more pedantic about input and output types, which allows for making API clients and servers that look more like Go functions than HTTP handlers (deepmap/oapi-codegen#499)
    • Fields can be marked with x-json-ignore to omit in JSON serialization (deepmap/oapi-codegen#390)
    • Many fixes to unions for oneOf and anyOf handling, thank you committers.
    • Enums can be prefixed with their typename in all cases, versus only on collisions previously. This is a configurable option (deepmap/oapi-codegen#662)
    • The Client interface in generated code was named awfully generically. You can now override the name (deepmap/oapi-codegen#788)
    • Generate code can be optionally formatted using more initialisms. It's default-off to not break existing code (deepmap/oapi-codegen#749)
    • Gin code can be configured with a custom error handler, versus generating error responses inline. Default behavior is the same as before (deepmap/oapi-codegen#587)
    • Gin middleware evaluation order can be reversed to be consistent with common Gin usage, it's default-off to not break previous behavior. ( deepmap/oapi-codegen#787)

    Everything that has changed

    This is a very large release with many bug fixes. Thanks to all contributors.

    ... (truncated)

    Commits
    • 0138e13 Fix error handler for required query parameters (#857)
    • 050c4bf fix: shouldBind instead of Bind to prevent abort (#830)
    • 7dead8e Fix binary string encoding
    • 65843bf Update enum shadowing workaround
    • a2adb9c Fix schema shadowing issue by enums (#833)
    • 5a1784a Configure default generator with no config
    • 8175447 Handle simple configs with output flag properly
    • cf23455 Fix bug in oneOf not propagating external references (#729)
    • e5ee43d Change imports into aliases so they implement the base interface
    • 7b01009 Add client-type-prefix output option (#785) (#788)
    • 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)
    dependencies 
    opened by dependabot[bot] 0
  • Task semantics behaviour

    Task semantics behaviour

    This PR implemented all scenarios from https://github.com/benchkram/bob/issues/229 under Behavior based on those changes section.

    More specific:

    • input is mandatory on build tasks except when task has rebuild:always or is a compound task(has only dependsOn node on it)
    • target and rebuild: always are not allowed on the same task. They are incompatible now.
    • a new state was added StateNoRebuildRequired which is similar StateCached. The differennce is that the reason for StateCached is because the targed was fetched from cache while the reason for StateNoRebuildRequired was that a rebuild was not necessary but there was no target to fetch from cache.

    Tests for functionality are added in test/e2e/tasksemantics. The are all green, however there are still tests that needs fixing.

    opened by zuzuleinen 1
  • Incorrect dependency caching

    Incorrect dependency caching

    Consider the following example:

    
    build:
      one:
        input: file1
        cmd: touch file2
        target: file2
      two:
        dependsOn:
          - one
        input: *
        cmd: touch file4
        target: file4
    
    • We run bob build two (both tasks are re-built)
    • If we then modify file1, and run bob build one, the task is properly re-built.
    • If we now run bob build two, it will show as cached, even if the target of one has changed.
    opened by rdnt 0
  • Consider making inputs an array field

    Consider making inputs an array field

    Currently inputs are added in a string node:

        input: openapi.yaml
    
        input: |-
          openapi.yaml
          whatever.txt
    

    Reasons

    Making inputs an array node will make it more consistent by having one way of declaring inputs even if its one or multiple:

        inputs:
           - openapi.yaml
    

    Users can make a typo in |- besides having to remember they have to use this Also logically it makes sense when we're taking about one or more to use an array instead of a string.

    Todo

    Replace input with inputs Make the field an array.

    It should be mandatory and non-empty if combined with this issue.

    enhancement 
    opened by zuzuleinen 0
Releases(0.7.1)
Owner
benchkram
Software Company From Stuttgart, Germany
benchkram
Automatically power off system when network interface is down

passer A tiny tool can automatically power off system when network interface is

Zongzi 0 Apr 23, 2022
Automated-gke-cilium-networkpolicy-demo - Quickly provision and tear down a GKE cluster with Cilium enabled for working with Network Policy.

Automated GKE Network Policy Demo Before running the automation, make sure you have the correct variables in env-automation/group_vars/all.yaml. There

Casey Wylie 0 Jan 1, 2022
Azure Kubernetes Service (AKS) advanced networking (CNI) address space calculator.

aksip Azure Kubernetes Service (AKS) advanced networking (CNI) address space calculator. Download Download the the latest version from the releases pa

Carlos Mendible 12 Oct 11, 2022
a build tool for Go, with a focus on cross-compiling, packaging and deployment

goxc NOTE: goxc has long been in maintenance mode. Ever since Go1.5 supported simple cross-compilation, this tool lost much of its value. There are st

Am Laher 1.7k Nov 30, 2022
A tool to build, deploy, and release any environment using System Containers.

Bravetools Bravetools is an end-to-end System Container management utility. Bravetools makes it easy to configure, build, and deploy reproducible envi

null 126 Nov 29, 2022
A tool to build, deploy, and release any application on any platform.

Waypoint Website: https://www.waypointproject.io Tutorials: HashiCorp Learn Forum: Discuss Waypoint allows developers to define their application buil

HashiCorp 4.6k Dec 8, 2022
Build powerful pipelines in any programming language.

Gaia is an open source automation platform which makes it easy and fun to build powerful pipelines in any programming language. Based on HashiCorp's g

Gaia 4.9k Nov 28, 2022
Build Go Toolchains /w native libs for cross-compilation

gonative Cross compiled Go binaries are not suitable for production applications because code in the standard library relies on Cgo for DNS resolution

Alan Shreve 333 Sep 27, 2022
"go build" wrapper to add version info to Golang applications

govvv The simple Go binary versioning tool that wraps the go build command. Stop worrying about -ldflags and go get github.com/ahmetb/govvv now. Build

Ahmet Alp Balkan 530 Dec 3, 2022
Multi cluster kubernetes dashboard with batteries included. Build by developers, for developers.

kubetower Multi cluster kubernetes dashboard with batteries included. Built by developers, for developers. Features Restart deployments with one click

Emre Savcı 33 Nov 28, 2022
Build and deploy Go applications on Kubernetes

ko: Easy Go Containers ko is a simple, fast container image builder for Go applications. It's ideal for use cases where your image contains a single G

Google 5.3k Dec 3, 2022
"go build" wrapper to add version info to Golang applications

govvv The simple Go binary versioning tool that wraps the go build command. Stop worrying about -ldflags and go get github.com/ahmetb/govvv now. Build

Ahmet Alp Balkan 530 Dec 3, 2022
A simple Kubernetes Operator template that uses Golang, use it to build your own operators

A simple programmatic Kubernetes Operator template. Use this to create your own Kubernetes operators with golang. Build with KIND (Kubernetes in Docke

Cloud Native Skunkworks 7 May 13, 2022
Build a retractable ECS load balance network through aliyun openapi.

ECSEquilizer 通过阿里云OpenAPI建立一个可伸缩的负载均衡网络调度器。 简介 为确保代理集群网络和计算能力可以通过ECS云服务动态伸缩,所以制定实现以下策略。 节点分为static和dynamic两种,static节点是通过配置文件(config.yaml)实现预设的,固定不变。 d

B23r0 17 Jul 2, 2022
How to build production-level services in Go leveraging the power of Kubernetes

Ultimate Service Copyright 2018, 2019, 2020, 2021, Ardan Labs [email protected] Ultimate Service 3.0 Classes This class teaches how to build producti

null 0 Oct 22, 2021
Boxygen is a container as code framework that allows you to build container images from code

Boxygen is a container as code framework that allows you to build container images from code, allowing integration of container image builds into other tooling such as servers or CLI tooling.

nitric 5 Dec 13, 2021
The example shows how to build a simple multi-tier web application using Kubernetes and Docker

Guestbook Example This example shows how to build a simple multi-tier web application using Kubernetes and Docker. The application consists of a web f

Neria Cohen 0 Nov 15, 2021
A simple Go app and GitHub workflow that shows how to use GitHub Actions to test, build and deploy a Go app to Docker Hub

go-pipeline-demo A repository containing a simple Go app and GitHub workflow that shows how to use GitHub Actions to test, build and deploy a Go app t

Marat Bogatyrev 0 Nov 17, 2021
crud is a cobra based CLI utility which helps in scaffolding a simple go based micro-service along with build scripts, api documentation, micro-service documentation and k8s deployment manifests

crud crud is a CLI utility which helps in scaffolding a simple go based micro-service along with build scripts, api documentation, micro-service docum

Piyush Jajoo 0 Nov 29, 2021