From 5a91539af942f37e034f7f42b60a0cdc9ef5973f Mon Sep 17 00:00:00 2001 From: Colin Henry Date: Tue, 7 Apr 2020 14:29:50 -0700 Subject: [PATCH] initial commit for catalina. --- .DS_Store | Bin 0 -> 6148 bytes Brewfile | 50 + bash/my-environment | 52 + bash/open_github.sh | 19 + bash/sandboxes/.DS_Store | Bin 0 -> 6148 bytes bash/sandboxes/Makefile.core | 16 + bash/sandboxes/goshell/.DS_Store | Bin 0 -> 6148 bytes bash/sandboxes/goshell/Dockerfile | 72 + bash/sandboxes/goshell/Dockerfile.old | 153 + bash/sandboxes/goshell/Makefile | 16 + bash/sandboxes/goshell/include.sh | 6 + bash/sandboxes/goshell/scripts/bootstrap.sh | 71 + .../goshell/scripts/bootstrap_pure.sh | 67 + .../goshell/scripts/bootstrap_repo.sh | 35 + bash/sandboxes/goshell/scripts/build.sh | 629 ++++ bash/sandboxes/goshell/scripts/build_deps.sh | 27 + bash/sandboxes/goshell/scripts/fetch.sh | 27 + bash/sandboxes/goshell/scripts/patch.tar.xz | Bin 0 -> 294820 bytes bash/sandboxes/goshell/scripts/startup.sh | 10 + bash/sandboxes/goshell/scripts/update_ios.sh | 61 + bash/sandboxes/herokushell/Dockerfile | 21 + bash/sandboxes/herokushell/Makefile | 7 + bash/sandboxes/herokushell/include.sh | 5 + bash/sandboxes/herokushell/startup.sh | 9 + bash/sandboxes/jdk8shell/Dockerfile | 23 + bash/sandboxes/jdk8shell/Makefile | 7 + bash/sandboxes/jdk8shell/include.sh | 6 + bash/sandboxes/jdk8shell/startup.sh | 10 + bash/sandboxes/leinshell/Dockerfile | 34 + bash/sandboxes/leinshell/Makefile | 7 + bash/sandboxes/leinshell/include.sh | 10 + bash/sandboxes/leinshell/profiles.clj | 1 + bash/sandboxes/leinshell/startup.sh | 13 + bash/sandboxes/nodeshell/Dockerfile | 24 + bash/sandboxes/nodeshell/Makefile | 7 + bash/sandboxes/nodeshell/include.sh | 6 + bash/sandboxes/nodeshell/startup.sh | 9 + bash/sandboxes/sandbox.sh | 132 + bash/sandboxes/swiftshell/Dockerfile | 65 + bash/sandboxes/swiftshell/Makefile | 7 + bash/sandboxes/swiftshell/include.sh | 6 + bash/sandboxes/swiftshell/startup.sh | 9 + git/git-completion.sh | 2663 +++++++++++++++++ git/git-precommit | 30 + git/git-prompt.sh | 33 + git/gitconfig | 22 + git/githubzen.fortunes | 27 + git/gitignore_global | 86 + git/gitmessage | 10 + nano/nanorc | 1 + tmux/battery.sh | 2 + tmux/tmux.conf | 25 + 52 files changed, 4628 insertions(+) create mode 100644 .DS_Store create mode 100644 Brewfile create mode 100755 bash/my-environment create mode 100755 bash/open_github.sh create mode 100755 bash/sandboxes/.DS_Store create mode 100755 bash/sandboxes/Makefile.core create mode 100755 bash/sandboxes/goshell/.DS_Store create mode 100755 bash/sandboxes/goshell/Dockerfile create mode 100755 bash/sandboxes/goshell/Dockerfile.old create mode 100755 bash/sandboxes/goshell/Makefile create mode 100755 bash/sandboxes/goshell/include.sh create mode 100755 bash/sandboxes/goshell/scripts/bootstrap.sh create mode 100755 bash/sandboxes/goshell/scripts/bootstrap_pure.sh create mode 100755 bash/sandboxes/goshell/scripts/bootstrap_repo.sh create mode 100755 bash/sandboxes/goshell/scripts/build.sh create mode 100755 bash/sandboxes/goshell/scripts/build_deps.sh create mode 100755 bash/sandboxes/goshell/scripts/fetch.sh create mode 100755 bash/sandboxes/goshell/scripts/patch.tar.xz create mode 100755 bash/sandboxes/goshell/scripts/startup.sh create mode 100755 bash/sandboxes/goshell/scripts/update_ios.sh create mode 100755 bash/sandboxes/herokushell/Dockerfile create mode 100755 bash/sandboxes/herokushell/Makefile create mode 100755 bash/sandboxes/herokushell/include.sh create mode 100755 bash/sandboxes/herokushell/startup.sh create mode 100755 bash/sandboxes/jdk8shell/Dockerfile create mode 100755 bash/sandboxes/jdk8shell/Makefile create mode 100755 bash/sandboxes/jdk8shell/include.sh create mode 100755 bash/sandboxes/jdk8shell/startup.sh create mode 100755 bash/sandboxes/leinshell/Dockerfile create mode 100755 bash/sandboxes/leinshell/Makefile create mode 100755 bash/sandboxes/leinshell/include.sh create mode 100755 bash/sandboxes/leinshell/profiles.clj create mode 100755 bash/sandboxes/leinshell/startup.sh create mode 100755 bash/sandboxes/nodeshell/Dockerfile create mode 100755 bash/sandboxes/nodeshell/Makefile create mode 100755 bash/sandboxes/nodeshell/include.sh create mode 100755 bash/sandboxes/nodeshell/startup.sh create mode 100755 bash/sandboxes/sandbox.sh create mode 100755 bash/sandboxes/swiftshell/Dockerfile create mode 100755 bash/sandboxes/swiftshell/Makefile create mode 100755 bash/sandboxes/swiftshell/include.sh create mode 100755 bash/sandboxes/swiftshell/startup.sh create mode 100755 git/git-completion.sh create mode 100755 git/git-precommit create mode 100755 git/git-prompt.sh create mode 100755 git/gitconfig create mode 100755 git/githubzen.fortunes create mode 100755 git/gitignore_global create mode 100755 git/gitmessage create mode 100755 nano/nanorc create mode 100755 tmux/battery.sh create mode 100755 tmux/tmux.conf diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..ff7c8f888db534422ece18e594461b13d34e15fa GIT binary patch literal 6148 zcmeHKy-EW?5S~p=j6X$6Erff8ynvkH?8GK7pfQj{bGd*CSjknE+FSV+3U0T-$@#ojpD%~9*LkhayC@&>#(1=vDxeCe0!tM@ z&t_|EIMi7cPz6+hxdQxsh%p!w!NQ^abYQYq0APf$HTZm_5wXx5@o~fBF5tEKpAs zPzC;-0wzj3X&c*;-dfop_u3fa2!oB+6%OYmaBM5aT5iQ#7}gMv*#Rbkg+oMOdJwQO K=%fn#ssdk{;e2%f literal 0 HcmV?d00001 diff --git a/Brewfile b/Brewfile new file mode 100644 index 0000000..e7887df --- /dev/null +++ b/Brewfile @@ -0,0 +1,50 @@ +tap "homebrew/bundle" +tap "homebrew/cask" +tap "homebrew/core" +brew "docker" +brew "drone-cli" +brew "git" +brew "git-flow" +brew "graphviz" +brew "jq" +brew "mas" +brew "mosh" +brew "ncurses" +brew "plantuml" +brew "pv" +brew "rclone" +brew "reattach-to-user-namespace" +brew "terraform" +brew "tmux" +brew "watch" +brew "wget" +brew "youtube-dl" +cask "aerial" +cask "discord" +cask "disk-inventory-x" +cask "geekbench" +cask "hazel" +cask "minecraft" +cask "paragon-ntfs" +cask "spotify" +cask "visual-studio-code" +cask "zoomus" +mas "1Password 7", id: 1333542190 +mas "AdBlock", id: 1402042596 +mas "Base", id: 402383384 +mas "Cyberduck", id: 409222199 +mas "Day One", id: 1055511498 +mas "Evernote", id: 406056744 +mas "Evernote Web Clipper", id: 1481669779 +mas "GarageBand", id: 682658836 +mas "iMovie", id: 408981434 +mas "Keynote", id: 409183694 +mas "My Net", id: 931314293 +mas "NordVPN IKE", id: 1116599239 +mas "Numbers", id: 409203825 +mas "Pages", id: 409201541 +mas "Parcel", id: 639968404 +mas "PDFpen", id: 403624960 +mas "ScreenFlow", id: 917790450 +mas "Skitch", id: 425955336 +mas "Slack", id: 803453959 diff --git a/bash/my-environment b/bash/my-environment new file mode 100755 index 0000000..b00132e --- /dev/null +++ b/bash/my-environment @@ -0,0 +1,52 @@ +if [ -z "$PS1" ]; then + return +fi + +export BASH_SILENCE_DEPRECATION_WARNING=1 +export PS1='${c_user}\u${c_reset}@${c_user}\h${c_reset}:${c_path}\w${c_reset}$(git_prompt)\n\$ ' + +export XDG_CONFIG_HOME=$HOME/.config +export XDG_DATA=$HOME/.local + +. $XDG_CONFIG_HOME/git/git-prompt.sh +. $XDG_CONFIG_HOME/git/git-completion.sh +. $XDG_CONFIG_HOME/bash/open_github.sh +. $XDG_CONFIG_HOME/bash/sandboxes/sandbox.sh + + + +shopt -s histappend +export HISTSIZE=100000 +export HISTFILESIZE=100000 +export HISTCONTROL=ignoredups:erasedups + + +export GOPATH=$XDG_DATA +export GOROOT=/usr/local/go +export GOBIN=$XDG_DATA/bin +export GO111MODULE=on +export GOPRIVATE=github.com/jchenry +export FLUTTER=/usr/local/flutter + +export PLAN9=/usr/local/plan9 + +export PATH="$PATH:$XDG_DATA/bin:/usr/local/sbin:$GOBIN:$PLAN9/bin:$FLUTTER/bin" + +# acme visible clicks +export visibleclicks=1 + + +alias build-targets="make -rpn | sed -n -e '/^$/ { n ; /^[^ .#][^ ]*:/p ; }' | egrep --color '^[^ ]*:'" + +alias ebg="tr 'A-Za-z' 'N-ZA-Mn-za-m'" + +alias tmux="tmux -f "$XDG_CONFIG_HOME"/tmux/tmux.conf" + +o () { + name=$1 + eval $(op signin my) + key=`echo "cnffjbeq"|ebg` + op get item ${name} | jq -r --arg KEY "${key}" '.details.fields[] | select(.designation=="$KEY").value' | pbcopy + open "$( op get item ${name} | jq -r '.overview.URLs[] | select(.l=="website").u')" +} + diff --git a/bash/open_github.sh b/bash/open_github.sh new file mode 100755 index 0000000..a648e15 --- /dev/null +++ b/bash/open_github.sh @@ -0,0 +1,19 @@ +# Opens the github page for the current git repository in your browser +# git@github.com:jasonneylon/dotfiles.git +# https://github.com/jasonneylon/dotfiles/ +function gh() { + giturl=$(git config --get remote.origin.url) + if [ "$giturl" == "" ] + then + echo "Not a git repository or no remote.origin.url set" + exit 1; + fi + + giturl=${giturl/git\@github\.com\:/https://github.com/} + giturl=${giturl/\.git/\/tree/} + branch="$(git symbolic-ref HEAD 2>/dev/null)" || + branch="(unnamed branch)" # detached HEAD + branch=${branch##refs/heads/} + giturl=$giturl/$branch + open $giturl +} diff --git a/bash/sandboxes/.DS_Store b/bash/sandboxes/.DS_Store new file mode 100755 index 0000000000000000000000000000000000000000..6556233edf6c7d898bc23d8726c14529134e90e5 GIT binary patch literal 6148 zcmeHK%}T>S5T0$Trij>spx*Z4t%tOVJqe-e!J81#gNjXPX#+7UO={6v$#du%`2xO< zGrQYjtzJBcl$kL5&Cbs*`z7pV0YEed?HWJ@031}pLK&NHgyN)gQm`IEp~vVz3~@M2 z@4|R4n;rj=0eW{U&;RARDC3 zpnpld(;(}G);?1zp4vfp9(9H{m5oD{WI>d4`nou3cQEDZB1+n7*i?h0o$7IX6QFs@ zH%8~-Nvx7CMkZC0Y({2)8DIt$n*qD)Ijf7kOkN!`zzqC?0oorVDxqgFH>kG`Z0Prq z;w3^7wCOHEC@p#xbAuQ`5vCN;lnQ&r5T+dc(&l*&MLlJs*^h=!% z!ZXM%Gr$bYGEg+#3Z4JQKi~gni@3)OFarz4fG8dLM@?LkJzM7%M`x`>ZK0A-UT$z& kf`&edF_(_wEmSS&mt-J%7ITB>LE#?(O#?T~z@IYk0fJyt1poj5 literal 0 HcmV?d00001 diff --git a/bash/sandboxes/Makefile.core b/bash/sandboxes/Makefile.core new file mode 100755 index 0000000..8d5d4a9 --- /dev/null +++ b/bash/sandboxes/Makefile.core @@ -0,0 +1,16 @@ +# +# All the common tasks +# + +build: + docker build --tag=$(TAG) . + echo "Build $(TAG) Complete" + +clean: + docker rmi $(TAG) + +bash: + docker run --rm -it $(TAG) bash + +push: + docker push $(TAG) diff --git a/bash/sandboxes/goshell/.DS_Store b/bash/sandboxes/goshell/.DS_Store new file mode 100755 index 0000000000000000000000000000000000000000..9891c928bf4e65be5f397847d551d59bf33679b0 GIT binary patch literal 6148 zcmeHK!EVz)5S?uTaX^S5Div;f;g*9_DsrmihV)QzK{A2^pw_OV#**W;Vuz@NR6h0_ z+F$5T^vVzP!igJy!OZT2(z*q4L5S`|vu}21X4m^H?`8l%^d?aUpalR9Dq;N&HdhGw zNh`9%Ba|m-j*h>pMp-4!4p;^(1OFxi^zGI_K>|^-SNVR~GgAG2n5YnAox_u}FAp21 z8|Qf=75&1S4J)%YActKTLkt-dkcZPez;|FTK(4ThSS8~J?FhYR8zkQ zib>uJ#&42+pm;Le%L|yIvz~7Tg%T?S_E-A80+LX8eqt~H*p%NX-`ekDA)7& z#zE^ew_A^Av(Bp9ZOhd)cixt>Zr5$gwWrVK^QN=%q_e)YGur<+`!qi|GOttMxu@km z;{uM+xU|nJ_`MYIGtb{%Jow5ySEA1OzCP;rynpb=X`<3SeA2}(7Ef>SCNRKn-MM=c zHf#528L$le5d(BSNK`_Pu{5ZU4s3J@fLO<2Eof6MK{=AqV=N7#2Su1vM3XAG#1JMO z$0f&kjHN-74uXph!7B@{P=sC`=a)JhglEvUmI2GaMFwi7+oJn_^ZNS#Vv_Ay1}p>r z6$7H)_xnBE65p+r&Cy*eQFl;DD6TZ9Q?TLdSQ~T|KSI@lK1l|m$5 /etc/nsswitch.conf + +ENV GOLANG_VERSION 1.13.5 + +RUN set -eux; \ + apk add --no-cache --virtual .build-deps \ + bash \ + gcc \ + musl-dev \ + openssl \ + go \ + ; \ + export \ +# set GOROOT_BOOTSTRAP such that we can actually build Go + GOROOT_BOOTSTRAP="$(go env GOROOT)" \ +# ... and set "cross-building" related vars to the installed system's values so that we create a build targeting the proper arch +# (for example, if our build host is GOARCH=amd64, but our build env/image is GOARCH=386, our build needs GOARCH=386) + GOOS="$(go env GOOS)" \ + GOARCH="$(go env GOARCH)" \ + GOHOSTOS="$(go env GOHOSTOS)" \ + GOHOSTARCH="$(go env GOHOSTARCH)" \ + ; \ +# also explicitly set GO386 and GOARM if appropriate +# https://github.com/docker-library/golang/issues/184 + apkArch="$(apk --print-arch)"; \ + case "$apkArch" in \ + armhf) export GOARM='6' ;; \ + x86) export GO386='387' ;; \ + esac; \ + \ + wget -O go.tgz "https://golang.org/dl/go$GOLANG_VERSION.src.tar.gz"; \ + echo '27d356e2a0b30d9983b60a788cf225da5f914066b37a6b4f69d457ba55a626ff *go.tgz' | sha256sum -c -; \ + tar -C /usr/local -xzf go.tgz; \ + rm go.tgz; \ + \ + cd /usr/local/go/src; \ + ./make.bash; \ + \ + rm -rf \ +# https://github.com/golang/go/blob/0b30cf534a03618162d3015c8705dd2231e34703/src/cmd/dist/buildtool.go#L121-L125 + /usr/local/go/pkg/bootstrap \ +# https://golang.org/cl/82095 +# https://github.com/golang/build/blob/e3fe1605c30f6a3fd136b561569933312ede8782/cmd/release/releaselet.go#L56 + /usr/local/go/pkg/obj \ + ; \ + apk del .build-deps; \ + \ + export PATH="/usr/local/go/bin:$PATH"; \ + go version + +ENV GOPATH /go +ENV PATH $GOPATH/bin:/usr/local/go/bin:$PATH + +RUN mkdir -p "$GOPATH/src" "$GOPATH/bin" && chmod -R 777 "$GOPATH" +WORKDIR $GOPATH + + +RUN apk add --no-cache shadow bash docker-cli +RUN sed -i 's/^CREATE_MAIL_SPOOL=yes/CREATE_MAIL_SPOOL=no/' /etc/default/useradd +ADD scripts/startup.sh /startup.sh +RUN chmod +x /startup.sh + +RUN mkdir /project +WORKDIR /project + + +ENTRYPOINT ["/startup.sh"] diff --git a/bash/sandboxes/goshell/Dockerfile.old b/bash/sandboxes/goshell/Dockerfile.old new file mode 100755 index 0000000..9f4bacc --- /dev/null +++ b/bash/sandboxes/goshell/Dockerfile.old @@ -0,0 +1,153 @@ +# Go cross compiler (xgo): Base cross-compilation layer +# Copyright (c) 2014 Péter Szilágyi. All rights reserved. +# +# Released under the MIT license. + +FROM ubuntu:16.04 + +MAINTAINER Péter Szilágyi + +# Mark the image as xgo enabled to support xgo-in-xgo +ENV XGO_IN_XGO 1 + + +# Configure the Go environment, since it's not going to change +ENV PATH /usr/local/go/bin:$PATH +ENV GOPATH /go + + +# Inject the remote file fetcher and checksum verifier +ADD scripts/fetch.sh /fetch.sh +ENV FETCH /fetch.sh +RUN chmod +x $FETCH + + +# Make sure apt-get is up to date and dependent packages are installed +RUN \ + apt-get update && \ + apt-get install -y automake autogen build-essential ca-certificates \ + gcc-5-arm-linux-gnueabi g++-5-arm-linux-gnueabi libc6-dev-armel-cross \ + gcc-5-arm-linux-gnueabihf g++-5-arm-linux-gnueabihf libc6-dev-armhf-cross \ + gcc-5-aarch64-linux-gnu g++-5-aarch64-linux-gnu libc6-dev-arm64-cross \ + gcc-5-mips-linux-gnu g++-5-mips-linux-gnu libc6-dev-mips-cross \ + gcc-5-mipsel-linux-gnu g++-5-mipsel-linux-gnu libc6-dev-mipsel-cross \ + gcc-5-mips64-linux-gnuabi64 g++-5-mips64-linux-gnuabi64 libc6-dev-mips64-cross \ + gcc-5-mips64el-linux-gnuabi64 g++-5-mips64el-linux-gnuabi64 libc6-dev-mips64el-cross \ + gcc-5-multilib g++-5-multilib gcc-mingw-w64 g++-mingw-w64 clang llvm-dev \ + libtool libxml2-dev uuid-dev libssl-dev swig openjdk-8-jdk pkg-config patch \ + make xz-utils cpio wget zip unzip p7zip git mercurial bzr texinfo help2man \ + --no-install-recommends + +# Fix any stock package issues +RUN ln -s /usr/include/asm-generic /usr/include/asm + +# Configure the container for OSX cross compilation +ENV OSX_SDK MacOSX10.11.sdk +ENV OSX_NDK_X86 /usr/local/osx-ndk-x86 + +RUN \ + OSX_SDK_PATH=https://s3.dockerproject.org/darwin/v2/$OSX_SDK.tar.xz && \ + $FETCH $OSX_SDK_PATH dd228a335194e3392f1904ce49aff1b1da26ca62 && \ + \ + git clone https://github.com/tpoechtrager/osxcross.git && \ + mv `basename $OSX_SDK_PATH` /osxcross/tarballs/ && \ + \ + sed -i -e 's|-march=native||g' /osxcross/build_clang.sh /osxcross/wrapper/build.sh && \ + UNATTENDED=yes OSX_VERSION_MIN=10.6 /osxcross/build.sh && \ + mv /osxcross/target $OSX_NDK_X86 && \ + \ + rm -rf /osxcross + +ADD scripts/patch.tar.xz $OSX_NDK_X86/SDK/$OSX_SDK/usr/include/c++ +ENV PATH $OSX_NDK_X86/bin:$PATH + +# # Configure the container for iOS cross compilation +# ENV IOS_NDK_ARM_7 /usr/local/ios-ndk-arm-7 +# ENV IOS_NDK_ARM64 /usr/local/ios-ndk-arm64 +# ENV IOS_SIM_NDK_AMD64 /usr/local/ios-sim-ndk-amd64 + +# ADD scripts/update_ios.sh /update_ios.sh +# ENV UPDATE_IOS /update_ios.sh +# RUN chmod +x $UPDATE_IOS + +# RUN \ +# IOS_SDK_PATH=https://sdks.website/dl/iPhoneOS9.3.sdk.tbz2 && \ +# $FETCH $IOS_SDK_PATH db5ecf91617abf26d3db99e769bd655b943905e5 && \ +# mv `basename $IOS_SDK_PATH` iPhoneOS9.3.sdk.tar.bz2 && \ +# $UPDATE_IOS /iPhoneOS9.3.sdk.tar.bz2 && \ +# rm -rf /iPhoneOS9.3.sdk.tar.bz2 + +# # Configure the container for Android cross compilation +# ENV ANDROID_NDK android-ndk-r11c +# ENV ANDROID_NDK_PATH http://dl.google.com/android/repository/$ANDROID_NDK-linux-x86_64.zip +# ENV ANDROID_NDK_ROOT /usr/local/$ANDROID_NDK +# ENV ANDROID_NDK_LIBC $ANDROID_NDK_ROOT/sources/cxx-stl/gnu-libstdc++/4.9 +# ENV ANDROID_PLATFORM 21 +# ENV ANDROID_CHAIN_ARM arm-linux-androideabi-4.9 +# ENV ANDROID_CHAIN_ARM64 aarch64-linux-android-4.9 +# ENV ANDROID_CHAIN_386 x86-4.9 + +# RUN \ +# $FETCH $ANDROID_NDK_PATH de5ce9bddeee16fb6af2b9117e9566352aa7e279 && \ +# unzip `basename $ANDROID_NDK_PATH` \ +# "$ANDROID_NDK/build/*" \ +# "$ANDROID_NDK/sources/cxx-stl/gnu-libstdc++/4.9/include/*" \ +# "$ANDROID_NDK/sources/cxx-stl/gnu-libstdc++/4.9/libs/armeabi*/*" \ +# "$ANDROID_NDK/sources/cxx-stl/gnu-libstdc++/4.9/libs/arm64*/*" \ +# "$ANDROID_NDK/sources/cxx-stl/gnu-libstdc++/4.9/libs/x86/*" \ +# "$ANDROID_NDK/prebuilt/linux-x86_64/*" \ +# "$ANDROID_NDK/platforms/*/arch-arm/*" \ +# "$ANDROID_NDK/platforms/*/arch-arm64/*" \ +# "$ANDROID_NDK/platforms/*/arch-x86/*" \ +# "$ANDROID_NDK/toolchains/$ANDROID_CHAIN_ARM/*" \ +# "$ANDROID_NDK/toolchains/$ANDROID_CHAIN_ARM64/*" \ +# "$ANDROID_NDK/toolchains/$ANDROID_CHAIN_386/*" -d /usr/local > /dev/null && \ +# rm -f `basename $ANDROID_NDK_PATH` + +# ENV PATH /usr/$ANDROID_CHAIN_ARM/bin:$PATH +# ENV PATH /usr/$ANDROID_CHAIN_ARM64/bin:$PATH +# ENV PATH /usr/$ANDROID_CHAIN_386/bin:$PATH + +# Inject the old Go package downloader and tool-chain bootstrapper +ADD scripts/bootstrap.sh /bootstrap.sh +ENV BOOTSTRAP /bootstrap.sh +RUN chmod +x $BOOTSTRAP + +# Inject the new Go root distribution downloader and bootstrapper +ADD scripts/bootstrap_pure.sh /bootstrap_pure.sh +ENV BOOTSTRAP_PURE /bootstrap_pure.sh +RUN chmod +x $BOOTSTRAP_PURE + +# Inject the Go source distribution downloader and bootstrapper +ADD scripts/bootstrap_repo.sh /bootstrap_repo.sh +ENV BOOTSTRAP_REPO /bootstrap_repo.sh +RUN chmod +x $BOOTSTRAP_REPO + +# Inject the C dependency cross compiler +ADD scripts/build_deps.sh /build_deps.sh +ENV BUILD_DEPS /build_deps.sh +RUN chmod +x $BUILD_DEPS + +# Inject the container entry point, the build script + ADD scripts/build.sh /build.sh + ENV BUILD /build.sh +# RUN chmod +x $BUILD + +# ENTRYPOINT ["/build.sh"] + +ENV GO_VERSION 1111 + +RUN \ + export ROOT_DIST=https://storage.googleapis.com/golang/go1.11.5.linux-amd64.tar.gz && \ + export ROOT_DIST_SHA=ff54aafedff961eb94792487e827515da683d61a5f9482f668008832631e5d25 && \ + \ + $BOOTSTRAP_PURE + +ADD scripts/startup.sh /startup.sh +RUN chmod +x /startup.sh + +RUN mkdir /project +WORKDIR /project + + +ENTRYPOINT ["/startup.sh"] diff --git a/bash/sandboxes/goshell/Makefile b/bash/sandboxes/goshell/Makefile new file mode 100755 index 0000000..7b3b6cb --- /dev/null +++ b/bash/sandboxes/goshell/Makefile @@ -0,0 +1,16 @@ +# +# Build tasks for this Dockerfile +# + +TAG=jchenry/goshell + +include ../Makefile.core + +bash: + docker run --rm -it --privileged -v /var/run/docker.sock:/var/run/docker.sock $(TAG) bash + + +# clean: + +# $(MAKE) -f Makefile.common $@ +# rm whatever additional things \ No newline at end of file diff --git a/bash/sandboxes/goshell/include.sh b/bash/sandboxes/goshell/include.sh new file mode 100755 index 0000000..a1970be --- /dev/null +++ b/bash/sandboxes/goshell/include.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash + +#includes for go zsh config +function goshell() { + __docker_bash "goshell" "/project" +} \ No newline at end of file diff --git a/bash/sandboxes/goshell/scripts/bootstrap.sh b/bash/sandboxes/goshell/scripts/bootstrap.sh new file mode 100755 index 0000000..8df8f26 --- /dev/null +++ b/bash/sandboxes/goshell/scripts/bootstrap.sh @@ -0,0 +1,71 @@ +#!/bin/bash +# +# Contains the Go tool-chain bootstrapper, that retrieves all the configured +# distribution packages, extracts the binaries and deletes anything not needed. +# +# Usage: bootstrap.sh +# +# Needed environment variables: +# FETCH - Remote file fetcher and checksum verifier (injected by image) +# DIST_LINUX_64, DIST_LINUX_64_SHA - 64 bit Linux Go binaries and checksum +# DIST_LINUX_32, DIST_LINUX_32_SHA - 32 bit Linux Go binaries and checksum +# DIST_LINUX_ARM, DIST_LINUX_ARM_SHA - ARM v5 Linux Go binaries and checksum +# DIST_OSX_64, DIST_OSX_64_SHA - 64 bit Mac OSX Go binaries and checksum +# DIST_OSX_32, DIST_OSX_32_SHA - 32 bit Mac OSX Go binaries and checksum +# DIST_WIN_64, DIST_WIN_64_SHA - 64 bit Windows Go binaries and checksum +# DIST_WIN_32, DIST_WIN_32_SHA - 32 bit Windows Go binaries and checksum +set -e + +# Download and verify all the binary packages +$FETCH $DIST_LINUX_64 $DIST_LINUX_64_SHA +$FETCH $DIST_LINUX_32 $DIST_LINUX_32_SHA +$FETCH $DIST_LINUX_ARM $DIST_LINUX_ARM_SHA +$FETCH $DIST_OSX_64 $DIST_OSX_64_SHA +$FETCH $DIST_OSX_32 $DIST_OSX_32_SHA +$FETCH $DIST_WIN_64 $DIST_WIN_64_SHA +$FETCH $DIST_WIN_32 $DIST_WIN_32_SHA + +# Extract the 64 bit Linux package as the primary Go SDK +tar -C /usr/local -xzf `basename $DIST_LINUX_64` +rm -f `basename $DIST_LINUX_64` + +export GOROOT=/usr/local/go +export GOROOT_BOOTSTRAP=$GOROOT + +# Extract all other packages as secondary ones, keeping only the binaries +if [ "$DIST_LINUX_32" != "" ]; then + tar -C /usr/local --wildcards -xzf `basename $DIST_LINUX_32` go/pkg/linux_386* + GOOS=linux GOARCH=386 /usr/local/go/pkg/tool/linux_amd64/dist bootstrap + rm -f `basename $DIST_LINUX_32` +fi +if [ "$DIST_LINUX_ARM" != "" ]; then + tar -C /usr/local --wildcards -xzf `basename $DIST_LINUX_ARM` go/pkg/linux_arm* + GOOS=linux GOARCH=arm /usr/local/go/pkg/tool/linux_amd64/dist bootstrap + rm -f `basename $DIST_LINUX_ARM` +fi + +if [ "$DIST_OSX_64" != "" ]; then + tar -C /usr/local --wildcards -xzf `basename $DIST_OSX_64` go/pkg/darwin_amd64* + GOOS=darwin GOARCH=amd64 /usr/local/go/pkg/tool/linux_amd64/dist bootstrap + rm -f `basename $DIST_OSX_64` +fi +if [ "$DIST_OSX_32" != "" ]; then + tar -C /usr/local --wildcards -xzf `basename $DIST_OSX_32` go/pkg/darwin_386* + GOOS=darwin GOARCH=386 /usr/local/go/pkg/tool/linux_amd64/dist bootstrap + rm -f `basename $DIST_OSX_32` +fi + +if [ "$DIST_WIN_64" != "" ]; then + unzip -d /usr/local -q `basename $DIST_WIN_64` go/pkg/windows_amd64* + GOOS=windows GOARCH=amd64 /usr/local/go/pkg/tool/linux_amd64/dist bootstrap + rm -f `basename $DIST_WIN_64` +fi +if [ "$DIST_WIN_32" != "" ]; then + unzip -d /usr/local -q `basename $DIST_WIN_32` go/pkg/windows_386* + GOOS=windows GOARCH=386 /usr/local/go/pkg/tool/linux_amd64/dist bootstrap + rm -f `basename $DIST_WIN_32` +fi + +# Install xgo within the container to enable internal cross compilation +echo "Installing xgo-in-xgo..." +go get -u github.com/karalabe/xgo diff --git a/bash/sandboxes/goshell/scripts/bootstrap_pure.sh b/bash/sandboxes/goshell/scripts/bootstrap_pure.sh new file mode 100755 index 0000000..82be18d --- /dev/null +++ b/bash/sandboxes/goshell/scripts/bootstrap_pure.sh @@ -0,0 +1,67 @@ +#!/bin/bash +# +# Contains the Go tool-chain pure-Go bootstrapper, that as of Go 1.5, initiates +# not only a few pre-built Go cross compilers, but rather bootstraps all of the +# supported platforms from the origin Linux amd64 distribution. +# +# Usage: bootstrap_pure.sh +# +# Environment variables for remote bootstrapping: +# FETCH - Remote file fetcher and checksum verifier (injected by image) +# ROOT_DIST - 64 bit Linux Go binary distribution package +# ROOT_DIST_SHA - 64 bit Linux Go distribution package checksum +# +# Environment variables for local bootstrapping: +# GOROOT - Path to the lready installed Go runtime +set -e + +# Download, verify and install the root distribution if pulled remotely +if [ "$GOROOT" == "" ]; then + $FETCH $ROOT_DIST $ROOT_DIST_SHA + + tar -C /usr/local -xzf `basename $ROOT_DIST` + rm -f `basename $ROOT_DIST` + + export GOROOT=/usr/local/go +fi +export GOROOT_BOOTSTRAP=$GOROOT + +# Pre-build all guest distributions based on the root distribution +echo "Bootstrapping linux/386..." +GOOS=linux GOARCH=386 CGO_ENABLED=1 go install std + +echo "Bootstrapping linux/arm64..." +GOOS=linux GOARCH=arm64 CGO_ENABLED=1 CC=aarch64-linux-gnu-gcc-5 go install std + +if [ $GO_VERSION -ge 170 ]; then + echo "Bootstrapping linux/mips64..." + GOOS=linux GOARCH=mips64 CGO_ENABLED=1 CC=mips64-linux-gnuabi64-gcc-5 go install std + + echo "Bootstrapping linux/mips64le..." + GOOS=linux GOARCH=mips64le CGO_ENABLED=1 CC=mips64el-linux-gnuabi64-gcc-5 go install std +fi + +if [ $GO_VERSION -ge 180 ]; then + echo "Bootstrapping linux/mips..." + GOOS=linux GOARCH=mips CGO_ENABLED=1 CC=mips-linux-gnu-gcc-5 go install std + + echo "Bootstrapping linux/mipsle..." + GOOS=linux GOARCH=mipsle CGO_ENABLED=1 CC=mipsel-linux-gnu-gcc-5 go install std +fi + +echo "Bootstrapping windows/amd64..." +GOOS=windows GOARCH=amd64 CGO_ENABLED=1 CC=x86_64-w64-mingw32-gcc go install std + +echo "Bootstrapping windows/386..." +GOOS=windows GOARCH=386 CGO_ENABLED=1 CC=i686-w64-mingw32-gcc go install std + +echo "Bootstrapping darwin/amd64..." +GOOS=darwin GOARCH=amd64 CGO_ENABLED=1 CC=o64-clang go install std + +echo "Bootstrapping darwin/386..." +GOOS=darwin GOARCH=386 CGO_ENABLED=1 CC=o32-clang go install std + +# Install xgo within the container to enable internal cross compilation +echo "Installing xgo-in-xgo..." +go get -u github.com/karalabe/xgo +ln -s /go/bin/xgo /usr/bin/xgo diff --git a/bash/sandboxes/goshell/scripts/bootstrap_repo.sh b/bash/sandboxes/goshell/scripts/bootstrap_repo.sh new file mode 100755 index 0000000..44e3e5f --- /dev/null +++ b/bash/sandboxes/goshell/scripts/bootstrap_repo.sh @@ -0,0 +1,35 @@ +#!/bin/bash +# +# Contains the Go tool-chain source repository bootstrapper, that builds and +# bootstraps a Go environment from the official GitHub repository, opposed to +# using pre-build packages. +# +# Usage: bootstrap_repo.sh +# +# Needed environment variables: +# FETCH - Remote file fetcher and checksum verifier (injected by image) +set -e + +# Define the paths to deploy the bootstrapper and the final distribution +export GOROOT=/usr/local/go +export GOROOT_BOOTSTRAP=${GOROOT}-boot + +# Download and install the Go bootstrap distribution +BOOT_DIST=https://storage.googleapis.com/golang/go1.4.3.linux-amd64.tar.gz +BOOT_DIST_SHA=332b64236d30a8805fc8dd8b3a269915b4c507fe + +$FETCH $BOOT_DIST $BOOT_DIST_SHA + +tar -C /usr/local -xzf `basename $BOOT_DIST` +rm -f `basename $BOOT_DIST` +mv $GOROOT $GOROOT_BOOTSTRAP + +# Download, build and install the requesed Go sources +(cd /usr/local && git clone https://go.googlesource.com/go) +(cd $GOROOT && git checkout $1) +(cd $GOROOT/src && ./make.bash) + +rm -rf $GOROOT_BOOTSTRAP +export GOROOT_BOOTSTRAP=$GOROOT + +$BOOTSTRAP_PURE diff --git a/bash/sandboxes/goshell/scripts/build.sh b/bash/sandboxes/goshell/scripts/build.sh new file mode 100755 index 0000000..daf1ce1 --- /dev/null +++ b/bash/sandboxes/goshell/scripts/build.sh @@ -0,0 +1,629 @@ +#!/bin/bash +# +# Contains the main cross compiler, that individually sets up each target build +# platform, compiles all the C dependencies, then build the requested executable +# itself. +# +# Usage: build.sh +# +# Needed environment variables: +# REPO_REMOTE - Optional VCS remote if not the primary repository is needed +# REPO_BRANCH - Optional VCS branch to use, if not the master branch +# DEPS - Optional list of C dependency packages to build +# ARGS - Optional arguments to pass to C dependency configure scripts +# PACK - Optional sub-package, if not the import path is being built +# OUT - Optional output prefix to override the package name +# FLAG_V - Optional verbosity flag to set on the Go builder +# FLAG_X - Optional flag to print the build progress commands +# FLAG_RACE - Optional race flag to set on the Go builder +# FLAG_TAGS - Optional tag flag to set on the Go builder +# FLAG_LDFLAGS - Optional ldflags flag to set on the Go builder +# FLAG_BUILDMODE - Optional buildmode flag to set on the Go builder +# TARGETS - Comma separated list of build targets to compile for +# GO_VERSION - Bootstrapped version of Go to disable uncupported targets +# EXT_GOPATH - GOPATH elements mounted from the host filesystem + +# Define a function that figures out the binary extension +function extension { + if [ "$FLAG_BUILDMODE" == "archive" ] || [ "$FLAG_BUILDMODE" == "c-archive" ]; then + if [ "$1" == "windows" ]; then + echo ".lib" + else + echo ".a" + fi + elif [ "$FLAG_BUILDMODE" == "shared" ] || [ "$FLAG_BUILDMODE" == "c-shared" ]; then + if [ "$1" == "windows" ]; then + echo ".dll" + elif [ "$1" == "darwin" ] || [ "$1" == "ios" ]; then + echo ".dylib" + else + echo ".so" + fi + else + if [ "$1" == "windows" ]; then + echo ".exe" + fi + fi +} + +# Either set a local build environemnt, or pull any remote imports +if [ "$EXT_GOPATH" != "" ]; then + # If local builds are requested, inject the sources + echo "Building locally $1..." + export GOPATH=$GOPATH:$EXT_GOPATH + set -e + + # Find and change into the package folder + cd `go list -e -f {{.Dir}} $1` + export GOPATH=$GOPATH:`pwd`/Godeps/_workspace +else + # Inject all possible Godep paths to short circuit go gets + GOPATH_ROOT=$GOPATH/src + IMPORT_PATH=$1 + while [ "$IMPORT_PATH" != "." ]; do + export GOPATH=$GOPATH:$GOPATH_ROOT/$IMPORT_PATH/Godeps/_workspace + IMPORT_PATH=`dirname $IMPORT_PATH` + done + + # Otherwise download the canonical import path (may fail, don't allow failures beyond) + echo "Fetching main repository $1..." + go get -v -d $1 + set -e + + cd $GOPATH_ROOT/$1 + + # Switch over the code-base to another checkout if requested + if [ "$REPO_REMOTE" != "" ] || [ "$REPO_BRANCH" != "" ]; then + # Detect the version control system type + IMPORT_PATH=$1 + while [ "$IMPORT_PATH" != "." ] && [ "$REPO_TYPE" == "" ]; do + if [ -d "$GOPATH_ROOT/$IMPORT_PATH/.git" ]; then + REPO_TYPE="git" + elif [ -d "$GOPATH_ROOT/$IMPORT_PATH/.hg" ]; then + REPO_TYPE="hg" + fi + IMPORT_PATH=`dirname $IMPORT_PATH` + done + + if [ "$REPO_TYPE" == "" ]; then + echo "Unknown version control system type, cannot switch remotes and branches." + exit -1 + fi + # If we have a valid VCS, execute the switch operations + if [ "$REPO_REMOTE" != "" ]; then + echo "Switching over to remote $REPO_REMOTE..." + if [ "$REPO_TYPE" == "git" ]; then + git remote set-url origin $REPO_REMOTE + git fetch --all + git reset --hard origin/HEAD + git clean -dxf + elif [ "$REPO_TYPE" == "hg" ]; then + echo -e "[paths]\ndefault = $REPO_REMOTE\n" >> .hg/hgrc + hg pull + fi + fi + if [ "$REPO_BRANCH" != "" ]; then + echo "Switching over to branch $REPO_BRANCH..." + if [ "$REPO_TYPE" == "git" ]; then + git reset --hard origin/$REPO_BRANCH + git clean -dxf + elif [ "$REPO_TYPE" == "hg" ]; then + hg checkout $REPO_BRANCH + fi + fi + fi +fi + +# Download all the C dependencies +mkdir /deps +DEPS=($DEPS) && for dep in "${DEPS[@]}"; do + if [ "${dep##*.}" == "tar" ]; then cat "/deps-cache/`basename $dep`" | tar -C /deps -x; fi + if [ "${dep##*.}" == "gz" ]; then cat "/deps-cache/`basename $dep`" | tar -C /deps -xz; fi + if [ "${dep##*.}" == "bz2" ]; then cat "/deps-cache/`basename $dep`" | tar -C /deps -xj; fi +done + +DEPS_ARGS=($ARGS) + +# Save the contents of the pre-build /usr/local folder for post cleanup +USR_LOCAL_CONTENTS=`ls /usr/local` + +# Configure some global build parameters +NAME=`basename $1/$PACK` +if [ "$OUT" != "" ]; then + NAME=$OUT +fi + +if [ "$FLAG_V" == "true" ]; then V=-v; fi +if [ "$FLAG_X" == "true" ]; then X=-x; fi +if [ "$FLAG_RACE" == "true" ]; then R=-race; fi +if [ "$FLAG_TAGS" != "" ]; then T=(--tags "$FLAG_TAGS"); fi +if [ "$FLAG_LDFLAGS" != "" ]; then LD="$FLAG_LDFLAGS"; fi + +if [ "$FLAG_BUILDMODE" != "" ] && [ "$FLAG_BUILDMODE" != "default" ]; then BM="--buildmode=$FLAG_BUILDMODE"; fi + +# If no build targets were specified, inject a catch all wildcard +if [ "$TARGETS" == "" ]; then + TARGETS="./." +fi + +# Build for each requested platform individually +for TARGET in $TARGETS; do + # Split the target into platform and architecture + XGOOS=`echo $TARGET | cut -d '/' -f 1` + XGOARCH=`echo $TARGET | cut -d '/' -f 2` + + # Check and build for Android targets + if ([ $XGOOS == "." ] || [[ $XGOOS == android* ]]); then + # Split the platform version and configure the linker options + PLATFORM=`echo $XGOOS | cut -d '-' -f 2` + if [ "$PLATFORM" == "" ] || [ "$PLATFORM" == "." ] || [ "$PLATFORM" == "android" ]; then + PLATFORM=16 # Jelly Bean 4.0.0 + fi + if [ "$PLATFORM" -ge 16 ]; then + CGO_CCPIE="-fPIE" + CGO_LDPIE="-fPIE" + EXT_LDPIE="-extldflags=-pie" + else + unset CGO_CCPIE CGO_LDPIE EXT_LDPIE + fi + mkdir -p /build-android-aar + + # Iterate over the requested architectures, bootstrap and build + if [ $XGOARCH == "." ] || [ $XGOARCH == "arm" ] || [ $XGOARCH == "aar" ]; then + if [ "$GO_VERSION" -lt 150 ]; then + echo "Go version too low, skipping android-$PLATFORM/arm..." + else + # Include a linker workaround for pre Go 1.6 releases + if [ "$GO_VERSION" -lt 160 ]; then + EXT_LDAMD="-extldflags=-Wl,--allow-multiple-definition" + fi + + echo "Assembling toolchain for android-$PLATFORM/arm..." + $ANDROID_NDK_ROOT/build/tools/make-standalone-toolchain.sh --ndk-dir=$ANDROID_NDK_ROOT --install-dir=/usr/$ANDROID_CHAIN_ARM --toolchain=$ANDROID_CHAIN_ARM --arch=arm > /dev/null 2>&1 + + echo "Bootstrapping android-$PLATFORM/arm..." + CC=arm-linux-androideabi-gcc GOOS=android GOARCH=arm GOARM=7 CGO_ENABLED=1 CGO_CFLAGS="$CGO_CCPIE" CGO_LDFLAGS="$CGO_LDPIE" go install std + + echo "Compiling for android-$PLATFORM/arm..." + CC=arm-linux-androideabi-gcc CXX=arm-linux-androideabi-g++ HOST=arm-linux-androideabi PREFIX=/usr/$ANDROID_CHAIN_ARM/arm-linux-androideabi $BUILD_DEPS /deps ${DEPS_ARGS[@]} + export PKG_CONFIG_PATH=/usr/$ANDROID_CHAIN_ARM/arm-linux-androideabi/lib/pkgconfig + + if [ $XGOARCH == "." ] || [ $XGOARCH == "arm" ]; then + CC=arm-linux-androideabi-gcc CXX=arm-linux-androideabi-g++ GOOS=android GOARCH=arm GOARM=7 CGO_ENABLED=1 CGO_CFLAGS="$CGO_CCPIE" CGO_CXXFLAGS="$CGO_CCPIE" CGO_LDFLAGS="$CGO_LDPIE" go get $V $X "${T[@]}" --ldflags="$V $LD" -d ./$PACK + CC=arm-linux-androideabi-gcc CXX=arm-linux-androideabi-g++ GOOS=android GOARCH=arm GOARM=7 CGO_ENABLED=1 CGO_CFLAGS="$CGO_CCPIE" CGO_CXXFLAGS="$CGO_CCPIE" CGO_LDFLAGS="$CGO_LDPIE" go build $V $X "${T[@]}" --ldflags="$V $EXT_LDPIE $EXT_LDAMD $LD" $BM -o "/build/$NAME-android-$PLATFORM-arm`extension android`" ./$PACK + fi + if [ $XGOARCH == "." ] || [ $XGOARCH == "aar" ]; then + CC=arm-linux-androideabi-gcc CXX=arm-linux-androideabi-g++ GOOS=android GOARCH=arm GOARM=7 CGO_ENABLED=1 go get $V $X "${T[@]}" --ldflags="$V $LD" -d ./$PACK + CC=arm-linux-androideabi-gcc CXX=arm-linux-androideabi-g++ GOOS=android GOARCH=arm GOARM=7 CGO_ENABLED=1 go build $V $X "${T[@]}" --ldflags="$V $EXT_LDAMD $LD" --buildmode=c-shared -o "/build-android-aar/$NAME-android-$PLATFORM-arm.so" ./$PACK + fi + fi + fi + if [ "$GO_VERSION" -lt 160 ]; then + echo "Go version too low, skipping android-$PLATFORM/386,arm64..." + else + if [ "$PLATFORM" -ge 9 ] && ([ $XGOARCH == "." ] || [ $XGOARCH == "386" ] || [ $XGOARCH == "aar" ]); then + echo "Assembling toolchain for android-$PLATFORM/386..." + $ANDROID_NDK_ROOT/build/tools/make-standalone-toolchain.sh --ndk-dir=$ANDROID_NDK_ROOT --install-dir=/usr/$ANDROID_CHAIN_386 --toolchain=$ANDROID_CHAIN_386 --arch=x86 > /dev/null 2>&1 + + echo "Bootstrapping android-$PLATFORM/386..." + CC=i686-linux-android-gcc GOOS=android GOARCH=386 CGO_ENABLED=1 CGO_CFLAGS="$CGO_CCPIE" CGO_LDFLAGS="$CGO_LDPIE" go install std + + echo "Compiling for android-$PLATFORM/386..." + CC=i686-linux-android-gcc CXX=i686-linux-android-g++ HOST=i686-linux-android PREFIX=/usr/$ANDROID_CHAIN_386/i686-linux-android $BUILD_DEPS /deps ${DEPS_ARGS[@]} + export PKG_CONFIG_PATH=/usr/$ANDROID_CHAIN_386/i686-linux-android/lib/pkgconfig + + if [ $XGOARCH == "." ] || [ $XGOARCH == "386" ]; then + CC=i686-linux-android-gcc CXX=i686-linux-android-g++ GOOS=android GOARCH=386 CGO_ENABLED=1 CGO_CFLAGS="$CGO_CCPIE" CGO_CXXFLAGS="$CGO_CCPIE" CGO_LDFLAGS="$CGO_LDPIE" go get $V $X "${T[@]}" --ldflags="$V $LD" -d ./$PACK + CC=i686-linux-android-gcc CXX=i686-linux-android-g++ GOOS=android GOARCH=386 CGO_ENABLED=1 CGO_CFLAGS="$CGO_CCPIE" CGO_CXXFLAGS="$CGO_CCPIE" CGO_LDFLAGS="$CGO_LDPIE" go build $V $X "${T[@]}" --ldflags="$V $EXT_LDPIE $LD" $BM -o "/build/$NAME-android-$PLATFORM-386`extension android`" ./$PACK + fi + if [ $XGOARCH == "." ] || [ $XGOARCH == "aar" ]; then + CC=i686-linux-android-gcc CXX=i686-linux-android-g++ GOOS=android GOARCH=386 CGO_ENABLED=1 go get $V $X "${T[@]}" --ldflags="$V $LD" -d ./$PACK + CC=i686-linux-android-gcc CXX=i686-linux-android-g++ GOOS=android GOARCH=386 CGO_ENABLED=1 go build $V $X "${T[@]}" --ldflags="$V $LD" --buildmode=c-shared -o "/build-android-aar/$NAME-android-$PLATFORM-386.so" ./$PACK + fi + fi + if [ "$PLATFORM" -ge 21 ] && ([ $XGOARCH == "." ] || [ $XGOARCH == "arm64" ] || [ $XGOARCH == "aar" ]); then + echo "Assembling toolchain for android-$PLATFORM/arm64..." + $ANDROID_NDK_ROOT/build/tools/make-standalone-toolchain.sh --ndk-dir=$ANDROID_NDK_ROOT --install-dir=/usr/$ANDROID_CHAIN_ARM64 --toolchain=$ANDROID_CHAIN_ARM64 --arch=arm64 > /dev/null 2>&1 + + echo "Bootstrapping android-$PLATFORM/arm64..." + CC=aarch64-linux-android-gcc GOOS=android GOARCH=arm64 CGO_ENABLED=1 CGO_CFLAGS="$CGO_CCPIE" CGO_LDFLAGS="$CGO_LDPIE" go install std + + echo "Compiling for android-$PLATFORM/arm64..." + CC=aarch64-linux-android-gcc CXX=aarch64-linux-android-g++ HOST=aarch64-linux-android PREFIX=/usr/$ANDROID_CHAIN_ARM64/aarch64-linux-android $BUILD_DEPS /deps ${DEPS_ARGS[@]} + export PKG_CONFIG_PATH=/usr/$ANDROID_CHAIN_ARM64/aarch64-linux-android/lib/pkgconfig + + if [ $XGOARCH == "." ] || [ $XGOARCH == "arm64" ]; then + CC=aarch64-linux-android-gcc CXX=aarch64-linux-android-g++ GOOS=android GOARCH=arm64 CGO_ENABLED=1 CGO_CFLAGS="$CGO_CCPIE" CGO_CXXFLAGS="$CGO_CCPIE" CGO_LDFLAGS="$CGO_LDPIE" go get $V $X "${T[@]}" --ldflags="$V $LD" -d ./$PACK + CC=aarch64-linux-android-gcc CXX=aarch64-linux-android-g++ GOOS=android GOARCH=arm64 CGO_ENABLED=1 CGO_CFLAGS="$CGO_CCPIE" CGO_CXXFLAGS="$CGO_CCPIE" CGO_LDFLAGS="$CGO_LDPIE" go build $V $X "${T[@]}" --ldflags="$V $EXT_LDPIE $LD" $BM -o "/build/$NAME-android-$PLATFORM-arm64`extension android`" ./$PACK + fi + if [ $XGOARCH == "." ] || [ $XGOARCH == "aar" ]; then + CC=aarch64-linux-android-gcc CXX=aarch64-linux-android-g++ GOOS=android GOARCH=arm64 CGO_ENABLED=1 go get $V $X "${T[@]}" --ldflags="$V $LD" -d ./$PACK + CC=aarch64-linux-android-gcc CXX=aarch64-linux-android-g++ GOOS=android GOARCH=arm64 CGO_ENABLED=1 go build $V $X "${T[@]}" --ldflags="$V $LD" --buildmode=c-shared -o "/build-android-aar/$NAME-android-$PLATFORM-arm64.so" ./$PACK + fi + fi + fi + # Assemble the Android Archive from the built shared libraries + if [ $XGOARCH == "." ] || [ $XGOARCH == "aar" ]; then + title=${NAME^} + archive=/build/$NAME-android-$PLATFORM-aar + bundle=/build/$NAME-android-$PLATFORM.aar + + # Generate the Java import path based on the Go one + package=`go list ./$PACK | tr '-' '_'` + package=$(for p in `echo ${package//\// }`; do echo $p | awk 'BEGIN{FS="."}{for (i=NF; i>0; i--){printf "%s.", $i;}}'; done | sed 's/.$//') + package=${package%.*} + + # Create a fresh empty Android archive + rm -rf $archive $bundle + mkdir -p $archive + + echo -e "\n \n" > $archive/AndroidManifest.xml + mkdir -p $archive/res + touch $archive/R.txt + + # Generate the JNI wrappers automatically with SWIG + jni=`mktemp -d` + header=`find /build-android-aar | grep '\.h$' | head -n 1` + if [ "$header" == "" ]; then + echo "No API C header specified, skipping android-$PLATFORM/aar..." + else + cp $header $jni/$NAME.h + sed -i -e 's|__complex|complex|g' $jni/$NAME.h + sed -i -e 's|_Complex|complex|g' $jni/$NAME.h + echo -e "%module $title\n%{\n#include \"$NAME.h\"\n%}\n%pragma(java) jniclasscode=%{\nstatic {\nSystem.loadLibrary(\"$NAME\");\n}\n%}\n%include \"$NAME.h\"" > $jni/$NAME.i + + mkdir -p $jni/${package//.//} + swig -java -package $package -outdir $jni/${package//.//} $jni/$NAME.i + + # Assemble the Go static libraries and the JNI interface into shared libraries + for lib in `find /build-android-aar | grep '\.so$'`; do + if [[ "$lib" = *-arm.so ]]; then cc=arm-linux-androideabi-gcc; abi="armeabi-v7a"; fi + if [[ "$lib" = *-arm64.so ]]; then cc=aarch64-linux-android-gcc; abi="arm64-v8a"; fi + if [[ "$lib" = *-386.so ]]; then cc=i686-linux-android-gcc; abi="x86"; fi + + mkdir -p $archive/jni/$abi + cp ${lib%.*}.h $jni/${NAME}.h + cp $lib $archive/jni/$abi/lib${NAME}raw.so + (cd $archive/jni/$abi && $cc -shared -fPIC -o lib${NAME}.so -I"$ANDROID_NDK_LIBC/include" -I"$ANDROID_NDK_LIBC/libs/$abi/include" -I"$jni" lib${NAME}raw.so $jni/${NAME}_wrap.c) + done + + # Compile the Java wrapper and assemble into a .jar file + mkdir -p $jni/build + javac -target 1.7 -source 1.7 -cp . -d $jni/build $jni/${package//.//}/*.java + (cd $jni/build && jar cvf $archive/classes.jar *) + + # Finally assemble the archive contents into an .aar and clean up + (cd $archive && zip -r $bundle *) + rm -rf $jni $archive + fi + fi + # Clean up the android builds, toolchains and runtimes + rm -rf /build-android-aar + rm -rf /usr/local/go/pkg/android_* + rm -rf /usr/$ANDROID_CHAIN_ARM /usr/$ANDROID_CHAIN_ARM64 /usr/$ANDROID_CHAIN_386 + fi + # Check and build for Linux targets + if ([ $XGOOS == "." ] || [ $XGOOS == "linux" ]) && ([ $XGOARCH == "." ] || [ $XGOARCH == "amd64" ]); then + echo "Compiling for linux/amd64..." + HOST=x86_64-linux PREFIX=/usr/local $BUILD_DEPS /deps ${DEPS_ARGS[@]} + GOOS=linux GOARCH=amd64 CGO_ENABLED=1 go get $V $X "${T[@]}" --ldflags="$V $LD" -d ./$PACK + GOOS=linux GOARCH=amd64 CGO_ENABLED=1 go build $V $X "${T[@]}" --ldflags="$V $LD" $R $BM -o "/build/$NAME-linux-amd64$R`extension linux`" ./$PACK + fi + if ([ $XGOOS == "." ] || [ $XGOOS == "linux" ]) && ([ $XGOARCH == "." ] || [ $XGOARCH == "386" ]); then + echo "Compiling for linux/386..." + HOST=i686-linux PREFIX=/usr/local $BUILD_DEPS /deps ${DEPS_ARGS[@]} + GOOS=linux GOARCH=386 CGO_ENABLED=1 go get $V $X "${T[@]}" --ldflags="$V $LD" -d ./$PACK + GOOS=linux GOARCH=386 CGO_ENABLED=1 go build $V $X "${T[@]}" --ldflags="$V $LD" $BM -o "/build/$NAME-linux-386`extension linux`" ./$PACK + fi + if ([ $XGOOS == "." ] || [ $XGOOS == "linux" ]) && ([ $XGOARCH == "." ] || [ $XGOARCH == "arm" ] || [ $XGOARCH == "arm-5" ]); then + if [ "$GO_VERSION" -ge 150 ]; then + echo "Bootstrapping linux/arm-5..." + CC=arm-linux-gnueabi-gcc-5 GOOS=linux GOARCH=arm GOARM=5 CGO_ENABLED=1 CGO_CFLAGS="-march=armv5" CGO_CXXFLAGS="-march=armv5" go install std + fi + echo "Compiling for linux/arm-5..." + CC=arm-linux-gnueabi-gcc-5 CXX=arm-linux-gnueabi-g++-5 HOST=arm-linux-gnueabi PREFIX=/usr/arm-linux-gnueabi CFLAGS="-march=armv5" CXXFLAGS="-march=armv5" $BUILD_DEPS /deps ${DEPS_ARGS[@]} + export PKG_CONFIG_PATH=/usr/arm-linux-gnueabi/lib/pkgconfig + + CC=arm-linux-gnueabi-gcc-5 CXX=arm-linux-gnueabi-g++-5 GOOS=linux GOARCH=arm GOARM=5 CGO_ENABLED=1 CGO_CFLAGS="-march=armv5" CGO_CXXFLAGS="-march=armv5" go get $V $X "${T[@]}" --ldflags="$V $LD" -d ./$PACK + CC=arm-linux-gnueabi-gcc-5 CXX=arm-linux-gnueabi-g++-5 GOOS=linux GOARCH=arm GOARM=5 CGO_ENABLED=1 CGO_CFLAGS="-march=armv5" CGO_CXXFLAGS="-march=armv5" go build $V $X "${T[@]}" --ldflags="$V $LD" $BM -o "/build/$NAME-linux-arm-5`extension linux`" ./$PACK + if [ "$GO_VERSION" -ge 150 ]; then + echo "Cleaning up Go runtime for linux/arm-5..." + rm -rf /usr/local/go/pkg/linux_arm + fi + fi + if ([ $XGOOS == "." ] || [ $XGOOS == "linux" ]) && ([ $XGOARCH == "." ] || [ $XGOARCH == "arm-6" ]); then + if [ "$GO_VERSION" -lt 150 ]; then + echo "Go version too low, skipping linux/arm-6..." + else + echo "Bootstrapping linux/arm-6..." + CC=arm-linux-gnueabi-gcc-5 GOOS=linux GOARCH=arm GOARM=6 CGO_ENABLED=1 CGO_CFLAGS="-march=armv6" CGO_CXXFLAGS="-march=armv6" go install std + + echo "Compiling for linux/arm-6..." + CC=arm-linux-gnueabi-gcc-5 CXX=arm-linux-gnueabi-g++-5 HOST=arm-linux-gnueabi PREFIX=/usr/arm-linux-gnueabi CFLAGS="-march=armv6" CXXFLAGS="-march=armv6" $BUILD_DEPS /deps ${DEPS_ARGS[@]} + export PKG_CONFIG_PATH=/usr/arm-linux-gnueabi/lib/pkgconfig + + CC=arm-linux-gnueabi-gcc-5 CXX=arm-linux-gnueabi-g++-5 GOOS=linux GOARCH=arm GOARM=6 CGO_ENABLED=1 CGO_CFLAGS="-march=armv6" CGO_CXXFLAGS="-march=armv6" go get $V $X "${T[@]}" --ldflags="$V $LD" -d ./$PACK + CC=arm-linux-gnueabi-gcc-5 CXX=arm-linux-gnueabi-g++-5 GOOS=linux GOARCH=arm GOARM=6 CGO_ENABLED=1 CGO_CFLAGS="-march=armv6" CGO_CXXFLAGS="-march=armv6" go build $V $X "${T[@]}" --ldflags="$V $LD" $BM -o "/build/$NAME-linux-arm-6`extension linux`" ./$PACK + + echo "Cleaning up Go runtime for linux/arm-6..." + rm -rf /usr/local/go/pkg/linux_arm + fi + fi + if ([ $XGOOS == "." ] || [ $XGOOS == "linux" ]) && ([ $XGOARCH == "." ] || [ $XGOARCH == "arm-7" ]); then + if [ "$GO_VERSION" -lt 150 ]; then + echo "Go version too low, skipping linux/arm-7..." + else + echo "Bootstrapping linux/arm-7..." + CC=arm-linux-gnueabihf-gcc-5 GOOS=linux GOARCH=arm GOARM=7 CGO_ENABLED=1 CGO_CFLAGS="-march=armv7-a" CGO_CXXFLAGS="-march=armv7-a" go install std + + echo "Compiling for linux/arm-7..." + CC=arm-linux-gnueabihf-gcc-5 CXX=arm-linux-gnueabihf-g++-5 HOST=arm-linux-gnueabihf PREFIX=/usr/arm-linux-gnueabihf CFLAGS="-march=armv7-a -fPIC" CXXFLAGS="-march=armv7-a -fPIC" $BUILD_DEPS /deps ${DEPS_ARGS[@]} + export PKG_CONFIG_PATH=/usr/arm-linux-gnueabihf/lib/pkgconfig + + CC=arm-linux-gnueabihf-gcc-5 CXX=arm-linux-gnueabihf-g++-5 GOOS=linux GOARCH=arm GOARM=7 CGO_ENABLED=1 CGO_CFLAGS="-march=armv7-a -fPIC" CGO_CXXFLAGS="-march=armv7-a -fPIC" go get $V $X "${T[@]}" --ldflags="$V $LD" -d ./$PACK + CC=arm-linux-gnueabihf-gcc-5 CXX=arm-linux-gnueabihf-g++-5 GOOS=linux GOARCH=arm GOARM=7 CGO_ENABLED=1 CGO_CFLAGS="-march=armv7-a -fPIC" CGO_CXXFLAGS="-march=armv7-a -fPIC" go build $V $X "${T[@]}" --ldflags="$V $LD" $BM -o "/build/$NAME-linux-arm-7`extension linux`" ./$PACK + + echo "Cleaning up Go runtime for linux/arm-7..." + rm -rf /usr/local/go/pkg/linux_arm + fi + fi + if ([ $XGOOS == "." ] || [ $XGOOS == "linux" ]) && ([ $XGOARCH == "." ] || [ $XGOARCH == "arm64" ]); then + if [ "$GO_VERSION" -lt 150 ]; then + echo "Go version too low, skipping linux/arm64..." + else + echo "Compiling for linux/arm64..." + CC=aarch64-linux-gnu-gcc-5 CXX=aarch64-linux-gnu-g++-5 HOST=aarch64-linux-gnu PREFIX=/usr/aarch64-linux-gnu $BUILD_DEPS /deps ${DEPS_ARGS[@]} + export PKG_CONFIG_PATH=/usr/aarch64-linux-gnu/lib/pkgconfig + + CC=aarch64-linux-gnu-gcc-5 CXX=aarch64-linux-gnu-g++-5 GOOS=linux GOARCH=arm64 CGO_ENABLED=1 go get $V $X "${T[@]}" --ldflags="$V $LD" -d ./$PACK + CC=aarch64-linux-gnu-gcc-5 CXX=aarch64-linux-gnu-g++-5 GOOS=linux GOARCH=arm64 CGO_ENABLED=1 go build $V $X "${T[@]}" --ldflags="$V $LD" $BM -o "/build/$NAME-linux-arm64`extension linux`" ./$PACK + fi + fi + if ([ $XGOOS == "." ] || [ $XGOOS == "linux" ]) && ([ $XGOARCH == "." ] || [ $XGOARCH == "mips64" ]); then + if [ "$GO_VERSION" -lt 170 ]; then + echo "Go version too low, skipping linux/mips64..." + else + echo "Compiling for linux/mips64..." + CC=mips64-linux-gnuabi64-gcc-5 CXX=mips64-linux-gnuabi64-g++-5 HOST=mips64-linux-gnuabi64 PREFIX=/usr/mips64-linux-gnuabi64 $BUILD_DEPS /deps ${DEPS_ARGS[@]} + export PKG_CONFIG_PATH=/usr/mips64-linux-gnuabi64/lib/pkgconfig + + CC=mips64-linux-gnuabi64-gcc-5 CXX=mips64-linux-gnuabi64-g++-5 GOOS=linux GOARCH=mips64 CGO_ENABLED=1 go get $V $X "${T[@]}" --ldflags="$V $LD" -d ./$PACK + CC=mips64-linux-gnuabi64-gcc-5 CXX=mips64-linux-gnuabi64-g++-5 GOOS=linux GOARCH=mips64 CGO_ENABLED=1 go build $V $X "${T[@]}" --ldflags="$V $LD" $BM -o "/build/$NAME-linux-mips64`extension linux`" ./$PACK + fi + fi + if ([ $XGOOS == "." ] || [ $XGOOS == "linux" ]) && ([ $XGOARCH == "." ] || [ $XGOARCH == "mips64le" ]); then + if [ "$GO_VERSION" -lt 170 ]; then + echo "Go version too low, skipping linux/mips64le..." + else + echo "Compiling for linux/mips64le..." + CC=mips64el-linux-gnuabi64-gcc-5 CXX=mips64el-linux-gnuabi64-g++-5 HOST=mips64el-linux-gnuabi64 PREFIX=/usr/mips64el-linux-gnuabi64 $BUILD_DEPS /deps ${DEPS_ARGS[@]} + export PKG_CONFIG_PATH=/usr/mips64le-linux-gnuabi64/lib/pkgconfig + + CC=mips64el-linux-gnuabi64-gcc-5 CXX=mips64el-linux-gnuabi64-g++-5 GOOS=linux GOARCH=mips64le CGO_ENABLED=1 go get $V $X "${T[@]}" --ldflags="$V $LD" -d ./$PACK + CC=mips64el-linux-gnuabi64-gcc-5 CXX=mips64el-linux-gnuabi64-g++-5 GOOS=linux GOARCH=mips64le CGO_ENABLED=1 go build $V $X "${T[@]}" --ldflags="$V $LD" $BM -o "/build/$NAME-linux-mips64le`extension linux`" ./$PACK + fi + fi + if ([ $XGOOS == "." ] || [ $XGOOS == "linux" ]) && ([ $XGOARCH == "." ] || [ $XGOARCH == "mips" ]); then + if [ "$GO_VERSION" -lt 180 ]; then + echo "Go version too low, skipping linux/mips..." + else + echo "Compiling for linux/mips..." + CC=mips-linux-gnu-gcc-5 CXX=mips-linux-gnu-g++-5 HOST=mips-linux-gnu PREFIX=/usr/mips-linux-gnu $BUILD_DEPS /deps ${DEPS_ARGS[@]} + export PKG_CONFIG_PATH=/usr/mips-linux-gnu/lib/pkgconfig + + CC=mips-linux-gnu-gcc-5 CXX=mips-linux-gnu-g++-5 GOOS=linux GOARCH=mips CGO_ENABLED=1 go get $V $X "${T[@]}" --ldflags="$V $LD" -d ./$PACK + CC=mips-linux-gnu-gcc-5 CXX=mips-linux-gnu-g++-5 GOOS=linux GOARCH=mips CGO_ENABLED=1 go build $V $X "${T[@]}" --ldflags="$V $LD" $BM -o "/build/$NAME-linux-mips`extension linux`" ./$PACK + fi + fi + if ([ $XGOOS == "." ] || [ $XGOOS == "linux" ]) && ([ $XGOARCH == "." ] || [ $XGOARCH == "mipsle" ]); then + if [ "$GO_VERSION" -lt 180 ]; then + echo "Go version too low, skipping linux/mipsle..." + else + echo "Compiling for linux/mipsle..." + CC=mipsel-linux-gnu-gcc-5 CXX=mipsel-linux-gnu-g++-5 HOST=mipsel-linux-gnu PREFIX=/usr/mipsel-linux-gnu $BUILD_DEPS /deps ${DEPS_ARGS[@]} + export PKG_CONFIG_PATH=/usr/mipsle-linux-gnu/lib/pkgconfig + + CC=mipsel-linux-gnu-gcc-5 CXX=mipsel-linux-gnu-g++-5 GOOS=linux GOARCH=mipsle CGO_ENABLED=1 go get $V $X "${T[@]}" --ldflags="$V $LD" -d ./$PACK + CC=mipsel-linux-gnu-gcc-5 CXX=mipsel-linux-gnu-g++-5 GOOS=linux GOARCH=mipsle CGO_ENABLED=1 go build $V $X "${T[@]}" --ldflags="$V $LD" $BM -o "/build/$NAME-linux-mipsle`extension linux`" ./$PACK + fi + fi + # Check and build for Windows targets + if [ $XGOOS == "." ] || [[ $XGOOS == windows* ]]; then + # Split the platform version and configure the Windows NT version + PLATFORM=`echo $XGOOS | cut -d '-' -f 2` + if [ "$PLATFORM" == "" ] || [ "$PLATFORM" == "." ] || [ "$PLATFORM" == "windows" ]; then + PLATFORM=4.0 # Windows NT + fi + + MAJOR=`echo $PLATFORM | cut -d '.' -f 1` + if [ "${PLATFORM/.}" != "$PLATFORM" ] ; then + MINOR=`echo $PLATFORM | cut -d '.' -f 2` + fi + CGO_NTDEF="-D_WIN32_WINNT=0x`printf "%02d" $MAJOR``printf "%02d" $MINOR`" + + # Build the requested windows binaries + if [ $XGOARCH == "." ] || [ $XGOARCH == "amd64" ]; then + echo "Compiling for windows-$PLATFORM/amd64..." + CC=x86_64-w64-mingw32-gcc-posix CXX=x86_64-w64-mingw32-g++-posix HOST=x86_64-w64-mingw32 PREFIX=/usr/x86_64-w64-mingw32 $BUILD_DEPS /deps ${DEPS_ARGS[@]} + export PKG_CONFIG_PATH=/usr/x86_64-w64-mingw32/lib/pkgconfig + + CC=x86_64-w64-mingw32-gcc-posix CXX=x86_64-w64-mingw32-g++-posix GOOS=windows GOARCH=amd64 CGO_ENABLED=1 CGO_CFLAGS="$CGO_NTDEF" CGO_CXXFLAGS="$CGO_NTDEF" go get $V $X "${T[@]}" --ldflags="$V $LD" -d ./$PACK + CC=x86_64-w64-mingw32-gcc-posix CXX=x86_64-w64-mingw32-g++-posix GOOS=windows GOARCH=amd64 CGO_ENABLED=1 CGO_CFLAGS="$CGO_NTDEF" CGO_CXXFLAGS="$CGO_NTDEF" go build $V $X "${T[@]}" --ldflags="$V $LD" $R $BM -o "/build/$NAME-windows-$PLATFORM-amd64$R`extension windows`" ./$PACK + fi + if [ $XGOARCH == "." ] || [ $XGOARCH == "386" ]; then + echo "Compiling for windows-$PLATFORM/386..." + CC=i686-w64-mingw32-gcc-posix CXX=i686-w64-mingw32-g++-posix HOST=i686-w64-mingw32 PREFIX=/usr/i686-w64-mingw32 $BUILD_DEPS /deps ${DEPS_ARGS[@]} + export PKG_CONFIG_PATH=/usr/i686-w64-mingw32/lib/pkgconfig + + CC=i686-w64-mingw32-gcc-posix CXX=i686-w64-mingw32-g++-posix GOOS=windows GOARCH=386 CGO_ENABLED=1 CGO_CFLAGS="$CGO_NTDEF" CGO_CXXFLAGS="$CGO_NTDEF" go get $V $X "${T[@]}" --ldflags="$V $LD" -d ./$PACK + CC=i686-w64-mingw32-gcc-posix CXX=i686-w64-mingw32-g++-posix GOOS=windows GOARCH=386 CGO_ENABLED=1 CGO_CFLAGS="$CGO_NTDEF" CGO_CXXFLAGS="$CGO_NTDEF" go build $V $X "${T[@]}" --ldflags="$V $LD" $BM -o "/build/$NAME-windows-$PLATFORM-386`extension windows`" ./$PACK + fi + fi + # Check and build for OSX targets + if [ $XGOOS == "." ] || [[ $XGOOS == darwin* ]]; then + # Split the platform version and configure the deployment target + PLATFORM=`echo $XGOOS | cut -d '-' -f 2` + if [ "$PLATFORM" == "" ] || [ "$PLATFORM" == "." ] || [ "$PLATFORM" == "darwin" ]; then + PLATFORM=10.6 # OS X Snow Leopard + fi + export MACOSX_DEPLOYMENT_TARGET=$PLATFORM + + # Strip symbol table below Go 1.6 to prevent DWARF issues + LDSTRIP="" + if [ "$GO_VERSION" -lt 160 ]; then + LDSTRIP="-s" + fi + # Build the requested darwin binaries + if [ $XGOARCH == "." ] || [ $XGOARCH == "amd64" ]; then + echo "Compiling for darwin-$PLATFORM/amd64..." + CC=o64-clang CXX=o64-clang++ HOST=x86_64-apple-darwin15 PREFIX=/usr/local $BUILD_DEPS /deps ${DEPS_ARGS[@]} + CC=o64-clang CXX=o64-clang++ GOOS=darwin GOARCH=amd64 CGO_ENABLED=1 go get $V $X "${T[@]}" --ldflags="$LDSTRIP $V $LD" -d ./$PACK + CC=o64-clang CXX=o64-clang++ GOOS=darwin GOARCH=amd64 CGO_ENABLED=1 go build $V $X "${T[@]}" --ldflags="$LDSTRIP $V $LD" $R $BM -o "/build/$NAME-darwin-$PLATFORM-amd64$R`extension darwin`" ./$PACK + fi + if [ $XGOARCH == "." ] || [ $XGOARCH == "386" ]; then + echo "Compiling for darwin-$PLATFORM/386..." + CC=o32-clang CXX=o32-clang++ HOST=i386-apple-darwin15 PREFIX=/usr/local $BUILD_DEPS /deps ${DEPS_ARGS[@]} + CC=o32-clang CXX=o32-clang++ GOOS=darwin GOARCH=386 CGO_ENABLED=1 go get $V $X "${T[@]}" --ldflags="$LDSTRIP $V $LD" -d ./$PACK + CC=o32-clang CXX=o32-clang++ GOOS=darwin GOARCH=386 CGO_ENABLED=1 go build $V $X "${T[@]}" --ldflags="$LDSTRIP $V $LD" $BM -o "/build/$NAME-darwin-$PLATFORM-386`extension darwin`" ./$PACK + fi + # Remove any automatically injected deployment target vars + unset MACOSX_DEPLOYMENT_TARGET + fi + # Check and build for iOS targets + if [ $XGOOS == "." ] || [[ $XGOOS == ios* ]]; then + # Split the platform version and configure the deployment target + PLATFORM=`echo $XGOOS | cut -d '-' -f 2` + if [ "$PLATFORM" == "" ] || [ "$PLATFORM" == "." ] || [ "$PLATFORM" == "ios" ]; then + PLATFORM=5.0 # first iPad and upwards + fi + export IPHONEOS_DEPLOYMENT_TARGET=$PLATFORM + + # Build the requested iOS binaries + if [ "$GO_VERSION" -lt 150 ]; then + echo "Go version too low, skipping ios..." + else + # Add the 'ios' tag to all builds, otherwise the std libs will fail + if [ "$FLAG_TAGS" != "" ]; then + IOSTAGS=(--tags "ios $FLAG_TAGS") + else + IOSTAGS=(--tags ios) + fi + mkdir -p /build-ios-fw + + # Strip symbol table below Go 1.6 to prevent DWARF issues + LDSTRIP="" + if [ "$GO_VERSION" -lt 160 ]; then + LDSTRIP="-s" + fi + # Cross compile to all available iOS and simulator platforms + if [ -d "$IOS_NDK_ARM_7" ] && ([ $XGOARCH == "." ] || [ $XGOARCH == "arm-7" ] || [ $XGOARCH == "framework" ]); then + echo "Bootstrapping ios-$PLATFORM/arm-7..." + export PATH=$IOS_NDK_ARM_7/bin:$PATH + GOOS=darwin GOARCH=arm GOARM=7 CGO_ENABLED=1 CC=arm-apple-darwin11-clang go install --tags ios std + + echo "Compiling for ios-$PLATFORM/arm-7..." + CC=arm-apple-darwin11-clang CXX=arm-apple-darwin11-clang++ HOST=arm-apple-darwin11 PREFIX=/usr/local $BUILD_DEPS /deps ${DEPS_ARGS[@]} + CC=arm-apple-darwin11-clang CXX=arm-apple-darwin11-clang++ GOOS=darwin GOARCH=arm GOARM=7 CGO_ENABLED=1 go get $V $X "${IOSTAGS[@]}" --ldflags="$V $LD" -d ./$PACK + if [ $XGOARCH == "." ] || [ $XGOARCH == "arm-7" ]; then + CC=arm-apple-darwin11-clang CXX=arm-apple-darwin11-clang++ GOOS=darwin GOARCH=arm GOARM=7 CGO_ENABLED=1 go build $V $X "${IOSTAGS[@]}" --ldflags="$LDSTRIP $V $LD" $BM -o "/build/$NAME-ios-$PLATFORM-armv7`extension darwin`" ./$PACK + fi + if [ $XGOARCH == "." ] || [ $XGOARCH == "framework" ]; then + CC=arm-apple-darwin11-clang CXX=arm-apple-darwin11-clang++ GOOS=darwin GOARCH=arm GOARM=7 CGO_ENABLED=1 go build $V $X "${IOSTAGS[@]}" --ldflags="$V $LD" --buildmode=c-archive -o "/build-ios-fw/$NAME-ios-$PLATFORM-armv7.a" ./$PACK + fi + echo "Cleaning up Go runtime for ios-$PLATFORM/arm-7..." + rm -rf /usr/local/go/pkg/darwin_arm + fi + if [ -d "$IOS_NDK_ARM64" ] && ([ $XGOARCH == "." ] || [ $XGOARCH == "arm64" ] || [ $XGOARCH == "framework" ]); then + echo "Bootstrapping ios-$PLATFORM/arm64..." + export PATH=$IOS_NDK_ARM64/bin:$PATH + GOOS=darwin GOARCH=arm64 CGO_ENABLED=1 CC=arm-apple-darwin11-clang go install --tags ios std + + echo "Compiling for ios-$PLATFORM/arm64..." + CC=arm-apple-darwin11-clang CXX=arm-apple-darwin11-clang++ HOST=arm-apple-darwin11 PREFIX=/usr/local $BUILD_DEPS /deps ${DEPS_ARGS[@]} + CC=arm-apple-darwin11-clang CXX=arm-apple-darwin11-clang++ GOOS=darwin GOARCH=arm64 CGO_ENABLED=1 go get $V $X "${IOSTAGS[@]}" --ldflags="$V $LD" -d ./$PACK + if [ $XGOARCH == "." ] || [ $XGOARCH == "arm64" ]; then + CC=arm-apple-darwin11-clang CXX=arm-apple-darwin11-clang++ GOOS=darwin GOARCH=arm64 CGO_ENABLED=1 go build $V $X "${IOSTAGS[@]}" --ldflags="$LDSTRIP $V $LD" $BM -o "/build/$NAME-ios-$PLATFORM-arm64`extension darwin`" ./$PACK + fi + if [ $XGOARCH == "." ] || [ $XGOARCH == "framework" ]; then + CC=arm-apple-darwin11-clang CXX=arm-apple-darwin11-clang++ GOOS=darwin GOARCH=arm64 CGO_ENABLED=1 go build $V $X "${IOSTAGS[@]}" --ldflags="$V $LD" --buildmode=c-archive -o "/build-ios-fw/$NAME-ios-$PLATFORM-arm64.a" ./$PACK + fi + echo "Cleaning up Go runtime for ios-$PLATFORM/arm64..." + rm -rf /usr/local/go/pkg/darwin_arm64 + fi + if [ -d "$IOS_SIM_NDK_AMD64" ] && ([ $XGOARCH == "." ] || [ $XGOARCH == "amd64" ] || [ $XGOARCH == "framework" ]); then + echo "Bootstrapping ios-$PLATFORM/amd64..." + export PATH=$IOS_SIM_NDK_AMD64/bin:$PATH + mv /usr/local/go/pkg/darwin_amd64 /usr/local/go/pkg/darwin_amd64_bak + GOOS=darwin GOARCH=amd64 CGO_ENABLED=1 CC=arm-apple-darwin11-clang go install --tags ios std + + echo "Compiling for ios-$PLATFORM/amd64..." + CC=arm-apple-darwin11-clang CXX=arm-apple-darwin11-clang++ HOST=arm-apple-darwin11 PREFIX=/usr/local $BUILD_DEPS /deps ${DEPS_ARGS[@]} + CC=arm-apple-darwin11-clang CXX=arm-apple-darwin11-clang++ GOOS=darwin GOARCH=amd64 CGO_ENABLED=1 go get $V $X "${IOSTAGS[@]}" --ldflags="$V $LD" -d ./$PACK + if [ $XGOARCH == "." ] || [ $XGOARCH == "amd64" ]; then + CC=arm-apple-darwin11-clang CXX=arm-apple-darwin11-clang++ GOOS=darwin GOARCH=amd64 CGO_ENABLED=1 go build $V $X "${IOSTAGS[@]}" --ldflags="$LDSTRIP $V $LD" $BM -o "/build/$NAME-ios-$PLATFORM-x86_64`extension darwin`" ./$PACK + fi + if [ $XGOARCH == "." ] || [ $XGOARCH == "framework" ]; then + CC=arm-apple-darwin11-clang CXX=arm-apple-darwin11-clang++ GOOS=darwin GOARCH=amd64 CGO_ENABLED=1 go build $V $X "${IOSTAGS[@]}" --ldflags="$V $LD" --buildmode=c-archive -o "/build-ios-fw/$NAME-ios-$PLATFORM-x86_64.a" ./$PACK + fi + echo "Cleaning up Go runtime for ios-$PLATFORM/amd64..." + rm -rf /usr/local/go/pkg/darwin_amd64 + mv /usr/local/go/pkg/darwin_amd64_bak /usr/local/go/pkg/darwin_amd64 + fi + # Assemble the iOS framework from the built binaries + if [ $XGOARCH == "." ] || [ $XGOARCH == "framework" ]; then + title=${NAME^} + framework=/build/$NAME-ios-$PLATFORM-framework/$title.framework + + rm -rf $framework + mkdir -p $framework/Versions/A + (cd $framework/Versions && ln -nsf A Current) + + arches=() + for lib in `ls /build-ios-fw | grep -e '\.a$'`; do + arches+=("-arch" "`echo ${lib##*-} | cut -d '.' -f 1`" "/build-ios-fw/$lib") + done + arm-apple-darwin11-lipo -create "${arches[@]}" -o $framework/Versions/A/$title + arm-apple-darwin11-ranlib $framework/Versions/A/$title + (cd $framework && ln -nsf Versions/A/$title $title) + + mkdir -p $framework/Versions/A/Headers + for header in `ls /build-ios-fw | grep -e '\.h$'`; do + cp -f /build-ios-fw/$header $framework/Versions/A/Headers/$title.h + done + (cd $framework && ln -nsf Versions/A/Headers Headers) + + mkdir -p $framework/Versions/A/Resources + echo -e "\n\n\n\n\n" > $framework/Versions/A/Resources/Info.plist + (cd $framework && ln -nsf Versions/A/Resources Resources) + + mkdir -p $framework/Versions/A/Modules + echo -e "framework module \"$title\" {\n header \"$title.h\"\n export *\n}" > $framework/Versions/A/Modules/module.modulemap + (cd $framework && ln -nsf Versions/A/Modules Modules) + + chmod 777 -R /build/$NAME-ios-$PLATFORM-framework + fi + rm -rf /build-ios-fw + fi + # Remove any automatically injected deployment target vars + unset IPHONEOS_DEPLOYMENT_TARGET + fi +done + +# Clean up any leftovers for subsequent build invocations +echo "Cleaning up build environment..." +rm -rf /deps + +for dir in `ls /usr/local`; do + keep=0 + + # Check against original folder contents + for old in $USR_LOCAL_CONTENTS; do + if [ "$old" == "$dir" ]; then + keep=1 + fi + done + # Delete anything freshly generated + if [ "$keep" == "0" ]; then + rm -rf "/usr/local/$dir" + fi +done diff --git a/bash/sandboxes/goshell/scripts/build_deps.sh b/bash/sandboxes/goshell/scripts/build_deps.sh new file mode 100755 index 0000000..016a7a0 --- /dev/null +++ b/bash/sandboxes/goshell/scripts/build_deps.sh @@ -0,0 +1,27 @@ +#!/bin/bash +# +# Contains the a dependency builder to iterate over all installed dependencies +# and cross compile them to the requested target platform. +# +# Usage: build_deps.sh +# +# Needed environment variables: +# CC - C cross compiler to use for the build +# HOST - Target platform to build (used to find the needed tool-chains) +# PREFIX - File-system path where to install the built binaries +set -e + +# Remove any previous build leftovers, and copy a fresh working set (clean doesn't work for cross compiling) +rm -rf /deps-build && cp -r $1 /deps-build + +# Build all the dependencies (no order for now) +for dep in `ls /deps-build`; do + echo "Configuring dependency $dep for $HOST..." + (cd /deps-build/$dep && ./configure --disable-shared --host=$HOST --prefix=$PREFIX --silent ${@:2}) + + echo "Building dependency $dep for $HOST..." + (cd /deps-build/$dep && make --silent -j install) +done + +# Remove any build artifacts +rm -rf /deps-build diff --git a/bash/sandboxes/goshell/scripts/fetch.sh b/bash/sandboxes/goshell/scripts/fetch.sh new file mode 100755 index 0000000..538cec2 --- /dev/null +++ b/bash/sandboxes/goshell/scripts/fetch.sh @@ -0,0 +1,27 @@ +#!/bin/bash +# +# Contains a simple fetcher to download a file from a remote URL and verify its +# SHA1 or SHA256 checksum (selected based on provided length). +# +# Usage: fetch.sh +set -e + +# Skip the download if no operands specified +if [ "$1" == "" -o "$2" == "" ]; then + echo "Fetch operands missing, skipping..." + exit +fi + +# Pull the file from the remote URL +file=`basename $1` +echo "Downloading $1..." +wget -q $1 + +# Generate a desired checksum report and check against it +echo "$2 $file" > $file.sum +if [ "${#2}" == "40" ]; then + sha1sum -c $file.sum +else + sha256sum -c $file.sum +fi +rm $file.sum diff --git a/bash/sandboxes/goshell/scripts/patch.tar.xz b/bash/sandboxes/goshell/scripts/patch.tar.xz new file mode 100755 index 0000000000000000000000000000000000000000..bff5da4eafaa47f9cfb7b68bb7ee51277d4c4546 GIT binary patch literal 294820 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 z®X1kLj25SPU)vP$~_sgg^l8`ZfqrBs;V2UxjE*ZR^@h2J+RB{x+G>f!S_zmmJ{ zqFsN?ElGb>QOEF*{|jz?tT6F@SoQ#_ohart5xk4-(!*`vMw8K3?Hbg_aN}Ic^z+5l z-00Z|wO*oHkl75`1U*J~Cshu^_|>X#U|}{UOcnv2&Kn6LhqJbG9x8G|L(0VD6+{D$ zzp5*NN`asGjy5Bbn5hf|bJqbcn3`eOg~0{x31@6~CjwgKon^+#r-=QNt6*tz*Oo1a zY95xnub@dFBb#Y1xe6#20^c*k*$H)6p`%GuFGYb^uFi3Nhq=9~-zmZ_2x#T0Rt1PU zCqxVAa%@ToI?6>~Rl5H{K}IV+TH)i9$}lzgl#X2xfX3Ml7VmP<9P^`c2@+%~~#Ia{g7zRG)ELFMmBeE5h|d(=itG_%SEY4>Pp9RL}`ByHe| z;MgJQy!ZT1DN*bDmFv)`s=N1%`(tOF2bz6T|pn$r#ists*e(;tptM8vK~ttjFgd_6ru@U z`UrupE{k)2=|+VoP*}DI0QUodKhZl1LHS5skyAqzT~5wM&n8vcSp7jNQ0U0)F&&Z3 z`g%#$HqB}v*r7L?PA-4jc^f|`&J>#(o$EeFelMQFiF1-0@=t>(k?{b@+!P06Y)2`f%T z?rqdErb?OCgmCnkxww*s%S??+>vK&;>ImGQ3PWKJAY&7Kf*&ayJ33gahyT>n(tCM? zwQ!rQC_klDtU{*FEVCXJ==;MLXZT8s$QY9@H!n@s{+B5fsCC1smww{b&C?Ea0NV(hE%* zP<*&=bM;gmcTaDCS32*si){N6Q)h%bz>8=_8gy|X?NUDt+rb|>TG|qgIYZZ?Qh^o; zom6=6&DI<3aiE5e3%0e}z*6{|T@Rq#Bl%28`SmBmC0P1wQAGu*t)=DwST-PyZtx1` zo)v@i&WvY#oJDTK6p?|U$5NhXg(A-lMG%kzPbPXMH*|4NM&o(n3=G%WJrVW{yEB8o z(({yNsPI!Ip)OSVZCB*pUdXZ`s)}Z(gj{0cVwjN zrX4L-XEEvVXgWfOBe-fW1WCq>?r>^@@M$d_v#?lP?FzN(B2etgJ(tp5Al

?va8l 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 X0RR91NZYEY6c;-%0{{R300dcDz9W;H literal 0 HcmV?d00001 diff --git a/bash/sandboxes/goshell/scripts/startup.sh b/bash/sandboxes/goshell/scripts/startup.sh new file mode 100755 index 0000000..ad949b1 --- /dev/null +++ b/bash/sandboxes/goshell/scripts/startup.sh @@ -0,0 +1,10 @@ +#!/usr/bin/env sh +# groupadd --gid $HOST_GID $HOST_USER +groupadd docker + +useradd $HOST_USER --home /home/$HOST_USER --gid $HOST_GID --uid $HOST_UID --shell /bin/bash +echo "$HOST_USER:pw" | chpasswd +# chown $HOST_USER:$HOST_USER /home/$HOST_USER + +# /usr/sbin/sshd +su $HOST_USER diff --git a/bash/sandboxes/goshell/scripts/update_ios.sh b/bash/sandboxes/goshell/scripts/update_ios.sh new file mode 100755 index 0000000..53d0fb5 --- /dev/null +++ b/bash/sandboxes/goshell/scripts/update_ios.sh @@ -0,0 +1,61 @@ +#!/bin/bash +# +# Contains a simple tool that updates some of the iOS toolchains with the SDKs +# explicitly provided. The goal is to allow using your own up to date SDKs or +# the simulator one not supported out of the box. +# +# Usage: update_ios.sh /.sdk.tar. +set -e + +# Figure out the base name of the SDK +sdk=`basename $1` +sdk=${sdk%.*} +sdk=${sdk%.*} + +# Define a small extraction utility to +function extract { + case $1 in + *.tar.xz) + xz -dc $1 | tar xf - + ;; + *.tar.gz) + gunzip -dc $1 | tar xf - + ;; + *.tar.bz2) + bzip2 -dc $1 | tar xf - + ;; + esac +} + +# Extract the SDK, patch it, clean it up and prep for bootstrapping +extract $1 + +if [[ "`basename $1`" =~ ^iPhoneSimulator ]]; then + echo "Patching iOS simulator SDK with missing libraries..." + ln -s $OSX_NDK_X86/SDK/$OSX_SDK/usr/lib/system/libsystem_kernel.dylib $sdk/usr/lib/system/libsystem_kernel.dylib + ln -s $OSX_NDK_X86/SDK/$OSX_SDK/usr/lib/system/libsystem_platform.dylib $sdk/usr/lib/system/libsystem_platform.dylib + ln -s $OSX_NDK_X86/SDK/$OSX_SDK/usr/lib/system/libsystem_pthread.dylib $sdk/usr/lib/system/libsystem_pthread.dylib + ln -s $OSX_NDK_X86/SDK/$OSX_SDK/usr/lib/system/libsystem_kernel.tbd $sdk/usr/lib/system/libsystem_kernel.tbd + ln -s $OSX_NDK_X86/SDK/$OSX_SDK/usr/lib/system/libsystem_platform.tbd $sdk/usr/lib/system/libsystem_platform.tbd + ln -s $OSX_NDK_X86/SDK/$OSX_SDK/usr/lib/system/libsystem_pthread.tbd $sdk/usr/lib/system/libsystem_pthread.tbd +fi + +tar -czf /tmp/$sdk.tar.gz $sdk +rm -rf $sdk + +# Pull the iOS cross compiler tool and build the toolchain +git clone https://github.com/tpoechtrager/cctools-port.git + +if [[ "`basename $1`" =~ ^iPhoneSimulator ]]; then + rm -rf $IOS_SIM_NDK_AMD64 + /cctools-port/usage_examples/ios_toolchain/build.sh /tmp/$sdk.tar.gz x86_64 + mv /cctools-port/usage_examples/ios_toolchain/target $IOS_SIM_NDK_AMD64 +else + rm -rf $IOS_NDK_ARM_7 $IOS_NDK_ARM64 + /cctools-port/usage_examples/ios_toolchain/build.sh /tmp/$sdk.tar.gz armv7 + mv /cctools-port/usage_examples/ios_toolchain/target $IOS_NDK_ARM_7 + /cctools-port/usage_examples/ios_toolchain/build.sh /tmp/$sdk.tar.gz arm64 + mv /cctools-port/usage_examples/ios_toolchain/target $IOS_NDK_ARM64 +fi + +rm -rf /cctools-port diff --git a/bash/sandboxes/herokushell/Dockerfile b/bash/sandboxes/herokushell/Dockerfile new file mode 100755 index 0000000..738f7d0 --- /dev/null +++ b/bash/sandboxes/herokushell/Dockerfile @@ -0,0 +1,21 @@ +FROM ubuntu:18.04 +MAINTAINER Colin Henry + +RUN apt-get update && \ + apt-get install -y openssh-server curl wget gnupg + +RUN curl https://cli-assets.heroku.com/install-ubuntu.sh | sh + +#sshd setup - https://docs.docker.com/examples/running_ssh_service/ +RUN mkdir /var/run/sshd +RUN echo 'root:pw' | chpasswd +RUN sed -i 's/PermitRootLogin without-password/PermitRootLogin yes/' /etc/ssh/sshd_config +# SSH login fix. Otherwise user is kicked off after login +RUN sed 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd +ENV NOTVISIBLE "in users profile" +RUN echo "export VISIBLE=now" >> /etc/profile +EXPOSE 22 + + +ADD startup.sh /root/startup.sh +RUN chmod +x /root/startup.sh diff --git a/bash/sandboxes/herokushell/Makefile b/bash/sandboxes/herokushell/Makefile new file mode 100755 index 0000000..3dfeffc --- /dev/null +++ b/bash/sandboxes/herokushell/Makefile @@ -0,0 +1,7 @@ +# +# Build tasks for this Dockerfile +# + +TAG=jchenry/herokushell + +include ../Makefile.core \ No newline at end of file diff --git a/bash/sandboxes/herokushell/include.sh b/bash/sandboxes/herokushell/include.sh new file mode 100755 index 0000000..9051bc4 --- /dev/null +++ b/bash/sandboxes/herokushell/include.sh @@ -0,0 +1,5 @@ +#!/usr/bin/env bash + +function herokushell() { + __docker_bash "herokushell" "/project" +} \ No newline at end of file diff --git a/bash/sandboxes/herokushell/startup.sh b/bash/sandboxes/herokushell/startup.sh new file mode 100755 index 0000000..ed44be3 --- /dev/null +++ b/bash/sandboxes/herokushell/startup.sh @@ -0,0 +1,9 @@ +#!/usr/bin/env sh +# groupadd --gid $HOST_GID $HOST_USER +useradd $HOST_USER --home /home/$HOST_USER --gid $HOST_GID --uid $HOST_UID --shell /bin/bash +echo "$HOST_USER:pw" | chpasswd +# chown $HOST_USER:$HOST_USER /home/$HOST_USER + +# /usr/sbin/sshd +su $HOST_USER +cd /project \ No newline at end of file diff --git a/bash/sandboxes/jdk8shell/Dockerfile b/bash/sandboxes/jdk8shell/Dockerfile new file mode 100755 index 0000000..762c2ea --- /dev/null +++ b/bash/sandboxes/jdk8shell/Dockerfile @@ -0,0 +1,23 @@ +#jchenry/jdk8shell +# +# Shell for Go development + +FROM maven:3.5.2-jdk-8-slim +MAINTAINER Colin Henry + +RUN apt-get update && \ + apt-get install -y openssh-server + +#sshd setup - https://docs.docker.com/examples/running_ssh_service/ +RUN mkdir /var/run/sshd +RUN echo 'root:pw' | chpasswd +RUN sed -i 's/PermitRootLogin without-password/PermitRootLogin yes/' /etc/ssh/sshd_config +# SSH login fix. Otherwise user is kicked off after login +RUN sed 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd +ENV NOTVISIBLE "in users profile" +RUN echo "export VISIBLE=now" >> /etc/profile +EXPOSE 22 + + +ADD startup.sh /root/startup.sh +RUN chmod +x /root/startup.sh diff --git a/bash/sandboxes/jdk8shell/Makefile b/bash/sandboxes/jdk8shell/Makefile new file mode 100755 index 0000000..c386a8e --- /dev/null +++ b/bash/sandboxes/jdk8shell/Makefile @@ -0,0 +1,7 @@ +# +# Build tasks for this Dockerfile +# + +TAG=jchenry/jdk8shell + +include ../Makefile.core diff --git a/bash/sandboxes/jdk8shell/include.sh b/bash/sandboxes/jdk8shell/include.sh new file mode 100755 index 0000000..353aec4 --- /dev/null +++ b/bash/sandboxes/jdk8shell/include.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash + +#includes for go zsh config +function jdk8shell() { + __docker_bash "jdk8shell" "/project" +} diff --git a/bash/sandboxes/jdk8shell/startup.sh b/bash/sandboxes/jdk8shell/startup.sh new file mode 100755 index 0000000..ba19ada --- /dev/null +++ b/bash/sandboxes/jdk8shell/startup.sh @@ -0,0 +1,10 @@ +#!/usr/bin/env sh +# groupadd --gid $HOST_GID $HOST_USER +useradd $HOST_USER --home /home/$HOST_USER --gid $HOST_GID --uid $HOST_UID --shell /bin/bash +echo "$HOST_USER:pw" | chpasswd +# chown $HOST_USER:$HOST_USER /home/$HOST_USER + +# /usr/sbin/sshd +su $HOST_USER + +cd /project \ No newline at end of file diff --git a/bash/sandboxes/leinshell/Dockerfile b/bash/sandboxes/leinshell/Dockerfile new file mode 100755 index 0000000..854a8f6 --- /dev/null +++ b/bash/sandboxes/leinshell/Dockerfile @@ -0,0 +1,34 @@ +#markmandel/leinshell +# +# Shell for Clojure development, with Leiningen + +FROM java:jdk +MAINTAINER Mark Mandel + +RUN apt-get update && \ + apt-get install -y zsh openssh-server + +#sshd setup - https://docs.docker.com/examples/running_ssh_service/ +RUN mkdir /var/run/sshd +RUN echo 'root:pw' | chpasswd +RUN sed -i 's/PermitRootLogin without-password/PermitRootLogin yes/' /etc/ssh/sshd_config +# SSH login fix. Otherwise user is kicked off after login +RUN sed 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd +ENV NOTVISIBLE "in users profile" +RUN echo "export VISIBLE=now" >> /etc/profile +EXPOSE 22 + +#lein installation +ENV LEIN_ROOT=1 +RUN cd /usr/local/bin/ && wget https://raw.githubusercontent.com/technomancy/leiningen/stable/bin/lein && chmod +x ./lein + +RUN lein + +ADD startup.sh /root/startup.sh +RUN chmod +x /root/startup.sh + +RUN mkdir /project +WORKDIR /project + +#port for web apps +EXPOSE 8080 \ No newline at end of file diff --git a/bash/sandboxes/leinshell/Makefile b/bash/sandboxes/leinshell/Makefile new file mode 100755 index 0000000..b2c274a --- /dev/null +++ b/bash/sandboxes/leinshell/Makefile @@ -0,0 +1,7 @@ +# +# Build tasks for this Dockerfile +# + +TAG=jchenry/leinshell + +include ../Makefile.core diff --git a/bash/sandboxes/leinshell/include.sh b/bash/sandboxes/leinshell/include.sh new file mode 100755 index 0000000..4ef1f5c --- /dev/null +++ b/bash/sandboxes/leinshell/include.sh @@ -0,0 +1,10 @@ +#!/usr/bin/env bash + +#includes for go zsh config +function leinshell() { + mkdir -p ~/.m2 + __docker_bash "leinshell" "/project" \ + "-v $SANDBOXES/leinshell/profiles.clj:/home/$USER/.lein/profiles.clj" \ + "-v ~/.m2:/home/$USER/.m2" \ + "-P=true" +} diff --git a/bash/sandboxes/leinshell/profiles.clj b/bash/sandboxes/leinshell/profiles.clj new file mode 100755 index 0000000..99fbb5a --- /dev/null +++ b/bash/sandboxes/leinshell/profiles.clj @@ -0,0 +1 @@ +{:user {:plugins [[lein-ancient "0.6.7"]]}} diff --git a/bash/sandboxes/leinshell/startup.sh b/bash/sandboxes/leinshell/startup.sh new file mode 100755 index 0000000..250951c --- /dev/null +++ b/bash/sandboxes/leinshell/startup.sh @@ -0,0 +1,13 @@ +#!/usr/bin/env sh +# groupadd --gid $HOST_GID $HOST_USER +useradd $HOST_USER --home /home/$HOST_USER --gid $HOST_GID --uid $HOST_UID --shell /bin/bash +echo "$HOST_USER:pw" | chpasswd +# chown $HOST_USER:$HOST_USER /home/$HOST_USER + +#setup lein for this user +cp -r /root/.lein/* /home/$HOST_USER/.lein/ +chown -R $HOST_USER:$HOST_USER /home/$HOST_USER/.lein +# /usr/sbin/sshd +su $HOST_USER + +cd /project \ No newline at end of file diff --git a/bash/sandboxes/nodeshell/Dockerfile b/bash/sandboxes/nodeshell/Dockerfile new file mode 100755 index 0000000..0144455 --- /dev/null +++ b/bash/sandboxes/nodeshell/Dockerfile @@ -0,0 +1,24 @@ +#jchenry/nodeshell +# +# Shell for Node development + +FROM node:8.11.1 +MAINTAINER Colin Henry + + +RUN apt-get update && \ + apt-get install -y openssh-server + +#sshd setup - https://docs.docker.com/examples/running_ssh_service/ +RUN mkdir /var/run/sshd +RUN echo 'root:pw' | chpasswd +RUN sed -i 's/PermitRootLogin without-password/PermitRootLogin yes/' /etc/ssh/sshd_config +# SSH login fix. Otherwise user is kicked off after login +RUN sed 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd +ENV NOTVISIBLE "in users profile" +RUN echo "export VISIBLE=now" >> /etc/profile +EXPOSE 22 + + +ADD startup.sh /root/startup.sh +RUN chmod +x /root/startup.sh diff --git a/bash/sandboxes/nodeshell/Makefile b/bash/sandboxes/nodeshell/Makefile new file mode 100755 index 0000000..532b97b --- /dev/null +++ b/bash/sandboxes/nodeshell/Makefile @@ -0,0 +1,7 @@ +# +# Build tasks for this Dockerfile +# + +TAG=jchenry/nodeshell + +include ../Makefile.core \ No newline at end of file diff --git a/bash/sandboxes/nodeshell/include.sh b/bash/sandboxes/nodeshell/include.sh new file mode 100755 index 0000000..46c0113 --- /dev/null +++ b/bash/sandboxes/nodeshell/include.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash + +#includes for go zsh config +function nodeshell() { + __docker_bash "nodeshell" "/project" +} \ No newline at end of file diff --git a/bash/sandboxes/nodeshell/startup.sh b/bash/sandboxes/nodeshell/startup.sh new file mode 100755 index 0000000..d53e420 --- /dev/null +++ b/bash/sandboxes/nodeshell/startup.sh @@ -0,0 +1,9 @@ +#!/usr/bin/env sh +# groupadd --gid $HOST_GID $HOST_USER +useradd $HOST_USER --home /home/$HOST_USER --gid $HOST_GID --uid $HOST_UID --shell /bin/bash +echo "$HOST_USER:pw" | chpasswd +# chown $HOST_USER:$HOST_USER /home/$HOST_USER + +# /usr/sbin/sshd +su $HOST_USER +cd /workspace \ No newline at end of file diff --git a/bash/sandboxes/sandbox.sh b/bash/sandboxes/sandbox.sh new file mode 100755 index 0000000..9747cee --- /dev/null +++ b/bash/sandboxes/sandbox.sh @@ -0,0 +1,132 @@ +#!/usr/bin/env bash + +# a bash take on docker based dev sandboxes with apologies to Mark Mandel + +__docker_bash () { + local shell=$1 + local src=$2 + local name=$shell${PWD//\//.} + + printf "Starting Container: $shell \n" + + _docker_run "--rm" \ + "--name $name" \ + "--hostname docker" \ + "-P=true" \ + "-e TERM" \ + "-e HOST_GID=`id -g`" \ + "-e HOST_UID=`id -u`" \ + "-e HOST_USER=${USER}" \ + "--privileged" \ + "-v ~/.bash_history:/home/${USER}/.bash_history" \ + "-v /var/run/docker.sock:/var/run/docker.sock" \ + "-v `pwd`:${src}" \ + ${argv:3} \ + "-it jchenry/$shell /root/startup.sh" +} + + + +SANDBOXES=~/bin/sandboxes + +# Source all the shells +for p in $SANDBOXES/*; do + if [[ -d $p ]]; then + source $p/include.sh + fi +done + +#Takes each argument and applies it to a docker run command +function _docker_run() { + # echo "docker run $@" + eval "docker run $@" +} + +# #standard default docker zsh function +# function _docker_zsh() { +# local shell=$1 +# local src=$2 +# local name=$shell${${PWD//\//.}:-200} #make sure we stay under 255 chars + +# echo "Starting Container: $name (${#name})" + +# _docker_run "--rm" \ +# "--name $name" \ +# "-P=true" \ +# "-e TERM" \ +# "-e HOST_GID=`id -g`" \ +# "-e HOST_UID=`id -u`" \ +# "-e HOST_USER=$USER" \ +# "-v ~/.oh-my-zsh:/home/$USER/.oh-my-zsh" \ +# "-v ~/.dircolors:/home/$USER/.dircolors " \ +# "-v ~/.zsh_history:/home/$USER/.zsh_history" \ +# "-v $SANDBOXES/$shell/zshrc:/home/$USER/.zshrc" \ +# "-v $SANDBOXES/core.zsh:/home/$USER/.core.zsh" \ +# "-v `pwd`:$src" \ +# ${argv:3} \ +# "-it markmandel/$shell /root/startup.sh" +# } + +function _get_docker_ssh_port() { + local name=$1 + + typeset -a port + + port=(${(@s/:/)$(docker port $name 22)}) + + echo $port[2] +} + +#ssh mount a docker container +function docker-ssh-mount() { + local name=$1 + local mountpoint=/tmp/$name + local port=$(_get_docker_ssh_port $name) + + mkdir -p $mountpoint + echo "Mounting on $port" + sshfs $USER@0.0.0.0:/ $mountpoint -p $port -o follow_symlinks +} + +# # compdef __list_docker_containers docker-ssh-mount + +# #attach a new zsh termainl to an already running shell +# function shell-attach() { +# docker exec -it -u=$USER $1 /usr/bin/zsh +# } + +# # compdef __list_docker_containers shell-attach + +# #Credit: _docker .oh-my-zsh plugin +# function __list_docker_containers() { +# declare -a cont_cmd +# cont_cmd=($(docker ps | awk 'NR>1{print $NF":[CON("$1")"$2"("$3")]"}')) +# if [[ 'X$cont_cmd' != 'X' ]] +# _describe 'containers' cont_cmd +# } + +# alias dsm=docker-ssh-mount + +# #Credit: https://github.com/jbbarth/dotfiles/blob/master/.zsh/docker.zsh +# function docker-cleanup() { +# echo "* Removing old containers" +# docker ps -qa | xargs --no-run-if-empty -n 1 docker rm +# echo "* Removing images" +# docker images --filter dangling=true -q | xargs --no-run-if-empty -n 1 docker rmi +# } + +# alias dc=docker-cleanup + +# function docker-known-host-clear() { +# if [[ $1 == "" ]]; then +# echo "Container name not passed in" >&2 +# return 1 +# fi + +# local name=$1 +# local port=$(_get_docker_ssh_port $name) + +# ssh-keygen -R 0.0.0.0:$port +# } + +# # compdef __list_docker_containers docker-known-host-clear diff --git a/bash/sandboxes/swiftshell/Dockerfile b/bash/sandboxes/swiftshell/Dockerfile new file mode 100755 index 0000000..f4aab53 --- /dev/null +++ b/bash/sandboxes/swiftshell/Dockerfile @@ -0,0 +1,65 @@ +#jchenry/swiftshell +# +# Shell for Swift development +# learning the hard way + +FROM swift:4.2 +MAINTAINER Colin Henry + +RUN apt-get update && \ + apt-get install -y openssh-server wget + + +#sshd setup - https://docs.docker.com/examples/running_ssh_service/ +RUN mkdir /var/run/sshd +RUN echo 'root:pw' | chpasswd +RUN sed -i 's/PermitRootLogin without-password/PermitRootLogin yes/' /etc/ssh/sshd_config +# SSH login fix. Otherwise user is kicked off after login +RUN sed 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd +ENV NOTVISIBLE "in users profile" +RUN echo "export VISIBLE=now" >> /etc/profile +EXPOSE 22 + + +ADD startup.sh /root/startup.sh +RUN chmod +x /root/startup.sh + + + + + + + + + + + + + + +# FROM golang:1.9.2 +# MAINTAINER Colin Henry + +# RUN apt-get update && \ +# apt-get install -y openssh-server + +# #sshd setup - https://docs.docker.com/examples/running_ssh_service/ +# RUN mkdir /var/run/sshd +# RUN echo 'root:pw' | chpasswd +# RUN sed -i 's/PermitRootLogin without-password/PermitRootLogin yes/' /etc/ssh/sshd_config +# # SSH login fix. Otherwise user is kicked off after login +# RUN sed 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd +# ENV NOTVISIBLE "in users profile" +# RUN echo "export VISIBLE=now" >> /etc/profile +# EXPOSE 22 + +# # RUN go get github.com/constabulary/gb/... +# # RUN go get github.com/golang/lint/golint +# # RUN go get golang.org/x/tools/cmd/goimports + +# # RUN mv ./bin/* /usr/local/bin + +# # RUN rm -rf /go + +# ADD startup.sh /root/startup.sh +# RUN chmod +x /root/startup.sh diff --git a/bash/sandboxes/swiftshell/Makefile b/bash/sandboxes/swiftshell/Makefile new file mode 100755 index 0000000..6a5a654 --- /dev/null +++ b/bash/sandboxes/swiftshell/Makefile @@ -0,0 +1,7 @@ +# +# Build tasks for this Dockerfile +# + +TAG=jchenry/swiftshell + +include ../Makefile.core \ No newline at end of file diff --git a/bash/sandboxes/swiftshell/include.sh b/bash/sandboxes/swiftshell/include.sh new file mode 100755 index 0000000..53201f1 --- /dev/null +++ b/bash/sandboxes/swiftshell/include.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash + +#includes for go zsh config +function swift-shell() { + __docker_bash "swiftshell" "/workspace" +} \ No newline at end of file diff --git a/bash/sandboxes/swiftshell/startup.sh b/bash/sandboxes/swiftshell/startup.sh new file mode 100755 index 0000000..ed44be3 --- /dev/null +++ b/bash/sandboxes/swiftshell/startup.sh @@ -0,0 +1,9 @@ +#!/usr/bin/env sh +# groupadd --gid $HOST_GID $HOST_USER +useradd $HOST_USER --home /home/$HOST_USER --gid $HOST_GID --uid $HOST_UID --shell /bin/bash +echo "$HOST_USER:pw" | chpasswd +# chown $HOST_USER:$HOST_USER /home/$HOST_USER + +# /usr/sbin/sshd +su $HOST_USER +cd /project \ No newline at end of file diff --git a/git/git-completion.sh b/git/git-completion.sh new file mode 100755 index 0000000..dba3c15 --- /dev/null +++ b/git/git-completion.sh @@ -0,0 +1,2663 @@ +#!bash +# +# bash/zsh completion support for core Git. +# +# Copyright (C) 2006,2007 Shawn O. Pearce +# Conceptually based on gitcompletion (http://gitweb.hawaga.org.uk/). +# Distributed under the GNU General Public License, version 2.0. +# +# The contained completion routines provide support for completing: +# +# *) local and remote branch names +# *) local and remote tag names +# *) .git/remotes file names +# *) git 'subcommands' +# *) tree paths within 'ref:path/to/file' expressions +# *) file paths within current working directory and index +# *) common --long-options +# +# To use these routines: +# +# 1) Copy this file to somewhere (e.g. ~/.git-completion.sh). +# 2) Add the following line to your .bashrc/.zshrc: +# source ~/.git-completion.sh +# 3) Consider changing your PS1 to also show the current branch, +# see git-prompt.sh for details. + +case "$COMP_WORDBREAKS" in +*:*) : great ;; +*) COMP_WORDBREAKS="$COMP_WORDBREAKS:" +esac + +# __gitdir accepts 0 or 1 arguments (i.e., location) +# returns location of .git repo +__gitdir () +{ + if [ -z "${1-}" ]; then + if [ -n "${__git_dir-}" ]; then + echo "$__git_dir" + elif [ -n "${GIT_DIR-}" ]; then + test -d "${GIT_DIR-}" || return 1 + echo "$GIT_DIR" + elif [ -d .git ]; then + echo .git + else + git rev-parse --git-dir 2>/dev/null + fi + elif [ -d "$1/.git" ]; then + echo "$1/.git" + else + echo "$1" + fi +} + +# The following function is based on code from: +# +# bash_completion - programmable completion functions for bash 3.2+ +# +# Copyright © 2006-2008, Ian Macdonald +# © 2009-2010, Bash Completion Maintainers +# +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# The latest version of this software can be obtained here: +# +# http://bash-completion.alioth.debian.org/ +# +# RELEASE: 2.x + +# This function can be used to access a tokenized list of words +# on the command line: +# +# __git_reassemble_comp_words_by_ref '=:' +# if test "${words_[cword_-1]}" = -w +# then +# ... +# fi +# +# The argument should be a collection of characters from the list of +# word completion separators (COMP_WORDBREAKS) to treat as ordinary +# characters. +# +# This is roughly equivalent to going back in time and setting +# COMP_WORDBREAKS to exclude those characters. The intent is to +# make option types like --date= and : easy to +# recognize by treating each shell word as a single token. +# +# It is best not to set COMP_WORDBREAKS directly because the value is +# shared with other completion scripts. By the time the completion +# function gets called, COMP_WORDS has already been populated so local +# changes to COMP_WORDBREAKS have no effect. +# +# Output: words_, cword_, cur_. + +__git_reassemble_comp_words_by_ref() +{ + local exclude i j first + # Which word separators to exclude? + exclude="${1//[^$COMP_WORDBREAKS]}" + cword_=$COMP_CWORD + if [ -z "$exclude" ]; then + words_=("${COMP_WORDS[@]}") + return + fi + # List of word completion separators has shrunk; + # re-assemble words to complete. + for ((i=0, j=0; i < ${#COMP_WORDS[@]}; i++, j++)); do + # Append each nonempty word consisting of just + # word separator characters to the current word. + first=t + while + [ $i -gt 0 ] && + [ -n "${COMP_WORDS[$i]}" ] && + # word consists of excluded word separators + [ "${COMP_WORDS[$i]//[^$exclude]}" = "${COMP_WORDS[$i]}" ] + do + # Attach to the previous token, + # unless the previous token is the command name. + if [ $j -ge 2 ] && [ -n "$first" ]; then + ((j--)) + fi + first= + words_[$j]=${words_[j]}${COMP_WORDS[i]} + if [ $i = $COMP_CWORD ]; then + cword_=$j + fi + if (($i < ${#COMP_WORDS[@]} - 1)); then + ((i++)) + else + # Done. + return + fi + done + words_[$j]=${words_[j]}${COMP_WORDS[i]} + if [ $i = $COMP_CWORD ]; then + cword_=$j + fi + done +} + +if ! type _get_comp_words_by_ref >/dev/null 2>&1; then +_get_comp_words_by_ref () +{ + local exclude cur_ words_ cword_ + if [ "$1" = "-n" ]; then + exclude=$2 + shift 2 + fi + __git_reassemble_comp_words_by_ref "$exclude" + cur_=${words_[cword_]} + while [ $# -gt 0 ]; do + case "$1" in + cur) + cur=$cur_ + ;; + prev) + prev=${words_[$cword_-1]} + ;; + words) + words=("${words_[@]}") + ;; + cword) + cword=$cword_ + ;; + esac + shift + done +} +fi + +__gitcompadd () +{ + local i=0 + for x in $1; do + if [[ "$x" == "$3"* ]]; then + COMPREPLY[i++]="$2$x$4" + fi + done +} + +# Generates completion reply, appending a space to possible completion words, +# if necessary. +# It accepts 1 to 4 arguments: +# 1: List of possible completion words. +# 2: A prefix to be added to each possible completion word (optional). +# 3: Generate possible completion matches for this word (optional). +# 4: A suffix to be appended to each possible completion word (optional). +__gitcomp () +{ + local cur_="${3-$cur}" + + case "$cur_" in + --*=) + ;; + *) + local c i=0 IFS=$' \t\n' + for c in $1; do + c="$c${4-}" + if [[ $c == "$cur_"* ]]; then + case $c in + --*=*|*.) ;; + *) c="$c " ;; + esac + COMPREPLY[i++]="${2-}$c" + fi + done + ;; + esac +} + +# Generates completion reply from newline-separated possible completion words +# by appending a space to all of them. +# It accepts 1 to 4 arguments: +# 1: List of possible completion words, separated by a single newline. +# 2: A prefix to be added to each possible completion word (optional). +# 3: Generate possible completion matches for this word (optional). +# 4: A suffix to be appended to each possible completion word instead of +# the default space (optional). If specified but empty, nothing is +# appended. +__gitcomp_nl () +{ + local IFS=$'\n' + __gitcompadd "$1" "${2-}" "${3-$cur}" "${4- }" +} + +# Generates completion reply with compgen from newline-separated possible +# completion filenames. +# It accepts 1 to 3 arguments: +# 1: List of possible completion filenames, separated by a single newline. +# 2: A directory prefix to be added to each possible completion filename +# (optional). +# 3: Generate possible completion matches for this word (optional). +__gitcomp_file () +{ + local IFS=$'\n' + + # XXX does not work when the directory prefix contains a tilde, + # since tilde expansion is not applied. + # This means that COMPREPLY will be empty and Bash default + # completion will be used. + __gitcompadd "$1" "${2-}" "${3-$cur}" "" + + # use a hack to enable file mode in bash < 4 + compopt -o filenames +o nospace 2>/dev/null || + compgen -f /non-existing-dir/ > /dev/null +} + +# Execute 'git ls-files', unless the --committable option is specified, in +# which case it runs 'git diff-index' to find out the files that can be +# committed. It return paths relative to the directory specified in the first +# argument, and using the options specified in the second argument. +__git_ls_files_helper () +{ + ( + test -n "${CDPATH+set}" && unset CDPATH + cd "$1" + if [ "$2" == "--committable" ]; then + git diff-index --name-only --relative HEAD + else + # NOTE: $2 is not quoted in order to support multiple options + git ls-files --exclude-standard $2 + fi + ) 2>/dev/null +} + + +# __git_index_files accepts 1 or 2 arguments: +# 1: Options to pass to ls-files (required). +# 2: A directory path (optional). +# If provided, only files within the specified directory are listed. +# Sub directories are never recursed. Path must have a trailing +# slash. +__git_index_files () +{ + local dir="$(__gitdir)" root="${2-.}" file + + if [ -d "$dir" ]; then + __git_ls_files_helper "$root" "$1" | + while read -r file; do + case "$file" in + ?*/*) echo "${file%%/*}" ;; + *) echo "$file" ;; + esac + done | sort | uniq + fi +} + +__git_heads () +{ + local dir="$(__gitdir)" + if [ -d "$dir" ]; then + git --git-dir="$dir" for-each-ref --format='%(refname:short)' \ + refs/heads + return + fi +} + +__git_tags () +{ + local dir="$(__gitdir)" + if [ -d "$dir" ]; then + git --git-dir="$dir" for-each-ref --format='%(refname:short)' \ + refs/tags + return + fi +} + +# __git_refs accepts 0, 1 (to pass to __gitdir), or 2 arguments +# presence of 2nd argument means use the guess heuristic employed +# by checkout for tracking branches +__git_refs () +{ + local i hash dir="$(__gitdir "${1-}")" track="${2-}" + local format refs + if [ -d "$dir" ]; then + case "$cur" in + refs|refs/*) + format="refname" + refs="${cur%/*}" + track="" + ;; + *) + for i in HEAD FETCH_HEAD ORIG_HEAD MERGE_HEAD; do + if [ -e "$dir/$i" ]; then echo $i; fi + done + format="refname:short" + refs="refs/tags refs/heads refs/remotes" + ;; + esac + git --git-dir="$dir" for-each-ref --format="%($format)" \ + $refs + if [ -n "$track" ]; then + # employ the heuristic used by git checkout + # Try to find a remote branch that matches the completion word + # but only output if the branch name is unique + local ref entry + git --git-dir="$dir" for-each-ref --shell --format="ref=%(refname:short)" \ + "refs/remotes/" | \ + while read -r entry; do + eval "$entry" + ref="${ref#*/}" + if [[ "$ref" == "$cur"* ]]; then + echo "$ref" + fi + done | sort | uniq -u + fi + return + fi + case "$cur" in + refs|refs/*) + git ls-remote "$dir" "$cur*" 2>/dev/null | \ + while read -r hash i; do + case "$i" in + *^{}) ;; + *) echo "$i" ;; + esac + done + ;; + *) + echo "HEAD" + git for-each-ref --format="%(refname:short)" -- "refs/remotes/$dir/" | sed -e "s#^$dir/##" + ;; + esac +} + +# __git_refs2 requires 1 argument (to pass to __git_refs) +__git_refs2 () +{ + local i + for i in $(__git_refs "$1"); do + echo "$i:$i" + done +} + +# __git_refs_remotes requires 1 argument (to pass to ls-remote) +__git_refs_remotes () +{ + local i hash + git ls-remote "$1" 'refs/heads/*' 2>/dev/null | \ + while read -r hash i; do + echo "$i:refs/remotes/$1/${i#refs/heads/}" + done +} + +__git_remotes () +{ + local i IFS=$'\n' d="$(__gitdir)" + test -d "$d/remotes" && ls -1 "$d/remotes" + for i in $(git --git-dir="$d" config --get-regexp 'remote\..*\.url' 2>/dev/null); do + i="${i#remote.}" + echo "${i/.url*/}" + done +} + +__git_list_merge_strategies () +{ + git merge -s help 2>&1 | + sed -n -e '/[Aa]vailable strategies are: /,/^$/{ + s/\.$// + s/.*:// + s/^[ ]*// + s/[ ]*$// + p + }' +} + +__git_merge_strategies= +# 'git merge -s help' (and thus detection of the merge strategy +# list) fails, unfortunately, if run outside of any git working +# tree. __git_merge_strategies is set to the empty string in +# that case, and the detection will be repeated the next time it +# is needed. +__git_compute_merge_strategies () +{ + test -n "$__git_merge_strategies" || + __git_merge_strategies=$(__git_list_merge_strategies) +} + +__git_complete_revlist_file () +{ + local pfx ls ref cur_="$cur" + case "$cur_" in + *..?*:*) + return + ;; + ?*:*) + ref="${cur_%%:*}" + cur_="${cur_#*:}" + case "$cur_" in + ?*/*) + pfx="${cur_%/*}" + cur_="${cur_##*/}" + ls="$ref:$pfx" + pfx="$pfx/" + ;; + *) + ls="$ref" + ;; + esac + + case "$COMP_WORDBREAKS" in + *:*) : great ;; + *) pfx="$ref:$pfx" ;; + esac + + __gitcomp_nl "$(git --git-dir="$(__gitdir)" ls-tree "$ls" 2>/dev/null \ + | sed '/^100... blob /{ + s,^.* ,, + s,$, , + } + /^120000 blob /{ + s,^.* ,, + s,$, , + } + /^040000 tree /{ + s,^.* ,, + s,$,/, + } + s/^.* //')" \ + "$pfx" "$cur_" "" + ;; + *...*) + pfx="${cur_%...*}..." + cur_="${cur_#*...}" + __gitcomp_nl "$(__git_refs)" "$pfx" "$cur_" + ;; + *..*) + pfx="${cur_%..*}.." + cur_="${cur_#*..}" + __gitcomp_nl "$(__git_refs)" "$pfx" "$cur_" + ;; + *) + __gitcomp_nl "$(__git_refs)" + ;; + esac +} + + +# __git_complete_index_file requires 1 argument: +# 1: the options to pass to ls-file +# +# The exception is --committable, which finds the files appropriate commit. +__git_complete_index_file () +{ + local pfx="" cur_="$cur" + + case "$cur_" in + ?*/*) + pfx="${cur_%/*}" + cur_="${cur_##*/}" + pfx="${pfx}/" + ;; + esac + + __gitcomp_file "$(__git_index_files "$1" "$pfx")" "$pfx" "$cur_" +} + +__git_complete_file () +{ + __git_complete_revlist_file +} + +__git_complete_revlist () +{ + __git_complete_revlist_file +} + +__git_complete_remote_or_refspec () +{ + local cur_="$cur" cmd="${words[1]}" + local i c=2 remote="" pfx="" lhs=1 no_complete_refspec=0 + if [ "$cmd" = "remote" ]; then + ((c++)) + fi + while [ $c -lt $cword ]; do + i="${words[c]}" + case "$i" in + --mirror) [ "$cmd" = "push" ] && no_complete_refspec=1 ;; + --all) + case "$cmd" in + push) no_complete_refspec=1 ;; + fetch) + return + ;; + *) ;; + esac + ;; + -*) ;; + *) remote="$i"; break ;; + esac + ((c++)) + done + if [ -z "$remote" ]; then + __gitcomp_nl "$(__git_remotes)" + return + fi + if [ $no_complete_refspec = 1 ]; then + return + fi + [ "$remote" = "." ] && remote= + case "$cur_" in + *:*) + case "$COMP_WORDBREAKS" in + *:*) : great ;; + *) pfx="${cur_%%:*}:" ;; + esac + cur_="${cur_#*:}" + lhs=0 + ;; + +*) + pfx="+" + cur_="${cur_#+}" + ;; + esac + case "$cmd" in + fetch) + if [ $lhs = 1 ]; then + __gitcomp_nl "$(__git_refs2 "$remote")" "$pfx" "$cur_" + else + __gitcomp_nl "$(__git_refs)" "$pfx" "$cur_" + fi + ;; + pull|remote) + if [ $lhs = 1 ]; then + __gitcomp_nl "$(__git_refs "$remote")" "$pfx" "$cur_" + else + __gitcomp_nl "$(__git_refs)" "$pfx" "$cur_" + fi + ;; + push) + if [ $lhs = 1 ]; then + __gitcomp_nl "$(__git_refs)" "$pfx" "$cur_" + else + __gitcomp_nl "$(__git_refs "$remote")" "$pfx" "$cur_" + fi + ;; + esac +} + +__git_complete_strategy () +{ + __git_compute_merge_strategies + case "$prev" in + -s|--strategy) + __gitcomp "$__git_merge_strategies" + return 0 + esac + case "$cur" in + --strategy=*) + __gitcomp "$__git_merge_strategies" "" "${cur##--strategy=}" + return 0 + ;; + esac + return 1 +} + +__git_commands () { + if test -n "${GIT_TESTING_COMMAND_COMPLETION:-}" + then + printf "%s" "${GIT_TESTING_COMMAND_COMPLETION}" + else + git help -a|egrep '^ [a-zA-Z0-9]' + fi +} + +__git_list_all_commands () +{ + local i IFS=" "$'\n' + for i in $(__git_commands) + do + case $i in + *--*) : helper pattern;; + *) echo $i;; + esac + done +} + +__git_all_commands= +__git_compute_all_commands () +{ + test -n "$__git_all_commands" || + __git_all_commands=$(__git_list_all_commands) +} + +__git_list_porcelain_commands () +{ + local i IFS=" "$'\n' + __git_compute_all_commands + for i in $__git_all_commands + do + case $i in + *--*) : helper pattern;; + applymbox) : ask gittus;; + applypatch) : ask gittus;; + archimport) : import;; + cat-file) : plumbing;; + check-attr) : plumbing;; + check-ignore) : plumbing;; + check-mailmap) : plumbing;; + check-ref-format) : plumbing;; + checkout-index) : plumbing;; + commit-tree) : plumbing;; + count-objects) : infrequent;; + credential-cache) : credentials helper;; + credential-store) : credentials helper;; + cvsexportcommit) : export;; + cvsimport) : import;; + cvsserver) : daemon;; + daemon) : daemon;; + diff-files) : plumbing;; + diff-index) : plumbing;; + diff-tree) : plumbing;; + fast-import) : import;; + fast-export) : export;; + fsck-objects) : plumbing;; + fetch-pack) : plumbing;; + fmt-merge-msg) : plumbing;; + for-each-ref) : plumbing;; + hash-object) : plumbing;; + http-*) : transport;; + index-pack) : plumbing;; + init-db) : deprecated;; + local-fetch) : plumbing;; + lost-found) : infrequent;; + ls-files) : plumbing;; + ls-remote) : plumbing;; + ls-tree) : plumbing;; + mailinfo) : plumbing;; + mailsplit) : plumbing;; + merge-*) : plumbing;; + mktree) : plumbing;; + mktag) : plumbing;; + pack-objects) : plumbing;; + pack-redundant) : plumbing;; + pack-refs) : plumbing;; + parse-remote) : plumbing;; + patch-id) : plumbing;; + peek-remote) : plumbing;; + prune) : plumbing;; + prune-packed) : plumbing;; + quiltimport) : import;; + read-tree) : plumbing;; + receive-pack) : plumbing;; + remote-*) : transport;; + repo-config) : deprecated;; + rerere) : plumbing;; + rev-list) : plumbing;; + rev-parse) : plumbing;; + runstatus) : plumbing;; + sh-setup) : internal;; + shell) : daemon;; + show-ref) : plumbing;; + send-pack) : plumbing;; + show-index) : plumbing;; + ssh-*) : transport;; + stripspace) : plumbing;; + symbolic-ref) : plumbing;; + tar-tree) : deprecated;; + unpack-file) : plumbing;; + unpack-objects) : plumbing;; + update-index) : plumbing;; + update-ref) : plumbing;; + update-server-info) : daemon;; + upload-archive) : plumbing;; + upload-pack) : plumbing;; + write-tree) : plumbing;; + var) : infrequent;; + verify-pack) : infrequent;; + verify-tag) : plumbing;; + *) echo $i;; + esac + done +} + +__git_porcelain_commands= +__git_compute_porcelain_commands () +{ + __git_compute_all_commands + test -n "$__git_porcelain_commands" || + __git_porcelain_commands=$(__git_list_porcelain_commands) +} + +__git_pretty_aliases () +{ + local i IFS=$'\n' + for i in $(git --git-dir="$(__gitdir)" config --get-regexp "pretty\..*" 2>/dev/null); do + case "$i" in + pretty.*) + i="${i#pretty.}" + echo "${i/ */}" + ;; + esac + done +} + +__git_aliases () +{ + local i IFS=$'\n' + for i in $(git --git-dir="$(__gitdir)" config --get-regexp "alias\..*" 2>/dev/null); do + case "$i" in + alias.*) + i="${i#alias.}" + echo "${i/ */}" + ;; + esac + done +} + +# __git_aliased_command requires 1 argument +__git_aliased_command () +{ + local word cmdline=$(git --git-dir="$(__gitdir)" \ + config --get "alias.$1") + for word in $cmdline; do + case "$word" in + \!gitk|gitk) + echo "gitk" + return + ;; + \!*) : shell command alias ;; + -*) : option ;; + *=*) : setting env ;; + git) : git itself ;; + *) + echo "$word" + return + esac + done +} + +# __git_find_on_cmdline requires 1 argument +__git_find_on_cmdline () +{ + local word subcommand c=1 + while [ $c -lt $cword ]; do + word="${words[c]}" + for subcommand in $1; do + if [ "$subcommand" = "$word" ]; then + echo "$subcommand" + return + fi + done + ((c++)) + done +} + +__git_has_doubledash () +{ + local c=1 + while [ $c -lt $cword ]; do + if [ "--" = "${words[c]}" ]; then + return 0 + fi + ((c++)) + done + return 1 +} + +# Try to count non option arguments passed on the command line for the +# specified git command. +# When options are used, it is necessary to use the special -- option to +# tell the implementation were non option arguments begin. +# XXX this can not be improved, since options can appear everywhere, as +# an example: +# git mv x -n y +# +# __git_count_arguments requires 1 argument: the git command executed. +__git_count_arguments () +{ + local word i c=0 + + # Skip "git" (first argument) + for ((i=1; i < ${#words[@]}; i++)); do + word="${words[i]}" + + case "$word" in + --) + # Good; we can assume that the following are only non + # option arguments. + ((c = 0)) + ;; + "$1") + # Skip the specified git command and discard git + # main options + ((c = 0)) + ;; + ?*) + ((c++)) + ;; + esac + done + + printf "%d" $c +} + +__git_whitespacelist="nowarn warn error error-all fix" + +_git_am () +{ + local dir="$(__gitdir)" + if [ -d "$dir"/rebase-apply ]; then + __gitcomp "--skip --continue --resolved --abort" + return + fi + case "$cur" in + --whitespace=*) + __gitcomp "$__git_whitespacelist" "" "${cur##--whitespace=}" + return + ;; + --*) + __gitcomp " + --3way --committer-date-is-author-date --ignore-date + --ignore-whitespace --ignore-space-change + --interactive --keep --no-utf8 --signoff --utf8 + --whitespace= --scissors + " + return + esac +} + +_git_apply () +{ + case "$cur" in + --whitespace=*) + __gitcomp "$__git_whitespacelist" "" "${cur##--whitespace=}" + return + ;; + --*) + __gitcomp " + --stat --numstat --summary --check --index + --cached --index-info --reverse --reject --unidiff-zero + --apply --no-add --exclude= + --ignore-whitespace --ignore-space-change + --whitespace= --inaccurate-eof --verbose + " + return + esac +} + +_git_add () +{ + case "$cur" in + --*) + __gitcomp " + --interactive --refresh --patch --update --dry-run + --ignore-errors --intent-to-add + " + return + esac + + # XXX should we check for --update and --all options ? + __git_complete_index_file "--others --modified --directory --no-empty-directory" +} + +_git_archive () +{ + case "$cur" in + --format=*) + __gitcomp "$(git archive --list)" "" "${cur##--format=}" + return + ;; + --remote=*) + __gitcomp_nl "$(__git_remotes)" "" "${cur##--remote=}" + return + ;; + --*) + __gitcomp " + --format= --list --verbose + --prefix= --remote= --exec= + " + return + ;; + esac + __git_complete_file +} + +_git_bisect () +{ + __git_has_doubledash && return + + local subcommands="start bad good skip reset visualize replay log run" + local subcommand="$(__git_find_on_cmdline "$subcommands")" + if [ -z "$subcommand" ]; then + if [ -f "$(__gitdir)"/BISECT_START ]; then + __gitcomp "$subcommands" + else + __gitcomp "replay start" + fi + return + fi + + case "$subcommand" in + bad|good|reset|skip|start) + __gitcomp_nl "$(__git_refs)" + ;; + *) + ;; + esac +} + +_git_branch () +{ + local i c=1 only_local_ref="n" has_r="n" + + while [ $c -lt $cword ]; do + i="${words[c]}" + case "$i" in + -d|-m) only_local_ref="y" ;; + -r) has_r="y" ;; + esac + ((c++)) + done + + case "$cur" in + --set-upstream-to=*) + __gitcomp "$(__git_refs)" "" "${cur##--set-upstream-to=}" + ;; + --*) + __gitcomp " + --color --no-color --verbose --abbrev= --no-abbrev + --track --no-track --contains --merged --no-merged + --set-upstream-to= --edit-description --list + --unset-upstream + " + ;; + *) + if [ $only_local_ref = "y" -a $has_r = "n" ]; then + __gitcomp_nl "$(__git_heads)" + else + __gitcomp_nl "$(__git_refs)" + fi + ;; + esac +} + +_git_bundle () +{ + local cmd="${words[2]}" + case "$cword" in + 2) + __gitcomp "create list-heads verify unbundle" + ;; + 3) + # looking for a file + ;; + *) + case "$cmd" in + create) + __git_complete_revlist + ;; + esac + ;; + esac +} + +_git_checkout () +{ + __git_has_doubledash && return + + case "$cur" in + --conflict=*) + __gitcomp "diff3 merge" "" "${cur##--conflict=}" + ;; + --*) + __gitcomp " + --quiet --ours --theirs --track --no-track --merge + --conflict= --orphan --patch + " + ;; + *) + # check if --track, --no-track, or --no-guess was specified + # if so, disable DWIM mode + local flags="--track --no-track --no-guess" track=1 + if [ -n "$(__git_find_on_cmdline "$flags")" ]; then + track='' + fi + __gitcomp_nl "$(__git_refs '' $track)" + ;; + esac +} + +_git_cherry () +{ + __gitcomp "$(__git_refs)" +} + +_git_cherry_pick () +{ + local dir="$(__gitdir)" + if [ -f "$dir"/CHERRY_PICK_HEAD ]; then + __gitcomp "--continue --quit --abort" + return + fi + case "$cur" in + --*) + __gitcomp "--edit --no-commit --signoff --strategy= --mainline" + ;; + *) + __gitcomp_nl "$(__git_refs)" + ;; + esac +} + +_git_clean () +{ + case "$cur" in + --*) + __gitcomp "--dry-run --quiet" + return + ;; + esac + + # XXX should we check for -x option ? + __git_complete_index_file "--others --directory" +} + +_git_clone () +{ + case "$cur" in + --*) + __gitcomp " + --local + --no-hardlinks + --shared + --reference + --quiet + --no-checkout + --bare + --mirror + --origin + --upload-pack + --template= + --depth + --single-branch + --branch + " + return + ;; + esac +} + +_git_commit () +{ + case "$prev" in + -c|-C) + __gitcomp_nl "$(__git_refs)" "" "${cur}" + return + ;; + esac + + case "$cur" in + --cleanup=*) + __gitcomp "default strip verbatim whitespace + " "" "${cur##--cleanup=}" + return + ;; + --reuse-message=*|--reedit-message=*|\ + --fixup=*|--squash=*) + __gitcomp_nl "$(__git_refs)" "" "${cur#*=}" + return + ;; + --untracked-files=*) + __gitcomp "all no normal" "" "${cur##--untracked-files=}" + return + ;; + --*) + __gitcomp " + --all --author= --signoff --verify --no-verify + --edit --no-edit + --amend --include --only --interactive + --dry-run --reuse-message= --reedit-message= + --reset-author --file= --message= --template= + --cleanup= --untracked-files --untracked-files= + --verbose --quiet --fixup= --squash= + " + return + esac + + if git rev-parse --verify --quiet HEAD >/dev/null; then + __git_complete_index_file "--committable" + else + # This is the first commit + __git_complete_index_file "--cached" + fi +} + +_git_describe () +{ + case "$cur" in + --*) + __gitcomp " + --all --tags --contains --abbrev= --candidates= + --exact-match --debug --long --match --always + " + return + esac + __gitcomp_nl "$(__git_refs)" +} + +__git_diff_algorithms="myers minimal patience histogram" + +__git_diff_common_options="--stat --numstat --shortstat --summary + --patch-with-stat --name-only --name-status --color + --no-color --color-words --no-renames --check + --full-index --binary --abbrev --diff-filter= + --find-copies-harder + --text --ignore-space-at-eol --ignore-space-change + --ignore-all-space --exit-code --quiet --ext-diff + --no-ext-diff + --no-prefix --src-prefix= --dst-prefix= + --inter-hunk-context= + --patience --histogram --minimal + --raw --word-diff + --dirstat --dirstat= --dirstat-by-file + --dirstat-by-file= --cumulative + --diff-algorithm= +" + +_git_diff () +{ + __git_has_doubledash && return + + case "$cur" in + --diff-algorithm=*) + __gitcomp "$__git_diff_algorithms" "" "${cur##--diff-algorithm=}" + return + ;; + --*) + __gitcomp "--cached --staged --pickaxe-all --pickaxe-regex + --base --ours --theirs --no-index + $__git_diff_common_options + " + return + ;; + esac + __git_complete_revlist_file +} + +__git_mergetools_common="diffuse diffmerge ecmerge emerge kdiff3 meld opendiff + tkdiff vimdiff gvimdiff xxdiff araxis p4merge bc3 codecompare +" + +_git_difftool () +{ + __git_has_doubledash && return + + case "$cur" in + --tool=*) + __gitcomp "$__git_mergetools_common kompare" "" "${cur##--tool=}" + return + ;; + --*) + __gitcomp "--cached --staged --pickaxe-all --pickaxe-regex + --base --ours --theirs + --no-renames --diff-filter= --find-copies-harder + --relative --ignore-submodules + --tool=" + return + ;; + esac + __git_complete_revlist_file +} + +__git_fetch_options=" + --quiet --verbose --append --upload-pack --force --keep --depth= + --tags --no-tags --all --prune --dry-run +" + +_git_fetch () +{ + case "$cur" in + --*) + __gitcomp "$__git_fetch_options" + return + ;; + esac + __git_complete_remote_or_refspec +} + +__git_format_patch_options=" + --stdout --attach --no-attach --thread --thread= --no-thread + --numbered --start-number --numbered-files --keep-subject --signoff + --signature --no-signature --in-reply-to= --cc= --full-index --binary + --not --all --cover-letter --no-prefix --src-prefix= --dst-prefix= + --inline --suffix= --ignore-if-in-upstream --subject-prefix= + --output-directory --reroll-count --to= --quiet --notes +" + +_git_format_patch () +{ + case "$cur" in + --thread=*) + __gitcomp " + deep shallow + " "" "${cur##--thread=}" + return + ;; + --*) + __gitcomp "$__git_format_patch_options" + return + ;; + esac + __git_complete_revlist +} + +_git_fsck () +{ + case "$cur" in + --*) + __gitcomp " + --tags --root --unreachable --cache --no-reflogs --full + --strict --verbose --lost-found + " + return + ;; + esac +} + +_git_gc () +{ + case "$cur" in + --*) + __gitcomp "--prune --aggressive" + return + ;; + esac +} + +_git_gitk () +{ + _gitk +} + +__git_match_ctag() { + awk "/^${1////\\/}/ { print \$1 }" "$2" +} + +_git_grep () +{ + __git_has_doubledash && return + + case "$cur" in + --*) + __gitcomp " + --cached + --text --ignore-case --word-regexp --invert-match + --full-name --line-number + --extended-regexp --basic-regexp --fixed-strings + --perl-regexp + --files-with-matches --name-only + --files-without-match + --max-depth + --count + --and --or --not --all-match + " + return + ;; + esac + + case "$cword,$prev" in + 2,*|*,-*) + if test -r tags; then + __gitcomp_nl "$(__git_match_ctag "$cur" tags)" + return + fi + ;; + esac + + __gitcomp_nl "$(__git_refs)" +} + +_git_help () +{ + case "$cur" in + --*) + __gitcomp "--all --info --man --web" + return + ;; + esac + __git_compute_all_commands + __gitcomp "$__git_all_commands $(__git_aliases) + attributes cli core-tutorial cvs-migration + diffcore gitk glossary hooks ignore modules + namespaces repository-layout tutorial tutorial-2 + workflows + " +} + +_git_init () +{ + case "$cur" in + --shared=*) + __gitcomp " + false true umask group all world everybody + " "" "${cur##--shared=}" + return + ;; + --*) + __gitcomp "--quiet --bare --template= --shared --shared=" + return + ;; + esac +} + +_git_ls_files () +{ + case "$cur" in + --*) + __gitcomp "--cached --deleted --modified --others --ignored + --stage --directory --no-empty-directory --unmerged + --killed --exclude= --exclude-from= + --exclude-per-directory= --exclude-standard + --error-unmatch --with-tree= --full-name + --abbrev --ignored --exclude-per-directory + " + return + ;; + esac + + # XXX ignore options like --modified and always suggest all cached + # files. + __git_complete_index_file "--cached" +} + +_git_ls_remote () +{ + __gitcomp_nl "$(__git_remotes)" +} + +_git_ls_tree () +{ + __git_complete_file +} + +# Options that go well for log, shortlog and gitk +__git_log_common_options=" + --not --all + --branches --tags --remotes + --first-parent --merges --no-merges + --max-count= + --max-age= --since= --after= + --min-age= --until= --before= + --min-parents= --max-parents= + --no-min-parents --no-max-parents +" +# Options that go well for log and gitk (not shortlog) +__git_log_gitk_options=" + --dense --sparse --full-history + --simplify-merges --simplify-by-decoration + --left-right --notes --no-notes +" +# Options that go well for log and shortlog (not gitk) +__git_log_shortlog_options=" + --author= --committer= --grep= + --all-match +" + +__git_log_pretty_formats="oneline short medium full fuller email raw format:" +__git_log_date_formats="relative iso8601 rfc2822 short local default raw" + +_git_log () +{ + __git_has_doubledash && return + + local g="$(git rev-parse --git-dir 2>/dev/null)" + local merge="" + if [ -f "$g/MERGE_HEAD" ]; then + merge="--merge" + fi + case "$cur" in + --pretty=*|--format=*) + __gitcomp "$__git_log_pretty_formats $(__git_pretty_aliases) + " "" "${cur#*=}" + return + ;; + --date=*) + __gitcomp "$__git_log_date_formats" "" "${cur##--date=}" + return + ;; + --decorate=*) + __gitcomp "long short" "" "${cur##--decorate=}" + return + ;; + --*) + __gitcomp " + $__git_log_common_options + $__git_log_shortlog_options + $__git_log_gitk_options + --root --topo-order --date-order --reverse + --follow --full-diff + --abbrev-commit --abbrev= + --relative-date --date= + --pretty= --format= --oneline + --cherry-pick + --graph + --decorate --decorate= + --walk-reflogs + --parents --children + $merge + $__git_diff_common_options + --pickaxe-all --pickaxe-regex + " + return + ;; + esac + __git_complete_revlist +} + +__git_merge_options=" + --no-commit --no-stat --log --no-log --squash --strategy + --commit --stat --no-squash --ff --no-ff --ff-only --edit --no-edit +" + +_git_merge () +{ + __git_complete_strategy && return + + case "$cur" in + --*) + __gitcomp "$__git_merge_options" + return + esac + __gitcomp_nl "$(__git_refs)" +} + +_git_mergetool () +{ + case "$cur" in + --tool=*) + __gitcomp "$__git_mergetools_common tortoisemerge" "" "${cur##--tool=}" + return + ;; + --*) + __gitcomp "--tool=" + return + ;; + esac +} + +_git_merge_base () +{ + __gitcomp_nl "$(__git_refs)" +} + +_git_mv () +{ + case "$cur" in + --*) + __gitcomp "--dry-run" + return + ;; + esac + + if [ $(__git_count_arguments "mv") -gt 0 ]; then + # We need to show both cached and untracked files (including + # empty directories) since this may not be the last argument. + __git_complete_index_file "--cached --others --directory" + else + __git_complete_index_file "--cached" + fi +} + +_git_name_rev () +{ + __gitcomp "--tags --all --stdin" +} + +_git_notes () +{ + local subcommands='add append copy edit list prune remove show' + local subcommand="$(__git_find_on_cmdline "$subcommands")" + + case "$subcommand,$cur" in + ,--*) + __gitcomp '--ref' + ;; + ,*) + case "$prev" in + --ref) + __gitcomp_nl "$(__git_refs)" + ;; + *) + __gitcomp "$subcommands --ref" + ;; + esac + ;; + add,--reuse-message=*|append,--reuse-message=*|\ + add,--reedit-message=*|append,--reedit-message=*) + __gitcomp_nl "$(__git_refs)" "" "${cur#*=}" + ;; + add,--*|append,--*) + __gitcomp '--file= --message= --reedit-message= + --reuse-message=' + ;; + copy,--*) + __gitcomp '--stdin' + ;; + prune,--*) + __gitcomp '--dry-run --verbose' + ;; + prune,*) + ;; + *) + case "$prev" in + -m|-F) + ;; + *) + __gitcomp_nl "$(__git_refs)" + ;; + esac + ;; + esac +} + +_git_pull () +{ + __git_complete_strategy && return + + case "$cur" in + --*) + __gitcomp " + --rebase --no-rebase + $__git_merge_options + $__git_fetch_options + " + return + ;; + esac + __git_complete_remote_or_refspec +} + +_git_push () +{ + case "$prev" in + --repo) + __gitcomp_nl "$(__git_remotes)" + return + esac + case "$cur" in + --repo=*) + __gitcomp_nl "$(__git_remotes)" "" "${cur##--repo=}" + return + ;; + --*) + __gitcomp " + --all --mirror --tags --dry-run --force --verbose + --receive-pack= --repo= --set-upstream + " + return + ;; + esac + __git_complete_remote_or_refspec +} + +_git_rebase () +{ + local dir="$(__gitdir)" + if [ -d "$dir"/rebase-apply ] || [ -d "$dir"/rebase-merge ]; then + __gitcomp "--continue --skip --abort" + return + fi + __git_complete_strategy && return + case "$cur" in + --whitespace=*) + __gitcomp "$__git_whitespacelist" "" "${cur##--whitespace=}" + return + ;; + --*) + __gitcomp " + --onto --merge --strategy --interactive + --preserve-merges --stat --no-stat + --committer-date-is-author-date --ignore-date + --ignore-whitespace --whitespace= + --autosquash + " + + return + esac + __gitcomp_nl "$(__git_refs)" +} + +_git_reflog () +{ + local subcommands="show delete expire" + local subcommand="$(__git_find_on_cmdline "$subcommands")" + + if [ -z "$subcommand" ]; then + __gitcomp "$subcommands" + else + __gitcomp_nl "$(__git_refs)" + fi +} + +__git_send_email_confirm_options="always never auto cc compose" +__git_send_email_suppresscc_options="author self cc bodycc sob cccmd body all" + +_git_send_email () +{ + case "$cur" in + --confirm=*) + __gitcomp " + $__git_send_email_confirm_options + " "" "${cur##--confirm=}" + return + ;; + --suppress-cc=*) + __gitcomp " + $__git_send_email_suppresscc_options + " "" "${cur##--suppress-cc=}" + + return + ;; + --smtp-encryption=*) + __gitcomp "ssl tls" "" "${cur##--smtp-encryption=}" + return + ;; + --thread=*) + __gitcomp " + deep shallow + " "" "${cur##--thread=}" + return + ;; + --*) + __gitcomp "--annotate --bcc --cc --cc-cmd --chain-reply-to + --compose --confirm= --dry-run --envelope-sender + --from --identity + --in-reply-to --no-chain-reply-to --no-signed-off-by-cc + --no-suppress-from --no-thread --quiet + --signed-off-by-cc --smtp-pass --smtp-server + --smtp-server-port --smtp-encryption= --smtp-user + --subject --suppress-cc= --suppress-from --thread --to + --validate --no-validate + $__git_format_patch_options" + return + ;; + esac + __git_complete_revlist +} + +_git_stage () +{ + _git_add +} + +__git_config_get_set_variables () +{ + local prevword word config_file= c=$cword + while [ $c -gt 1 ]; do + word="${words[c]}" + case "$word" in + --system|--global|--local|--file=*) + config_file="$word" + break + ;; + -f|--file) + config_file="$word $prevword" + break + ;; + esac + prevword=$word + c=$((--c)) + done + + git --git-dir="$(__gitdir)" config $config_file --list 2>/dev/null | + while read -r line + do + case "$line" in + *.*=*) + echo "${line/=*/}" + ;; + esac + done +} + +_git_config () +{ + case "$prev" in + branch.*.remote|branch.*.pushremote) + __gitcomp_nl "$(__git_remotes)" + return + ;; + branch.*.merge) + __gitcomp_nl "$(__git_refs)" + return + ;; + branch.*.rebase) + __gitcomp "false true" + return + ;; + remote.pushdefault) + __gitcomp_nl "$(__git_remotes)" + return + ;; + remote.*.fetch) + local remote="${prev#remote.}" + remote="${remote%.fetch}" + if [ -z "$cur" ]; then + __gitcomp_nl "refs/heads/" "" "" "" + return + fi + __gitcomp_nl "$(__git_refs_remotes "$remote")" + return + ;; + remote.*.push) + local remote="${prev#remote.}" + remote="${remote%.push}" + __gitcomp_nl "$(git --git-dir="$(__gitdir)" \ + for-each-ref --format='%(refname):%(refname)' \ + refs/heads)" + return + ;; + pull.twohead|pull.octopus) + __git_compute_merge_strategies + __gitcomp "$__git_merge_strategies" + return + ;; + color.branch|color.diff|color.interactive|\ + color.showbranch|color.status|color.ui) + __gitcomp "always never auto" + return + ;; + color.pager) + __gitcomp "false true" + return + ;; + color.*.*) + __gitcomp " + normal black red green yellow blue magenta cyan white + bold dim ul blink reverse + " + return + ;; + diff.submodule) + __gitcomp "log short" + return + ;; + help.format) + __gitcomp "man info web html" + return + ;; + log.date) + __gitcomp "$__git_log_date_formats" + return + ;; + sendemail.aliasesfiletype) + __gitcomp "mutt mailrc pine elm gnus" + return + ;; + sendemail.confirm) + __gitcomp "$__git_send_email_confirm_options" + return + ;; + sendemail.suppresscc) + __gitcomp "$__git_send_email_suppresscc_options" + return + ;; + --get|--get-all|--unset|--unset-all) + __gitcomp_nl "$(__git_config_get_set_variables)" + return + ;; + *.*) + return + ;; + esac + case "$cur" in + --*) + __gitcomp " + --system --global --local --file= + --list --replace-all + --get --get-all --get-regexp + --add --unset --unset-all + --remove-section --rename-section + " + return + ;; + branch.*.*) + local pfx="${cur%.*}." cur_="${cur##*.}" + __gitcomp "remote pushremote merge mergeoptions rebase" "$pfx" "$cur_" + return + ;; + branch.*) + local pfx="${cur%.*}." cur_="${cur#*.}" + __gitcomp_nl "$(__git_heads)" "$pfx" "$cur_" "." + return + ;; + guitool.*.*) + local pfx="${cur%.*}." cur_="${cur##*.}" + __gitcomp " + argprompt cmd confirm needsfile noconsole norescan + prompt revprompt revunmerged title + " "$pfx" "$cur_" + return + ;; + difftool.*.*) + local pfx="${cur%.*}." cur_="${cur##*.}" + __gitcomp "cmd path" "$pfx" "$cur_" + return + ;; + man.*.*) + local pfx="${cur%.*}." cur_="${cur##*.}" + __gitcomp "cmd path" "$pfx" "$cur_" + return + ;; + mergetool.*.*) + local pfx="${cur%.*}." cur_="${cur##*.}" + __gitcomp "cmd path trustExitCode" "$pfx" "$cur_" + return + ;; + pager.*) + local pfx="${cur%.*}." cur_="${cur#*.}" + __git_compute_all_commands + __gitcomp_nl "$__git_all_commands" "$pfx" "$cur_" + return + ;; + remote.*.*) + local pfx="${cur%.*}." cur_="${cur##*.}" + __gitcomp " + url proxy fetch push mirror skipDefaultUpdate + receivepack uploadpack tagopt pushurl + " "$pfx" "$cur_" + return + ;; + remote.*) + local pfx="${cur%.*}." cur_="${cur#*.}" + __gitcomp_nl "$(__git_remotes)" "$pfx" "$cur_" "." + return + ;; + url.*.*) + local pfx="${cur%.*}." cur_="${cur##*.}" + __gitcomp "insteadOf pushInsteadOf" "$pfx" "$cur_" + return + ;; + esac + __gitcomp " + add.ignoreErrors + advice.commitBeforeMerge + advice.detachedHead + advice.implicitIdentity + advice.pushNonFastForward + advice.resolveConflict + advice.statusHints + alias. + am.keepcr + apply.ignorewhitespace + apply.whitespace + branch.autosetupmerge + branch.autosetuprebase + browser. + clean.requireForce + color.branch + color.branch.current + color.branch.local + color.branch.plain + color.branch.remote + color.decorate.HEAD + color.decorate.branch + color.decorate.remoteBranch + color.decorate.stash + color.decorate.tag + color.diff + color.diff.commit + color.diff.frag + color.diff.func + color.diff.meta + color.diff.new + color.diff.old + color.diff.plain + color.diff.whitespace + color.grep + color.grep.context + color.grep.filename + color.grep.function + color.grep.linenumber + color.grep.match + color.grep.selected + color.grep.separator + color.interactive + color.interactive.error + color.interactive.header + color.interactive.help + color.interactive.prompt + color.pager + color.showbranch + color.status + color.status.added + color.status.changed + color.status.header + color.status.nobranch + color.status.untracked + color.status.updated + color.ui + commit.status + commit.template + core.abbrev + core.askpass + core.attributesfile + core.autocrlf + core.bare + core.bigFileThreshold + core.compression + core.createObject + core.deltaBaseCacheLimit + core.editor + core.eol + core.excludesfile + core.fileMode + core.fsyncobjectfiles + core.gitProxy + core.ignoreStat + core.ignorecase + core.logAllRefUpdates + core.loosecompression + core.notesRef + core.packedGitLimit + core.packedGitWindowSize + core.pager + core.preferSymlinkRefs + core.preloadindex + core.quotepath + core.repositoryFormatVersion + core.safecrlf + core.sharedRepository + core.sparseCheckout + core.symlinks + core.trustctime + core.warnAmbiguousRefs + core.whitespace + core.worktree + diff.autorefreshindex + diff.external + diff.ignoreSubmodules + diff.mnemonicprefix + diff.noprefix + diff.renameLimit + diff.renames + diff.statGraphWidth + diff.submodule + diff.suppressBlankEmpty + diff.tool + diff.wordRegex + diff.algorithm + difftool. + difftool.prompt + fetch.recurseSubmodules + fetch.unpackLimit + format.attach + format.cc + format.headers + format.numbered + format.pretty + format.signature + format.signoff + format.subjectprefix + format.suffix + format.thread + format.to + gc. + gc.aggressiveWindow + gc.auto + gc.autopacklimit + gc.packrefs + gc.pruneexpire + gc.reflogexpire + gc.reflogexpireunreachable + gc.rerereresolved + gc.rerereunresolved + gitcvs.allbinary + gitcvs.commitmsgannotation + gitcvs.dbTableNamePrefix + gitcvs.dbdriver + gitcvs.dbname + gitcvs.dbpass + gitcvs.dbuser + gitcvs.enabled + gitcvs.logfile + gitcvs.usecrlfattr + guitool. + gui.blamehistoryctx + gui.commitmsgwidth + gui.copyblamethreshold + gui.diffcontext + gui.encoding + gui.fastcopyblame + gui.matchtrackingbranch + gui.newbranchtemplate + gui.pruneduringfetch + gui.spellingdictionary + gui.trustmtime + help.autocorrect + help.browser + help.format + http.lowSpeedLimit + http.lowSpeedTime + http.maxRequests + http.minSessions + http.noEPSV + http.postBuffer + http.proxy + http.sslCAInfo + http.sslCAPath + http.sslCert + http.sslCertPasswordProtected + http.sslKey + http.sslVerify + http.useragent + i18n.commitEncoding + i18n.logOutputEncoding + imap.authMethod + imap.folder + imap.host + imap.pass + imap.port + imap.preformattedHTML + imap.sslverify + imap.tunnel + imap.user + init.templatedir + instaweb.browser + instaweb.httpd + instaweb.local + instaweb.modulepath + instaweb.port + interactive.singlekey + log.date + log.decorate + log.showroot + mailmap.file + man. + man.viewer + merge. + merge.conflictstyle + merge.log + merge.renameLimit + merge.renormalize + merge.stat + merge.tool + merge.verbosity + mergetool. + mergetool.keepBackup + mergetool.keepTemporaries + mergetool.prompt + notes.displayRef + notes.rewrite. + notes.rewrite.amend + notes.rewrite.rebase + notes.rewriteMode + notes.rewriteRef + pack.compression + pack.deltaCacheLimit + pack.deltaCacheSize + pack.depth + pack.indexVersion + pack.packSizeLimit + pack.threads + pack.window + pack.windowMemory + pager. + pretty. + pull.octopus + pull.twohead + push.default + rebase.autosquash + rebase.stat + receive.autogc + receive.denyCurrentBranch + receive.denyDeleteCurrent + receive.denyDeletes + receive.denyNonFastForwards + receive.fsckObjects + receive.unpackLimit + receive.updateserverinfo + remote.pushdefault + remotes. + repack.usedeltabaseoffset + rerere.autoupdate + rerere.enabled + sendemail. + sendemail.aliasesfile + sendemail.aliasfiletype + sendemail.bcc + sendemail.cc + sendemail.cccmd + sendemail.chainreplyto + sendemail.confirm + sendemail.envelopesender + sendemail.from + sendemail.identity + sendemail.multiedit + sendemail.signedoffbycc + sendemail.smtpdomain + sendemail.smtpencryption + sendemail.smtppass + sendemail.smtpserver + sendemail.smtpserveroption + sendemail.smtpserverport + sendemail.smtpuser + sendemail.suppresscc + sendemail.suppressfrom + sendemail.thread + sendemail.to + sendemail.validate + showbranch.default + status.relativePaths + status.showUntrackedFiles + status.submodulesummary + submodule. + tar.umask + transfer.unpackLimit + url. + user.email + user.name + user.signingkey + web.browser + branch. remote. + " +} + +_git_remote () +{ + local subcommands="add rename remove set-head set-branches set-url show prune update" + local subcommand="$(__git_find_on_cmdline "$subcommands")" + if [ -z "$subcommand" ]; then + __gitcomp "$subcommands" + return + fi + + case "$subcommand" in + rename|remove|set-url|show|prune) + __gitcomp_nl "$(__git_remotes)" + ;; + set-head|set-branches) + __git_complete_remote_or_refspec + ;; + update) + local i c='' IFS=$'\n' + for i in $(git --git-dir="$(__gitdir)" config --get-regexp "remotes\..*" 2>/dev/null); do + i="${i#remotes.}" + c="$c ${i/ */}" + done + __gitcomp "$c" + ;; + *) + ;; + esac +} + +_git_replace () +{ + __gitcomp_nl "$(__git_refs)" +} + +_git_reset () +{ + __git_has_doubledash && return + + case "$cur" in + --*) + __gitcomp "--merge --mixed --hard --soft --patch" + return + ;; + esac + __gitcomp_nl "$(__git_refs)" +} + +_git_revert () +{ + case "$cur" in + --*) + __gitcomp "--edit --mainline --no-edit --no-commit --signoff" + return + ;; + esac + __gitcomp_nl "$(__git_refs)" +} + +_git_rm () +{ + case "$cur" in + --*) + __gitcomp "--cached --dry-run --ignore-unmatch --quiet" + return + ;; + esac + + __git_complete_index_file "--cached" +} + +_git_shortlog () +{ + __git_has_doubledash && return + + case "$cur" in + --*) + __gitcomp " + $__git_log_common_options + $__git_log_shortlog_options + --numbered --summary + " + return + ;; + esac + __git_complete_revlist +} + +_git_show () +{ + __git_has_doubledash && return + + case "$cur" in + --pretty=*|--format=*) + __gitcomp "$__git_log_pretty_formats $(__git_pretty_aliases) + " "" "${cur#*=}" + return + ;; + --diff-algorithm=*) + __gitcomp "$__git_diff_algorithms" "" "${cur##--diff-algorithm=}" + return + ;; + --*) + __gitcomp "--pretty= --format= --abbrev-commit --oneline + $__git_diff_common_options + " + return + ;; + esac + __git_complete_revlist_file +} + +_git_show_branch () +{ + case "$cur" in + --*) + __gitcomp " + --all --remotes --topo-order --current --more= + --list --independent --merge-base --no-name + --color --no-color + --sha1-name --sparse --topics --reflog + " + return + ;; + esac + __git_complete_revlist +} + +_git_stash () +{ + local save_opts='--keep-index --no-keep-index --quiet --patch' + local subcommands='save list show apply clear drop pop create branch' + local subcommand="$(__git_find_on_cmdline "$subcommands")" + if [ -z "$subcommand" ]; then + case "$cur" in + --*) + __gitcomp "$save_opts" + ;; + *) + if [ -z "$(__git_find_on_cmdline "$save_opts")" ]; then + __gitcomp "$subcommands" + fi + ;; + esac + else + case "$subcommand,$cur" in + save,--*) + __gitcomp "$save_opts" + ;; + apply,--*|pop,--*) + __gitcomp "--index --quiet" + ;; + show,--*|drop,--*|branch,--*) + ;; + show,*|apply,*|drop,*|pop,*|branch,*) + __gitcomp_nl "$(git --git-dir="$(__gitdir)" stash list \ + | sed -n -e 's/:.*//p')" + ;; + *) + ;; + esac + fi +} + +_git_submodule () +{ + __git_has_doubledash && return + + local subcommands="add status init deinit update summary foreach sync" + if [ -z "$(__git_find_on_cmdline "$subcommands")" ]; then + case "$cur" in + --*) + __gitcomp "--quiet --cached" + ;; + *) + __gitcomp "$subcommands" + ;; + esac + return + fi +} + +_git_svn () +{ + local subcommands=" + init fetch clone rebase dcommit log find-rev + set-tree commit-diff info create-ignore propget + proplist show-ignore show-externals branch tag blame + migrate mkdirs reset gc + " + local subcommand="$(__git_find_on_cmdline "$subcommands")" + if [ -z "$subcommand" ]; then + __gitcomp "$subcommands" + else + local remote_opts="--username= --config-dir= --no-auth-cache" + local fc_opts=" + --follow-parent --authors-file= --repack= + --no-metadata --use-svm-props --use-svnsync-props + --log-window-size= --no-checkout --quiet + --repack-flags --use-log-author --localtime + --ignore-paths= --include-paths= $remote_opts + " + local init_opts=" + --template= --shared= --trunk= --tags= + --branches= --stdlayout --minimize-url + --no-metadata --use-svm-props --use-svnsync-props + --rewrite-root= --prefix= --use-log-author + --add-author-from $remote_opts + " + local cmt_opts=" + --edit --rmdir --find-copies-harder --copy-similarity= + " + + case "$subcommand,$cur" in + fetch,--*) + __gitcomp "--revision= --fetch-all $fc_opts" + ;; + clone,--*) + __gitcomp "--revision= $fc_opts $init_opts" + ;; + init,--*) + __gitcomp "$init_opts" + ;; + dcommit,--*) + __gitcomp " + --merge --strategy= --verbose --dry-run + --fetch-all --no-rebase --commit-url + --revision --interactive $cmt_opts $fc_opts + " + ;; + set-tree,--*) + __gitcomp "--stdin $cmt_opts $fc_opts" + ;; + create-ignore,--*|propget,--*|proplist,--*|show-ignore,--*|\ + show-externals,--*|mkdirs,--*) + __gitcomp "--revision=" + ;; + log,--*) + __gitcomp " + --limit= --revision= --verbose --incremental + --oneline --show-commit --non-recursive + --authors-file= --color + " + ;; + rebase,--*) + __gitcomp " + --merge --verbose --strategy= --local + --fetch-all --dry-run $fc_opts + " + ;; + commit-diff,--*) + __gitcomp "--message= --file= --revision= $cmt_opts" + ;; + info,--*) + __gitcomp "--url" + ;; + branch,--*) + __gitcomp "--dry-run --message --tag" + ;; + tag,--*) + __gitcomp "--dry-run --message" + ;; + blame,--*) + __gitcomp "--git-format" + ;; + migrate,--*) + __gitcomp " + --config-dir= --ignore-paths= --minimize + --no-auth-cache --username= + " + ;; + reset,--*) + __gitcomp "--revision= --parent" + ;; + *) + ;; + esac + fi +} + +_git_tag () +{ + local i c=1 f=0 + while [ $c -lt $cword ]; do + i="${words[c]}" + case "$i" in + -d|-v) + __gitcomp_nl "$(__git_tags)" + return + ;; + -f) + f=1 + ;; + esac + ((c++)) + done + + case "$prev" in + -m|-F) + ;; + -*|tag) + if [ $f = 1 ]; then + __gitcomp_nl "$(__git_tags)" + fi + ;; + *) + __gitcomp_nl "$(__git_refs)" + ;; + esac +} + +_git_whatchanged () +{ + _git_log +} + +__git_main () +{ + local i c=1 command __git_dir + + while [ $c -lt $cword ]; do + i="${words[c]}" + case "$i" in + --git-dir=*) __git_dir="${i#--git-dir=}" ;; + --git-dir) ((c++)) ; __git_dir="${words[c]}" ;; + --bare) __git_dir="." ;; + --help) command="help"; break ;; + -c|--work-tree|--namespace) ((c++)) ;; + -*) ;; + *) command="$i"; break ;; + esac + ((c++)) + done + + if [ -z "$command" ]; then + case "$cur" in + --*) __gitcomp " + --paginate + --no-pager + --git-dir= + --bare + --version + --exec-path + --exec-path= + --html-path + --man-path + --info-path + --work-tree= + --namespace= + --no-replace-objects + --help + " + ;; + *) __git_compute_porcelain_commands + __gitcomp "$__git_porcelain_commands $(__git_aliases)" ;; + esac + return + fi + + local completion_func="_git_${command//-/_}" + declare -f $completion_func >/dev/null && $completion_func && return + + local expansion=$(__git_aliased_command "$command") + if [ -n "$expansion" ]; then + completion_func="_git_${expansion//-/_}" + declare -f $completion_func >/dev/null && $completion_func + fi +} + +__gitk_main () +{ + __git_has_doubledash && return + + local g="$(__gitdir)" + local merge="" + if [ -f "$g/MERGE_HEAD" ]; then + merge="--merge" + fi + case "$cur" in + --*) + __gitcomp " + $__git_log_common_options + $__git_log_gitk_options + $merge + " + return + ;; + esac + __git_complete_revlist +} + +if [[ -n ${ZSH_VERSION-} ]]; then + echo "WARNING: this script is deprecated, please see git-completion.zsh" 1>&2 + + autoload -U +X compinit && compinit + + __gitcomp () + { + emulate -L zsh + + local cur_="${3-$cur}" + + case "$cur_" in + --*=) + ;; + *) + local c IFS=$' \t\n' + local -a array + for c in ${=1}; do + c="$c${4-}" + case $c in + --*=*|*.) ;; + *) c="$c " ;; + esac + array[${#array[@]}+1]="$c" + done + compset -P '*[=:]' + compadd -Q -S '' -p "${2-}" -a -- array && _ret=0 + ;; + esac + } + + __gitcomp_nl () + { + emulate -L zsh + + local IFS=$'\n' + compset -P '*[=:]' + compadd -Q -S "${4- }" -p "${2-}" -- ${=1} && _ret=0 + } + + __gitcomp_file () + { + emulate -L zsh + + local IFS=$'\n' + compset -P '*[=:]' + compadd -Q -p "${2-}" -f -- ${=1} && _ret=0 + } + + _git () + { + local _ret=1 cur cword prev + cur=${words[CURRENT]} + prev=${words[CURRENT-1]} + let cword=CURRENT-1 + emulate ksh -c __${service}_main + let _ret && _default && _ret=0 + return _ret + } + + compdef _git git gitk + return +fi + +__git_func_wrap () +{ + local cur words cword prev + _get_comp_words_by_ref -n =: cur words cword prev + $1 +} + +# Setup completion for certain functions defined above by setting common +# variables and workarounds. +# This is NOT a public function; use at your own risk. +__git_complete () +{ + local wrapper="__git_wrap${2}" + eval "$wrapper () { __git_func_wrap $2 ; }" + complete -o bashdefault -o default -o nospace -F $wrapper $1 2>/dev/null \ + || complete -o default -o nospace -F $wrapper $1 +} + +# wrapper for backwards compatibility +_git () +{ + __git_wrap__git_main +} + +# wrapper for backwards compatibility +_gitk () +{ + __git_wrap__gitk_main +} + +__git_complete git __git_main +__git_complete gitk __gitk_main + +# The following are necessary only for Cygwin, and only are needed +# when the user has tab-completed the executable name and consequently +# included the '.exe' suffix. +# +if [ Cygwin = "$(uname -o 2>/dev/null)" ]; then +__git_complete git.exe __git_main +fi diff --git a/git/git-precommit b/git/git-precommit new file mode 100755 index 0000000..b1b584e --- /dev/null +++ b/git/git-precommit @@ -0,0 +1,30 @@ +#!/bin/sh + +echo "Would you like to play a game?" + +# Read user input, assign stdin to keyboard +exec < /dev/tty + +while read -p "Have you double checked that only relevant files were added? (Y/n) " yn; do + case $yn in + [Yy] ) break;; + [Nn] ) echo "Please ensure the right files were added!"; exit 1;; + * ) echo "Please answer y (yes) or n (no):" && continue; + esac +done +while read -p "Has the documentation been updated? (Y/n) " yn; do + case $yn in + [Yy] ) break;; + [Nn] ) echo "Please add or update the docs!"; exit 1;; + * ) echo "Please answer y (yes) or n (no):" && continue; + esac +done +while read -p "Do you know which issue or PR numbers to reference? (Y/n) " yn; do + case $yn in + [Yy] ) break;; + [Nn] ) echo "Better go check those tracking numbers!"; exit 1;; + * ) echo "Please answer y (yes) or n (no):" && continue; + esac +done + +exec <&- diff --git a/git/git-prompt.sh b/git/git-prompt.sh new file mode 100755 index 0000000..8fc27b4 --- /dev/null +++ b/git/git-prompt.sh @@ -0,0 +1,33 @@ +# Configure colors, if available. +if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then + c_reset=`tput sgr0` + c_user=`tput setaf 8` + c_path=`tput setaf 8` + c_git_clean=`tput setaf 2` + c_git_dirty=`tput setaf 1` +else + c_reset= + c_user= + c_git_cleancleann_path= + c_git_clean= + c_git_dirty= +fi +# Function to assemble the Git parsingart of our prompt. +git_prompt () +{ + if ! git rev-parse --git-dir > /dev/null 2>&1; then + return 0 + fi + git_branch=$(git branch 2>/dev/null | sed -n '/^\*/s/^\* //p') + if git diff --quiet 2>/dev/null >&2; then + git_color="$c_git_clean" + else + git_color="$c_git_dirty" + fi + echo "[$git_color$git_branch${c_reset}]" +} + +function tabc() { + NAME=$1; if [ -z "$NAME" ]; then NAME="Default"; fi + osascript -e "tell application \"Terminal\" to set current settings of front window to settings set \"$NAME\"" +} diff --git a/git/gitconfig b/git/gitconfig new file mode 100755 index 0000000..af50c98 --- /dev/null +++ b/git/gitconfig @@ -0,0 +1,22 @@ + +[hub] +protocol = https + + +[core] +excludesfile = /opt/boxen/config/git/gitignore +[user] + name = Colin Henry + email = jchenry@users.noreply.github.com +[push] + default = simple +[merge] + tool = kdiff3 +[alias] + lgb = log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset%n' --abbrev-commit --date=relative --branches +[mergetool "kdiff3"] + path = /Applications/kdiff3.app/Contents/MacOS/kdiff3 +[http] + sslverify = true +[url "git@github.com:"] + insteadOf = https://github.com/ diff --git a/git/githubzen.fortunes b/git/githubzen.fortunes new file mode 100755 index 0000000..1f4e3b4 --- /dev/null +++ b/git/githubzen.fortunes @@ -0,0 +1,27 @@ +It's not fully shipped until it's fast. +% +Practicality beats purity. +% +Avoid administrative distraction. +% +Mind your words, they are important. +% +Non-blocking is better than blocking. +% +Design for failure. +% +Half measures are as bad as nothing at all. +% +Favor focus over features. +% +Approachable is better than simple. +% +Encourage flow. +% +Anything added dilutes everything else. +% +Speak like a human. +% +Responsive is better than fast. +% +Keep it logically awesome. diff --git a/git/gitignore_global b/git/gitignore_global new file mode 100755 index 0000000..0fac0ea --- /dev/null +++ b/git/gitignore_global @@ -0,0 +1,86 @@ +# temp files +~* +# Compiled source # +################### +*.com +*.class +*.dll +*.exe +*.o +*.so +*.app + +# Packages # +############ +# it's better to unpack these files and commit the raw source +# git has its own built in compression methods +*.7z +*.dmg +*.gz +*.iso +*.jar +*.rar +*.tar +*.zip + + +#eclipse projects # +################### +*.classpath +*.project +.codepro/ +lib/*.jar +build/ +dist/ +tmp/ +logs/ +eclipse/ +precompiled/ +*.settings + + +# play project # +################ +test-result/ +db/h2/ +indicies/ +index/ + +# antlr project # +################# +gen/ +*.tokens + +# Logs and databases # +###################### +*.log +*.sql +*.sqlite + +# OS generated files # +###################### +.DS_Store +ehthumbs.db +Icon? +Thumbs.db + +# Trident specific files # +########################## +src/com/simplymeasured/trident/Version.java + +# Blog Generated Files # +######################## +_site/ + +# Maven Specific Files # +target/ + +# OS generated files # +###################### +.DS_Store +.DS_Store? +._* +.Spotlight-V100 +.Trashes +ehthumbs.db +Thumbs.db diff --git a/git/gitmessage b/git/gitmessage new file mode 100755 index 0000000..0093612 --- /dev/null +++ b/git/gitmessage @@ -0,0 +1,10 @@ +# If applied, this commit will... +# [Add/Fix/Remove/Update/Refactor/Document] [issue #id] [summary] + + +# Why is it necessary? (Bug fix, feature, improvements?) +- +# How does the change address the issue? +- +# What side effects does this change have? +- diff --git a/nano/nanorc b/nano/nanorc new file mode 100755 index 0000000..36a3399 --- /dev/null +++ b/nano/nanorc @@ -0,0 +1 @@ +#set historylog set multibuffer #set smooth #set suspend set tabsize 2 #set boldtext #set matchbrackets #set mouse include "/usr/local/share/nano/go.nanorc" syntax "nanorc" "\.?nanorc$" color brightwhite "^[[:space:]]*((un)?set|include|syntax|i?color).*$" color brightgreen "^[[:space:]]*(set|unset)[[:space:]]+(autoindent|backup|backupdir|backwards|boldtext|brackets|casesensitive|const|cut|fill|historylog|matchbrackets|morespace|mouse|multibuffer|noconvert|nofollow|nohelp|nonewlines|nowrap|operatingdir|preserve|punct)\>" "^[[:space:]]*(set|unset)[[:space:]]+(quickblank|quotestr|rebinddelete|rebindkeypad|regexp|smarthome|smooth|speller|suspend|tabsize|tabstospaces|tempfile|view|whitespace|wordbounds)\>" color green "^[[:space:]]*(set|unset|include|syntax|header)\>" color yellow "^[[:space:]]*i?color[[:space:]]*(bright)?(white|black|red|blue|green|yellow|magenta|cyan)?(,(white|black|red|blue|green|yellow|magenta|cyan))?\>" color magenta "^[[:space:]]*i?color\>" "\<(start|end)=" color white ""(\\.|[^"])*"" color brightblue "^[[:space:]]*#.*$" color cyan "^[[:space:]]*##.*$" syntax "Java source" "\.java$" icolor green "\<(boolean|byte|char|double|float|int|long|new|short|this|transient|void)\>" icolor red "\<(break|case|catch|continue|default|do|else|finally|for|if|return|switch|throw|try|while)\>" icolor cyan "\<(abstract|class|extends|final|implements|import|instanceof|interface|native|package|private|protected|public|static|strictfp|super|synchronized|throws|volatile)\>" icolor red ""[^\"]*"" icolor yellow "\<(true|false|null)\>" icolor blue "//.*" icolor blue start="/\*" end="\*/" icolor brightblue start="/\*\*" end="\*/" icolor brightgreen,green " +$" syntax "patch" "\.(patch|diff)$" icolor brightgreen "^\+.*" icolor green "^\+\+\+.*" icolor brightblue "^ .*" icolor brightred "^-.*" icolor red "^---.*" icolor brightyellow "^@@.*" icolor magenta "^diff.*" syntax "HTML" "\.html$" icolor blue start="<" end=">" icolor red "&[^; ]*;" syntax "HTML" "\.xml$" icolor blue start="<" end=">" icolor red "&[^; ]*;" ## Go Syntax Highlighting ## syntax "go" "\.go$" ## Types n stuff color green "\<((u)?int(8|16|32|64)?|float(32|64)|byte|string|interface|nil|bool|true|false)\>" color green "\<(package|import|const|var|type|struct|func)\>" color brightyellow "\<(for|range|if|else|case|default|switch)\>" color magenta "\<(continue|break|return)\>" ## Strings color brightyellow "".*"" color brightyellow "'.'" ## Comment highlighting color brightblue "//.*" color brightblue start="/\*" end="\*/" ## Trailing whitespace color ,green "[[:space:]]+$" \ No newline at end of file diff --git a/tmux/battery.sh b/tmux/battery.sh new file mode 100755 index 0000000..e0fc13d --- /dev/null +++ b/tmux/battery.sh @@ -0,0 +1,2 @@ +#!/bin/bash +ioreg -l | grep -i capacity | tr '\n' ' | ' | awk '{printf("%.2f%%", $10/$5 * 100)}' diff --git a/tmux/tmux.conf b/tmux/tmux.conf new file mode 100755 index 0000000..803adea --- /dev/null +++ b/tmux/tmux.conf @@ -0,0 +1,25 @@ +set-option -g prefix C-a + +# Set status bar +set -g status-bg black +set -g status-fg white +set -g status-left '' +set -g status-right '#[fg=green] #( uname -n ) | #( date "+%d %b %H:%M.%S")' + +# Highlight active window +set-window-option -g window-status-current-style bg=red + + +# Set window notifications +setw -g monitor-activity on +set -g visual-activity on + + +set-option -g status on +set-option -g status-interval 2 +set-option -g status-justify "centre" + + +# Fix LSOpenURLsWithRole() error on OS X. Requires reattach-to-user-namespace +# to be installed. +set-option -g default-command "which reattach-to-user-namespace > /dev/null && reattach-to-user-namespace -l $SHELL || $SHELL"