Skip to content

Latest commit

 

History

History
135 lines (101 loc) · 3.2 KB

ROADMAP.md

File metadata and controls

135 lines (101 loc) · 3.2 KB

Backlog

Tasks

  • Add @cache token

Action runner

  • Add a debug layer so that the node processes can be inspected
  • Write output logs for every action

CLI

  • run-many
  • graph
    • Spin up an interactive website with full project/task data

Node.js

  • Add chrome profiling support to spawned processes
  • Publish npm packages

0.2.0

  • Add header to docs homepage

Cache

  • Ignore hashes for files that are gitignored
  • Add docs on caching options

Tests

  • Add code coverage reports in CI

Targets

  • macOS arm64
  • Linux x64 (musl)

0.1.0

  • website
    • getting started

Targets

  • macos x64
  • linux x64 (gnu)
  • windows x64

Projects

  • Can define metadata
  • File groups
    • Configure in project.yml
    • Deep overrides with global project.yml
  • Tasks
    • Configure in project.yml
    • Deep merges with global project.yml
    • Supports merge strategies
  • Checks if affected based in a file list
  • Lazy loads package.json
  • Lazy loads tsconfig.json

Project graph

  • Lazy load projects when needed
  • Get direct dependencies
  • Get direct dependents

Tasks

  • Command (and type)
  • Args
  • Inputs
    • Checks if affected based in a file list
    • Globs
    • Relative paths
    • Workspace relative paths
  • Outputs
    • Write outputs to .moon/cache/out
    • Symlink/copy outputs back to project dir
  • Dependencies (on other tasks)
  • Environment vars
  • Tokens
    • Expands tokens defined in configs
  • Can run from project root or workspace root (using run_from_workspace_root)
  • Self referencing targets (~)
  • Deps referencing targets (^)

Action runner

  • Sorts dep graph topologically
    • Groups into batches and parallelizes
    • Runs in a thread pool (via tokio)
  • Runs task based on type
  • Retries when failed (using retry_count)
  • Streams output when a primary target
  • Buffers output when a non-primary target
  • Bubbles up errors
  • Installs npm dependencies
  • Syncs package.json and tsconfig.json for all projects
    • Writes JSON preserving field order
  • Handle non-0 exit codes
  • Handle offline

CLI

  • init command to scaffold a new project
  • project command for displaying info
  • project-graph command for outputting DOT format
  • setup command for installing tools
  • teardown command for uninstalling tools
  • bin command to return tool paths
  • run command to run targets
    • Args after -- are passed to the underlying command
    • Only run on affected changes
    • Run multiple targets
  • ci command for smart running affected targets (below)

CI

  • Compares PR against default branch
  • Runs tasks if outputs defined or run_in_ci is true
  • Runs dependencies AND dependents

Cache

  • add a --no-cache option to disable all caching
  • hashing
    • use stdin for commands that take long arguments
    • dont load package.json/tsconfig.json so much
    • delete old hashes when the hash changes
    • include local file changes in hash