You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			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
 |