sake
is a command runner for local and remote hosts. You define servers and tasks in sake.yaml
file and then run the tasks on the servers.
This readme is also accessible on sakecli.com.
sake
has tons of features:
- auto-completion of tasks, servers and tags
- SSH into servers or docker containers
sake ssh <server>
- list servers/tasks via
sake list servers|tasks
- present task output in a compact table format
sake run <task> --output table
- open task/server in your preferred editor
sake edit task <task>
- import other
sake.yaml
configs - and many more!
Interested in managing your git repositories in a similar way? Check out mani!
sake
is available on Linux and Mac.
-
Binaries are available on the release page
-
via cURL
curl -sfL https://raw.githubusercontent.com/alajmo/sake/main/install.sh | sh
-
via Homebrew
brew tap alajmo/sake brew install sake
-
via MacPorts
sudo port install sake
-
via Arch
pacman -S sake
-
via pkg
pkg install sake
-
Via Go
go install github.com/alajmo/sake@latest
Auto-completion is available via sake completion bash|zsh|fish
and man page via sake gen
.
Requires go 1.19 or above.
- Clone the repo
- Build and run the executable
make build && ./dist/sake # To build for all target platforms run (requires goreleaser CLI) make build-all
Run the following command:
$ sake init
Initialized sake in /tmp/sake
- Created sake.yaml
Following servers were added to sake.yaml
Server | Host
-----------+---------
localhost | 0.0.0.0
# List all servers
$ sake list servers
Server | Host
-----------+---------
localhost | 0.0.0.0
# List all tasks
$ sake list tasks
Task | Description
------+-------------
ping | Pong
# Run Task
$ sake run ping --all
TASK ping: Pong ************
0.0.0.0 | pong
# Count number of files in each server in parallel
$ sake exec --all --output table --strategy=free 'find . -type f | wc -l'
Server | Output
-----------+--------
localhost | 1
Check out the examples page for more advanced examples and the recipes page for a list of useful recipes.
- Examples
- Recipes
- Config Reference
- Command Reference
- Documentation
- Project
- Development
- Changelog
The MIT License (MIT)
Copyright (c) 2022 Samir Alajmovic