sake
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:
sake ssh <server>
sake list servers|tasks
sake run <task> --output table
sake edit task <task>
sake.yaml
configsInterested 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.
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.
The MIT License (MIT)
Copyright (c) 2022 Samir Alajmovic