Sign Up for Free

RunKit +

Try any Node.js package right in your browser

This is a playground to test code. It runs a full Node.js environment and already has all of npm’s 400,000 packages pre-installed, including bake-bash with all npm packages installed. Try it out:

bake-bash lists no main file and has no index.js, so it can't be directly required. If this is a mistake, please let us know. It may however contain internal files that you can require manually:

// require("bake-bash/[??]")

This service is provided by RunKit and is not affiliated with npm, Inc or the package authors.

bake-bash v1.1.1

Simple bash make utility

Bake

Simple Bash build/project utility in the style of rake.

Not trying to reinvent wheel. Most node project Makefiles are just Bash scripts.

Installation

npm install bake-bash

Usage

Display tasks

bake

Run task

bake <task>

Example Bakefile

function private {
    echo in private
}

#. Builds the project
function build {
    # ensures clean is called only once
    bake-invoke "clean"
    bake-ok building ...
    # clean will not run again
    bake-invoke "clean"
}

#. Cleans the project
function clean {
    bake-ok "cleaning ..."
    private
}

#. Renders hello-template.sh
function render-template {
    bake-ok "compiling template ..."
    bake-render-template hello-template.sh | cat
    bake-ok "coffe" "compiled"
}

function on-task-not-found {
    echo "Task not found $1"
}

Rules

  • bake searches the current and parent directories for a Bakefile to run.
  • Tasks are defined as normal Bash functions.
  • A task description is simply a comment that starts with #. and precedes a function.

Functions

Prints a red error message.

bake-error <action> <description>

example: bake-error "compiling" "src/lib/test.coffee"

Prints a plain message.

bake-log <action> <description>

example: bake-log "bake" "Processing bakefile..."

Prints a green ok message.

bake-ok <action> <description>

example: bake-ok "compiling" "compiled src/lib/test.js"

Prints a cyan info message.

bake-info <action> <description>

example: bake-info "bake" "built project in 700ms"

Invokes a task only once.

bake-invoke <function_name>

example: bake-invoke "clean"

Determines if target is older than reference, returning 1 if outdated.

bake-outdated <target> <reference>

examples:

bake-outdated build src || return 1      # skip rest of task
outdated build src && invoke "compile"  # compile if outdated

Renders a heredoc file template

bake-render-template template.sh > newfile.txt

Run a dynamic task when task $1 is not found. For example, to run a test as the first argument to bake, add this to Bakefile

function on-task-not-found {
    [[ -f test/$1.js ]] && mocha test/$1.js && return 0
    return 1
}
RunKit is a free, in-browser JavaScript dev environment for prototyping Node.js code, with every npm package installed. Sign up to share your code.
Sign Up for Free