Update and Fix Vagrant development setup (#1111)
CHANGES - Updated to Ubuntu 20.04 bento vagrant box - Updated PHP to PHP-FPM 7.4 - Updated MySQL to Percona Server 5.7 - Now runs with NGINX as web server (default vhost kept as before http://192.168.50.100/) - DEPRECATED: No longer relying on puphpet code (it's outdated and no longer maintained) - Updated Vagrantfile to use ansible - NEW: Automation in vagrant is now handled by ansible (see provision.yaml for details) - A couple of shell scripts to handle "re-running" of the vagrant up command for faster executions ( setup-php.sh, setup-mysql.sh )pull/1170/head
parent
b81f173a05
commit
162bba0046
|
@ -1,264 +1,21 @@
|
|||
require 'yaml'
|
||||
# -*- mode: ruby -*-
|
||||
# vi: set ft=ruby :
|
||||
|
||||
dir = File.dirname(File.expand_path(__FILE__))
|
||||
|
||||
configValues = YAML.load_file("#{dir}/puphpet/config.yaml")
|
||||
data = configValues['vagrantfile-local']
|
||||
|
||||
Vagrant.require_version '>= 1.6.0'
|
||||
|
||||
Vagrant.configure('2') do |config|
|
||||
config.vm.box = "#{data['vm']['box']}"
|
||||
config.vm.box_url = "#{data['vm']['box_url']}"
|
||||
|
||||
if data['vm']['hostname'].to_s.strip.length != 0
|
||||
config.vm.hostname = "#{data['vm']['hostname']}"
|
||||
ENV['VAGRANT_DEFAULT_PROVIDER'] = 'virtualbox'
|
||||
Vagrant.configure("2") do |config|
|
||||
##### VM definition #####
|
||||
config.vm.define "phpservermon-dev" do |config|
|
||||
config.vm.hostname = "phpservermon-dev"
|
||||
config.vm.box = "bento/ubuntu-20.04"
|
||||
config.vm.box_check_update = false
|
||||
config.vm.network "private_network", ip: "192.168.50.100"
|
||||
config.vm.provision :ansible do |ansible|
|
||||
ansible.limit = "all"
|
||||
ansible.playbook = "provision.yaml"
|
||||
end
|
||||
|
||||
if data['vm']['network']['private_network'].to_s != ''
|
||||
config.vm.network 'private_network', ip: "#{data['vm']['network']['private_network']}"
|
||||
end
|
||||
|
||||
data['vm']['network']['forwarded_port'].each do |i, port|
|
||||
if port['guest'] != '' && port['host'] != ''
|
||||
config.vm.network :forwarded_port, guest: port['guest'].to_i, host: port['host'].to_i
|
||||
end
|
||||
end
|
||||
|
||||
if !data['vm']['post_up_message'].nil?
|
||||
config.vm.post_up_message = "#{data['vm']['post_up_message']}"
|
||||
end
|
||||
|
||||
if Vagrant.has_plugin?('vagrant-hostmanager')
|
||||
hosts = Array.new()
|
||||
|
||||
if !configValues['apache']['install'].nil? &&
|
||||
configValues['apache']['install'].to_i == 1 &&
|
||||
configValues['apache']['vhosts'].is_a?(Hash)
|
||||
configValues['apache']['vhosts'].each do |i, vhost|
|
||||
hosts.push(vhost['servername'])
|
||||
|
||||
if vhost['serveraliases'].is_a?(Array)
|
||||
vhost['serveraliases'].each do |vhost_alias|
|
||||
hosts.push(vhost_alias)
|
||||
end
|
||||
end
|
||||
end
|
||||
elsif !configValues['nginx']['install'].nil? &&
|
||||
configValues['nginx']['install'].to_i == 1 &&
|
||||
configValues['nginx']['vhosts'].is_a?(Hash)
|
||||
configValues['nginx']['vhosts'].each do |i, vhost|
|
||||
hosts.push(vhost['server_name'])
|
||||
|
||||
if vhost['server_aliases'].is_a?(Array)
|
||||
vhost['server_aliases'].each do |x, vhost_alias|
|
||||
hosts.push(vhost_alias)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
if hosts.any?
|
||||
if config.vm.hostname.to_s.strip.length == 0
|
||||
config.vm.hostname = 'puphpet-dev-machine'
|
||||
end
|
||||
|
||||
config.hostmanager.enabled = true
|
||||
config.hostmanager.manage_host = true
|
||||
config.hostmanager.ignore_private_ip = false
|
||||
config.hostmanager.include_offline = false
|
||||
config.hostmanager.aliases = hosts
|
||||
end
|
||||
end
|
||||
|
||||
if Vagrant.has_plugin?('vagrant-cachier')
|
||||
config.cache.scope = :box
|
||||
end
|
||||
|
||||
data['vm']['synced_folder'].each do |i, folder|
|
||||
if folder['source'] != '' && folder['target'] != ''
|
||||
sync_owner = !folder['sync_owner'].nil? ? folder['sync_owner'] : 'www-data'
|
||||
sync_group = !folder['sync_group'].nil? ? folder['sync_group'] : 'www-data'
|
||||
|
||||
if folder['sync_type'] == 'nfs'
|
||||
config.vm.synced_folder "#{folder['source']}", "#{folder['target']}", id: "#{i}", type: 'nfs'
|
||||
elsif folder['sync_type'] == 'smb'
|
||||
config.vm.synced_folder "#{folder['source']}", "#{folder['target']}", id: "#{i}", type: 'smb'
|
||||
elsif folder['sync_type'] == 'rsync'
|
||||
rsync_args = !folder['rsync']['args'].nil? ? folder['rsync']['args'] : ['--verbose', '--archive', '-z']
|
||||
rsync_auto = !folder['rsync']['auto'].nil? ? folder['rsync']['auto'] : true
|
||||
rsync_exclude = !folder['rsync']['exclude'].nil? ? folder['rsync']['exclude'] : ['.vagrant/']
|
||||
|
||||
config.vm.synced_folder "#{folder['source']}", "#{folder['target']}", id: "#{i}",
|
||||
rsync__args: rsync_args, rsync__exclude: rsync_exclude, rsync__auto: rsync_auto, type: 'rsync', group: sync_group, owner: sync_owner
|
||||
elsif data['vm']['chosen_provider'] == 'parallels'
|
||||
config.vm.synced_folder "#{folder['source']}", "#{folder['target']}", id: "#{i}",
|
||||
group: sync_group, owner: sync_owner, mount_options: ['share']
|
||||
else
|
||||
config.vm.synced_folder "#{folder['source']}", "#{folder['target']}", id: "#{i}",
|
||||
group: sync_group, owner: sync_owner, mount_options: ['dmode=775', 'fmode=764']
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
config.vm.usable_port_range = (data['vm']['usable_port_range']['start'].to_i..data['vm']['usable_port_range']['stop'].to_i)
|
||||
|
||||
if data['vm']['chosen_provider'].empty? || data['vm']['chosen_provider'] == 'virtualbox'
|
||||
ENV['VAGRANT_DEFAULT_PROVIDER'] = 'virtualbox'
|
||||
|
||||
config.vm.provider :virtualbox do |virtualbox|
|
||||
data['vm']['provider']['virtualbox']['modifyvm'].each do |key, value|
|
||||
if key == 'memory'
|
||||
next
|
||||
end
|
||||
if key == 'cpus'
|
||||
next
|
||||
end
|
||||
|
||||
if key == 'natdnshostresolver1'
|
||||
value = value ? 'on' : 'off'
|
||||
end
|
||||
|
||||
virtualbox.customize ['modifyvm', :id, "--#{key}", "#{value}"]
|
||||
end
|
||||
|
||||
virtualbox.customize ['modifyvm', :id, '--memory', "#{data['vm']['memory']}"]
|
||||
virtualbox.customize ['modifyvm', :id, '--cpus', "#{data['vm']['cpus']}"]
|
||||
|
||||
if data['vm']['provider']['virtualbox']['modifyvm']['name'].nil? ||
|
||||
data['vm']['provider']['virtualbox']['modifyvm']['name'].empty?
|
||||
if data['vm']['hostname'].to_s.strip.length != 0
|
||||
virtualbox.customize ['modifyvm', :id, '--name', config.vm.hostname]
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
if data['vm']['chosen_provider'] == 'vmware_fusion' || data['vm']['chosen_provider'] == 'vmware_workstation'
|
||||
ENV['VAGRANT_DEFAULT_PROVIDER'] = (data['vm']['chosen_provider'] == 'vmware_fusion') ? 'vmware_fusion' : 'vmware_workstation'
|
||||
|
||||
config.vm.provider :vmware_fusion do |v, override|
|
||||
data['vm']['provider']['vmware'].each do |key, value|
|
||||
if key == 'memsize'
|
||||
next
|
||||
end
|
||||
if key == 'cpus'
|
||||
next
|
||||
end
|
||||
|
||||
v.vmx["#{key}"] = "#{value}"
|
||||
end
|
||||
|
||||
v.vmx['memsize'] = "#{data['vm']['memory']}"
|
||||
v.vmx['numvcpus'] = "#{data['vm']['cpus']}"
|
||||
|
||||
if data['vm']['provider']['vmware']['displayName'].nil? ||
|
||||
data['vm']['provider']['vmware']['displayName'].empty?
|
||||
if data['vm']['hostname'].to_s.strip.length != 0
|
||||
v.vmx['displayName'] = config.vm.hostname
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
if data['vm']['chosen_provider'] == 'parallels'
|
||||
ENV['VAGRANT_DEFAULT_PROVIDER'] = 'parallels'
|
||||
|
||||
config.vm.provider 'parallels' do |v|
|
||||
data['vm']['provider']['parallels'].each do |key, value|
|
||||
if key == 'memsize'
|
||||
next
|
||||
end
|
||||
if key == 'cpus'
|
||||
next
|
||||
end
|
||||
|
||||
v.customize ['set', :id, "--#{key}", "#{value}"]
|
||||
end
|
||||
|
||||
v.memory = "#{data['vm']['memory']}"
|
||||
v.cpus = "#{data['vm']['cpus']}"
|
||||
|
||||
if data['vm']['provider']['parallels']['name'].nil? ||
|
||||
data['vm']['provider']['parallels']['name'].empty?
|
||||
if data['vm']['hostname'].to_s.strip.length != 0
|
||||
v.name = config.vm.hostname
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
ssh_username = !data['ssh']['username'].nil? ? data['ssh']['username'] : 'vagrant'
|
||||
|
||||
config.vm.provision 'shell' do |s|
|
||||
s.path = 'puphpet/shell/initial-setup.sh'
|
||||
s.args = '/vagrant/puphpet'
|
||||
end
|
||||
config.vm.provision 'shell' do |kg|
|
||||
kg.path = 'puphpet/shell/ssh-keygen.sh'
|
||||
kg.args = "#{ssh_username}"
|
||||
end
|
||||
config.vm.provision :shell, :path => 'puphpet/shell/install-ruby.sh'
|
||||
config.vm.provision :shell, :path => 'puphpet/shell/install-puppet.sh'
|
||||
|
||||
config.vm.provision :puppet do |puppet|
|
||||
puppet.facter = {
|
||||
'ssh_username' => "#{ssh_username}",
|
||||
'provisioner_type' => ENV['VAGRANT_DEFAULT_PROVIDER'],
|
||||
'vm_target_key' => 'vagrantfile-local',
|
||||
}
|
||||
puppet.manifests_path = "#{data['vm']['provision']['puppet']['manifests_path']}"
|
||||
puppet.manifest_file = "#{data['vm']['provision']['puppet']['manifest_file']}"
|
||||
puppet.module_path = "#{data['vm']['provision']['puppet']['module_path']}"
|
||||
|
||||
if !data['vm']['provision']['puppet']['options'].empty?
|
||||
puppet.options = data['vm']['provision']['puppet']['options']
|
||||
end
|
||||
end
|
||||
|
||||
config.vm.provision :shell do |s|
|
||||
s.path = 'puphpet/shell/execute-files.sh'
|
||||
s.args = ['exec-once', 'exec-always']
|
||||
end
|
||||
config.vm.provision :shell, run: 'always' do |s|
|
||||
s.path = 'puphpet/shell/execute-files.sh'
|
||||
s.args = ['startup-once', 'startup-always']
|
||||
end
|
||||
config.vm.provision :shell, :path => 'puphpet/shell/important-notices.sh'
|
||||
|
||||
if File.file?("#{dir}/puphpet/files/dot/ssh/id_rsa")
|
||||
config.ssh.private_key_path = [
|
||||
"#{dir}/puphpet/files/dot/ssh/id_rsa",
|
||||
"#{dir}/puphpet/files/dot/ssh/insecure_private_key"
|
||||
]
|
||||
end
|
||||
|
||||
if !data['ssh']['host'].nil?
|
||||
config.ssh.host = "#{data['ssh']['host']}"
|
||||
end
|
||||
if !data['ssh']['port'].nil?
|
||||
config.ssh.port = "#{data['ssh']['port']}"
|
||||
end
|
||||
if !data['ssh']['username'].nil?
|
||||
config.ssh.username = "#{data['ssh']['username']}"
|
||||
end
|
||||
if !data['ssh']['guest_port'].nil?
|
||||
config.ssh.guest_port = data['ssh']['guest_port']
|
||||
end
|
||||
if !data['ssh']['shell'].nil?
|
||||
config.ssh.shell = "#{data['ssh']['shell']}"
|
||||
end
|
||||
if !data['ssh']['keep_alive'].nil?
|
||||
config.ssh.keep_alive = data['ssh']['keep_alive']
|
||||
end
|
||||
if !data['ssh']['forward_agent'].nil?
|
||||
config.ssh.forward_agent = data['ssh']['forward_agent']
|
||||
end
|
||||
if !data['ssh']['forward_x11'].nil?
|
||||
config.ssh.forward_x11 = data['ssh']['forward_x11']
|
||||
end
|
||||
if !data['vagrant']['host'].nil?
|
||||
config.vagrant.host = data['vagrant']['host'].gsub(':', '').intern
|
||||
config.vm.provider "virtualbox" do |vb|
|
||||
vb.memory = "2048"
|
||||
vb.cpus = "2"
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
|
|
@ -0,0 +1,11 @@
|
|||
<?php
|
||||
define('PSM_DB_PREFIX', 'monitor_');
|
||||
define('PSM_DB_USER', 'psm');
|
||||
define('PSM_DB_PASS', 'psm-dev-password');
|
||||
define('PSM_DB_NAME', 'psm');
|
||||
define('PSM_DB_HOST', 'localhost');
|
||||
define('PSM_DB_PORT', '3306'); //3306 is the default port for MySQL. If no specfic port is used, leave it empty.
|
||||
define('PSM_BASE_URL', '');
|
||||
define('PSM_WEBCRON_KEY', '');
|
||||
define('PSM_PUBLIC', false);
|
||||
|
|
@ -0,0 +1,84 @@
|
|||
upstream php-fpm {
|
||||
server unix:/var/run/php/php7.4-fpm.sock;
|
||||
}
|
||||
|
||||
server {
|
||||
listen 80;
|
||||
server_name 192.168.50.100;
|
||||
|
||||
root /vagrant;
|
||||
index index.php;
|
||||
charset UTF-8;
|
||||
|
||||
gzip on;
|
||||
gzip_http_version 1.1;
|
||||
gzip_vary on;
|
||||
gzip_comp_level 6;
|
||||
gzip_proxied any;
|
||||
gzip_types text/plain text/xml text/css application/x-javascript;
|
||||
|
||||
access_log /var/log/nginx/psm.access.log;
|
||||
error_log /var/log/nginx/psm.com.error.log;
|
||||
|
||||
location = /favicon.ico {
|
||||
log_not_found off;
|
||||
access_log off;
|
||||
}
|
||||
|
||||
location = /robots.txt {
|
||||
deny all;
|
||||
log_not_found off;
|
||||
access_log off;
|
||||
}
|
||||
|
||||
location ~ /\.svn/* {
|
||||
deny all;
|
||||
}
|
||||
|
||||
location ~ /\.git/* {
|
||||
deny all;
|
||||
}
|
||||
|
||||
location /nginx_status {
|
||||
stub_status on;
|
||||
access_log off;
|
||||
}
|
||||
|
||||
location / {
|
||||
try_files $uri $uri/ /index.php?q=$uri&$args;
|
||||
}
|
||||
|
||||
location ~ \.php$ {
|
||||
|
||||
set $nocache "";
|
||||
if ($http_cookie ~ (comment_author_.*|wordpress_logged_in.*|wp-postpass_.*)) {
|
||||
set $nocache "Y";
|
||||
}
|
||||
|
||||
fastcgi_pass php-fpm;
|
||||
fastcgi_index index.php;
|
||||
fastcgi_param SCRIPT_FILENAME /vagrant$fastcgi_script_name;
|
||||
fastcgi_intercept_errors on;
|
||||
include fastcgi_params;
|
||||
|
||||
fastcgi_cache_use_stale error timeout invalid_header http_500;
|
||||
fastcgi_cache_key $host$request_uri;
|
||||
fastcgi_cache off;
|
||||
fastcgi_cache_valid 200 1m;
|
||||
fastcgi_cache_bypass $nocache;
|
||||
fastcgi_no_cache $nocache;
|
||||
}
|
||||
|
||||
location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
|
||||
expires max;
|
||||
log_not_found off;
|
||||
}
|
||||
|
||||
location ~ ^/(status|ping)$ {
|
||||
include /etc/nginx/fastcgi_params;
|
||||
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
|
||||
fastcgi_param SCRIPT_FILENAME $fastcgi_script_name;
|
||||
allow 127.0.0.1;
|
||||
deny all;
|
||||
}
|
||||
}
|
|
@ -48,14 +48,16 @@ Vagrant
|
|||
-------
|
||||
|
||||
If you are not familiar with Vagrant, have a look at https://www.vagrantup.com/ for more information (it is awesome).
|
||||
To ease development, a Vagrantfile has been included along with a full provisioning profile generated using PuPHPet (https://puphpet.com).
|
||||
The Vagrantfile is configured to set up a CentOS 6.5 box with PHP 5.6 and MySQL installed, with a local port forward on port 8080.
|
||||
To set up the development environment, make sure you have Vagrant and VirtualBox (https://www.virtualbox.org/) installed, then run::
|
||||
|
||||
|
||||
To ease development, a Vagrantfile has been included along with a full provisioning profile generated using ansible.
|
||||
The Vagrantfile is configured to set up a Ubuntu 20.04 box with PHP 7.4 (FPM) and MySQL installed, with a dedicated private IP for accessing the dev environment(http://192.168.50.100).
|
||||
To set up the development environment, make sure you have Vagrant, Ansible and VirtualBox (https://www.virtualbox.org/) installed, then run::
|
||||
|
||||
vagrant up
|
||||
|
||||
The initial setup may take some time as the virtual machine needs to be provisioned.
|
||||
After that, you can access your development environment by navigating to http://localhost:8080/psm/ or http://192.158.56.101/psm/.
|
||||
After that, you can access your development environment by navigating to http://192.168.50.100/.
|
||||
The config.php file has been created automatically, but the first time you do need to run through the install wizard.
|
||||
|
||||
Code
|
||||
|
|
|
@ -0,0 +1,70 @@
|
|||
---
|
||||
- hosts: all
|
||||
become: yes
|
||||
become_method: sudo
|
||||
tasks:
|
||||
- name: Update OS
|
||||
package:
|
||||
name: '*'
|
||||
state: latest
|
||||
- name: wget percona release installation file
|
||||
shell: cd /root/ && wget https://repo.percona.com/apt/percona-release_latest.$(lsb_release -sc)_all.deb; dpkg -i /root/percona-release_latest.$(lsb_release -sc)_all.deb
|
||||
|
||||
- name: setup percona repositories to percona server 5.7
|
||||
shell: percona-release setup ps57
|
||||
|
||||
- name: Update repositories cache
|
||||
apt:
|
||||
update_cache: yes
|
||||
|
||||
- name: ensure nginx is at the latest version
|
||||
apt: name=nginx state=latest
|
||||
- name: start nginx
|
||||
service:
|
||||
name: nginx
|
||||
state: started
|
||||
|
||||
- name: Add nginx stable repository from PPA and install its signing key on Ubuntu target
|
||||
ansible.builtin.apt_repository:
|
||||
repo: ppa:ondrej/php
|
||||
|
||||
- name: ensure php7.4-fpm is at the latest version
|
||||
apt: name=php7.4-fpm state=latest
|
||||
|
||||
- name: install php7.4-curl
|
||||
apt: name=php7.4-curl state=latest
|
||||
|
||||
- name: install php7.4-xml
|
||||
apt: name=php7.4-xml state=latest
|
||||
|
||||
- name: install php7.4-pdo
|
||||
apt: name=php7.4-pdo state=latest
|
||||
|
||||
- name: install php7.4-mysql
|
||||
apt: name=php7.4-mysql state=latest
|
||||
|
||||
- name: ensure gpupg2 is at the latest version
|
||||
apt: name=gnupg2 state=latest
|
||||
|
||||
- name: ensure percona-server-57 is installed
|
||||
apt: name=percona-server-server-5.7 state=latest
|
||||
|
||||
# - name: Create a new database with name 'psm'
|
||||
# shell: mysql -e "CREATE DATABASE psm;"
|
||||
- name: setup mysql
|
||||
shell: /vagrant/setup-mysql.sh
|
||||
|
||||
- name: copy psm nginx vhost
|
||||
shell: /bin/cp -far /vagrant/dev/phpservermon-default /etc/nginx/sites-available/default
|
||||
|
||||
- name: setup php dependencies
|
||||
shell: /vagrant/setup-php.sh
|
||||
|
||||
- name: copy psm config file
|
||||
shell: /bin/cp -far /vagrant/dev/config.php /vagrant/config.php
|
||||
|
||||
- name: apply nginx modifications
|
||||
service:
|
||||
name: nginx
|
||||
state: restarted
|
||||
|
|
@ -1,225 +0,0 @@
|
|||
---
|
||||
vagrantfile-local:
|
||||
vm:
|
||||
box: puphpet/centos65-x64
|
||||
box_url: puphpet/centos65-x64
|
||||
hostname: ''
|
||||
memory: '512'
|
||||
cpus: '1'
|
||||
chosen_provider: virtualbox
|
||||
network:
|
||||
private_network: 192.168.56.101
|
||||
forwarded_port:
|
||||
h2nLRhrSzIlF:
|
||||
host: '8080'
|
||||
guest: '80'
|
||||
post_up_message: ''
|
||||
provider:
|
||||
virtualbox:
|
||||
modifyvm:
|
||||
natdnshostresolver1: on
|
||||
vmware:
|
||||
numvcpus: 1
|
||||
parallels:
|
||||
cpus: 1
|
||||
provision:
|
||||
puppet:
|
||||
manifests_path: puphpet/puppet
|
||||
manifest_file: site.pp
|
||||
module_path: puphpet/puppet/modules
|
||||
options:
|
||||
- '--verbose'
|
||||
- '--hiera_config /vagrant/puphpet/puppet/hiera.yaml'
|
||||
- '--parser future'
|
||||
synced_folder:
|
||||
w8S8WFz0oRfc:
|
||||
owner: ''
|
||||
group: ''
|
||||
source: ./
|
||||
target: /var/www/default/psm
|
||||
sync_type: default
|
||||
rsync:
|
||||
auto: 'false'
|
||||
usable_port_range:
|
||||
start: 10200
|
||||
stop: 10500
|
||||
ssh:
|
||||
host: null
|
||||
port: null
|
||||
private_key_path: null
|
||||
username: vagrant
|
||||
guest_port: null
|
||||
keep_alive: true
|
||||
forward_agent: false
|
||||
forward_x11: false
|
||||
shell: 'bash -l'
|
||||
vagrant:
|
||||
host: detect
|
||||
server:
|
||||
install: '1'
|
||||
packages:
|
||||
- vim-common
|
||||
firewall:
|
||||
install: '1'
|
||||
rules: null
|
||||
apache:
|
||||
install: '1'
|
||||
settings:
|
||||
user: www-data
|
||||
group: www-data
|
||||
default_vhost: true
|
||||
manage_user: false
|
||||
manage_group: false
|
||||
sendfile: 0
|
||||
modules:
|
||||
- rewrite
|
||||
vhosts: { }
|
||||
mod_pagespeed: 0
|
||||
nginx:
|
||||
install: '0'
|
||||
settings:
|
||||
default_vhost: 1
|
||||
proxy_buffer_size: 128k
|
||||
proxy_buffers: '4 256k'
|
||||
upstreams: { }
|
||||
vhosts: { }
|
||||
php:
|
||||
install: '1'
|
||||
version: '56'
|
||||
composer: '1'
|
||||
composer_home: ''
|
||||
modules:
|
||||
php:
|
||||
- cli
|
||||
- intl
|
||||
- mcrypt
|
||||
- mysqlnd
|
||||
pear: { }
|
||||
pecl:
|
||||
- pecl_http
|
||||
ini:
|
||||
display_errors: On
|
||||
error_reporting: E_ALL
|
||||
session.save_path: /var/lib/php/session
|
||||
timezone: America/Chicago
|
||||
mod_php: 0
|
||||
hhvm:
|
||||
install: '0'
|
||||
nightly: 0
|
||||
composer: '1'
|
||||
composer_home: ''
|
||||
settings:
|
||||
host: '0'
|
||||
port: '0'
|
||||
ini: { }
|
||||
timezone: null
|
||||
xdebug:
|
||||
install: '1'
|
||||
settings:
|
||||
xdebug.default_enable: '1'
|
||||
xdebug.remote_autostart: '0'
|
||||
xdebug.remote_connect_back: '1'
|
||||
xdebug.remote_enable: '1'
|
||||
xdebug.remote_handler: dbgp
|
||||
xdebug.remote_port: '9000'
|
||||
xdebug.remote_host: 192.168.56.101
|
||||
xdebug.idekey: XDEBUGPSM
|
||||
xhprof:
|
||||
install: '0'
|
||||
wpcli:
|
||||
install: '0'
|
||||
version: ''
|
||||
drush:
|
||||
install: '0'
|
||||
version: ''
|
||||
ruby:
|
||||
install: '1'
|
||||
versions: { }
|
||||
nodejs:
|
||||
install: '0'
|
||||
npm_packages: { }
|
||||
python:
|
||||
install: '1'
|
||||
packages: { }
|
||||
versions:
|
||||
sAxFy93LRP7G:
|
||||
version: ''
|
||||
mysql:
|
||||
install: '1'
|
||||
override_options: { }
|
||||
root_password: psm
|
||||
adminer: '1'
|
||||
databases:
|
||||
TiL7OqnkkdEw:
|
||||
grant:
|
||||
- ALL
|
||||
name: psm
|
||||
host: localhost
|
||||
user: psm
|
||||
password: psm
|
||||
sql_file: ''
|
||||
postgresql:
|
||||
install: '0'
|
||||
settings:
|
||||
root_password: '123'
|
||||
user_group: postgres
|
||||
encoding: UTF8
|
||||
version: '9.3'
|
||||
databases: { }
|
||||
adminer: 0
|
||||
mariadb:
|
||||
install: '0'
|
||||
override_options: { }
|
||||
root_password: '123'
|
||||
adminer: 0
|
||||
databases: { }
|
||||
sqlite:
|
||||
install: '0'
|
||||
adminer: 0
|
||||
databases: { }
|
||||
mongodb:
|
||||
install: '0'
|
||||
settings:
|
||||
auth: 1
|
||||
port: '27017'
|
||||
databases: { }
|
||||
redis:
|
||||
install: '0'
|
||||
settings:
|
||||
conf_port: '6379'
|
||||
mailcatcher:
|
||||
install: '0'
|
||||
settings:
|
||||
smtp_ip: 0.0.0.0
|
||||
smtp_port: 1025
|
||||
http_ip: 0.0.0.0
|
||||
http_port: '1080'
|
||||
mailcatcher_path: /usr/local/rvm/wrappers/default
|
||||
from_email_method: inline
|
||||
beanstalkd:
|
||||
install: '0'
|
||||
settings:
|
||||
listenaddress: 0.0.0.0
|
||||
listenport: '13000'
|
||||
maxjobsize: '65535'
|
||||
maxconnections: '1024'
|
||||
binlogdir: /var/lib/beanstalkd/binlog
|
||||
binlogfsync: null
|
||||
binlogsize: '10485760'
|
||||
beanstalk_console: 0
|
||||
binlogdir: /var/lib/beanstalkd/binlog
|
||||
rabbitmq:
|
||||
install: '0'
|
||||
settings:
|
||||
port: '5672'
|
||||
elastic_search:
|
||||
install: '0'
|
||||
settings:
|
||||
version: ''
|
||||
java_install: true
|
||||
solr:
|
||||
install: '0'
|
||||
settings:
|
||||
version: ''
|
||||
port: ''
|
||||
|
|
@ -1,52 +0,0 @@
|
|||
if [ -f /etc/bash_completion ]; then
|
||||
source /etc/bash_completion
|
||||
fi
|
||||
|
||||
__has_parent_dir () {
|
||||
# Utility function so we can test for things like .git/.hg without firing up a
|
||||
# separate process
|
||||
test -d "$1" && return 0;
|
||||
|
||||
current="."
|
||||
while [ ! "$current" -ef "$current/.." ]; do
|
||||
if [ -d "$current/$1" ]; then
|
||||
return 0;
|
||||
fi
|
||||
current="$current/..";
|
||||
done
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
__vcs_name() {
|
||||
if [ -d .svn ]; then
|
||||
echo "-[svn]";
|
||||
elif __has_parent_dir ".git"; then
|
||||
echo "-[$(__git_ps1 'git %s')]";
|
||||
elif __has_parent_dir ".hg"; then
|
||||
echo "-[hg $(hg branch)]"
|
||||
fi
|
||||
}
|
||||
|
||||
black=$(tput -Txterm setaf 0)
|
||||
red=$(tput -Txterm setaf 1)
|
||||
green=$(tput -Txterm setaf 2)
|
||||
yellow=$(tput -Txterm setaf 3)
|
||||
dk_blue=$(tput -Txterm setaf 4)
|
||||
pink=$(tput -Txterm setaf 5)
|
||||
lt_blue=$(tput -Txterm setaf 6)
|
||||
|
||||
bold=$(tput -Txterm bold)
|
||||
reset=$(tput -Txterm sgr0)
|
||||
|
||||
# Nicely formatted terminal prompt
|
||||
export PS1='\n\[$bold\]\[$black\][\[$dk_blue\]\@\[$black\]]-[\[$green\]\u\[$yellow\]@\[$green\]\h\[$black\]]-[\[$pink\]\w\[$black\]]\[\033[0;33m\]$(__vcs_name) \[\033[00m\]\[$reset\]\n\[$reset\]\$ '
|
||||
|
||||
alias ls='ls -F --color=always'
|
||||
alias dir='dir -F --color=always'
|
||||
alias ll='ls -l'
|
||||
alias cp='cp -iv'
|
||||
alias rm='rm -i'
|
||||
alias mv='mv -iv'
|
||||
alias grep='grep --color=auto -in'
|
||||
alias ..='cd ..'
|
|
@ -1,491 +0,0 @@
|
|||
# bash/zsh git prompt support
|
||||
#
|
||||
# Copyright (C) 2006,2007 Shawn O. Pearce <spearce@spearce.org>
|
||||
# Distributed under the GNU General Public License, version 2.0.
|
||||
#
|
||||
# This script allows you to see repository status in your prompt.
|
||||
#
|
||||
# To enable:
|
||||
#
|
||||
# 1) Copy this file to somewhere (e.g. ~/.git-prompt.sh).
|
||||
# 2) Add the following line to your .bashrc/.zshrc:
|
||||
# source ~/.git-prompt.sh
|
||||
# 3a) Change your PS1 to call __git_ps1 as
|
||||
# command-substitution:
|
||||
# Bash: PS1='[\u@\h \W$(__git_ps1 " (%s)")]\$ '
|
||||
# ZSH: setopt PROMPT_SUBST ; PS1='[%n@%m %c$(__git_ps1 " (%s)")]\$ '
|
||||
# the optional argument will be used as format string.
|
||||
# 3b) Alternatively, for a slightly faster prompt, __git_ps1 can
|
||||
# be used for PROMPT_COMMAND in Bash or for precmd() in Zsh
|
||||
# with two parameters, <pre> and <post>, which are strings
|
||||
# you would put in $PS1 before and after the status string
|
||||
# generated by the git-prompt machinery. e.g.
|
||||
# Bash: PROMPT_COMMAND='__git_ps1 "\u@\h:\w" "\\\$ "'
|
||||
# will show username, at-sign, host, colon, cwd, then
|
||||
# various status string, followed by dollar and SP, as
|
||||
# your prompt.
|
||||
# ZSH: precmd () { __git_ps1 "%n" ":%~$ " "|%s" }
|
||||
# will show username, pipe, then various status string,
|
||||
# followed by colon, cwd, dollar and SP, as your prompt.
|
||||
# Optionally, you can supply a third argument with a printf
|
||||
# format string to finetune the output of the branch status
|
||||
#
|
||||
# The repository status will be displayed only if you are currently in a
|
||||
# git repository. The %s token is the placeholder for the shown status.
|
||||
#
|
||||
# The prompt status always includes the current branch name.
|
||||
#
|
||||
# In addition, if you set GIT_PS1_SHOWDIRTYSTATE to a nonempty value,
|
||||
# unstaged (*) and staged (+) changes will be shown next to the branch
|
||||
# name. You can configure this per-repository with the
|
||||
# bash.showDirtyState variable, which defaults to true once
|
||||
# GIT_PS1_SHOWDIRTYSTATE is enabled.
|
||||
#
|
||||
# You can also see if currently something is stashed, by setting
|
||||
# GIT_PS1_SHOWSTASHSTATE to a nonempty value. If something is stashed,
|
||||
# then a '$' will be shown next to the branch name.
|
||||
#
|
||||
# If you would like to see if there're untracked files, then you can set
|
||||
# GIT_PS1_SHOWUNTRACKEDFILES to a nonempty value. If there're untracked
|
||||
# files, then a '%' will be shown next to the branch name. You can
|
||||
# configure this per-repository with the bash.showUntrackedFiles
|
||||
# variable, which defaults to true once GIT_PS1_SHOWUNTRACKEDFILES is
|
||||
# enabled.
|
||||
#
|
||||
# If you would like to see the difference between HEAD and its upstream,
|
||||
# set GIT_PS1_SHOWUPSTREAM="auto". A "<" indicates you are behind, ">"
|
||||
# indicates you are ahead, "<>" indicates you have diverged and "="
|
||||
# indicates that there is no difference. You can further control
|
||||
# behaviour by setting GIT_PS1_SHOWUPSTREAM to a space-separated list
|
||||
# of values:
|
||||
#
|
||||
# verbose show number of commits ahead/behind (+/-) upstream
|
||||
# name if verbose, then also show the upstream abbrev name
|
||||
# legacy don't use the '--count' option available in recent
|
||||
# versions of git-rev-list
|
||||
# git always compare HEAD to @{upstream}
|
||||
# svn always compare HEAD to your SVN upstream
|
||||
#
|
||||
# By default, __git_ps1 will compare HEAD to your SVN upstream if it can
|
||||
# find one, or @{upstream} otherwise. Once you have set
|
||||
# GIT_PS1_SHOWUPSTREAM, you can override it on a per-repository basis by
|
||||
# setting the bash.showUpstream config variable.
|
||||
#
|
||||
# If you would like to see more information about the identity of
|
||||
# commits checked out as a detached HEAD, set GIT_PS1_DESCRIBE_STYLE
|
||||
# to one of these values:
|
||||
#
|
||||
# contains relative to newer annotated tag (v1.6.3.2~35)
|
||||
# branch relative to newer tag or branch (master~4)
|
||||
# describe relative to older annotated tag (v1.6.3.1-13-gdd42c2f)
|
||||
# default exactly matching tag
|
||||
#
|
||||
# If you would like a colored hint about the current dirty state, set
|
||||
# GIT_PS1_SHOWCOLORHINTS to a nonempty value. The colors are based on
|
||||
# the colored output of "git status -sb" and are available only when
|
||||
# using __git_ps1 for PROMPT_COMMAND or precmd.
|
||||
|
||||
# check whether printf supports -v
|
||||
__git_printf_supports_v=
|
||||
printf -v __git_printf_supports_v -- '%s' yes >/dev/null 2>&1
|
||||
|
||||
# stores the divergence from upstream in $p
|
||||
# used by GIT_PS1_SHOWUPSTREAM
|
||||
__git_ps1_show_upstream ()
|
||||
{
|
||||
local key value
|
||||
local svn_remote svn_url_pattern count n
|
||||
local upstream=git legacy="" verbose="" name=""
|
||||
|
||||
svn_remote=()
|
||||
# get some config options from git-config
|
||||
local output="$(git config -z --get-regexp '^(svn-remote\..*\.url|bash\.showupstream)$' 2>/dev/null | tr '\0\n' '\n ')"
|
||||
while read -r key value; do
|
||||
case "$key" in
|
||||
bash.showupstream)
|
||||
GIT_PS1_SHOWUPSTREAM="$value"
|
||||
if [[ -z "${GIT_PS1_SHOWUPSTREAM}" ]]; then
|
||||
p=""
|
||||
return
|
||||
fi
|
||||
;;
|
||||
svn-remote.*.url)
|
||||
svn_remote[$((${#svn_remote[@]} + 1))]="$value"
|
||||
svn_url_pattern="$svn_url_pattern\\|$value"
|
||||
upstream=svn+git # default upstream is SVN if available, else git
|
||||
;;
|
||||
esac
|
||||
done <<< "$output"
|
||||
|
||||
# parse configuration values
|
||||
for option in ${GIT_PS1_SHOWUPSTREAM}; do
|
||||
case "$option" in
|
||||
git|svn) upstream="$option" ;;
|
||||
verbose) verbose=1 ;;
|
||||
legacy) legacy=1 ;;
|
||||
name) name=1 ;;
|
||||
esac
|
||||
done
|
||||
|
||||
# Find our upstream
|
||||
case "$upstream" in
|
||||
git) upstream="@{upstream}" ;;
|
||||
svn*)
|
||||
# get the upstream from the "git-svn-id: ..." in a commit message
|
||||
# (git-svn uses essentially the same procedure internally)
|
||||
local -a svn_upstream
|
||||
svn_upstream=($(git log --first-parent -1 \
|
||||
--grep="^git-svn-id: \(${svn_url_pattern#??}\)" 2>/dev/null))
|
||||
if [[ 0 -ne ${#svn_upstream[@]} ]]; then
|
||||
svn_upstream=${svn_upstream[${#svn_upstream[@]} - 2]}
|
||||
svn_upstream=${svn_upstream%@*}
|
||||
local n_stop="${#svn_remote[@]}"
|
||||
for ((n=1; n <= n_stop; n++)); do
|
||||
svn_upstream=${svn_upstream#${svn_remote[$n]}}
|
||||
done
|
||||
|
||||
if [[ -z "$svn_upstream" ]]; then
|
||||
# default branch name for checkouts with no layout:
|
||||
upstream=${GIT_SVN_ID:-git-svn}
|
||||
else
|
||||
upstream=${svn_upstream#/}
|
||||
fi
|
||||
elif [[ "svn+git" = "$upstream" ]]; then
|
||||
upstream="@{upstream}"
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
# Find how many commits we are ahead/behind our upstream
|
||||
if [[ -z "$legacy" ]]; then
|
||||
count="$(git rev-list --count --left-right \
|
||||
"$upstream"...HEAD 2>/dev/null)"
|
||||
else
|
||||
# produce equivalent output to --count for older versions of git
|
||||
local commits
|
||||
if commits="$(git rev-list --left-right "$upstream"...HEAD 2>/dev/null)"
|
||||
then
|
||||
local commit behind=0 ahead=0
|
||||
for commit in $commits
|
||||
do
|
||||
case "$commit" in
|
||||
"<"*) ((behind++)) ;;
|
||||
*) ((ahead++)) ;;
|
||||
esac
|
||||
done
|
||||
count="$behind $ahead"
|
||||
else
|
||||
count=""
|
||||
fi
|
||||
fi
|
||||
|
||||
# calculate the result
|
||||
if [[ -z "$verbose" ]]; then
|
||||
case "$count" in
|
||||
"") # no upstream
|
||||
p="" ;;
|
||||
"0 0") # equal to upstream
|
||||
p="=" ;;
|
||||
"0 "*) # ahead of upstream
|
||||
p=">" ;;
|
||||
*" 0") # behind upstream
|
||||
p="<" ;;
|
||||
*) # diverged from upstream
|
||||
p="<>" ;;
|
||||
esac
|
||||
else
|
||||
case "$count" in
|
||||
"") # no upstream
|
||||
p="" ;;
|
||||
"0 0") # equal to upstream
|
||||
p=" u=" ;;
|
||||
"0 "*) # ahead of upstream
|
||||
p=" u+${count#0 }" ;;
|
||||
*" 0") # behind upstream
|
||||
p=" u-${count% 0}" ;;
|
||||
*) # diverged from upstream
|
||||
p=" u+${count#* }-${count% *}" ;;
|
||||
esac
|
||||
if [[ -n "$count" && -n "$name" ]]; then
|
||||
__git_ps1_upstream_name=$(git rev-parse \
|
||||
--abbrev-ref "$upstream" 2>/dev/null)
|
||||
if [ $pcmode = yes ]; then
|
||||
# see the comments around the
|
||||
# __git_ps1_branch_name variable below
|
||||
p="$p \${__git_ps1_upstream_name}"
|
||||
else
|
||||
p="$p ${__git_ps1_upstream_name}"
|
||||
# not needed anymore; keep user's
|
||||
# environment clean
|
||||
unset __git_ps1_upstream_name
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
}
|
||||
|
||||
# Helper function that is meant to be called from __git_ps1. It
|
||||
# injects color codes into the appropriate gitstring variables used
|
||||
# to build a gitstring.
|
||||
__git_ps1_colorize_gitstring ()
|
||||
{
|
||||
if [[ -n ${ZSH_VERSION-} ]]; then
|
||||
local c_red='%F{red}'
|
||||
local c_green='%F{green}'
|
||||
local c_lblue='%F{blue}'
|
||||
local c_clear='%f'
|
||||
else
|
||||
# Using \[ and \] around colors is necessary to prevent
|
||||
# issues with command line editing/browsing/completion!
|
||||
local c_red='\[\e[31m\]'
|
||||
local c_green='\[\e[32m\]'
|
||||
local c_lblue='\[\e[1;34m\]'
|
||||
local c_clear='\[\e[0m\]'
|
||||
fi
|
||||
local bad_color=$c_red
|
||||
local ok_color=$c_green
|
||||
local flags_color="$c_lblue"
|
||||
|
||||
local branch_color=""
|
||||
if [ $detached = no ]; then
|
||||
branch_color="$ok_color"
|
||||
else
|
||||
branch_color="$bad_color"
|
||||
fi
|
||||
c="$branch_color$c"
|
||||
|
||||
z="$c_clear$z"
|
||||
if [ "$w" = "*" ]; then
|
||||
w="$bad_color$w"
|
||||
fi
|
||||
if [ -n "$i" ]; then
|
||||
i="$ok_color$i"
|
||||
fi
|
||||
if [ -n "$s" ]; then
|
||||
s="$flags_color$s"
|
||||
fi
|
||||
if [ -n "$u" ]; then
|
||||
u="$bad_color$u"
|
||||
fi
|
||||
r="$c_clear$r"
|
||||
}
|
||||
|
||||
__git_eread ()
|
||||
{
|
||||
f="$1"
|
||||
shift
|
||||
test -r "$f" && read "$@" <"$f"
|
||||
}
|
||||
|
||||
# __git_ps1 accepts 0 or 1 arguments (i.e., format string)
|
||||
# when called from PS1 using command substitution
|
||||
# in this mode it prints text to add to bash PS1 prompt (includes branch name)
|
||||
#
|
||||
# __git_ps1 requires 2 or 3 arguments when called from PROMPT_COMMAND (pc)
|
||||
# in that case it _sets_ PS1. The arguments are parts of a PS1 string.
|
||||
# when two arguments are given, the first is prepended and the second appended
|
||||
# to the state string when assigned to PS1.
|
||||
# The optional third parameter will be used as printf format string to further
|
||||
# customize the output of the git-status string.
|
||||
# In this mode you can request colored hints using GIT_PS1_SHOWCOLORHINTS=true
|
||||
__git_ps1 ()
|
||||
{
|
||||
local pcmode=no
|
||||
local detached=no
|
||||
local ps1pc_start='\u@\h:\w '
|
||||
local ps1pc_end='\$ '
|
||||
local printf_format=' (%s)'
|
||||
|
||||
case "$#" in
|
||||
2|3) pcmode=yes
|
||||
ps1pc_start="$1"
|
||||
ps1pc_end="$2"
|
||||
printf_format="${3:-$printf_format}"
|
||||
;;
|
||||
0|1) printf_format="${1:-$printf_format}"
|
||||
;;
|
||||
*) return
|
||||
;;
|
||||
esac
|
||||
|
||||
local repo_info rev_parse_exit_code
|
||||
repo_info="$(git rev-parse --git-dir --is-inside-git-dir \
|
||||
--is-bare-repository --is-inside-work-tree \
|
||||
--short HEAD 2>/dev/null)"
|
||||
rev_parse_exit_code="$?"
|
||||
|
||||
if [ -z "$repo_info" ]; then
|
||||
if [ $pcmode = yes ]; then
|
||||
#In PC mode PS1 always needs to be set
|
||||
PS1="$ps1pc_start$ps1pc_end"
|
||||
fi
|
||||
return
|
||||
fi
|
||||
|
||||
local short_sha
|
||||
if [ "$rev_parse_exit_code" = "0" ]; then
|
||||
short_sha="${repo_info##*$'\n'}"
|
||||
repo_info="${repo_info%$'\n'*}"
|
||||
fi
|
||||
local inside_worktree="${repo_info##*$'\n'}"
|
||||
repo_info="${repo_info%$'\n'*}"
|
||||
local bare_repo="${repo_info##*$'\n'}"
|
||||
repo_info="${repo_info%$'\n'*}"
|
||||
local inside_gitdir="${repo_info##*$'\n'}"
|
||||
local g="${repo_info%$'\n'*}"
|
||||
|
||||
local r=""
|
||||
local b=""
|
||||
local step=""
|
||||
local total=""
|
||||
if [ -d "$g/rebase-merge" ]; then
|
||||
__git_eread "$g/rebase-merge/head-name" b
|
||||
__git_eread "$g/rebase-merge/msgnum" step
|
||||
__git_eread "$g/rebase-merge/end" total
|
||||
if [ -f "$g/rebase-merge/interactive" ]; then
|
||||
r="|REBASE-i"
|
||||
else
|
||||
r="|REBASE-m"
|
||||
fi
|
||||
else
|
||||
if [ -d "$g/rebase-apply" ]; then
|
||||
__git_eread "$g/rebase-apply/next" step
|
||||
__git_eread "$g/rebase-apply/last" total
|
||||
if [ -f "$g/rebase-apply/rebasing" ]; then
|
||||
__git_eread "$g/rebase-apply/head-name" b
|
||||
r="|REBASE"
|
||||
elif [ -f "$g/rebase-apply/applying" ]; then
|
||||
r="|AM"
|
||||
else
|
||||
r="|AM/REBASE"
|
||||
fi
|
||||
elif [ -f "$g/MERGE_HEAD" ]; then
|
||||
r="|MERGING"
|
||||
elif [ -f "$g/CHERRY_PICK_HEAD" ]; then
|
||||
r="|CHERRY-PICKING"
|
||||
elif [ -f "$g/REVERT_HEAD" ]; then
|
||||
r="|REVERTING"
|
||||
elif [ -f "$g/BISECT_LOG" ]; then
|
||||
r="|BISECTING"
|
||||
fi
|
||||
|
||||
if [ -n "$b" ]; then
|
||||
:
|
||||
elif [ -h "$g/HEAD" ]; then
|
||||
# symlink symbolic ref
|
||||
b="$(git symbolic-ref HEAD 2>/dev/null)"
|
||||
else
|
||||
local head=""
|
||||
if ! __git_eread "$g/HEAD" head; then
|
||||
if [ $pcmode = yes ]; then
|
||||
PS1="$ps1pc_start$ps1pc_end"
|
||||
fi
|
||||
return
|
||||
fi
|
||||
# is it a symbolic ref?
|
||||
b="${head#ref: }"
|
||||
if [ "$head" = "$b" ]; then
|
||||
detached=yes
|
||||
b="$(
|
||||
case "${GIT_PS1_DESCRIBE_STYLE-}" in
|
||||
(contains)
|
||||
git describe --contains HEAD ;;
|
||||
(branch)
|
||||
git describe --contains --all HEAD ;;
|
||||
(describe)
|
||||
git describe HEAD ;;
|
||||
(* | default)
|
||||
git describe --tags --exact-match HEAD ;;
|
||||
esac 2>/dev/null)" ||
|
||||
|
||||
b="$short_sha..."
|
||||
b="($b)"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ -n "$step" ] && [ -n "$total" ]; then
|
||||
r="$r $step/$total"
|
||||
fi
|
||||
|
||||
local w=""
|
||||
local i=""
|
||||
local s=""
|
||||
local u=""
|
||||
local c=""
|
||||
local p=""
|
||||
|
||||
if [ "true" = "$inside_gitdir" ]; then
|
||||
if [ "true" = "$bare_repo" ]; then
|
||||
c="BARE:"
|
||||
else
|
||||
b="GIT_DIR!"
|
||||
fi
|
||||
elif [ "true" = "$inside_worktree" ]; then
|
||||
if [ -n "${GIT_PS1_SHOWDIRTYSTATE-}" ] &&
|
||||
[ "$(git config --bool bash.showDirtyState)" != "false" ]
|
||||
then
|
||||
git diff --no-ext-diff --quiet --exit-code || w="*"
|
||||
if [ -n "$short_sha" ]; then
|
||||
git diff-index --cached --quiet HEAD -- || i="+"
|
||||
else
|
||||
i="#"
|
||||
fi
|
||||
fi
|
||||
if [ -n "${GIT_PS1_SHOWSTASHSTATE-}" ] &&
|
||||
[ -r "$g/refs/stash" ]; then
|
||||
s="$"
|
||||
fi
|
||||
|
||||
if [ -n "${GIT_PS1_SHOWUNTRACKEDFILES-}" ] &&
|
||||
[ "$(git config --bool bash.showUntrackedFiles)" != "false" ] &&
|
||||
git ls-files --others --exclude-standard --error-unmatch -- '*' >/dev/null 2>/dev/null
|
||||
then
|
||||
u="%${ZSH_VERSION+%}"
|
||||
fi
|
||||
|
||||
if [ -n "${GIT_PS1_SHOWUPSTREAM-}" ]; then
|
||||
__git_ps1_show_upstream
|
||||
fi
|
||||
fi
|
||||
|
||||
local z="${GIT_PS1_STATESEPARATOR-" "}"
|
||||
|
||||
# NO color option unless in PROMPT_COMMAND mode
|
||||
if [ $pcmode = yes ] && [ -n "${GIT_PS1_SHOWCOLORHINTS-}" ]; then
|
||||
__git_ps1_colorize_gitstring
|
||||
fi
|
||||
|
||||
b=${b##refs/heads/}
|
||||
if [ $pcmode = yes ]; then
|
||||
# In pcmode (and only pcmode) the contents of
|
||||
# $gitstring are subject to expansion by the shell.
|
||||
# Avoid putting the raw ref name in the prompt to
|
||||
# protect the user from arbitrary code execution via
|
||||
# specially crafted ref names (e.g., a ref named
|
||||
# '$(IFS=_;cmd=sudo_rm_-rf_/;$cmd)' would execute
|
||||
# 'sudo rm -rf /' when the prompt is drawn). Instead,
|
||||
# put the ref name in a new global variable (in the
|
||||
# __git_ps1_* namespace to avoid colliding with the
|
||||
# user's environment) and reference that variable from
|
||||
# PS1.
|
||||
__git_ps1_branch_name=$b
|
||||
# note that the $ is escaped -- the variable will be
|
||||
# expanded later (when it's time to draw the prompt)
|
||||
b="\${__git_ps1_branch_name}"
|
||||
fi
|
||||
|
||||
local f="$w$i$s$u"
|
||||
local gitstring="$c$b${f:+$z$f}$r$p"
|
||||
|
||||
if [ $pcmode = yes ]; then
|
||||
if [ "${__git_printf_supports_v-}" != yes ]; then
|
||||
gitstring=$(printf -- "$printf_format" "$gitstring")
|
||||
else
|
||||
printf -v gitstring -- "$printf_format" "$gitstring"
|
||||
fi
|
||||
PS1="$ps1pc_start$gitstring$ps1pc_end"
|
||||
else
|
||||
printf -- "$printf_format" "$gitstring"
|
||||
fi
|
||||
}
|
|
@ -1,414 +0,0 @@
|
|||
set rtp+=$GOROOT/misc/vim
|
||||
|
||||
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||
" Maintainer:
|
||||
" Amir Salihefendic
|
||||
" http://amix.dk - amix@amix.dk
|
||||
"
|
||||
" Version:
|
||||
" 5.0 - 29/05/12 15:43:36
|
||||
"
|
||||
" Blog_post:
|
||||
" http://amix.dk/blog/post/19691#The-ultimate-Vim-configuration-on-Github
|
||||
"
|
||||
" Awesome_version:
|
||||
" Get this config, nice color schemes and lots of plugins!
|
||||
"
|
||||
" Install the awesome version from:
|
||||
"
|
||||
" https://github.com/amix/vimrc
|
||||
"
|
||||
" Syntax_highlighted:
|
||||
" http://amix.dk/vim/vimrc.html
|
||||
"
|
||||
" Raw_version:
|
||||
" http://amix.dk/vim/vimrc.txt
|
||||
"
|
||||
" Sections:
|
||||
" -> General
|
||||
" -> VIM user interface
|
||||
" -> Colors and Fonts
|
||||
" -> Files and backups
|
||||
" -> Text, tab and indent related
|
||||
" -> Visual mode related
|
||||
" -> Moving around, tabs and buffers
|
||||
" -> Status line
|
||||
" -> Editing mappings
|
||||
" -> vimgrep searching and cope displaying
|
||||
" -> Spell checking
|
||||
" -> Misc
|
||||
" -> Helper functions
|
||||
"
|
||||
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||
|
||||
|
||||
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||
" => General
|
||||
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||
" Sets how many lines of history VIM has to remember
|
||||
set history=700
|
||||
|
||||
" Enable filetype plugins
|
||||
filetype plugin on
|
||||
filetype indent on
|
||||
|
||||
" Set to auto read when a file is changed from the outside
|
||||
set autoread
|
||||
|
||||
" With a map leader it's possible to do extra key combinations
|
||||
" like <leader>w saves the current file
|
||||
let mapleader = ","
|
||||
let g:mapleader = ","
|
||||
|
||||
" Fast saving
|
||||
nmap <leader>w :w!<cr>
|
||||
|
||||
" :W sudo saves the file
|
||||
" (useful for handling the permission-denied error)
|
||||
command W w !sudo tee % > /dev/null
|
||||
|
||||
|
||||
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||
" => VIM user interface
|
||||
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||
" Set 7 lines to the cursor - when moving vertically using j/k
|
||||
set so=7
|
||||
|
||||
" Turn on the WiLd menu
|
||||
set wildmenu
|
||||
|
||||
" Ignore compiled files
|
||||
set wildignore=*.o,*~,*.pyc
|
||||
if has("win16") || has("win32")
|
||||
set wildignore+=*/.git/*,*/.hg/*,*/.svn/*,*/.DS_Store
|
||||
else
|
||||
set wildignore+=.git\*,.hg\*,.svn\*
|
||||
endif
|
||||
|
||||
"Always show current position
|
||||
set ruler
|
||||
|
||||
" Height of the command bar
|
||||
set cmdheight=2
|
||||
|
||||
" A buffer becomes hidden when it is abandoned
|
||||
set hid
|
||||
|
||||
" Configure backspace so it acts as it should act
|
||||
set backspace=eol,start,indent
|
||||
set whichwrap+=<,>,h,l
|
||||
|
||||
" Ignore case when searching
|
||||
set ignorecase
|
||||
|
||||
" When searching try to be smart about cases
|
||||
set smartcase
|
||||
|
||||
" Highlight search results
|
||||
set hlsearch
|
||||
|
||||
" Makes search act like search in modern browsers
|
||||
set incsearch
|
||||
|
||||
" Don't redraw while executing macros (good performance config)
|
||||
set lazyredraw
|
||||
|
||||
" For regular expressions turn magic on
|
||||
set magic
|
||||
|
||||
" Show matching brackets when text indicator is over them
|
||||
set showmatch
|
||||
" How many tenths of a second to blink when matching brackets
|
||||
set mat=2
|
||||
|
||||
" No annoying sound on errors
|
||||
set noerrorbells
|
||||
set novisualbell
|
||||
set t_vb=
|
||||
set tm=500
|
||||
|
||||
" Add a bit extra margin to the left
|
||||
set foldcolumn=1
|
||||
|
||||
|
||||
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||
" => Colors and Fonts
|
||||
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||
" Enable syntax highlighting
|
||||
syntax enable
|
||||
|
||||
try
|
||||
colorscheme desert
|
||||
catch
|
||||
endtry
|
||||
|
||||
set background=dark
|
||||
|
||||
" Set extra options when running in GUI mode
|
||||
if has("gui_running")
|
||||
set guioptions-=T
|
||||
set guioptions-=e
|
||||
set t_Co=256
|
||||
set guitablabel=%M\ %t
|
||||
endif
|
||||
|
||||
" Set utf8 as standard encoding and en_US as the standard language
|
||||
set encoding=utf8
|
||||
|
||||
" Use Unix as the standard file type
|
||||
set ffs=unix,dos,mac
|
||||
|
||||
|
||||
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||
" => Files, backups and undo
|
||||
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||
" Turn backup off, since most stuff is in SVN, git et.c anyway...
|
||||
set nobackup
|
||||
set nowb
|
||||
set noswapfile
|
||||
|
||||
|
||||
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||
" => Text, tab and indent related
|
||||
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||
" Use spaces instead of tabs
|
||||
set expandtab
|
||||
|
||||
" Be smart when using tabs ;)
|
||||
set smarttab
|
||||
|
||||
" 1 tab == 4 spaces
|
||||
set shiftwidth=4
|
||||
set tabstop=4
|
||||
|
||||
" Linebreak on 500 characters
|
||||
set lbr
|
||||
set tw=500
|
||||
|
||||
set ai "Auto indent
|
||||
set si "Smart indent
|
||||
set wrap "Wrap lines
|
||||
|
||||
|
||||
""""""""""""""""""""""""""""""
|
||||
" => Visual mode related
|
||||
""""""""""""""""""""""""""""""
|
||||
" Visual mode pressing * or # searches for the current selection
|
||||
" Super useful! From an idea by Michael Naumann
|
||||
vnoremap <silent> * :call VisualSelection('f', '')<CR>
|
||||
vnoremap <silent> # :call VisualSelection('b', '')<CR>
|
||||
|
||||
|
||||
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||
" => Moving around, tabs, windows and buffers
|
||||
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||
" Treat long lines as break lines (useful when moving around in them)
|
||||
map j gj
|
||||
map k gk
|
||||
|
||||
" Map <Space> to / (search) and Ctrl-<Space> to ? (backwards search)
|
||||
map <space> /
|
||||
map <c-space> ?
|
||||
|
||||
" Disable highlight when <leader><cr> is pressed
|
||||
map <silent> <leader><cr> :noh<cr>
|
||||
|
||||
" Smart way to move between windows
|
||||
map <C-j> <C-W>j
|
||||
map <C-k> <C-W>k
|
||||
map <C-h> <C-W>h
|
||||
map <C-l> <C-W>l
|
||||
|
||||
" Close the current buffer
|
||||
map <leader>bd :Bclose<cr>
|
||||
|
||||
" Close all the buffers
|
||||
map <leader>ba :1,1000 bd!<cr>
|
||||
|
||||
" Useful mappings for managing tabs
|
||||
map <leader>tn :tabnew<cr>
|
||||
map <leader>to :tabonly<cr>
|
||||
map <leader>tc :tabclose<cr>
|
||||
map <leader>tm :tabmove
|
||||
map <leader>t<leader> :tabnext
|
||||
|
||||
" Opens a new tab with the current buffer's path
|
||||
" Super useful when editing files in the same directory
|
||||
map <leader>te :tabedit <c-r>=expand("%:p:h")<cr>/
|
||||
|
||||
" Switch CWD to the directory of the open buffer
|
||||
map <leader>cd :cd %:p:h<cr>:pwd<cr>
|
||||
|
||||
" Specify the behavior when switching between buffers
|
||||
try
|
||||
set switchbuf=useopen,usetab,newtab
|
||||
set stal=2
|
||||
catch
|
||||
endtry
|
||||
|
||||
" Return to last edit position when opening files (You want this!)
|
||||
autocmd BufReadPost *
|
||||
\ if line("'\"") > 0 && line("'\"") <= line("$") |
|
||||
\ exe "normal! g`\"" |
|
||||
\ endif
|
||||
" Remember info about open buffers on close
|
||||
set viminfo^=%
|
||||
|
||||
|
||||
""""""""""""""""""""""""""""""
|
||||
" => Status line
|
||||
""""""""""""""""""""""""""""""
|
||||
" Always show the status line
|
||||
set laststatus=2
|
||||
|
||||
" Format the status line
|
||||
set statusline=\ %{HasPaste()}%F%m%r%h\ %w\ \ CWD:\ %r%{getcwd()}%h\ \ \ Line:\ %l
|
||||
|
||||
|
||||
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||
" => Editing mappings
|
||||
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||
" Remap VIM 0 to first non-blank character
|
||||
map 0 ^
|
||||
|
||||
" Move a line of text using ALT+[jk] or Comamnd+[jk] on mac
|
||||
nmap <M-j> mz:m+<cr>`z
|
||||
nmap <M-k> mz:m-2<cr>`z
|
||||
vmap <M-j> :m'>+<cr>`<my`>mzgv`yo`z
|
||||
vmap <M-k> :m'<-2<cr>`>my`<mzgv`yo`z
|
||||
|
||||
if has("mac") || has("macunix")
|
||||
nmap <D-j> <M-j>
|
||||
nmap <D-k> <M-k>
|
||||
vmap <D-j> <M-j>
|
||||
vmap <D-k> <M-k>
|
||||
endif
|
||||
|
||||
" Delete trailing white space on save, useful for Python and CoffeeScript ;)
|
||||
func! DeleteTrailingWS()
|
||||
exe "normal mz"
|
||||
%s/\s\+$//ge
|
||||
exe "normal `z"
|
||||
endfunc
|
||||
autocmd BufWrite *.py :call DeleteTrailingWS()
|
||||
autocmd BufWrite *.coffee :call DeleteTrailingWS()
|
||||
|
||||
|
||||
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||
" => vimgrep searching and cope displaying
|
||||
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||
" When you press gv you vimgrep after the selected text
|
||||
vnoremap <silent> gv :call VisualSelection('gv', '')<CR>
|
||||
|
||||
" Open vimgrep and put the cursor in the right position
|
||||
map <leader>g :vimgrep // **/*.<left><left><left><left><left><left><left>
|
||||
|
||||
" Vimgreps in the current file
|
||||
map <leader><space> :vimgrep // <C-R>%<C-A><right><right><right><right><right><right><right><right><right>
|
||||
|
||||
" When you press <leader>r you can search and replace the selected text
|
||||
vnoremap <silent> <leader>r :call VisualSelection('replace', '')<CR>
|
||||
|
||||
" Do :help cope if you are unsure what cope is. It's super useful!
|
||||
"
|
||||
" When you search with vimgrep, display your results in cope by doing:
|
||||
" <leader>cc
|
||||
"
|
||||
" To go to the next search result do:
|
||||
" <leader>n
|
||||
"
|
||||
" To go to the previous search results do:
|
||||
" <leader>p
|
||||
"
|
||||
map <leader>cc :botright cope<cr>
|
||||
map <leader>co ggVGy:tabnew<cr>:set syntax=qf<cr>pgg
|
||||
map <leader>n :cn<cr>
|
||||
map <leader>p :cp<cr>
|
||||
|
||||
|
||||
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||
" => Spell checking
|
||||
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||
" Pressing ,ss will toggle and untoggle spell checking
|
||||
map <leader>ss :setlocal spell!<cr>
|
||||
|
||||
" Shortcuts using <leader>
|
||||
map <leader>sn ]s
|
||||
map <leader>sp [s
|
||||
map <leader>sa zg
|
||||
map <leader>s? z=
|
||||
|
||||
|
||||
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||
" => Misc
|
||||
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||
" Remove the Windows ^M - when the encodings gets messed up
|
||||
noremap <Leader>m mmHmt:%s/<C-V><cr>//ge<cr>'tzt'm
|
||||
|
||||
" Quickly open a buffer for scripbble
|
||||
map <leader>q :e ~/buffer<cr>
|
||||
|
||||
" Toggle paste mode on and off
|
||||
map <leader>pp :setlocal paste!<cr>
|
||||
|
||||
|
||||
|
||||
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||
" => Helper functions
|
||||
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||