https://github.com/leothorp/mk
https://github.com/leothorp/mk
Last synced: over 1 year ago
JSON representation
- Host: GitHub
- URL: https://github.com/leothorp/mk
- Owner: leothorp
- Created: 2021-07-24T23:03:49.000Z (almost 5 years ago)
- Default Branch: main
- Last Pushed: 2021-07-28T02:09:50.000Z (almost 5 years ago)
- Last Synced: 2025-01-29T19:24:52.396Z (over 1 year ago)
- Language: JavaScript
- Size: 225 MB
- Stars: 1
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# 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 <...args>` Run the given mk task, optionally forwarding
one or more arguments.
-`mk -v, --version` Print version number.