Add pm2 completion
This commit is contained in:
		
							parent
							
								
									cf565254e2
								
							
						
					
					
						commit
						ba7ae00cce
					
				|  | @ -0,0 +1,179 @@ | ||||||
|  | #compdef pm2 | ||||||
|  | # ------------------------------------------------------------------------------ | ||||||
|  | # Description | ||||||
|  | # ----------- | ||||||
|  | # | ||||||
|  | #  Completion script for pm2 (http://pm2.keymetrics.io/). | ||||||
|  | # | ||||||
|  | # ------------------------------------------------------------------------------ | ||||||
|  | # Authors | ||||||
|  | # ------- | ||||||
|  | # | ||||||
|  | #  * Myoungdo Park <mdo.park@gmail.com> | ||||||
|  | # | ||||||
|  | # ------------------------------------------------------------------------------ | ||||||
|  | 
 | ||||||
|  | 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 | ||||||
		Loading…
	
		Reference in New Issue