mirror of
				https://github.com/amix/vimrc
				synced 2025-10-30 21:43:35 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			113 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			113 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
| #!/bin/sh
 | |
| #
 | |
| # Install and setup a Vim or Neovim for running tests.
 | |
| # This should work on both Travis and people's desktop computers, and be 100%
 | |
| # independent from any system installed Vim.
 | |
| #
 | |
| # It will echo the full path to a Vim binary, e.g.:
 | |
| #   /some/path/src/vim
 | |
| 
 | |
| set -euC
 | |
| 
 | |
| vimgodir=$(cd -P "$(dirname "$0")/.." > /dev/null && pwd)
 | |
| cd "$vimgodir"
 | |
| 
 | |
| vim=${1:-}
 | |
| 
 | |
| case "$vim" in
 | |
|   "vim-7.4")
 | |
|     # This is what the most recent Ubuntu LTS (16.04) ships with.
 | |
|     tag="v7.4.1689"
 | |
|     giturl="https://github.com/vim/vim"
 | |
|     ;;
 | |
| 
 | |
|   "vim-8.0")
 | |
|     # This follows the version in Arch Linux. Vim's master branch isn't always
 | |
|     # stable, and we don't want to have the build fail because Vim introduced a
 | |
|     # bug.
 | |
|     tag="v8.0.1176"
 | |
|     giturl="https://github.com/vim/vim"
 | |
|     ;;
 | |
| 
 | |
|   "nvim")
 | |
|     # Use latest stable version.
 | |
|     tag="v0.2.0"
 | |
|     giturl="https://github.com/neovim/neovim"
 | |
|     ;;
 | |
| 
 | |
|   *)
 | |
|     echo "unknown version: '${1:-}'"
 | |
|     echo "First argument must be 'vim-7.4', 'vim-8.0', or 'nvim'."
 | |
|     exit 1
 | |
|     ;;
 | |
| esac
 | |
| 
 | |
| srcdir="/tmp/vim-go-test/$1-src"
 | |
| installdir="/tmp/vim-go-test/$1-install"
 | |
| 
 | |
| # Use cached installdir.
 | |
| if [ -d "$installdir" ]; then
 | |
|   echo "$installdir exists; skipping build."
 | |
| 
 | |
|   # The ./scripts/test script relies on this.
 | |
|   echo "installed to: $installdir"
 | |
|   exit 0
 | |
| fi
 | |
| 
 | |
| mkdir -p "$srcdir"
 | |
| cd "$srcdir"
 | |
| 
 | |
| # Neovim build requires more deps than Vim and is annoying, so we use the
 | |
| # binary.
 | |
| # 0.2.0 doesn't have a binary build for Linux, so we use 0.2.1-dev for now.
 | |
| if [ "$1" = "nvim" ]; then
 | |
| 
 | |
|   # TODO: Use macOS binaries on macOS
 | |
|   curl -Ls https://github.com/neovim/neovim/releases/download/nightly/nvim-linux64.tar.gz |
 | |
|     tar xzf - -C /tmp/vim-go-test/
 | |
|   mv /tmp/vim-go-test/nvim-linux64 /tmp/vim-go-test/nvim-install
 | |
|   mkdir -p "$installdir/share/nvim/runtime/pack/vim-go/start"
 | |
|   ln -s "$vimgodir" "$installdir/share/nvim/runtime/pack/vim-go/start/vim-go"
 | |
| 
 | |
|   # Consistent paths makes calling things easier.
 | |
|   mv "$installdir/bin/nvim" "$installdir/bin/vim"
 | |
|   mkdir -p "$installdir/share/vim/vimgo/pack"
 | |
|   ln -s "$installdir/share/nvim/runtime/pack/vim-go" "$installdir/share/vim/vimgo/pack/vim-go"
 | |
| 
 | |
| # Build Vim from source.
 | |
| else
 | |
|   if [ -d "$srcdir/.git" ]; then
 | |
|     echo "Skipping clone as $srcdir/.git exists"
 | |
|   else
 | |
|     echo "Cloning $tag from $giturl"
 | |
|     git clone --branch "$tag" --depth 1 "$giturl" "$srcdir"
 | |
|   fi
 | |
| 
 | |
|   ./configure --prefix="$installdir" --with-features=huge --disable-gui
 | |
|   make install
 | |
|   mkdir -p "$installdir/share/vim/vimgo/pack/vim-go/start"
 | |
|   ln -s "$vimgodir" "$installdir/share/vim/vimgo/pack/vim-go/start/vim-go"
 | |
| fi
 | |
| 
 | |
| # Make sure all Go tools and other dependencies are installed.
 | |
| echo "Installing Go binaries"
 | |
| export GOPATH=$installdir
 | |
| export PATH=${GOPATH}/bin:$PATH
 | |
| "$vimgodir/scripts/run-vim" $vim +':silent :GoUpdateBinaries' +':qa'
 | |
| 
 | |
| echo "Installing lint tools"
 | |
| (
 | |
|   mkdir -p "$installdir/share/vim/vimgo/pack/vim-go/start/"
 | |
|   cd "$installdir/share/vim/vimgo/pack/vim-go/start/"
 | |
|   [ -d "vim-vimhelplint" ] || git clone --depth 1 --quiet https://github.com/machakann/vim-vimhelplint
 | |
|   [ -d "vim-vimlparser" ]  || git clone --depth 1 --quiet https://github.com/ynkdir/vim-vimlparser
 | |
|   [ -d "vim-vimlint" ]     || git clone --depth 1 --quiet https://github.com/syngan/vim-vimlint
 | |
| )
 | |
| 
 | |
| # Don't really need source after successful install.
 | |
| rm -rf "$srcdir"
 | |
| 
 | |
| echo "installed to: $installdir"
 | |
| 
 | |
| # vim:ts=2:sts=2:sw=2:et
 | 
