130 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
			
		
		
	
	
			130 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
#!/usr/bin/env sh
 | 
						|
 | 
						|
set -e
 | 
						|
 | 
						|
untracked="(untracked)"
 | 
						|
REPO=$(cd $(dirname $0); pwd)
 | 
						|
COMMIT_SHA=$(git rev-parse --short HEAD)
 | 
						|
ASSETS="false"
 | 
						|
BINARY="false"
 | 
						|
RELEASE=""
 | 
						|
 | 
						|
debugInfo () {
 | 
						|
  echo "Repo:           $REPO"
 | 
						|
  echo "Build assets:   $ASSETS"
 | 
						|
  echo "Build binary:   $BINARY"
 | 
						|
  echo "Release:        $RELEASE"
 | 
						|
}
 | 
						|
 | 
						|
buildAssets () {
 | 
						|
  cd $REPO
 | 
						|
  rm -rf frontend/dist
 | 
						|
  rm -f http/rice-box.go
 | 
						|
 | 
						|
  cd $REPO/frontend
 | 
						|
 | 
						|
  if [ "$CI" = "true" ]; then
 | 
						|
    npm ci
 | 
						|
  else
 | 
						|
    npm install
 | 
						|
  fi
 | 
						|
 | 
						|
  npm run lint
 | 
						|
  npm run build
 | 
						|
}
 | 
						|
 | 
						|
buildBinary () {
 | 
						|
  if ! [ -x "$(command -v rice)" ]; then
 | 
						|
    go install github.com/GeertJohan/go.rice/rice
 | 
						|
  fi
 | 
						|
 | 
						|
  cd $REPO/http
 | 
						|
  rm -rf rice-box.go
 | 
						|
  rice embed-go
 | 
						|
 | 
						|
  cd $REPO
 | 
						|
  go build -a -o filebrowser -ldflags "-s -w -X github.com/filebrowser/filebrowser/v2/version.CommitSHA=$COMMIT_SHA"
 | 
						|
}
 | 
						|
 | 
						|
release () {
 | 
						|
  cd $REPO
 | 
						|
 | 
						|
  echo "π Checking semver format"
 | 
						|
 | 
						|
  if [ $# -ne 1 ]; then
 | 
						|
    echo "β This release script requires a single argument corresponding to the semver to be released. See semver.org"
 | 
						|
    exit 1
 | 
						|
  fi
 | 
						|
 | 
						|
  GREP="grep"
 | 
						|
  if [ -x "$(command -v ggrep)" ]; then
 | 
						|
    GREP="ggrep"
 | 
						|
  fi
 | 
						|
 | 
						|
  semver=$(echo "$1" | $GREP -P '^v(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)')
 | 
						|
 | 
						|
  if [ $? -ne 0 ]; then
 | 
						|
    echo "β Not valid semver format. See semver.org"
 | 
						|
    exit 1
 | 
						|
  fi
 | 
						|
 | 
						|
  echo "π§Ό  Tidying up go modules"
 | 
						|
  go mod tidy
 | 
						|
 | 
						|
  echo "π Creating a new commit for the new release"
 | 
						|
  git commit --allow-empty -am "chore: version $semver"
 | 
						|
  git tag "$1"
 | 
						|
  git push
 | 
						|
  git push --tags origin
 | 
						|
 | 
						|
  echo "π¦ Done! $semver released."
 | 
						|
}
 | 
						|
 | 
						|
usage() {
 | 
						|
  echo "Usage: $0 [-a] [-c] [-b] [-r <string>]" 1>&2;
 | 
						|
  exit 1;
 | 
						|
}
 | 
						|
 | 
						|
DEBUG="false"
 | 
						|
 | 
						|
while getopts "bacr:d" o; do
 | 
						|
  case "${o}" in
 | 
						|
    b)
 | 
						|
      ASSETS="true"
 | 
						|
      BINARY="true"
 | 
						|
      ;;
 | 
						|
    a)
 | 
						|
      ASSETS="true"
 | 
						|
      ;;
 | 
						|
    c)
 | 
						|
      BINARY="true"
 | 
						|
      ;;
 | 
						|
    r)
 | 
						|
      RELEASE=${OPTARG}
 | 
						|
      ;;
 | 
						|
    d)
 | 
						|
      DEBUG="true"
 | 
						|
      ;;
 | 
						|
    *)
 | 
						|
      usage
 | 
						|
      ;;
 | 
						|
  esac
 | 
						|
done
 | 
						|
shift $((OPTIND-1))
 | 
						|
 | 
						|
if [ "$DEBUG" = "true" ]; then
 | 
						|
  debugInfo
 | 
						|
fi
 | 
						|
 | 
						|
if [ "$ASSETS" = "true" ]; then
 | 
						|
  buildAssets
 | 
						|
fi
 | 
						|
 | 
						|
if [ "$BINARY" = "true" ]; then
 | 
						|
  buildBinary
 | 
						|
fi
 | 
						|
 | 
						|
if [ "$RELEASE" != "" ]; then
 | 
						|
  release $RELEASE
 | 
						|
fi
 |