JSPM

  • Created
  • Published
  • Downloads 2
  • Score
    100M100P100Q60417F
  • License MIT

A Friendly, General purpose CLI task runner defined by a simple YAML file

Package Exports

  • mxflow
  • mxflow/bin/index.js

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (mxflow) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

mxflow
Why | Config | Installation | Usage | Options

⚡ A Friendly, General purpose CLI task runner

mxflow is a CLI task runner which is defined by a YAML config file. It searches for a .mxflow/config.yml in the current directory and parent directories recursively up which it then parses for commands and arguments

Why?

  • Internal processes can get complicated or too repetitive.

  • It's hard to streamline complex workflows across teams.

  • Existing task-runners are too focused on a specific use case / environment or have complicated config files or are just not friendly.


Major features

  • Interactive first - works with/without arguments; prompt missing args
  • Extensive config - group commands under a workflow, use arguments export value in commands
  • Shell completion - dynamic shell completion based on the closest config file
  • Confirmation - add confirm prefix to any step command to add confirmation
  • Project / System config - searches for a .mxflow/config.yml in the current directory and parent directories recursively up

Config

.mxflow/config.yml

mxflow trigger foobar --foo fval --bar 222

version: 0.60.0
exit_on_error: true # default is false
workflows:
  foobar:
    description: example placeholder
    args:
      - name: foo
        type: string
        default: fdef
        export: foox
      - name: bar
        type: number
        default: 123
        export: barx
      - name: MXF_BUG_TRACKER_NAME
        type: env
        default: jira
        export: bugTrackerName
    steps:
      - echo {foox} world
      - echo goodbye {barx} cruel world
      - confirm echo {bugTrackerName} goodbye

Config reference

version - config version

exit_on_error - should exit on any command with non-zero exit code, default is false

sleep - adds a delay between each command, default is 1000

workflows - object with workflows

Workflow reference

description - workflow description

args - list of arguments

args[*].name - what user inputs as argument

args[*].type - validation type; string | number | env

args[*].export - (optional) the exported variable, default is name

args[*].default - (optional) the default value, if any

steps - list of commands to run

steps[*] - the command to run


Real-world Use case: git-workflow


Requirements

  • Node 16.x

Installation

npm i -g mxflow
mxflow --setup-completion

or

npx mxflow

Usage

mxflow <action> [<args>]

Options

init                    | init sample configuration
trigger <workflow-name> | non-interactive workflow trigger
version                 | show version
help                    | help menu
-v, --verbose           | verbose logs
-F, --force             | force bypass confirmation prompts
--no-catch-git          | bypass initial git checks
--setup-completion      | setup shell tab completion
--clean-completion      | cleanup tab completion

Example

mxflow # or mxf
mxflow trigger foobar --verbose
mxflow trigger feature --taskId xorg --description zelda
mxflow --no-catch-git # to bypass initial git checks

Roadmap

  • project based config file
  • plugin system for dynamic lists
  • aurgument mode
  • argument autocomplete

mxflow v0.47.21

⚠️ MXFlow is in an early state of release. Breaking changes may be made to APIs/core structures as the tool matures.