mirror of
https://github.com/gryf/vmstrap.git
synced 2025-12-18 20:10:28 +01:00
initial import
This commit is contained in:
199
.bash_prompt
Normal file
199
.bash_prompt
Normal file
@@ -0,0 +1,199 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# DESCRIPTION:
|
||||
#
|
||||
# Set the bash prompt according to:
|
||||
# * the active virtualenv
|
||||
# * the branch/status of the current Git, Mercurial or Subversion repository
|
||||
# * the return value of the previous command
|
||||
# * one line prompt
|
||||
#
|
||||
# USAGE:
|
||||
#
|
||||
# 1. Save this file as ~/.bash_prompt
|
||||
# 2. Add the following line to the end of your ~/.bashrc or ~/.bash_profile:
|
||||
# . ~/.bash_prompt
|
||||
#
|
||||
# LINEAGE:
|
||||
#
|
||||
# Based on work by bradsokol
|
||||
#
|
||||
# https://gist.github.com/bradsokol/2959821
|
||||
|
||||
# The various escape codes that we can use to color our prompt.
|
||||
RED="\[\033[0;31m\]"
|
||||
YELLOW="\[\033[1;33m\]"
|
||||
PURPLE="\[\033[1;35m\]"
|
||||
GREEN="\[\033[0;32m\]"
|
||||
BLUE="\[\033[1;34m\]"
|
||||
CYAN="\[\033[1;36m\]"
|
||||
LIGHT_RED="\[\033[1;31m\]"
|
||||
LIGHT_GREEN="\[\033[1;32m\]"
|
||||
WHITE="\[\033[1;37m\]"
|
||||
LIGHT_GRAY="\[\033[0;37m\]"
|
||||
COLOR_NONE="\[\e[0m\]"
|
||||
|
||||
GIT_PICT="◆"
|
||||
HG_PICT="☿"
|
||||
PY_PICT="℗"
|
||||
JS_PICT="ⓙ"
|
||||
|
||||
# Detect whether the current directory is a git repository.
|
||||
function is_git_repository {
|
||||
git branch > /dev/null 2>&1
|
||||
}
|
||||
|
||||
# Detect whether the current directory is a Mercurial repository.
|
||||
function is_mercurial_repository {
|
||||
branch=$(hg branch 2>/dev/null)
|
||||
if [ -n "${branch}" ]; then
|
||||
return 0
|
||||
else
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
# Detect whether the current directory is a Subversion repository.
|
||||
function is_subversion_repository {
|
||||
test -d .svn
|
||||
}
|
||||
|
||||
# Determine the branch/state information for this git repository.
|
||||
function set_git_branch {
|
||||
# Capture the output of the "git status" command.
|
||||
git_status="$(git status 2> /dev/null)"
|
||||
|
||||
# Set color based on clean/staged/dirty.
|
||||
pat="(directory|tree) clean$"
|
||||
if [[ ${git_status} =~ $pat ]]; then
|
||||
state="${GREEN}"
|
||||
elif [[ ${git_status} =~ "Changes to be committed" ]]; then
|
||||
state="${YELLOW}"
|
||||
else
|
||||
state="${LIGHT_RED}"
|
||||
fi
|
||||
|
||||
# Set arrow icon based on status against remote.
|
||||
remote_pattern="# Your branch is (.*) of"
|
||||
if [[ ${git_status} =~ ${remote_pattern} ]]; then
|
||||
if [[ ${BASH_REMATCH[1]} == "ahead" ]]; then
|
||||
remote="↑"
|
||||
else
|
||||
remote="↓"
|
||||
fi
|
||||
else
|
||||
remote=""
|
||||
fi
|
||||
diverge_pattern="# Your branch and (.*) have diverged"
|
||||
if [[ ${git_status} =~ ${diverge_pattern} ]]; then
|
||||
remote="↕"
|
||||
fi
|
||||
|
||||
# Get the name of the branch.
|
||||
gitsym=$(git symbolic-ref HEAD 2>/dev/null)
|
||||
if [[ $? == 0 ]]; then
|
||||
branch="${gitsym##refs/heads/}"
|
||||
fi
|
||||
|
||||
# Set the final branch string.
|
||||
BRANCH="${state}${GIT_PICT} (${branch})${remote}${COLOR_NONE} "
|
||||
}
|
||||
|
||||
# Determine the branch/state information for this Mercurial repository.
|
||||
function set_mercurial_branch {
|
||||
# Get the name of the branch.
|
||||
branch=$(hg branch 2>/dev/null)
|
||||
# Default state
|
||||
state="${GREEN}"
|
||||
|
||||
if [ -n "${branch}" ]; then
|
||||
branch="(${branch})"
|
||||
|
||||
# Capture the output of the "hg status" command.
|
||||
hg_status="$(hg status | wc -l)"
|
||||
|
||||
# Set color based on clean/staged/dirty.
|
||||
if [ "${hg_status}" -ne "0" ]; then
|
||||
state="${RED}"
|
||||
fi
|
||||
fi
|
||||
|
||||
# Set the final branch string.
|
||||
BRANCH="${state}${HG_PICT} ${branch}${COLOR_NONE} "
|
||||
}
|
||||
|
||||
# Determine the branch informatioin for this Subversion repository. No support
|
||||
# for svn status, since that needs to hit the remote repository.
|
||||
function set_subversion_branch {
|
||||
# Capture the output of the "svn info" command
|
||||
svn_info="$(svn info | egrep '^URL: ' 2> /dev/null)"
|
||||
|
||||
# Get the name of the branch.
|
||||
branch_pattern="^URL: .*/(branches|tags)/([^/]+)"
|
||||
trunk_pattern="^URL: .*/trunk(/.*)?$"
|
||||
if [[ ${svn_info} =~ $branch_pattern ]]; then
|
||||
branch=${BASH_REMATCH[2]}
|
||||
elif [[ ${svn_info} =~ $trunk_pattern ]]; then
|
||||
branch='trunk'
|
||||
fi
|
||||
|
||||
# Set the final branch string.
|
||||
BRANCH="(${branch}) "
|
||||
}
|
||||
|
||||
# Return the prompt symbol to use, colorized based on the return value of the
|
||||
# previous command.
|
||||
function set_prompt_symbol () {
|
||||
if test $1 -eq 0 ; then
|
||||
PROMPT_SYMBOL="${BLUE}\$${COLOR_NONE}"
|
||||
else
|
||||
PROMPT_SYMBOL="${LIGHT_RED}\$${COLOR_NONE}"
|
||||
fi
|
||||
}
|
||||
|
||||
# Determine active Python virtualenv details.
|
||||
function set_virtualenv () {
|
||||
if test -z "$VIRTUAL_ENV" ; then
|
||||
PYTHON_VIRTUALENV=""
|
||||
else
|
||||
PYTHON_VIRTUALENV="${LIGHT_GREEN}[${PY_PICT} `basename \"$VIRTUAL_ENV\"`]${COLOR_NONE} "
|
||||
fi
|
||||
}
|
||||
|
||||
function set_nodevirtenv () {
|
||||
if test -z "$NODE_VIRTUAL_ENV" ; then
|
||||
NODE_VIRTUALENV=""
|
||||
else
|
||||
NODE_VIRTUALENV="${PURPLE}[${JS_PICT} `basename \"$NODE_VIRTUAL_ENV\"`]${COLOR_NONE} "
|
||||
fi
|
||||
}
|
||||
|
||||
# Set the full bash prompt.
|
||||
function set_bash_prompt () {
|
||||
# Set the PROMPT_SYMBOL variable. We do this first so we don't lose the
|
||||
# return value of the last command.
|
||||
set_prompt_symbol $?
|
||||
|
||||
# Set the PYTHON_VIRTUALENV variable.
|
||||
set_virtualenv
|
||||
|
||||
# Set the NODE_PYTHON_VIRTUALENV variable.
|
||||
set_nodevirtenv
|
||||
|
||||
# Set the BRANCH variable.
|
||||
if is_git_repository ; then
|
||||
set_git_branch
|
||||
elif is_subversion_repository ; then
|
||||
set_subversion_branch
|
||||
elif is_mercurial_repository ; then
|
||||
set_mercurial_branch
|
||||
else
|
||||
BRANCH=''
|
||||
fi
|
||||
|
||||
# Set the bash prompt variable.
|
||||
PS1="${CYAN}\u@\h ${PYTHON_VIRTUALENV}${NODE_VIRTUALENV}${GREEN}${BLUE}\w${COLOR_NONE} ${BRANCH}${PROMPT_SYMBOL} "
|
||||
}
|
||||
|
||||
# Tell bash to execute this function just before displaying its prompt.
|
||||
PROMPT_COMMAND=set_bash_prompt
|
||||
25
.gitconfig
Normal file
25
.gitconfig
Normal file
@@ -0,0 +1,25 @@
|
||||
[diff]
|
||||
tool = default-difftool
|
||||
|
||||
[difftool "default-difftool"]
|
||||
cmd = vim -f '+next' '+execute \"DirDiff\" argv(0) argv(1)' $LOCAL $REMOTE
|
||||
|
||||
[difftool]
|
||||
prompt = false
|
||||
|
||||
[user]
|
||||
email = gryf73@gmail.com
|
||||
name = gryf
|
||||
[color]
|
||||
ui = auto
|
||||
|
||||
[alias]
|
||||
ci = commit
|
||||
st = status
|
||||
co = checkout
|
||||
l = log --graph --abbrev-commit --decorate --format=format:'%C(bold blue)%h%C(reset) - %C(bold cyan)%aD%C(reset) %C(bold green)(%ar)%C(reset)%C(bold yellow)%d%C(reset)%n'' %C(white)%s%C(reset) %C(dim white)- %an%C(reset)' --all
|
||||
g = log --graph --date-order -C -M --pretty=format:\"<%h> %ad [%an] %Cgreen%d%Creset %s\" --all --date=short
|
||||
aliases = !git config --get-regexp 'alias.*' | colrm 1 6 | sed 's/[ ]/ = /' | sort
|
||||
|
||||
[push]
|
||||
default = simple
|
||||
101
.tmux.conf
Normal file
101
.tmux.conf
Normal file
@@ -0,0 +1,101 @@
|
||||
# gryf tmux setup
|
||||
|
||||
# Set the prefix to ^A.
|
||||
unbind C-b
|
||||
set -g prefix ^Q
|
||||
bind q send-prefix
|
||||
|
||||
set -g default-terminal "screen-256color"
|
||||
|
||||
# I want xterm keys
|
||||
set-window-option -g xterm-keys on
|
||||
# fastest command sequences
|
||||
set -s escape-time 0
|
||||
# expect UTF-8
|
||||
|
||||
# set numbering from 1 instead 0
|
||||
set -g base-index 1
|
||||
set -g pane-base-index 1
|
||||
|
||||
# don't rename my tabs
|
||||
set -g allow-rename off
|
||||
# renumber windows when a window is closed
|
||||
set -g renumber-windows on
|
||||
|
||||
#bind-key r source-file ~/.tmux.conf \; display "Config reloaded!"
|
||||
|
||||
set -g clock-mode-style 24
|
||||
|
||||
# toggle status line
|
||||
bind-key -n C-Space set status
|
||||
|
||||
# Keep more lines than 2000
|
||||
set -g history-limit 10000
|
||||
|
||||
# magic lines to make the less (PAGER) behavie
|
||||
set -g terminal-overrides 'rxvt-unicode*:sitm@'
|
||||
set -ga terminal-overrides ',xterm*:smcup@:rmcup@'
|
||||
|
||||
# set some nice colors, if switched on during runtime
|
||||
setw -g window-status-current-bg colour8
|
||||
setw -g window-status-current-fg colour15
|
||||
setw -g window-status-current-attr bold
|
||||
setw -g window-status-format '#I-#W#F'
|
||||
setw -g window-status-current-format '#I-#W#F'
|
||||
set -g status-bg black
|
||||
set -g status-fg colour8
|
||||
set -g pane-active-border-bg default
|
||||
set -g message-fg white
|
||||
set -g message-bg black
|
||||
|
||||
set -g pane-border-fg green
|
||||
set -g pane-active-border-fg brightyellow
|
||||
|
||||
# try to show window title
|
||||
set -g set-titles on
|
||||
set -g set-titles-string 'TMUX - #S»#W»#T'
|
||||
|
||||
# track window activity
|
||||
set-window-option -g monitor-activity on
|
||||
set -g visual-activity off
|
||||
|
||||
# usefull bindings
|
||||
bind-key -n C-F1 neww -n shell
|
||||
bind-key -n C-F2 neww -n mc mc
|
||||
bind-key -n C-F3 neww -n root 'su -'
|
||||
bind-key -n C-F4 neww -n rss newsbeuter
|
||||
bind-key -n C-F5 neww -n moc mocp
|
||||
bind-key -n C-F6 neww -n ncmpc++ 'ncmpcpp --host pirania'
|
||||
bind-key -n C-F7 neww -n htop htop
|
||||
bind-key -n C-F8 neww -n gema 'ssh vimja'
|
||||
bind-key -n C-F9 neww -n vaio 'ssh vaio'
|
||||
bind-key -n C-F10 neww -n pirania 'ssh -X pirania'
|
||||
bind-key -n C-F11 neww -n argh 'ssh argh'
|
||||
|
||||
bind a setw synchronize-panes
|
||||
|
||||
# move window
|
||||
bind-key -n M-Left swap-window -t :-
|
||||
bind-key -n M-Right swap-window -t :+
|
||||
# move between windows
|
||||
bind-key -n S-Right next-window
|
||||
bind-key -n S-Left previous-window
|
||||
|
||||
# split windows like vim
|
||||
bind-key s split-window -v
|
||||
bind-key v split-window -h
|
||||
|
||||
# resize panes like vim
|
||||
bind-key < resize-pane -L 3
|
||||
bind-key > resize-pane -R 3
|
||||
bind-key - resize-pane -D 3
|
||||
bind-key + resize-pane -U 3
|
||||
|
||||
# vi-style controls for copy mode
|
||||
set-window-option -g mode-keys vi
|
||||
|
||||
# v and y like vi in copy-mode
|
||||
#bind-key -T copy-mode-vi 'v' send -X begin-selection
|
||||
#bind-key -T copy-mode-vi 'y' send -X copy-selection
|
||||
bind -t vi-copy 'v' begin-selection
|
||||
bind -t vi-copy 'y' copy-selection
|
||||
4
README.rst
Normal file
4
README.rst
Normal file
@@ -0,0 +1,4 @@
|
||||
VM strap
|
||||
========
|
||||
|
||||
Bootstrap for freshly created ubuntu vm.
|
||||
32
bootstrap.sh
Executable file
32
bootstrap.sh
Executable file
@@ -0,0 +1,32 @@
|
||||
#!/bin/bash -x
|
||||
|
||||
# 1. update
|
||||
sudo apt update && sudo apt -y upgrade
|
||||
|
||||
# 2. install tools
|
||||
sudo apt install -y vim-gtk-py2 mc python-jedi python3-jedi htop \
|
||||
python-flake8 python3-flake8 exuberant-ctags pylint flake8 pylint3 \
|
||||
git-review silversearcher-ag python-apsw ccze python-pip
|
||||
|
||||
# 3. cleanup
|
||||
sudo apt-get autoremove && sudo apt-get autoclean
|
||||
|
||||
# 4. set default editor
|
||||
sudo update-alternatives --set editor /usr/bin/vim.gtk-py2
|
||||
|
||||
# 5. install tools from pypi
|
||||
sudo pip install pip --upgrade
|
||||
sudo pip install remote_pdb rainbow
|
||||
|
||||
# 6. copy configuration for bash, git, tmux
|
||||
sudo cp .bash_prompt ~/
|
||||
sudo cp .tmux.conf ~/
|
||||
sudo cp .gitconfig ~/
|
||||
echo '. ~/.bash_prompt' >> ~/.bashrc
|
||||
|
||||
# 7. get my vim config
|
||||
git clone https://github.com/gryf/.vim ~/.vim
|
||||
# populate plugins
|
||||
vim -c ':PlugUpdate' -c ':qa!' ${STACKUSER}
|
||||
# showmarks is a stubborn one
|
||||
mkdir ~/.vim/bundle/ShowMarks/doc ${STACKUSER}
|
||||
Reference in New Issue
Block a user