161 lines
3.2 KiB
Markdown
161 lines
3.2 KiB
Markdown
---
|
|
link: "https://github.com/sosedoff/lunchy-go"
|
|
created: 2026-06-05
|
|
tags:
|
|
- "#t/clippings/github"
|
|
---
|
|
## lunchy-go
|
|
|
|
A friendly wrapper for launchctl. Start your agents and go to lunch!
|
|
|
|
This is a port of original [lunchy](https://github.com/mperham/lunchy) ruby gem by Mike Perham with extra functionality.
|
|
|
|
## Overview
|
|
|
|
Don't you hate OSX's launchctl? You have to give it exact filenames. The syntax is annoying different from Linux's nice, simple init system and overly verbose. It's just not a very developer-friendly tool.
|
|
|
|
Lunchy aims to be that friendly tool by wrapping launchctl and providing a few simple operations that you perform all the time:
|
|
|
|
- ls \[pattern\]
|
|
- start \[pattern\]
|
|
- stop \[pattern\]
|
|
- restart \[pattern\]
|
|
- status, ps \[pattern\]
|
|
- install \[file\]
|
|
- show \[pattern\]
|
|
- edit \[pattern\]
|
|
- remove, rm \[pattern\]
|
|
- scan \[path\]
|
|
|
|
where pattern is just a substring that matches the agent's plist filename.
|
|
|
|
So instead of:
|
|
|
|
```
|
|
$ launchctl load ~/Library/LaunchAgents/io.redis.redis-server.plist
|
|
```
|
|
|
|
you can do this:
|
|
|
|
```
|
|
$ lunchy start redis
|
|
```
|
|
|
|
and:
|
|
|
|
```
|
|
$ lunchy ls
|
|
|
|
com.danga.memcached
|
|
com.google.keystone.agent
|
|
com.mysql.mysqld
|
|
io.redis.redis-server
|
|
org.mongodb.mongod
|
|
```
|
|
|
|
## Install
|
|
|
|
You can install binary by running the following bash command:
|
|
|
|
```
|
|
curl -s https://raw.githubusercontent.com/sosedoff/lunchy-go/master/install.sh | bash
|
|
```
|
|
|
|
#### Homebrew
|
|
|
|
Install using [Homebrew](https://brew.sh/):
|
|
|
|
```
|
|
brew install lunchy-go
|
|
```
|
|
|
|
#### Binary Releases
|
|
|
|
Precompiled binaries are available on Github: [https://github.com/sosedoff/lunchy-go/releases](https://github.com/sosedoff/lunchy-go/releases)
|
|
|
|
#### Build from source
|
|
|
|
Build source code with Go 1.2+:
|
|
|
|
```
|
|
git clone https://github.com/sosedoff/lunchy-go.git $GOPATH/src/lunchy
|
|
cd lunchy
|
|
go build
|
|
mv ./lunchy-go /usr/local/bin/lunchy
|
|
```
|
|
|
|
## Usage
|
|
|
|
Add a new plist:
|
|
|
|
```
|
|
# Install plist
|
|
$ lunchy install /usr/local/Cellar/redis/2.8.1/homebrew.mxcl.redis.plist
|
|
```
|
|
|
|
Manage services:
|
|
|
|
```
|
|
$ lunchy start redis
|
|
$ lunchy stop redis
|
|
$ lunchy restart redis
|
|
$ lunchy status redis
|
|
```
|
|
|
|
If you have multiple plists from homebrew, you can simple control all of them:
|
|
|
|
```
|
|
$ lunchy status
|
|
homebrew.mxcl.elasticsearch
|
|
homebrew.mxcl.mysql
|
|
homebrew.mxcl.postgresql
|
|
homebrew.mxcl.redis
|
|
|
|
# Will stop all processes prefixed by "homebrew"
|
|
$ lunchy stop homebrew
|
|
```
|
|
|
|
Manage plists:
|
|
|
|
```
|
|
$ lunchy show redis
|
|
$ lunchy edit redis
|
|
```
|
|
|
|
Scan directory for existing plists:
|
|
|
|
```
|
|
$ lunchy scan /usr/local/Cellar
|
|
```
|
|
|
|
Scan all homebrew plists:
|
|
|
|
```
|
|
$ lunchy scan homebrew
|
|
```
|
|
|
|
## Profiles
|
|
|
|
When switching between different projects you might find yourself stopping and starting lots of different daemons in order to reduce memory usage. This is all good but there's a better way of doing it. Enter lunchy profiles.
|
|
|
|
Profile file `.lunchy` should be placed under your project's root directory and include a list of services that needs to be started or stopped. Example:
|
|
|
|
```
|
|
postgres
|
|
redis
|
|
elasticsearch
|
|
```
|
|
|
|
Then you can simply run the following command to start/stop/restart ALL of them at once:
|
|
|
|
```
|
|
lunchy start
|
|
lunchy stop
|
|
lunchy restart
|
|
```
|
|
|
|
## License
|
|
|
|
The MIT License (MIT)
|
|
|
|
Copyright (c) 2013-2015 Dan Sosedoff, [dan.sosedoff@gmail.com](mailto:dan.sosedoff@gmail.com) |