parent
241c7dde2b
commit
bd5d0066b9
3 changed files with 193 additions and 0 deletions
@ -0,0 +1,19 @@ |
|||||||
|
# pm2 plugin |
||||||
|
|
||||||
|
The plugin adds several aliases and completions for common [pm2](http://pm2.keymetrics.io/) commands. |
||||||
|
|
||||||
|
To use it, add `pm2` to the plugins array of your zshrc file: |
||||||
|
``` |
||||||
|
plugins=(... pm2) |
||||||
|
``` |
||||||
|
|
||||||
|
## Aliases |
||||||
|
|
||||||
|
| Alias | Command | |
||||||
|
|--------|----------------------| |
||||||
|
| p2s | `pm2 start` | |
||||||
|
| p2o | `pm2 stop` | |
||||||
|
| p2d | `pm2 delete` | |
||||||
|
| p2r | `pm2 restart` | |
||||||
|
| p2i | `pm2 list` | |
||||||
|
| p2l | `pm2 logs` | |
||||||
@ -0,0 +1,168 @@ |
|||||||
|
#!/bin/zsh -f |
||||||
|
#compdef pm2 |
||||||
|
#autoload |
||||||
|
|
||||||
|
local -a _1st_arguments |
||||||
|
|
||||||
|
_1st_arguments=( |
||||||
|
"start:start and daemonize an app" |
||||||
|
"trigger:trigger process action" |
||||||
|
"deploy:deploy your json" |
||||||
|
"startOrRestart:start or restart JSON file" |
||||||
|
"startOrReload:start or gracefully reload JSON file" |
||||||
|
"pid:return pid of [app_name] or all" |
||||||
|
"stop:stop a process" |
||||||
|
"restart:restart a process" |
||||||
|
"scale:scale up/down a process in cluster mode depending on total_number param" |
||||||
|
"profile\:mem:Sample PM2 heap memory" |
||||||
|
"profile\:cpu:Profile PM2 cpu" |
||||||
|
"reload:reload processes (note that its for app using HTTP/HTTPS)" |
||||||
|
"id:get process id by name" |
||||||
|
"inspect:inspect a process" |
||||||
|
"delete:stop and delete a process from pm2 process list" |
||||||
|
"sendSignal:send a system signal to the target process" |
||||||
|
"ping:ping pm2 daemon - if not up it will launch it" |
||||||
|
"updatePM2:update in-memory PM2 with local PM2" |
||||||
|
"install:install or update a module and run it forever" |
||||||
|
"module\:update:update a module and run it forever" |
||||||
|
"module\:generate:Generate a sample module in current folder" |
||||||
|
"uninstall:stop and uninstall a module" |
||||||
|
"package:Check & Package TAR type module" |
||||||
|
"publish:Publish the module you are currently on" |
||||||
|
"set:sets the specified config <key> <value>" |
||||||
|
"multiset:multiset eg \"key1 val1 key2 val2\"" |
||||||
|
"get:get value for <key>" |
||||||
|
"config:get / set module config values" |
||||||
|
"unset:clears the specified config <key>" |
||||||
|
"report:give a full pm2 report for https\://github.com/Unitech/pm2/issues" |
||||||
|
"link:link with the pm2 monitoring dashboard" |
||||||
|
"unlink:unlink with the pm2 monitoring dashboard" |
||||||
|
"monitor:monitor target process" |
||||||
|
"unmonitor:unmonitor target process" |
||||||
|
"open:open the pm2 monitoring dashboard" |
||||||
|
"plus:enable pm2 plus" |
||||||
|
"login:Login to pm2 plus" |
||||||
|
"logout:Logout from pm2 plus" |
||||||
|
"web:launch a health API on 0.0.0.0\:9615" |
||||||
|
"dump:dump all processes for resurrecting them later" |
||||||
|
"cleardump:Create empty dump file" |
||||||
|
"send:send stdin to <pm_id>" |
||||||
|
"attach:attach stdin/stdout to application identified by <pm_id>" |
||||||
|
"resurrect:resurrect previously dumped processes" |
||||||
|
"unstartup:disable the pm2 startup hook" |
||||||
|
"startup:enable the pm2 startup hook" |
||||||
|
"logrotate:copy default logrotate configuration" |
||||||
|
"ecosystem:generate a process conf file. (mode = null or simple)" |
||||||
|
"reset:reset counters for process" |
||||||
|
"describe:describe all parameters of a process id" |
||||||
|
"list:list all processes" |
||||||
|
"jlist:list all processes in JSON format" |
||||||
|
"prettylist:print json in a prettified JSON" |
||||||
|
"monit:launch termcaps monitoring" |
||||||
|
"imonit:launch legacy termcaps monitoring" |
||||||
|
"dashboard:launch dashboard with monitoring and logs" |
||||||
|
"flush:flush logs" |
||||||
|
"reloadLogs:reload all logs" |
||||||
|
"logs:stream logs file. Default stream all logs" |
||||||
|
"kill:kill daemon" |
||||||
|
"pull:updates repository for a given app" |
||||||
|
"forward:updates repository to the next commit for a given app" |
||||||
|
"backward:downgrades repository to the previous commit for a given app" |
||||||
|
"deepUpdate:performs a deep update of PM2" |
||||||
|
"serve:serve a directory over http via port" |
||||||
|
"examples:display pm2 usage examples" |
||||||
|
) |
||||||
|
|
||||||
|
local -a id_names |
||||||
|
|
||||||
|
_id_names() { |
||||||
|
local app_list |
||||||
|
app_list=`pm2 list -m` |
||||||
|
|
||||||
|
local -a names ids |
||||||
|
names=(`echo $app_list | grep '+---' | awk '{print $2}'`) |
||||||
|
ids=(`echo $app_list | grep 'pm2 id' | awk '{print $4}'`) |
||||||
|
|
||||||
|
if (( ${#ids} > 0 )); then |
||||||
|
for i in {1..${#ids}}; do |
||||||
|
id_names+=( "${ids[i]}:${names[i]}" ) |
||||||
|
done |
||||||
|
fi |
||||||
|
} |
||||||
|
|
||||||
|
_arguments \ |
||||||
|
'(-v --version)'{-v,--version}'[output version]' \ |
||||||
|
'(-h --help)'{-h,--help}'[output usage information]' \ |
||||||
|
'*:: :->subcmds' && return 0 |
||||||
|
|
||||||
|
if (( CURRENT == 1 )); then |
||||||
|
_describe "command" _1st_arguments |
||||||
|
return |
||||||
|
fi |
||||||
|
|
||||||
|
local -a id_comp id_all_comp id_all_files_comp start_options logs_options |
||||||
|
id_comp=('1: :->id_comp') |
||||||
|
id_all_comp=('1: :->id_all_comp') |
||||||
|
id_all_files_comp=('1: :->id_all_files_comp') |
||||||
|
start_options=( |
||||||
|
'--watch[Watch folder for changes]' |
||||||
|
'--fresh[Rebuild Dockerfile]' |
||||||
|
'--daemon[Run container in Daemon mode (debug purposes)]' |
||||||
|
'--container[Start application in container mode]' |
||||||
|
'--dist[with --container; change local Dockerfile to containerize all files in current directory]' |
||||||
|
'--image-name[with --dist; set the exported image name]' |
||||||
|
'--node-version[with --container, set a specific major Node.js version]' |
||||||
|
'--dockerdaemon[for debugging purpose]' |
||||||
|
'(-h --help)'{-h,--help}'[output usage information]' |
||||||
|
$id_all_files_comp |
||||||
|
) |
||||||
|
logs_options=( |
||||||
|
'--json[json log output]' |
||||||
|
'--format[formated log output]' |
||||||
|
'--raw[raw output]' |
||||||
|
'--err[only shows error output]' |
||||||
|
'--out[only shows standard output]' |
||||||
|
'--lines[output the last N lines, instead of the last 15 by default]' |
||||||
|
'--timestamp[add timestamps (default format YYYY-MM-DD-HH:mm:ss)]' |
||||||
|
'--nostream[print logs without lauching the log stream]' |
||||||
|
'(-h --help)'{-h,--help}'[output usage information]' |
||||||
|
$id_all_comp |
||||||
|
) |
||||||
|
|
||||||
|
case "$words[1]" in |
||||||
|
start) |
||||||
|
_arguments $start_options && return 0 |
||||||
|
;; |
||||||
|
logs) |
||||||
|
_arguments $logs_options && return 0 |
||||||
|
;; |
||||||
|
stop|restart|delete|reload|reset) |
||||||
|
_arguments $id_all_comp && return 0 |
||||||
|
;; |
||||||
|
env|inspect|monitor|unmonitor|discribe) |
||||||
|
_arguments $id_comp && return 0 |
||||||
|
;; |
||||||
|
deploy|startOrRestart|startOrReload) |
||||||
|
_files ;; |
||||||
|
esac |
||||||
|
|
||||||
|
case "$state" in |
||||||
|
id_comp) |
||||||
|
_id_names |
||||||
|
_alternative \ |
||||||
|
'args:app args:(($id_names))' |
||||||
|
;; |
||||||
|
id_all_comp) |
||||||
|
_id_names |
||||||
|
id_names+=(all) |
||||||
|
_alternative \ |
||||||
|
'args:app args:(($id_names))' |
||||||
|
;; |
||||||
|
id_all_files_comp) |
||||||
|
_id_names |
||||||
|
id_names+=(all) |
||||||
|
_alternative \ |
||||||
|
'args:app args:(($id_names))' \ |
||||||
|
'files:filename:_files' |
||||||
|
;; |
||||||
|
esac |
||||||
@ -0,0 +1,6 @@ |
|||||||
|
alias p2s='pm2 start' |
||||||
|
alias p2o='pm2 stop' |
||||||
|
alias p2d='pm2 delete' |
||||||
|
alias p2r='pm2 restart' |
||||||
|
alias p2i='pm2 list' |
||||||
|
alias p2l='pm2 logs' |
||||||
Loading…
Reference in new issue