Bonjour! Je m'appelle Michel—pronounced mee-shell (/mi.ʃɛl/). Coincidentally, that's also how you pronounce mish
, which stands for Mill Shell. Feel free to imagine the rest of this document in an outrageous French accent as I help you get mish
up and running.
I'm an early experiment, not a finished product, but I bet I can still make your workflow a little bit better. Read more on the Windmill Blog.
If you're running macOS or Linux, you can download a pre-compiled binary from our releases page. Otherwise, you can install via the Go toolchain. First install Go and make sure that you've added /usr/local/go/bin
to the PATH
environment variable. Then install mish
with:
go get -u github.com/windmilleng/mish/cmd/mish
mish
Configuration happens in your notes.mill
. Make one to get started:
echo "sh(\"echo hello world\")" > notes.mill
↓
/↑
: scroll down/upPgDn
/PgUp
: page down/upj
/k
: jump down/up one commando
: expand/collapse current command outputr
: run your notes.mill
f
: select a workflow to run from your notes.mill
q
: quitsh
: execute arbitrary shell commands
sh("my shell command")
mish
will abort the whole execution. To continue execution if a given command fails, specify sh("faily command", tolerate_failure=True)
### Commands to execute
sh("make proto")
sh("go build ./server")
sh("go test server", tolerate_failure=True) # if this exits w/ non-zero code, keep going
sh("go test common")
There are a few other unique things you can do with mish.
Mish functions are called workflows and are prefixed by wf_
. Once you've defined workflows in your notes.mill
, you can bring up the list of your workflows by pressing f
within mish, cycle through with your arrow keys, and press r
to run. If your command is defined outside of a function, it will run automatically.
You can use mish to run a server in one mish window and simultanously run commands on that server in another mish window. Also, by implementing workflows in your notes.mill
, you can edit the server and commands you're running and rerun them easily in each window.
The notes.mill
from the above gif is included in part here as an example of workflows:
def wf_curlserver():
sh("curl localhost:8080")
def wf_jsserver():
sh("node ./server.js")
def wf_goserver():
sh("go run ./main.go")
Tried mish
? Loved it? Hated it? Couldn't get past the install? Take our survey and tell us about your experience. Your feedback will help us make dev tools better for everyone!
If you're one of our amazing alpha users, thank you! We appreciate you taking the time to test our product and give us feedback. Here are some things that we'd love for you to keep in mind as you test out mish
so we can pick your brain about them later:
notes.mill
? If it occurs to you to edit notes.mill
and you don’t, why?mish
, or turn it off?mish
changed your workflow? (Alternately: how does it fit into your existing workflow?)