diff --git a/bashrc b/bashrc index e813024..86c736b 100644 --- a/bashrc +++ b/bashrc @@ -11,8 +11,7 @@ export HISTSIZE=30000 export HISTTIMEFORMAT='%F %T ' PROMPT_COMMAND="history -a;$PROMPT_COMMAND" -#export TERM=xterm-256color -export TERM=screen-256color +export TERM=xterm-256color ## for when ssh agent gets screwy @@ -25,6 +24,15 @@ if [[ -n $TMUX ]]; then fi } +function vpndocker() { + if [[ `stat -c '%a' /dev/net/tun` == '660' ]]; then + docker "$@" + else + echo 'lxc config device add penguin tun unix-char path=/dev/net/tun' | xclip -selection c + echo 'no access to /dev/net/tun' + fi +} + ec2-info() { IP=169.254.169.254 ssh $1 "curl -q http://$IP/latest/meta-data/$2" 2>/dev/null @@ -32,7 +40,7 @@ ec2-info() { } export EDITOR=vim export GOPATH=$HOME/code/go -export PATH=$HOME/bin:$HOME/bin/fzf/bin/:$HOME/gobin/go/bin/:/usr/local/go/bin:$HOME/perl5/bin:/usr/sbin/:$GOPATH/bin:$HOME/Library/Python/2.7/bin:$HOME/bin/vim/vim-8.0.1481/bin/bin/:$PATH +export PATH=$HOME/bin:$HOME/bin/fzf/bin/:$HOME/gobin/go/bin/:/usr/local/go/bin:$HOME/perl5/bin:/usr/sbin/:$GOPATH/bin:$HOME/Library/Python/2.7/bin:$HOME/bin/vim/vim-8.0.1481/bin/bin/:/usr/local/MacGPG2/bin/:/usr/local/bin/::$HOME/dotfiles/bin/:$PATH [ -f $HOME/perl5/lib/perl5/Devel/Local.pm ] && source `which devel-local.sh` function github() { git clone git@github.com:SocialFlowDev/$1.git @@ -73,7 +81,7 @@ elif command -v ack-grep >/dev/null 2>&1; then fi [ -f /home/joe/dotfiles/additional_options ] && . /home/joe/dotfiles/additional_options export GOPATH=$HOME/code/go -export PATH=$PATH:$GOPATH/bin +export PATH=$PATH:$GOPATH/bin:$HOME/.local/bin export PERLBREW_ROOT=$HOME/perlbrew function refresh_gpga() { if [ -f "${HOME}/.gpg-agent-info" ]; then @@ -99,15 +107,15 @@ fd() { cd "$dir" } -if [ -x "$(command -v gpg-agent)" ]; then - if pgrep -x "gpg-agent" > /dev/null - then - export SSH_AUTH_SOCK=${HOME}/.gnupg/S.gpg-agent.ssh - else - eval $(gpg-agent --daemon --enable-ssh-support --sh) - fi -fi - +#if [ -x "$(command -v gpg-agent)" ]; then +# if pgrep -x "gpg-agent" > /dev/null +# then +# export SSH_AUTH_SOCK=${HOME}/.gnupg/S.gpg-agent.ssh +# else +# eval $(gpg-agent --daemon --enable-ssh-support --sh) +# fi +#fi +# function toggle-agent { @@ -121,3 +129,33 @@ function toggle-agent { } export GO111MODULE=auto + +qq() { + clear + + logpath="$TMPDIR/q" + if [[ -z "$TMPDIR" ]]; then + logpath="/tmp/q" + fi + + if [[ ! -f "$logpath" ]]; then + echo 'Q LOG' > "$logpath" + fi + + tail -100f -- "$logpath" +} + +rmqq() { + logpath="$TMPDIR/q" + if [[ -z "$TMPDIR" ]]; then + logpath="/tmp/q" + fi + if [[ -f "$logpath" ]]; then + rm "$logpath" + fi + qq +} +function vpnotp() { + echo -n 'Enter keepass pw: '; + ~/tmp/squashfs-root/usr/bin/keepassxc-cli show ~/dropbox/keepass/keepass2.kdbx $1 -q -t -a Password | tr -d '\n' | xclip -selection c +} diff --git a/bin/pcat.pl b/bin/pcat.pl new file mode 100755 index 0000000..bbc990a --- /dev/null +++ b/bin/pcat.pl @@ -0,0 +1,9 @@ +#!/usr/bin/env perl +use strict; +use warnings; + +my $a = $ARGV[0]; +my ($host,$port) = split(/:/,$a); +warn $host; +my $vpn = ($host =~ /mars.sfsrv.net/) ? 'marsvpn' : 'saturnvpn'; +`socat TCP-LISTEN:$port,reuseaddr,fork 'EXEC:docker exec -i $vpn "nc $host $port"'`; diff --git a/bin/rclone.pl b/bin/rclone.pl new file mode 100755 index 0000000..dd33978 --- /dev/null +++ b/bin/rclone.pl @@ -0,0 +1,53 @@ +#!/usr/bin/env perl +use IPC::System::Simple qw(system systemx capture capturex); +use JSON::XS; +use DateTime::Format::ISO8601; +use File::Path qw(make_path); +my $json = JSON::XS->new; +my @remotes = qw/remote gdrive/; + +sub get_modified { + my $file = shift; + my $output = capture( "rclone", "lsjson", $file ); + my $decoded = $json->decode($output); + my $modified = $decoded->[0]->{ModTime}; + my $dt = DateTime::Format::ISO8601->parse_datetime($modified); + return $dt; +} + +sub copy_file { + my ( $src, $dest ) = @_; + return capturex( "rclone", "-v", "copy", $src, $dest ); +} + +my $local_dir = $ENV{HOME} . "/dropbox/keepass"; +my $backup_dir = "$local_dir/bak"; +my $local_path = "$local_dir/keepass2.kdbx"; +my $local_mod = get_modified($local_path); + +for my $remote (@remotes) { + my $remote_dir = sprintf( "%s:keepass", $remote ); + my $remote_path = sprintf( "%s/keepass2.kdbx", $remote_dir ); + my $remote_mod = get_modified($remote_path); + my $diff = $remote_mod->epoch - $local_mod->epoch; + + next unless (abs($diff) > 5); + if ( $diff >= 0 ) { + my $datestamp = capturex( "date", "+%F-%H%M%S" ); + chomp($datestamp); + my $conflict_path = + $backup_dir . "/" . join( '-', $remote, $datestamp ); + make_path($conflict_path); + warn +"[$remote] WARNING: Remote file is newer than local file by $diff seconds, copying from remote to $conflict_path"; +warn "See if there were any local modifications after $remote_mod"; + my $out = copy_file( $remote_dir, $conflict_path ); + print $out . "\n"; + next; + } + warn sprintf( "[$remote] Local file is newer by %d seconds", abs($diff) ); + my $out = copy_file( $local_path, $remote_dir ); + print $out . "\n"; +} + +exit 0; diff --git a/etc/gpg-agent.conf b/etc/gpg-agent.conf index 6858541..e50fb6b 100644 --- a/etc/gpg-agent.conf +++ b/etc/gpg-agent.conf @@ -1,4 +1,4 @@ enable-ssh-support -pinentry-program /usr/local/MacGPG2/libexec/pinentry-mac.app/Contents/MacOS/pinentry-mac +pinentry-program /usr/bin/pinentry-qt default-cache-ttl 86400 max-cache-ttl 86400 diff --git a/gitconfig b/gitconfig index 7b0c03e..4b713e3 100644 --- a/gitconfig +++ b/gitconfig @@ -1,6 +1,6 @@ [user] - email = joe@socialflow.com name = Joe Papperello + email = joeyis@gmail.com [color] diff = auto ui = true @@ -9,9 +9,9 @@ taghistory = log --tags --simplify-by-decoration --pretty=format:'%ai %d %an' uncommit = reset --soft HEAD^ onstage = diff --staged - url =! bash -c 'git config --get remote.origin.url | sed -E "s/.+:\\(.+\\)\\.git$/https:\\\\/\\\\/github\\\\.com\\\\/\\\\1/g"' currentbranch = rev-parse --abbrev-ref HEAD + tagrelease = !git tag -a v$(date -u +%y.%m.%d.%H%M%S) -m 'release tag' [rerere] enabled = true -[url "git@github.com:"] +[url "ssh://git@github.com/"] insteadOf = https://github.com/ diff --git a/gpg-agent.conf b/gpg-agent.conf new file mode 100644 index 0000000..6858541 --- /dev/null +++ b/gpg-agent.conf @@ -0,0 +1,4 @@ +enable-ssh-support +pinentry-program /usr/local/MacGPG2/libexec/pinentry-mac.app/Contents/MacOS/pinentry-mac +default-cache-ttl 86400 +max-cache-ttl 86400 diff --git a/inputrc b/inputrc new file mode 100644 index 0000000..5f6d779 --- /dev/null +++ b/inputrc @@ -0,0 +1,2 @@ +"\e\e[D": backward-word +"\e\e[C": forward-word diff --git a/install.sh b/install.sh index 4533814..bb2e73e 100755 --- a/install.sh +++ b/install.sh @@ -14,3 +14,4 @@ DIR="$(pwd)" ln -sf "$DIR/vim-colors/molokaimod.vim" "$HOME/.vim/colors/molokaimod.vim" ln -sf "$DIR/vim-autoload" "$HOME/.vim/autoload" ln -sf "$DIR/etc/gpg-agent.conf" "$HOME/.gnupg/gpg-agent.conf" + ln -sf "$DIR/inputrc" "$HOME/.inputrc" diff --git a/setup_bashrc.sh b/setup_bashrc.sh index 360da1c..3ec4f96 100755 --- a/setup_bashrc.sh +++ b/setup_bashrc.sh @@ -1,3 +1,4 @@ #!/bin/sh DIR="$(pwd)" echo "[ -f $DIR/bashrc ] && . $DIR/bashrc" >> ~/.bashrc +echo "[ -f $DIR/bashrc ] && . $DIR/bashrc" >> ~/.bash_profile diff --git a/ssh-config b/ssh-config index 9b27aa4..cd3c7c7 100644 --- a/ssh-config +++ b/ssh-config @@ -2,7 +2,7 @@ Host *.priv.sf User appuser ConnectTimeout 30 #ProxyCommand ssh -p2222 -o VisualHostKey=no root@localhost nc -q0 %h %p 2>/dev/null - ProxyCommand docker exec -i prodvpn nc -q0 %h %p 2>/dev/null + #ProxyCommand docker exec -i prodvpn nc -q0 %h %p 2>/dev/null StrictHostKeyChecking false KbdInteractiveAuthentication false @@ -14,6 +14,22 @@ Host *.mars.sfsrv.net StrictHostKeyChecking false KbdInteractiveAuthentication false +Host 20.0.*.* + User appuser + ConnectTimeout 30 + ProxyCommand ~/dotfiles/script/vpnnc.sh marsvpn %h %p + StrictHostKeyChecking false + KbdInteractiveAuthentication false + +Host 10.125.*.* + User appuser + ConnectTimeout 30 + ProxyCommand ~/dotfiles/script/vpnnc.sh saturnvpn %h %p + StrictHostKeyChecking false + KbdInteractiveAuthentication false + + + Host *.saturn.sfsrv.net User appuser ConnectTimeout 30 @@ -22,6 +38,15 @@ Host *.saturn.sfsrv.net StrictHostKeyChecking false KbdInteractiveAuthentication false +Host 54.164.21.74 + User appuser + ConnectTimeout 30 + #ProxyCommand docker exec -i saturnvpn nc -q0 %h %p 2>/dev/null + ProxyCommand ~/dotfiles/script/vpnnc.sh saturnvpn %h %p + StrictHostKeyChecking false + KbdInteractiveAuthentication false + + Host *.sflow.us @@ -45,8 +70,8 @@ Host joe2.home.saturn.sfsrv.net ConnectTimeout 30 StrictHostKeyChecking false KbdInteractiveAuthentication false - LocalForward *:5432 pg-site.dev.saturn.sfsrv.net:5432 - LocalForward *:7006 redis-2.dev.saturn.sfsrv.net:7006 + #LocalForward *:5432 pg-site.dev.saturn.sfsrv.net:5432 + #LocalForward *:7006 redis-2.dev.saturn.sfsrv.net:7006 #Host *.saturn.sflow.us diff --git a/tmux.conf b/tmux.conf index 0b7ef98..2680ec1 100644 --- a/tmux.conf +++ b/tmux.conf @@ -23,8 +23,8 @@ set -g status-right '#[fg=colour245] %R %d %b #[fg=colour235,bg=colour252,bold] set -g default-terminal "screen-256color" setw -g mode-keys vi -bind-key -t vi-copy 'v' begin-selection -bind-key -t vi-copy 'y' copy-selection +#bind-key -t vi-copy 'v' begin-selection +#bind-key -t vi-copy 'y' copy-selection setw -g monitor-activity on ## Mouse stuff @@ -37,7 +37,7 @@ setw -g monitor-activity on # Decrease the timeout when moving between windows using arrow keys -set-option repeat-time 100 +#set-option repeat-time 100 # force a reload of the config file @@ -58,11 +58,10 @@ bind - split-window -v bind h split-window -h bind v split-window -v unbind C-p -unbind C-P -bind C-p run " tmux show-buffer | nopaste --private" -bind N run " tmux show-buffer | nopaste --private" -#bind C-P run " tmux show-buffer | ssh -p 12344 joey@127.0.0.1 'pbcopy' " -bind P run " tmux show-buffer | ssh -p 12344 joey@127.0.0.1 'pbcopy' " +bind C-p run " tmux show-buffer | xclip -selection clipboard -i >/dev/null" +#bind-key -t vi-copy y copy-pipe 'xclip -selection clipboard >/dev/null' + + ### Trying maximize functionality.. unbind + @@ -89,7 +88,7 @@ bind k next-window unbind @ bind @ command-prompt -p "join pane to:" "join-pane -t '%%'" -if-shell "uname | grep -q Darwin" "set-option -g default-command \"reattach-to-user-namespace -l bash\"" +#if-shell "uname | grep -q Darwin" "set-option -g default-command \"reattach-to-user-namespace -l bash\"" ## Nested tmux diff --git a/vim-autoload/plug.vim b/vim-autoload/plug.vim index 9dd02c0..123035e 100644 --- a/vim-autoload/plug.vim +++ b/vim-autoload/plug.vim @@ -96,7 +96,7 @@ let s:plug_src = 'https://github.com/junegunn/vim-plug.git' let s:plug_tab = get(s:, 'plug_tab', -1) let s:plug_buf = get(s:, 'plug_buf', -1) let s:mac_gui = has('gui_macvim') && has('gui_running') -let s:is_win = has('win32') || has('win64') +let s:is_win = has('win32') let s:nvim = has('nvim-0.2') || (has('nvim') && exists('*jobwait') && !s:is_win) let s:vim8 = has('patch-8.0.0039') && exists('*job_start') let s:me = resolve(expand(':p')) @@ -193,6 +193,14 @@ function! s:ask_no_interrupt(...) endtry endfunction +function! s:lazy(plug, opt) + return has_key(a:plug, a:opt) && + \ (empty(s:to_a(a:plug[a:opt])) || + \ !isdirectory(a:plug.dir) || + \ len(s:glob(s:rtp(a:plug), 'plugin')) || + \ len(s:glob(s:rtp(a:plug), 'after/plugin'))) +endfunction + function! plug#end() if !exists('g:plugs') return s:err('Call plug#begin() first') @@ -214,7 +222,7 @@ function! plug#end() continue endif let plug = g:plugs[name] - if get(s:loaded, name, 0) || !has_key(plug, 'on') && !has_key(plug, 'for') + if get(s:loaded, name, 0) || !s:lazy(plug, 'on') && !s:lazy(plug, 'for') let s:loaded[name] = 1 continue endif @@ -763,6 +771,9 @@ function! s:prepare(...) execute 'silent! unmap ' k endfor setlocal buftype=nofile bufhidden=wipe nobuflisted nolist noswapfile nowrap cursorline modifiable nospell + if exists('+colorcolumn') + setlocal colorcolumn= + endif setf vim-plug if exists('g:syntax_on') call s:syntax() @@ -1008,6 +1019,8 @@ function! s:update_impl(pull, force, args) abort let s:clone_opt .= ' -c core.eol=lf -c core.autocrlf=input' endif + let s:submodule_opt = s:git_version_requirement(2, 8) ? ' --jobs='.threads : '' + " Python version requirement (>= 2.7) if python && !has('python3') && !ruby && !use_job && s:update.threads > 1 redir => pyv @@ -1099,7 +1112,7 @@ function! s:update_finish() if !v:shell_error && filereadable(spec.dir.'/.gitmodules') && \ (s:update.force || has_key(s:update.new, name) || s:is_updated(spec.dir)) call s:log4(name, 'Updating submodules. This may take a while.') - let out .= s:bang('git submodule update --init --recursive 2>&1', spec.dir) + let out .= s:bang('git submodule update --init --recursive'.s:submodule_opt.' 2>&1', spec.dir) endif let msg = s:format_message(v:shell_error ? 'x': '-', name, out) if v:shell_error @@ -1318,7 +1331,7 @@ while 1 " Without TCO, Vim stack is bound to explode let name = keys(s:update.todo)[0] let spec = remove(s:update.todo, name) - let new = !isdirectory(spec.dir) + let new = empty(globpath(spec.dir, '.git', 1)) call s:log(new ? '+' : '*', name, pull ? 'Updating ...' : 'Installing ...') redraw @@ -2211,7 +2224,7 @@ function! s:upgrade() let new = tmp . '/plug.vim' try - let out = s:system(printf('git clone --depth 1 %s %s', s:plug_src, tmp)) + let out = s:system(printf('git clone --depth 1 %s %s', s:shellesc(s:plug_src), s:shellesc(tmp))) if v:shell_error return s:err('Error upgrading vim-plug: '. out) endif @@ -2407,7 +2420,11 @@ function! s:diff() call s:append_ul(2, origin ? 'Pending updates:' : 'Last update:') for [k, v] in plugs let range = origin ? '..origin/'.v.branch : 'HEAD@{1}..' - let diff = s:system_chomp('git log --graph --color=never '.join(map(['--pretty=format:%x01%h%x01%d%x01%s%x01%cr', range], 's:shellesc(v:val)')), v.dir) + let cmd = 'git log --graph --color=never '.join(map(['--pretty=format:%x01%h%x01%d%x01%s%x01%cr', range], 's:shellesc(v:val)')) + if has_key(v, 'rtp') + let cmd .= ' -- '.s:shellesc(v.rtp) + endif + let diff = s:system_chomp(cmd, v.dir) if !empty(diff) let ref = has_key(v, 'tag') ? (' (tag: '.v.tag.')') : has_key(v, 'commit') ? (' '.v.commit) : '' call append(5, extend(['', '- '.k.':'.ref], map(s:lines(diff), 's:format_git_log(v:val)'))) @@ -2426,8 +2443,13 @@ function! s:diff() \ . (cnts[1] ? printf(' %d plugin(s) have pending updates.', cnts[1]) : '')) if cnts[0] || cnts[1] - nnoremap :silent! call preview_commit() - nnoremap o :silent! call preview_commit() + nnoremap (plug-preview) :silent! call preview_commit() + if empty(maparg("\", 'n')) + nmap (plug-preview) + endif + if empty(maparg('o', 'n')) + nmap o (plug-preview) + endif endif if cnts[0] nnoremap X :call revert() diff --git a/vimrc b/vimrc index 7a7164c..5dc025c 100644 --- a/vimrc +++ b/vimrc @@ -7,6 +7,7 @@ call plug#begin('~/.vim/plugged') Plug 'junegunn/fzf.vim' Plug 'jamessan/vim-gnupg' Plug 'vim-scripts/openssl.vim' + Plug 'https://github.com/Alok/notational-fzf-vim' call plug#end() " }}} @@ -49,8 +50,8 @@ filetype plugin indent on set expandtab set tabstop=4 set shiftwidth=4 -autocmd FileType html setlocal tabstop=2 -autocmd FileType html setlocal shiftwidth=2 +autocmd FileType html,yaml,json setlocal tabstop=2 +autocmd FileType html,yaml,json setlocal shiftwidth=2 " Dont expand tabs in makefiles autocmd FileType make set noexpandtab @@ -143,6 +144,9 @@ let mapleader = "," nmap ev :e $MYVIMRC nmap sv :so $MYVIMRC +nmap e V:s/,/,\r/g:noh +vmap e :s/,/,\r/g:noh + " Ctrl-I increments since Ctrl-A is my tmux key noremap @@ -162,6 +166,7 @@ nnoremap ; : nnoremap 0 ^ nnoremap f :Gitag nnoremap * :Gitag +nnoremap t :SyntasticToggle autocmd FileType go setlocal omnifunc=go#complete#Complete " w!! will save file with sudo @@ -271,12 +276,11 @@ au FileType go nmap dt (go-def-tab) au FileType go nmap i (go-info) au FileType go nmap gd (go-doc) au FileType go nmap b (go-build) +au FileType go nmap l :%s/\s*q.Q(.*$\n//g map :lne map :lp "let g:go_auto_type_info = 1 "set updatetime=100 -au FileType go iabbrev _brdoes r *http.Request, results *validation.ValidatedResults) error { -au FileType go iabbrev _brhandler w http.ResponseWriter, r *http.Request, results *validation.ValidatedResults) (*api.Return, error) { let g:go_highlight_types = 1 let g:go_highlight_functions = 1 let g:go_highlight_methods = 1 @@ -296,6 +300,9 @@ let g:syntastic_check_on_wq = 0 let g:syntastic_javascript_checkers = ['jshint'] let g:syntastic_html_tidy_exec = 'tidy' let g:syntastic_html_tidy_ignore_errors = [ 'is not recognized', 'proprietary attribute' ] +let g:syntastic_yaml_checkers = ['yamllint'] +let g:syntastic_yaml_yamllint_quiet_messages = {"regex" : 'missing document start\|line too long\|too many spaces inside braces'} + " Reccommendation of when using syntastic with vimgo to prevent lag @@ -316,4 +323,6 @@ augroup CredFile au! BufRead,BufNewFile,BufEnter creds.yml.asc nmap o f:w"+y$0yt::vs ../sf-deploy-application/".aes augroup END +let g:nv_search_paths = ['~/wiki'] + " vim: set fdm=marker: