Revert "Update dotnet-sdk to 3.1.201"
[platform/core/dotnet/build-tools.git] / Tools / dotnet-build.sh
1 #!/bin/bash
2
3 SCRIPT_FILE=$(readlink -f $0)
4 SCRIPT_DIR=$(dirname $SCRIPT_FILE)
5
6 TIMEOUT_CMD="$SCRIPT_DIR/timeout.sh"
7 RETRY_CMD="$SCRIPT_DIR/retry.sh"
8
9 usage() {
10   echo "usage: "
11   echo " $0 restore <project> [-s <source>] ..."
12   echo " $0 build <project> [-c <configuration>] ..."
13   echo " $0 pack <project> [-c <configuration>] [-v <version>] ..."
14   echo " $0 install <project> [-t <type>]"
15 }
16
17 exit_on_error() {
18   if [ $1 -ne 0 ]; then
19     echo "Error $1"
20     exit $1
21   fi
22 }
23
24 run_dotnet() {
25   echo "+ dotnet $@"
26   $RETRY_CMD $TIMEOUT_CMD 600 dotnet $@ /nologo
27   exit_on_error $?
28 }
29
30 cmd_restore() {
31   local OPTS=""
32   [ -n "$SOURCE" ] && OPTS="$OPTS -s $SOURCE"
33   run_dotnet restore $PROJECT $OPTS $@
34 }
35
36 cmd_build() {
37   cmd_restore # restore first
38   local OPTS=""
39   [ -n "$CONFIGURATION" ] && OPTS="$OPTS -c $CONFIGURATION"
40   run_dotnet build --no-restore $PROJECT $OPTS $@ /p:UsingRPMMacro=true
41 }
42
43 cmd_pack() {
44   local OPTS=""
45   [ -n "$CONFIGURATION" ] && OPTS="$OPTS -c $CONFIGURATION"
46   [ -n "$VERSION" ] && OPTS="$OPTS /p:Version=$VERSION"
47   if [[ $PROJECT == *".nuspec" ]]; then
48     NUSPECPATH=$(readlink -f $PROJECT)
49     OPTS="$OPTS /p:NuspecFile=$NUSPECPATH /p:PWD=$PWD"
50     TMPDIR=$(mktemp -d)
51     cp $SCRIPT_DIR/dummypack.csproj $TMPDIR
52     PROJECT=$TMPDIR/dummypack.csproj
53     run_dotnet restore $PROJECT -s /nuget/
54   fi
55   run_dotnet pack --no-build --no-restore $PRE_OPTS $PROJECT $OPTS $@ /p:UsingRPMMacro=true
56 }
57
58 cmd_install() {
59   local DEST=$1; shift
60   mkdir -p $DEST
61   if [[ $TYPE == "assembly" ]]; then
62     find $PROJECT/bin -name $PROJECT.dll -not -path "*/ref/*" -exec install -p -m 644 {} $DEST \;
63   elif [[ $TYPE == "nupkg" ]]; then
64     find . -name "$PROJECT.[0-9]*.nupkg" -exec install -p -m 644 {} $DEST \;
65   fi
66 }
67
68 #########################################################################
69
70 # Parse arguments
71
72 while getopts "s:c:v:t:" o; do
73   case "$o" in
74     s) SOURCE=${OPTARG} ;;
75     c) CONFIGURATION=${OPTARG} ;;
76     v) VERSION=${OPTARG} ;;
77     t) TYPE=${OPTARG} ;;
78     *) usage; exit 1 ;;
79   esac
80 done
81 shift $((OPTIND-1))
82
83 if [ $# -lt 2 ]; then
84   usage; exit 1
85 fi
86
87 CMD=$1; shift
88 PROJECT=$1; shift
89
90 export DOTNET_CLI_TELEMETRY_OPTOUT=1
91 export DOTNET_SKIP_FIRST_TIME_EXPERIENCE=true
92
93 # Dump
94 echo "----------------------------------------------"
95 echo "CMD=$CMD"
96 echo "PROJECT=$PROJECT"
97 echo "SOURCE=$SOURCE"
98 echo "CONFIGURATION=$CONFIGURATION"
99 echo "VERSION=$VERSION"
100 echo "TYPE=$TYPE"
101 echo "REST ARGS=$@"
102 echo "----------------------------------------------"
103
104 case $CMD in
105   restore) cmd_restore $@ ;;
106   build) cmd_build $@ ;;
107   pack) cmd_pack $@ ;;
108   install) cmd_install $@ ;;
109   *) usage; exit 1 ;;
110 esac