Dizzee - Subprocess management for Emacs
Dizzee is a pleasant way to manage your project's subprocesses in Emacs.
You have a project.
In order to get an instance running and start working, you have to manually launch say... 4 processes in 4 different shells.
This is Not Fun.
Thankfully it is also a definable, repeatable process - which means that we can Use Programming.
At worst, this is More Fun than doing it yourself every time.
The fundamental abstraction in Dizzee is that of a Service.
A service is an individual process such as you would otherwise launch in a shell - e.g. serving the contents of a directory on localhost port 7878:
you@yourbox $ python -m SimpleHTTPServer 7878
In production you might (read really, really should) have a whole webserver to take care of that sort of thing, but while working you take a simpler route.
With Dizzee you could define a service called my-static to turn this process into a simple:
To define this as a Dizzee service you would add the following to your .emacs:
(dz-defservice my-static "python" :args ("-m" "SimpleHTTPServer" "7878") :cd "/home/you/your-awesome-project/static")
This provides you with the following functions that you can bind to shortcuts or call with M-x:
* my-static-start * my-static-stop * my-static-restart
Arguments to dz-defservice
- Service - (symbol) The name of the service
- Command - (string) The executable to run
- :cd - (string) The directory in which you would like the service to run
- :args - (list of strings) The arguments you would like to be passed to the executable
With Service Groups things get even More Fun. Service Groups allow you to define a group of conceptually related Services that you will want to launch simultaneously.
By Way Of Example
Let's say you are plausibly working on a "Server" that will talk to a "Client". Having defined the Sevices my-server and my-client you can then define a Service Group:
(dz-defservice-group my-project (my-server my-client))
This will provide the M-x functions
- my-project-start - Starts all the services
- my-project-stop - Stops all the services
- my-project-restart - Restarts all the services
Dizzee also provides a reloader to restart your service when you make changes to the source. More complete docs to follow. For now C-h f dz-register-reload
Use el-get with the github repo as a git source.
Or, if you insist, (grumbles...) download dizzee.el and:
Use the Github tracker https://github.com/davidmiller/dizzee/issues