0.1.5 • Published 3 years ago

@leothorp/mk v0.1.5

Weekly downloads
-
License
MIT
Repository
-
Last release
3 years ago

mk

Project-level task automation with less typing.

What is this?

Essentially this is a more terse version of npm scripts or Make tasks- a quick way to define arbitrary commands, shortcuts, and script aliases that are useful in the current directory/project. Like with Make, there's no assumption about what language is being used. an mk.yml file in the project root is the only requirement.

Installation

via npm (recommended):

  npm i -g @leothorp/mk

Or for a binary installation that doesn't require Node/npm to already be installed:

bash <(curl -sSL https://raw.githubusercontent.com/leothorp/mk/main/scripts/path-install.sh)

that runs the scripts/path-install.sh script and adds mk under /usr/local/bin, which is likely already in your PATH.

Basic Tasks

Add a file called mk.yml at the project root.

This should contain, at minimum, a tasks object, a mapping of task names to shell commands.

Example:

tasks:
  dinner: echo "tomato"
  cra: npx create-react-app new-one
  save-work: git add . && git commit -m

Now in the terminal, I can type mk dinner

and see the output tomato- as if I'd manually typed echo "tomato".

Any additional arguments are forwarded along to the end of the command. If I do mk save-work "typo"

It'll be as if I'd typed git add . && git commit -m "typo" These "partial command" tasks can be useful for repetitive tasks that still have a small manual/unpredictable component.

External Scripts

Sometimes you have a script that is more involved than a shell one-liner, so you put it in its own file in in the project. mk will automatically detect any .py, .js, or .sh files in a scripts directory at the porject root and make those available as tasks, without anything needing to be added to mk.yml. (this script directory path is configurable- see the "Configuration" section below.)

Example: If I create the file scripts/build.sh, I can run that script by typing mk build.

It's equivalent to if I had added something like this the following to mk.yml. The same goes for .py and .js scripts.

tasks:
  build: bash ./scripts/build.sh

Configuration

mk.yml can optionally include a settings object, with the following possible keys.

-scripts_dir: Default: ./scripts Path to a directory in the project containing script files that should be automatically defined as mk tasks.

-auto_scripts_enabled: Default: true This is used to enable/disable the scripts_dir/automatic task functionality.

Example:

settings:
  auto_scripts_enabled: true
  scripts_dir: "./tools/my-scripts"

CLI commands

-mk <task> <...args> Run the given mk task, optionally forwarding one or more arguments.

-mk -v, --version Print version number.

0.1.4

3 years ago

0.1.3

3 years ago

0.1.5

3 years ago

0.1.2

3 years ago

0.1.1

3 years ago

1.0.6

3 years ago