rox-cli 0.8.0

Composable build tool inspired by Make
Documentation
ci:
  # The CI provider to use. Currently only GitHub Actions is supported.
  provider: github_actions
  repo_owner: ThomasLaPiana
  repo_name: rox
  token_env_var: GITHUB_TOKEN

# Add documentation to your Rox CLI
docs:
  - name: "release"
    description: "Documentation around cutting releases"
    kind: markdown
    path: "docs/release.md"

  - name: "markdown"
    description: "Development-related documentation"
    # Markdown files are rendered in a special viewer within the terminal
    kind: markdown
    path: "docs/dev_docs.md"

  - name: "readme"
    description: "Development-related documentation"
    kind: markdown
    path: "README.md"

  - name: "text"
    description: "Development-related documentation"
    # Text files are printed directly to stdout
    kind: text 
    path: "docs/dev_docs.txt"

  - name: "url"
    description: "Development-related documentation"
    # URLs are opened in the default browser
    kind: url
    path: "http://google.com"

templates:
  - name: docker_build
    command: "docker build {path} -t rox:{image_tag}"
    symbols: ["{path}", "{image_tag}"]

pipelines:
  - name: build-release-all
    description: "Build a release artifact binary and Docker image"
    stages:
      - ["build-release-binary", "build-release-image"]

  - name: ci
    description: "Run all CI-related tasks"
    stages:
      - ["fmt", "clippy-ci", "test"]

tasks:
  - name: "wt"
    command: "cargo watch -c -x test"
    description: "Rerun tests on every file change"

  - name: "wc"
    command: "cargo watch -c -x check"
    description: "Rerun checks on every file change"

  - name: "clippy-ci"
    description: "Run Clippy with a non-zero exit if warnings are found."
    command: "cargo clippy -- -D warnings"

  - name: fmt
    command: "cargo fmt"

  - name: test
    command: "cargo nextest run"
    description: "Run tests"

  - name: build-binary
    command: "cargo build"
    description: "Build the dev binary"

  - name: run
    description: "Runs the 'help' command as a basic test"
    command: "cargo run help"

  # Release-related
  - name: build-release-binary
    description: "Build a release binary with cargo."
    command: "cargo build --release"

  - name: build-release-image
    description: "Build a production image for Docker."
    command: "docker build tests/files/ -t rox:latest"