Usage

The Amber CLI can be used as a runtime or as a compiler.

Command Line Interface

The Amber CLI syntax uses subcommands, like the Git CLI:

This output is generated from the 0.4.0-alpha version.

Usage: amber [INPUT] [ARGS]... [COMMAND]

Commands:
  eval   Execute Amber code fragment
  run    Execute Amber script
  check  Check Amber script for errors
  build  Compile Amber script to Bash
  docs   Generate Amber script documentation
  comp   Generate Bash completion script
  help   Print this message or the help of the given subcommand(s)

Arguments:
  [INPUT]    Input filename ('-' to read from stdin)
  [ARGS]...  Arguments passed to Amber script

Options:
  -h, --help     Print help
  -V, --version  Print version

Running Amber Code

The following command will simply execute hello.ab as a script file. Amber code will be compiled to Bash and then executed all in one go:

$ amber run hello.ab
Hello world!

Alternatively, if the file contains a shebang line and has the executable bit set, it can be run like this:

#!/usr/bin/env amber
echo "Hello world"
$ ./hello.ab
Hello world

Additionally, command line arguments can be passed to the script:

#!/usr/bin/env amber
main(args) {
    for arg in args {
        echo arg
    }
}
$ ./args.ab 1 2 3
1
2
3

If you want to run just a small code snippet, you can do that as well:

$ amber eval '
import * from "std/text"
echo uppercase("Hello world!")
'
HELLO WORLD!

Compiling Amber Scripts

There are times when you prefer to just compile Amber code to a script, for example when dealing with cron jobs:

$ amber build input.ab output.sh

You’ll notice that the compiled script is immediately callable; hence, there’s no need to add executable permissions using chmod, for instance. Amber grants the permission automatically.

Furthermore, Amber adds a shebang at the top of the compiled script. This enables you to run the code simply, without any additional commands:

$ ./output.sh

Postprocessors

By default, Amber runs postprocessors shfmt and bshchk (if installed) on the compiled Bash script. This functionality can be disabled with a --no-proc option:

$ amber build --no-proc=bshchk input.ab output.sh

Minification

Additionally, the --minify option compresses the generated Bash code to reduce its size:

$ amber build --minify input.ab output.sh

Generating Amber Documentation

The following command extracts comments prefixed with /// (triple slashes) from a single Amber file, and generates a Markdown file for documentation, by default in the docs subdirectory:

$ amber docs stdlib.ab

Generating Bash Completion Scripts

The following command generates a Bash completion script:

$ amber comp
_amber() {
    local i cur prev opts cmd
    COMPREPLY=()
    cur="${COMP_WORDS[COMP_CWORD]}"
    prev="${COMP_WORDS[COMP_CWORD-1]}"
...

This can be sourced in the .bashrc file via command redirection, so that command completion works in all subsequently opened Bash shells. Assuming the amber binary is on the system path:

$ cat ~/.bashrc
...
source <(amber comp)
...

Syntax Highlighting

Icon Name Location
Helix Editor Native Support
Nova Nova extensions
Vim Our extension repository
VS Code VSC Marketplace or Our extension repository
Zed Zed extensions or Our extension repository