mirror of
				https://github.com/ohmyzsh/ohmyzsh.git
				synced 2024-05-11 05:55:17 +00:00 
			
		
		
		
	
		
			
	
	
		
			169 lines
		
	
	
		
			5.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			169 lines
		
	
	
		
			5.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| 
								 | 
							
								#!/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
							 |