https://github.com/awinecki/magicfile
Simple Makefile template for documenting frequent commands.
https://github.com/awinecki/magicfile
bash makefile makefile-template
Last synced: 4 months ago
JSON representation
Simple Makefile template for documenting frequent commands.
- Host: GitHub
- URL: https://github.com/awinecki/magicfile
- Owner: awinecki
- License: unlicense
- Created: 2020-10-11T16:43:13.000Z (over 5 years ago)
- Default Branch: main
- Last Pushed: 2022-06-26T14:39:18.000Z (almost 4 years ago)
- Last Synced: 2025-10-12T09:19:19.320Z (8 months ago)
- Topics: bash, makefile, makefile-template
- Language: Makefile
- Homepage:
- Size: 617 KB
- Stars: 52
- Watchers: 1
- Forks: 3
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Magicfile ✨

Simple `Makefile` template for situations when:
- You just need a simple way to document frequently used commands
- Don't want to create multiple `.sh` files just to document one-off CLI commands
- Want to easily share commands with your colleagues
## Installation
```
curl https://raw.githubusercontent.com/awinecki/magicfile/main/Makefile > Makefile
```
## Features
1. Type `make` to display nice help and list available commands
2. Display command descriptions nicely
3. Checks for validating env setup, env vars, params required for commands
4. Template for commands
5. Example how to use make commands with params (`make command param=value`)
6. Example how to use default params
# Usage & Tips
Add regular `make` commands. Some tips:
- Splitting commands on multiple lines is problematic in makefiles, but can be done with `\`
```shell
check-param: # [CHECK] Checks if param is present: make key=value
@if [ "$(target)" = "" ]; then \
echo -e "${ERR}Missing param: target. Try: 'make cmd target=..'${NC}"; \
exit 1; \
fi
vs.
check-param: # [CHECK] Checks if param is present: make key=value
@if [ "$(target)" = "" ]; then echo -e "${ERR}Missing param: target. Try: 'make cmd target=..'${NC}"; exit 1; fi
```
- Add `@` in front of a command to prevent make from printing it
```
echo "Hello World"
vs.
@echo "Hello World"
```
- Add checks as make required targets
```
deploy: check-local-setup
@deploy..
check-local-setup:
@if test ...
@if test ...
```
# Demo
[](https://asciinema.org/a/eisdss6ueJFZ2jqwlWPGjMbGr)
## That's it!
Hope you find this useful! 🙌
If you have any questions or improvement ideas, please contact me 🙃.