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
Issues
  • 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
  • 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.3.0

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

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

    Release notes

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

    v1.3.0

    What's Changed

    New Contributors

    Full Changelog: https://github.com/compose-spec/compose-go/compare/v1.2.9...v1.3.0

    v1.2.9

    What's Changed

    Full Changelog: https://github.com/compose-spec/compose-go/compare/v1.2.8...v1.2.9

    v1.2.8

    What's Changed

    New Contributors

    Full Changelog: https://github.com/compose-spec/compose-go/compare/v1.2.7...v1.2.8

    Commits
    • 56e6c33 Merge pull request #294 from glours/use-dash-in-resource-names
    • 0ab97a2 Merge pull request #295 from milas/golang-versions
    • 81261dc build: ensure compatibility for all supported Go versions
    • aa0ca5e use t.Setenv instead of os.SetEnv + defer os.Unsetenv
    • f1f5433 Merge pull request #292 from compose-spec/fix-interpolation-errors-output
    • aa04417 use '-' as default separator and support of compatibility mode
    • 1daf3e9 Merge pull request #293 from milas/bump-deps
    • 422bb5c Merge pull request #287 from compose-spec/add-nakedret-linter
    • cc0b66f deps: upgrade dependencies to latest
    • ca8f7fd Add "nakedret" to the linters to put dotenv in conformity with the rest of th...
    • 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/compose-spec/compose-go from 1.2.7 to 1.2.9

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

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

    Release notes

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

    v1.2.9

    What's Changed

    Full Changelog: https://github.com/compose-spec/compose-go/compare/v1.2.8...v1.2.9

    v1.2.8

    What's Changed

    New Contributors

    Full Changelog: https://github.com/compose-spec/compose-go/compare/v1.2.7...v1.2.8

    Commits
    • d2f6dcf Merge pull request #285 from compose-spec/add-gocritic-linter
    • 2b59fba Merge pull request #283 from compose-spec/fix-inline-env-comments
    • 8676d27 Fix nolint issues
    • 86da918 Enable tags on gocritic.
    • edde9c6 Add gocritic to linters
    • 63c5310 Fix hash usage in environment values
    • 045c678 Merge pull request #281 from laurazard/validate-service-dependents
    • 78d64f5 Validate depended-on services exist in consistency check
    • a313a1e Merge pull request #279 from compose-spec/dependabot/go_modules/github.com/st...
    • 185ea85 Bump github.com/stretchr/testify from 1.5.1 to 1.8.0
    • 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
  • Keep host variables

    Keep host variables

    Currently, we have the possibility for a bob file to specify new env variables:

    variables:
      VAR_ONE: value
    

    With new hermetic mode functionality, we should also find a way to keep the values from local env. Similar to:

    bob build --env VAR_ONE
    

    but from bobfile.

    This will allow a more ergonomic way to keep values without adding them to the cli commands

    enhancement 
    opened by zuzuleinen 1
  • Full hermetic mode for build tasks when use-nix is true

    Full hermetic mode for build tasks when use-nix is true

    Remove the implicit forwarding of environment vars to the internal shell when use-nix is enabled as it has lead to multiple problems on CI & in combination with the build in shell of various IDE's.

    Make the forwarding of env vars explicit.

    bob build --env VAR_ONE bob build --env VAR_ONE --env VAR_TWO bob build --env VAR_ONE=value --env VAR_TWO

    enhancement 
    opened by Equanox 1
  • Bump github.com/charmbracelet/bubbles from 0.10.3 to 0.12.0

    Bump github.com/charmbracelet/bubbles from 0.10.3 to 0.12.0

    Bumps github.com/charmbracelet/bubbles from 0.10.3 to 0.12.0.

    Release notes

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

    v0.12.0

    Validate Your Darlings

    This release of Bubbles allows you to handle input validation by defining validation functions that ensure the user is typing text that you expect.

    The Validate API introduces a function that is called every time the input changes to ensure that it is still valid input.

    // ValidateFunc is a function that returns an error if the input is invalid.
    type ValidateFunc func(string) error
    

    // Validate is a function that checks whether or not the text within the // input is valid. If it is not valid, the Err field will be set to the // error returned by the function. If the function is not defined, all // input is considered valid. Validate ValidateFunc

    View the Example Code to see Validate and ValidateFuncs work in code.

    With these awesome changes introduced by @​IllusionMan1212, we can now build forms that ensure all input is valid like a credit card input form!

    See the full example to handle input validation in your Bubble Tea apps.

    Custom List Status Bar Item Names

    Thanks to @​wesleimp, lists now have a new function to allow you to set a custom status bar item name. Simply call SetStatusBarItemName on your list with the singular and plural name of your list item and Bubbles will handle the rest (defaults to "item", "items").

    list.SetStatusBarItemName("grocery", "groceries")
    

    This will change the string displayed underneath the Title of the list, in this case the item name is being used for displaying 2 groceries.

    New Spinners 💫

    This release contains two brand new spinners introduced by @​wesleimp, check them out:


    What's Changed

    ... (truncated)

    Commits
    • 42f85b4 docs: fix paginator example link (#177)
    • 4d0a0ea docs(spinner): correct comment about internal ID (#171)
    • 658a4fe feat: new Hamburger + Meter spinners (#172)
    • 93e4642 docs(list): fix linting errors
    • 57d79da feat(list): ability to SetStatusBarItemName (#169)
    • e57fd29 feat: added Validate function for textinput
    • 54869f7 docs(spinner): remove obsolete comment (#168)
    • 7959eb4 fix(progress): set a custom termenv color profile (#152)
    • fd03b61 chore: bump bubbletea, harmonica, lipgloss and termenv deps
    • a1e1b46 fix(textinput): support KeySpace in both present and future Bubble Tea versions
    • 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/compose-spec/compose-go from 1.2.7 to 1.2.8

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

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

    Release notes

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

    v1.2.8

    What's Changed

    New Contributors

    Full Changelog: https://github.com/compose-spec/compose-go/compare/v1.2.7...v1.2.8

    Commits
    • c45b40b Merge pull request #275 from compose-spec/dependabot/go_modules/gotest.tools/...
    • 0421734 Merge pull request #271 from glours/dot-in-env-var-name
    • 676cb41 Bump gotest.tools/v3 from 3.2.0 to 3.3.0
    • 311eaf5 Merge pull request #272 from glours/interpolate-compose-name
    • 0056c09 Merge pull request #274 from compose-spec/nicksieger/compose/9526
    • 38b955a project: ensure withServices doesn't blow stack on cycles
    • 5f3fae0 allow '.' (dot) in environment variable name
    • 2929133 interpolate COMPOSE_PROJECT_NAME with name from yaml
    • d1bc5d8 Merge pull request #270 from compose-spec/add-tiltdev
    • 5e01bb7 Adds tilt.dev as a user of compose-go
    • 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.21.0

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

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

    Release notes

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

    v0.21.0

    Spawn Interactive Processes + More Keybindings

    Finally! This update allows you to run blocking, interactive processes from Bubble Tea like vim, htop, curl, and even entire shells like fish. It also adds a bunch of new keybindings. Read on for more!

    Let’s Exec

    As we were saying, you can now spawn interactive processes in the terminal from Bubble Tea and resume Bubble Tea when they exit. For example, you could have your Bubble Tea program spawn vim to edit a file, or temporarily open a shell, like fish. Here’s what it looks like:

    type editorFinishedMsg struct{ err error }
    

    func openInVim(path string) tea.Cmd { c := exec.Command("vim", path) return tea.ExecProcess(c, func(err error) tea.Msg { return editorFinishedMsg{err} }) }

    See the full example for details.

    Keys Galore

    Prior to this update, you couldn't bind to the functions keys. Isn't that crazy? @​mrusme certainly thought so. With this update you can can now respond to F1 through F20, modifiers included.

    And thanks to @​bwahharharrr you can also now bind to arrow keys with the ctrl, shift and alt modifiers.


    High-Level Changelog

    New

    Changed

    New Contributors

    ... (truncated)

    Commits
    • 775dbfb chore(exec): small API edits (#323)
    • 9705056 docs: improve godoc on tick and every (#320)
    • a5f28a3 docs: fixed mentions to exec.Command
    • d301ee0 change(keys): spacebar sends a KeySpace (#315)
    • bfb1668 fix: update tests for space input
    • d3fb1b7 feat: obliterate type KeySpace
    • 48cdc1e feat(keys): add support for shift/ctrl + arrow keys (#292)
    • 14e58aa fix(keys): spacebar now sends a KeySpace (#289)
    • 3795c03 add: Exec, ReleaseTerminal and RestoreTerminal to re-use input and terminal (...
    • ecba57e chore(deps): bump actions/setup-go from 2 to 3
    • 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/compose-spec/compose-go from 1.2.7 to 1.4.0

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

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

    Release notes

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

    v1.4.0

    What's Changed

    Note This version removed the breaking changes introduced in version v1.3.0

    Full Changelog: https://github.com/compose-spec/compose-go/compare/v1.3.0...v1.4.0

    v1.3.0

    ⚠️ Warning notice ⚠️

    This release introduced a breaking change via this PR. Your Compose implementation will recreate new resources (networks, volumes, secrets, configs...) with new names and try to connect/use to this new created resources instead of your existing ones!

    What's Changed

    New Contributors

    Full Changelog: https://github.com/compose-spec/compose-go/compare/v1.2.9...v1.3.0

    v1.2.9

    What's Changed

    Full Changelog: https://github.com/compose-spec/compose-go/compare/v1.2.8...v1.2.9

    v1.2.8

    What's Changed

    ... (truncated)

    Commits
    • 1656887 Merge pull request #297 from glours/remove-dash-usage
    • 2c4d6cf Revert "Merge pull request #294 from glours/use-dash-in-resource-names"
    • ff627a8 Merge pull request #296 from compose-spec/fix-interpolation-interference
    • 5062118 Fix Interpolation interference from outer string
    • 56e6c33 Merge pull request #294 from glours/use-dash-in-resource-names
    • 0ab97a2 Merge pull request #295 from milas/golang-versions
    • 81261dc build: ensure compatibility for all supported Go versions
    • aa0ca5e use t.Setenv instead of os.SetEnv + defer os.Unsetenv
    • f1f5433 Merge pull request #292 from compose-spec/fix-interpolation-errors-output
    • aa04417 use '-' as default separator and support of compatibility mode
    • 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
  • Nix - Show cached status or similar when dependencies are already satisfied

    Nix - Show cached status or similar when dependencies are already satisfied

    bob currently prints 2 lines relevant to building nix dependencies, even if the deps are already satisfied. It should probably indicate that the build was cached, or even include the message in the build task output and show it as a virtual build task.

    Alternatively, the 2 lines can be simplified into one, e.g. Building Nix dependencies... done (no newline).

    opened by rdnt 0
  • 110 feature sync

    110 feature sync

    How to test with the server:

    Create a playground: bob playground
    Changes in bob.yml:

    project: localhost:8100/00000000-0000-0000-0000-000000000000/playground
    

    Replace sync: {} with

    sync:
      testing:
        path: second-level
        version: feature1
    

    Start the server bob run run-debug-server and copy the debugtoken from stdout.

    Update or init auth context: bob auth update --token=<debugtoken> && bob auth switch default

    Run some commands

    bob build
    cd ../playground
    ./../bob/run sync ls
    ./../bob/run sync ls-remote --insecure
    ./../bob/run sync push --insecure
    # change something locally in ./second-level
    ./../bob/run sync pull --insecure
    
    opened by dketterer 2
  • Bump github.com/charmbracelet/bubbles from 0.10.3 to 0.13.0

    Bump github.com/charmbracelet/bubbles from 0.10.3 to 0.13.0

    Bumps github.com/charmbracelet/bubbles from 0.10.3 to 0.13.0.

    Release notes

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

    v0.13.0

    Textarea Bubble

    This feature release includes a brand new textarea bubble that you can use to input as many lines of text as your heart desires (or until your computer memory runs out, whichever comes first).

    See the example code for a simple example of how to use the textarea in your Bubble Tea applications.

    Customization

    There are a few ways to customize the text area.

    • SetHeight(height int): tells the component how many lines of text it should display at once.
    • SetWidth(width int): tells the component how wide the it should be.
    • ShowLineNumbers: whether or not to show line numbers on the left-hand side of a line of text.
    • Prompt: the prompt to display on the left-hand side.
    • EndOfBufferCharacter: the character to display as the line number after the last line to fill the rest of the height. Defaults to ~.
    • CharLimit: Prevents users from typing more than a set number of characters.
    • KeyMap: The set of keybindings to navigate and interact with the textarea.

    Styling

    The textarea can be customized heavily with Lip Gloss.

    • FocusedStyles: the styles to be applied while the textarea is focused.
    • BlurredStyles: the styles to be applied while the textarea is focused.

    Each of the above properties has the below sub-properties that can be modified.

    Base             lipgloss.Style
    CursorLine       lipgloss.Style
    CursorLineNumber lipgloss.Style
    EndOfBuffer      lipgloss.Style
    LineNumber       lipgloss.Style
    Placeholder      lipgloss.Style
    Prompt           lipgloss.Style
    Text             lipgloss.Style
    

    See the split editors example for how to style the textarea component.

    Read more about it in our examples and docs:

    ... (truncated)

    Commits
    • 3a34fc4 fix(textarea): Add deleteWordRight
    • 2a2fb10 fix(textarea): account for base styling frame when calculating width
    • 588393f fix(textinput): set cursor on initial value
    • 7cc5786 feat(spinners): Construct new spinners with WithSpinner + WithStyle optio...
    • 3899e1b fix(list): Disable Quit Key (#104)
    • 4c17624 fix(timer): stop should return cmd (#138)
    • 2fd583c feat(textarea): Add multi-line text input
    • 42f85b4 docs: fix paginator example link (#177)
    • 4d0a0ea docs(spinner): correct comment about internal ID (#171)
    • 658a4fe feat: new Hamburger + Meter spinners (#172)
    • 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
  • nix-channel --update when building nix dependencies

    nix-channel --update when building nix dependencies

    Maybe we should run nix-channel --update before building dependencies with nix to make sure everyone has the latest local nixpkgs:

    $ nix-channel --update

    maybe a bob nix update cmd which does that?

    This will not really solve the reproducibility issue. Maybe find a way to lock nixpkgs version. We have a way to use a certain version for nixpkgs but maybe is not that user friendly?

    enhancement 
    opened by zuzuleinen 0
Releases(0.5.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 9 Jul 29, 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 Jul 28, 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 84 Aug 6, 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.5k Aug 9, 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.7k Aug 8, 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 331 Jul 28, 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 527 Jul 25, 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 Aug 2, 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 4.8k Aug 9, 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 527 Jul 25, 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