From 89d9e4a98caa7f4da2aa95627d418dc4c23294c4 Mon Sep 17 00:00:00 2001 From: mikka Date: Thu, 3 Jan 2013 07:16:08 +0100 Subject: [PATCH 1/7] moved nginx plugin to a separate branch --- plugins/nginx/nginx.plugin.zsh | 185 ++++++++++++++++++++++++++++++ plugins/nginx/templates/plain_php | 27 +++++ plugins/nginx/templates/symfony2 | 27 +++++ 3 files changed, 239 insertions(+) create mode 100644 plugins/nginx/nginx.plugin.zsh create mode 100644 plugins/nginx/templates/plain_php create mode 100644 plugins/nginx/templates/symfony2 diff --git a/plugins/nginx/nginx.plugin.zsh b/plugins/nginx/nginx.plugin.zsh new file mode 100644 index 000000000..b2c2090c8 --- /dev/null +++ b/plugins/nginx/nginx.plugin.zsh @@ -0,0 +1,185 @@ +: ${NGINX_DIR:=/etc/nginx} +: ${NGINX_VHOST_TEMPLATE:=$ZSH/plugins/nginx/templates/symfony2} + +if [ $use_sudo -eq 1 ]; then + sudo="sudo" +else + sudo="" +fi + +# nginx basic completition + +_nginx_get_en_command_list () { + ls -a $NGINX_DIR/sites-available | awk '/^[a-z][a-z.-]+$/ { print $1 }' +} + +_nginx_get_dis_command_list () { + ls -a $NGINX_DIR/sites-enabled | awk '/^[a-z][a-z.-]+$/ { print $1 }' +} + +_nginx_en () { + compadd `_nginx_get_en_command_list` +} + +_nginx_dis () { + compadd `_nginx_get_dis_command_list` +} + +# Enabling a site +en () { + if [ ! $1 ]; then + echo "\033[337;41m\nThe name of the vhost is required!\n\033[0m"; + return + fi + + if [ ! -e $NGINX_DIR/sites-available/$1 ]; then + echo "\033[31m$1\033[0m doesn't exist"; + return + fi + + if [ ! -e $NGINX_DIR/sites-enabled/$1 ]; then + $sudo ln -s $NGINX_DIR/sites-available/$1 $NGINX_DIR/sites-enabled/$1; + if [ -e $NGINX_DIR/sites-enabled/$1 ]; then + echo "\033[32m$1\033[0m successfully enabled"; + else + echo "An error occured during the enabling of \033[31m$1\033[0m"; + fi + else + echo "\033[31m$1\033[0m is already enabled"; + fi +} +compdef _nginx_en en + +# Disabling a site +dis () { + if [ ! $1 ]; then + echo "\033[337;41m\nThe name of the vhost is required!\n\033[0m"; + return + fi + + if [ ! -e $NGINX_DIR/sites-enabled/$1 ]; then + echo "\033[31m$1\033[0m doesn't exist"; + else + $sudo rm -f $NGINX_DIR/sites-enabled/$1; + if [ ! -e $NGINX_DIR/sites-enabled/$1 ]; then + echo "\033[32m$1\033[0m successfully disabled"; + else + echo "An error occured during the disabling of \033[31m$1\033[0m"; + fi + fi +} +compdef _nginx_dis dis + +# Completition of vhost +_nginx_get_possible_vhost_list () { + ls -a $HOME/www | awk '/^[^.][a-z0-9._]+$/ { print $1 }' +} + +_nginx_vhost () { + compadd `_nginx_get_possible_vhost_list` +} + +# Parsing arguments +vhost () { + local user=$USER; + local template=$NGINX_VHOST_TEMPLATE + local tpl="non_existing_template" + local enable=1 + local write_hosts=0 + + while getopts ":lu:t:nwh" option + do + case $option in + l ) ls $NGINX_DIR/sites-enabled; return ;; + u ) user=$OPTARG ;; + t ) tpl=$OPTARG ;; + n ) enable=0 ;; + w ) write_hosts=1 ;; + h ) _vhost_usage; return ;; + esac + done + + shift $[ $OPTIND - 1 ] + local vhost=$1 + + if [ -z "$vhost" ]; then + echo "\033[337;41m\nThe name of the vhost is required!\n\033[0m" + return + fi + + if [ -e $ZSH/plugins/nginx/templates/$tpl ]; then + local template=$ZSH/plugins/nginx/templates/$tpl + elif [ -e $tpl ]; then + local template=$tpl + fi + + _vhost_generate $vhost $user + + if [ $enable -eq 1 ]; then + en $vhost + fi + + if [ $write_hosts -eq 1 ]; then + _write_hosts $vhost + fi +} +compdef _nginx_vhost vhost + +_vhost_usage () { + echo "Usage: vhost [options] [vhost_name]" + echo + echo "Options" + echo " -l Lists enabled vhosts" + echo " -u Sets the user - defaults to the current user ($USER)" + echo " -t Sets the template" + echo " -n Does not enable the generated vhost" + echo " -w Write the vhost to the /etc/hosts file pointing to 127.0.0.1 (writes it at the end of the first line actually)" + echo " -h Get this help message" + return +} + +# Generate config file +_vhost_generate () { + local user=$(cat /etc/passwd | grep $2 | awk -F : '{print $1 }') + + if [ ! $user ]; then + echo "User \033[31m$2\033[0m doesn't have an account on \033[33m$HOST\033[0m" + return + fi + + echo "Generating \033[32m$1\033[0m vhost for \033[33m$user\033[0m user" + + local user_id=$(cat /etc/passwd | grep $2 | awk -F : '{print $3 }') + local pool_port=1$user_id + + sed -e 's/{vhost}/'$1'/g' -e 's/{user}/'$user'/g' -e 's/{pool_port}/'$pool_port'/g' $template | tee > $1.tmp + + $sudo mv $1.tmp $NGINX_DIR/sites-available/$1 + + if [ -e $NGINX_DIR/sites-available/$1 ]; then + echo "\033[32m$1\033[0m vhost has been successfully created" + else + echo "An error occured during the creating of \033[31m$1\033[0m vhost" + fi +} + +# Write the /etc/hosts file +_write_hosts () { + temp=$HOME/hosts.temp + exec < /etc/hosts + while read line + do + if [ -e $temp ]; then + echo "$line" >> $temp; + else + echo "$line $1" > $temp; + fi + done + + $sudo mv $temp /etc/hosts; + + echo "\033[32m$1\033[0m vhost has been successfully written in /etc/hosts" +} + +alias ngt="$sudo nginx -t" +alias ngr="$sudo service nginx restart" diff --git a/plugins/nginx/templates/plain_php b/plugins/nginx/templates/plain_php new file mode 100644 index 000000000..cf470bf96 --- /dev/null +++ b/plugins/nginx/templates/plain_php @@ -0,0 +1,27 @@ +server { + root /home/{user}/www/{vhost}; + index index.php; + + server_name {vhost}; + + error_log /var/log/nginx/{vhost}.error.log; + access_log /var/log/nginx/{vhost}.access.log; + + location / { + try_files $uri $uri/ $uri/index.php; + } + + location ~ \.php$ { + include fastcgi_params; + fastcgi_index index.php; + fastcgi_pass unix:/var/run/php-fpm/{user}.socket; + fastcgi_split_path_info ^(.+\.php)(/.*)$; + + fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; + fastcgi_param HTTPS off; + } + + location ~ /\.ht { + deny all; + } +} diff --git a/plugins/nginx/templates/symfony2 b/plugins/nginx/templates/symfony2 new file mode 100644 index 000000000..eee5f2d5e --- /dev/null +++ b/plugins/nginx/templates/symfony2 @@ -0,0 +1,27 @@ +server { + root /home/{user}/www/{vhost}/web; + index app_dev.php; + + server_name {vhost}; + client_max_body_size 10M; + + error_log /var/log/nginx/{vhost}.error.log; + access_log /var/log/nginx/{vhost}.access.log; + + location / { + try_files $uri $uri/ /app_dev.php$uri /app_dev.php$is_args$args; + } + + # pass the PHP scripts to FastCGI server listening on unix sockets + location ~ ^/(app|app_dev|check)\.php(/|$) { + fastcgi_pass unix:/var/run/php-fpm/{user}.socket; + fastcgi_split_path_info ^(.+\.php)(/.*)$; + include fastcgi_params; + fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; + fastcgi_param HTTPS off; + } + + location ~ /\.ht { + deny all; + } +} From 57b022f4b5d8ff589de243ec77c98814ab03e237 Mon Sep 17 00:00:00 2001 From: mikka Date: Thu, 3 Jan 2013 07:16:59 +0100 Subject: [PATCH 2/7] moved php-fpm plugin to a separate branch --- plugins/php-fpm/php-fpm.plugin.zsh | 75 ++++++++++++++++++++++++++++++ plugins/php-fpm/templates/pool | 11 +++++ 2 files changed, 86 insertions(+) create mode 100644 plugins/php-fpm/php-fpm.plugin.zsh create mode 100644 plugins/php-fpm/templates/pool diff --git a/plugins/php-fpm/php-fpm.plugin.zsh b/plugins/php-fpm/php-fpm.plugin.zsh new file mode 100644 index 000000000..3c095058a --- /dev/null +++ b/plugins/php-fpm/php-fpm.plugin.zsh @@ -0,0 +1,75 @@ +: ${FPM_DIR:=/etc/php5/fpm} + +if [ $use_sudo -eq 1 ]; then + sudo="sudo" +else + sudo="" +fi + +_fpm_get_possible_pool_list () { + cat /etc/passwd | awk -F : '{print $1 }' +} + +_fpm_pool () { + compadd `_fpm_get_possible_pool_list` + +} + +pool () { + while getopts ":lh" option + do + case $option in + l ) ls $FPM_DIR/pool.d; return ;; + h ) _pool_usage; return ;; + * ) _pool_usage; return ;; # Default. + esac + done + + if [ ! $1 ]; then + user=$USER + else + user=$1 + fi + + _pool_generate $user +} +compdef _fpm_pool pool + +_pool_usage () { + echo "Usage: pool [options] [user]" + echo + echo "Options" + echo " -l Lists fpm pools" + echo " -h Get this help message" + return +} + +_pool_generate () { + user=$(cat /etc/passwd | grep $1 | awk -F : '{print $1 }') + + if [ ! $user ]; then + echo "User \033[31m$1\033[0m doesn't have an account on \033[33m$HOST\033[0m" + return + fi + + group=$(groups $user | cut -d " " -f 3) + + echo "Generating pool for \033[33m$user\033[0m user with \033[33m$group\033[0m group" + + user_id=$(cat /etc/passwd | grep $1 | awk -F : '{print $3 }') + pool_port=1$user_id + : ${FPM_POOL_TEMPLATE:=$ZSH/plugins/php-fpm/templates/pool} + + conf=$(sed -e 's/{user}/'$user'/g' -e 's/{group}/'$group'/g' -e 's/{pool_port}/'$pool_port'/g' $FPM_POOL_TEMPLATE ) + + echo $conf > $user.conf + $sudo mv $user.conf $FPM_DIR/pool.d/$user.conf + + if [ -e $FPM_DIR/pool.d/$user.conf ]; then + echo "Pool for \033[32m$user\033[0m user has been successfully created" + else + echo "An error occured during the creating of pool for \033[31m$user\033[0m user" + fi +} + +alias fpmr="$sudo service php5-fpm restart" diff --git a/plugins/php-fpm/templates/pool b/plugins/php-fpm/templates/pool new file mode 100644 index 000000000..454dde4c8 --- /dev/null +++ b/plugins/php-fpm/templates/pool @@ -0,0 +1,11 @@ +[{user}] +user = {user} +group = {group} + +listen = /var/run/php-fpm/{user}.socket + +pm = dynamic +pm.max_children = 10 +pm.min_spare_servers = 1 +pm.max_spare_servers = 3 +pm.max_requests = 100 From d47d5838325de534a84d4a5e1d4a85cad0db627c Mon Sep 17 00:00:00 2001 From: mikka Date: Thu, 3 Jan 2013 07:17:43 +0100 Subject: [PATCH 3/7] moved lesscss plugin to a separate branch --- plugins/lesscss/lesscss.plugin.zsh | 46 ++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 plugins/lesscss/lesscss.plugin.zsh diff --git a/plugins/lesscss/lesscss.plugin.zsh b/plugins/lesscss/lesscss.plugin.zsh new file mode 100644 index 000000000..6c666adb2 --- /dev/null +++ b/plugins/lesscss/lesscss.plugin.zsh @@ -0,0 +1,46 @@ +# basics taken from here: +# http://www.ravelrumba.com/blog/watch-compile-less-command-line/comment-page-1/#comment-2464 +# Requires watchr: https://github.com/mynyml/watchr + +watchless () { + compressed=0 + compile="" + + while getopts ":xc:h" option + do + case $option in + x ) compressed=1 ;; + c ) compile=$OPTARG ;; + h ) _watchless_usage; return ;; + esac + done + + if [ $compressed -eq 1 ]; then + x=' -x' + else + x='' + fi + + if [ -n "$compile" ]; then + if [ ! -e $compile ]; then + echo "\033[337;41m\n$compile doesn't exist!\n\033[0m" + return + fi + + name=$(echo $compile | cut -d . -f 1) + + watchr -e 'watch(".*\.less$") { |f| system("lessc '$name'.less > '$name'.css'$x' && echo \"'$name'.less > '$name'.css\" ") }' + else + watchr -e 'watch(".*\.less$") { |f| system("lessc #{f[0]} > $(echo #{f[0]} | cut -d\. -f1).css'$x' && echo \"#{f[0]} > $(echo #{f[0]} | cut -d\. -f1).css\" ") }' + fi +} + +_watchless_usage () { + echo "Usage: watchless [options]" + echo + echo "Options" + echo " -x Compiles less files into minified css files" + echo " -c Watch all files but compile only the one given here" + echo " -h Get this help message" + return +} From c5cbbaeffc9f6e8e393358a879b6ce456b21da21 Mon Sep 17 00:00:00 2001 From: mikka Date: Tue, 15 Jan 2013 21:23:31 +0100 Subject: [PATCH 4/7] enhanced symfony2 plugin --- plugins/symfony2/symfony2.plugin.zsh | 72 +++++++++++++++++++++++++--- 1 file changed, 66 insertions(+), 6 deletions(-) diff --git a/plugins/symfony2/symfony2.plugin.zsh b/plugins/symfony2/symfony2.plugin.zsh index 644266841..89e467f7b 100644 --- a/plugins/symfony2/symfony2.plugin.zsh +++ b/plugins/symfony2/symfony2.plugin.zsh @@ -1,13 +1,73 @@ # Symfony2 basic command completion +# And one step further + +: ${SYMFONY_COMPLETE_CONSOLE:=""} +: ${SYMFONY_COMPLETE_ENTITIES:=""} + +_SYMFONY_COMPLETE_CONSOLE=( + app/console +) + +SYMFONY_DO_COMPLETE_CONSOLE=($_SYMFONY_COMPLETE_CONSOLE $SYMFONY_COMPLETE_CONSOLE) + +_SYMFONY_COMPLETE_ENTITIES=( + doctrine:generate:crud + doctrine:generate:entities + doctrine:generate:form + generate:doctrine:crud + generate:doctrine:entities + generate:doctrine:form +) + +SYMFONY_DO_COMPLETE_ENTITIES=($_SYMFONY_COMPLETE_ENTITIES $SYMFONY_COMPLETE_ENTITIES) + +_symfony2 () +{ + #local asd=(echo $curcontext | tee) + + local console=$words[1] + + if [ ! -f "$console" ];then + return + fi + + local curcontext="$curcontext" state line + typeset -A opt_args + + _arguments -C \ + ':command:->command' \ + '*::options:->options' + + case $state in + (command) + if [ -z "$symfony2_command_list" ];then + _symfony2_command_list=$(_symfony2_get_command_list $console) + fi + compadd "$@" $(echo $_symfony2_command_list) + ;; + + (options) + needle=$line[1] + if [[ ${SYMFONY_DO_COMPLETE_ENTITIES[(i)$needle]} -le ${#SYMFONY_DO_COMPLETE_ENTITIES} ]]; then + if [ -z "$symfony2_entity_list" ];then + _symfony2_entity_list=$(_symfony2_get_entity_list $console) + fi + compadd "$@" $(echo $_symfony2_entity_list) + else + fi + ;; + esac +} _symfony2_get_command_list () { - app/console --no-ansi | sed "1,/Available commands/d" | awk '/^ [a-z]+/ { print $1 }' + $1 --no-ansi | sed "1,/Available commands/d" | awk '/^ [a-z]+/ { print $1 }' | sed -e 's/:/\:/g' } -_symfony2 () { - if [ -f app/console ]; then - compadd `_symfony2_get_command_list` - fi +_symfony2_get_entity_list () { + $1 doctrine:mapping:info | grep Bundle | cut -d ' ' -f 4 | awk '{ split($0, A, /\\/); for ( var in A ) { if ( match(A[var], /.*Bundle/) ) { bundle=A[var]; } } print bundle":"A[var] }' } -compdef _symfony2 app/console \ No newline at end of file +for console_command in $SYMFONY_DO_COMPLETE_CONSOLE +do + compdef _symfony2 $console_command +done From 375f9f939f08d7e7dbdaaf34ad08a6814a6e691f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Mikl=C3=B3s?= Date: Mon, 13 May 2013 22:20:32 +0200 Subject: [PATCH 5/7] fixed autocompletitions in bower plugin --- plugins/bower/bower.plugin.zsh | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/plugins/bower/bower.plugin.zsh b/plugins/bower/bower.plugin.zsh index ed9c04840..9529c0676 100644 --- a/plugins/bower/bower.plugin.zsh +++ b/plugins/bower/bower.plugin.zsh @@ -15,18 +15,14 @@ _bower () case $state in (command) - - local -a subcommands - subcommands=(${=$(bower help | grep help | sed -e 's/,//g')}) - _describe -t commands 'bower' subcommands + compadd "$@" $(bower help --no-color | egrep '^\s+[a-z\-]+(, [a-z\-]+|)\s{2,}' | sed -e 's/^\s*//' -e 's/,//' | cut -d ' ' -f 1) ;; (options) case $line[1] in - (install) if [ -z "$bower_package_list" ];then - bower_package_list=$(bower search | awk 'NR > 2' | cut -d '-' -f 2 | cut -d ' ' -f 2 | sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g") + bower_package_list=$(bower search --no-color | sed -e 's/^\s*//' | cut -d ' ' -f 1) fi compadd "$@" $(echo $bower_package_list) ;; From 47e5c1b2e5609eb4f23b5f116e3941078a40c907 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Mikl=C3=B3s?= Date: Fri, 16 Aug 2013 21:24:13 +0200 Subject: [PATCH 6/7] corrected condition, removed debian plugin dependency --- plugins/nginx/nginx.plugin.zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/nginx/nginx.plugin.zsh b/plugins/nginx/nginx.plugin.zsh index b2c2090c8..24a455c13 100644 --- a/plugins/nginx/nginx.plugin.zsh +++ b/plugins/nginx/nginx.plugin.zsh @@ -1,7 +1,7 @@ : ${NGINX_DIR:=/etc/nginx} : ${NGINX_VHOST_TEMPLATE:=$ZSH/plugins/nginx/templates/symfony2} -if [ $use_sudo -eq 1 ]; then +if [[ -e $( which -p sudo 2>&1 ) ]]; then sudo="sudo" else sudo="" From ca77b65a0031a8eb2c5cdd27169b495c8a7e1eb0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Mikl=C3=B3s?= Date: Fri, 16 Aug 2013 21:25:36 +0200 Subject: [PATCH 7/7] corrected condition, removed dependency of debian plugin --- plugins/php-fpm/php-fpm.plugin.zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/php-fpm/php-fpm.plugin.zsh b/plugins/php-fpm/php-fpm.plugin.zsh index 3c095058a..3d18e296f 100644 --- a/plugins/php-fpm/php-fpm.plugin.zsh +++ b/plugins/php-fpm/php-fpm.plugin.zsh @@ -1,6 +1,6 @@ : ${FPM_DIR:=/etc/php5/fpm} -if [ $use_sudo -eq 1 ]; then +if [[ -e $( which -p sudo 2>&1 ) ]]; then sudo="sudo" else sudo=""