Product proposal · Scripting language

Fresh

Scripts that just work.

A tiny, task-oriented scripting language for build, clean, install, and deploy scripts. Declare a few tasks; Fresh turns each into a subcommand, auto-generates --help, and runs the plain commands and file operations you list. No argument parsers. No mkdir -p guards. No chmod. Ever.

Auto-CLI

Every DEF becomes a subcommand. help is generated for free.

It just works

Destinations auto-create their folders. Fail-fast by default. No permission fixes.

Starts tiny

v0.1 runs a command and moves a file. Power grows in phases, never taxing the simple case.

The same intent, two ways

build.sh  ·  Bash
build() {
  if [[ "$@" =~ "help" ]]; then
    echo "Build the extension."; return 0
  fi
  if [[ $@ =~ --name[[:space:]]*=?[[:space:]]*([^ ]+) ]]; then
    EXTENSION_NAME="${BASH_REMATCH[1]}"
  fi
  [[ -z "$EXTENSION_NAME" ]] && { echo "ERROR --name"; exit 1; }
  mkdir -p out/staging
  rm $EXTENSION_NAME/target/*.jar
  mvn package
  cp $EXTENSION_NAME/target/*.jar out/staging/
}
# ...plus a hand-written help() and dispatcher...
COMMAND=$1; shift; $COMMAND $@
de.fresh  ·  Fresh
#!/usr/bin/env fresh

NAME             Dtracker Extension Tool
HELP_DESCRIPTION Build and deploy an extension.

EXTENSION_NAME = dtracker
STAGING_DIR    = out/staging

DEF build
    HELP Build the extension.
    REMOVE $EXTENSION_NAME/target/*.jar
    RUN    mvn package
    COPY   $EXTENSION_NAME/target/*.jar $STAGING_DIR/

Same result. STAGING_DIR is created automatically, help and the build subcommand are generated, and there is no chmod to remember.

Phased roadmap

v0.1

Spark

Run a command, move a file, auto-help.

v1.0

Toolbelt

mkdir, remove, globs, cd, dry-run.

v1.5

Dials

Params & flags — no more arg parsers.

v2.0

Assembly

Compose, conditionals, remote deploy.

v2.5

Fan-out

Matrix builds & parallelism.

v3.0

Ecosystem

Includes, stdlib, formatter, LSP.

Proposal documents

Rendered from the markdown sources in this folder.

Raw sources: ConceptOverview.md · SystemCapabilityAnalysis.md · LanguageSpecification.md · PhasedRoadmap.md · ReadMe.md