build.sh 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. #!/usr/bin/env bash
  2. ##########################################################################
  3. # This is the Cake bootstrapper script for Linux and OS X.
  4. # This file was downloaded from https://github.com/cake-build/resources
  5. # Feel free to change this file to fit your needs.
  6. ##########################################################################
  7. # Define directories.
  8. SCRIPT_DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
  9. TOOLS_DIR=$SCRIPT_DIR/tools
  10. NUGET_EXE=$TOOLS_DIR/nuget.exe
  11. CAKE_EXE=$TOOLS_DIR/Cake/Cake.exe
  12. PACKAGES_CONFIG=$TOOLS_DIR/packages.config
  13. PACKAGES_CONFIG_MD5=$TOOLS_DIR/packages.config.md5sum
  14. # Define md5sum or md5 depending on Linux/OSX
  15. MD5_EXE=
  16. if [[ "$(uname -s)" == "Darwin" ]]; then
  17. MD5_EXE="md5 -r"
  18. else
  19. MD5_EXE="md5sum"
  20. fi
  21. # Define default arguments.
  22. SCRIPT="build.cake"
  23. TARGET="Default"
  24. CONFIGURATION="Release"
  25. PLATFORM="Any CPU"
  26. VERBOSITY="verbose"
  27. DRYRUN=
  28. SKIP_TESTS=
  29. SHOW_VERSION=false
  30. SCRIPT_ARGUMENTS=()
  31. # Parse arguments.
  32. for i in "$@"; do
  33. case $1 in
  34. -s|--script) SCRIPT="$2"; shift ;;
  35. -t|--target) TARGET="$2"; shift ;;
  36. -p|--platform) PLATFORM="$2"; shift ;;
  37. -c|--configuration) CONFIGURATION="$2"; shift ;;
  38. --skip-tests) SKIP_TESTS="-skip-tests"; shift ;;
  39. -v|--verbosity) VERBOSITY="$2"; shift ;;
  40. -d|--dryrun) DRYRUN="-dryrun" ;;
  41. --version) SHOW_VERSION=true ;;
  42. --) shift; SCRIPT_ARGUMENTS+=("$@"); break ;;
  43. *) SCRIPT_ARGUMENTS+=("$1") ;;
  44. esac
  45. shift
  46. done
  47. # Make sure the tools folder exist.
  48. if [ ! -d "$TOOLS_DIR" ]; then
  49. mkdir "$TOOLS_DIR"
  50. fi
  51. # Make sure that packages.config exist.
  52. if [ ! -f "$TOOLS_DIR/packages.config" ]; then
  53. echo "Downloading packages.config..."
  54. curl -Lsfo "$TOOLS_DIR/packages.config" http://cakebuild.net/download/bootstrapper/packages
  55. if [ $? -ne 0 ]; then
  56. echo "An error occured while downloading packages.config."
  57. exit 1
  58. fi
  59. fi
  60. # Download NuGet if it does not exist.
  61. if [ ! -f "$NUGET_EXE" ]; then
  62. echo "Downloading NuGet..."
  63. curl -Lsfo "$NUGET_EXE" https://dist.nuget.org/win-x86-commandline/latest/nuget.exe
  64. if [ $? -ne 0 ]; then
  65. echo "An error occured while downloading nuget.exe."
  66. exit 1
  67. fi
  68. fi
  69. # Restore tools from NuGet.
  70. pushd "$TOOLS_DIR" >/dev/null
  71. if [ ! -f $PACKAGES_CONFIG_MD5 ] || [ "$( cat $PACKAGES_CONFIG_MD5 | sed 's/\r$//' )" != "$( $MD5_EXE $PACKAGES_CONFIG | awk '{ print $1 }' )" ]; then
  72. find . -type d ! -name . | xargs rm -rf
  73. fi
  74. mono "$NUGET_EXE" install -ExcludeVersion
  75. if [ $? -ne 0 ]; then
  76. echo "Could not restore NuGet packages."
  77. exit 1
  78. fi
  79. $MD5_EXE $PACKAGES_CONFIG | awk '{ print $1 }' >| $PACKAGES_CONFIG_MD5
  80. popd >/dev/null
  81. # Make sure that Cake has been installed.
  82. if [ ! -f "$CAKE_EXE" ]; then
  83. echo "Could not find Cake.exe at '$CAKE_EXE'."
  84. exit 1
  85. fi
  86. # Start Cake
  87. if $SHOW_VERSION; then
  88. exec mono "$CAKE_EXE" -version
  89. else
  90. exec mono "$CAKE_EXE" $SCRIPT -verbosity=$VERBOSITY -platform="$PLATFORM" -configuration="$CONFIGURATION" -target=$TARGET $DRYRUN $SKIP_TESTS "${SCRIPT_ARGUMENTS[@]}"
  91. fi