5 echo " $0 restore <project> [-s <source>] ..."
6 echo " $0 build <project> [-c <configuration>] ..."
7 echo " $0 pack <project> [-c <configuration>] [-v <version>] ..."
8 echo " $0 install <project> [-t <type>]"
23 until [ $n -ge $RETRY ]; do
31 if [ $RET -eq 0 ]; then
55 update_version_to_asterisk() {
57 if [[ $PROJECT_TYPE == "csproj" ]]; then
59 elif [[ $PROJECT_TYPE == "dir" ]]; then
60 PROJS=$PROJECT/*.csproj
61 elif [[ $PROJECT_TYPE == "sln" ]]; then
62 PROJS=$(find . -name "*.csproj")
65 xmlstarlet ed -L -u "//PackageReference/@Version" --value "*" $p
66 xmlstarlet ed -L -u "//PackageReference/@version" --value "*" $p
71 local CSPROJ=$1; shift
73 local PROJNAME=${CSPROJ%.*}
74 local PROJECT_JSON=$PROJNAME.project.json
75 if [ -f $PROJECT_JSON ]; then
76 run_nuget restore $PROJECT_JSON
78 run_xbuild $CSPROJ /p:Configuration=$CONFIGURATION $@
82 if $USE_DOTNET_CLI; then
83 update_version_to_asterisk # update PackageReference version to * in .csproj
85 [ -n "$SOURCE" ] && OPTS="$OPTS -s $SOURCE"
86 run_dotnet restore $PROJECT $OPTS $@
88 if [[ $PROJECT_TYPE == "dir" ]]; then
89 local PROJFILES=$(find $PROJECT -name "*project.json")
90 for p in $PROJFILES; do
91 run_nuget restore $p $@
94 run_nuget restore $PROJECT $@
100 if $USE_DOTNET_CLI; then
101 cmd_restore # restore first
103 [ -n "$CONFIGURATION" ] && OPTS="$OPTS -c $CONFIGURATION"
104 run_dotnet build --no-restore $PROJECT $OPTS $@
106 if [[ $PROJECT_TYPE == "dir" ]]; then
107 local PROJFILES=$(find $PROJECT -name "*.csproj")
108 for p in $PROJFILES; do
111 elif [[ $PROJECT_TYPE == "sln" ]]; then
112 run_xbuild $PROJECT /p:Configuration=$CONFIGURATION $@
113 elif [[ $PROJECT_TYPE == "csproj" ]]; then
114 build_project $PROJECT $@
121 if $USE_DOTNET_CLI; then
122 [ -n "$CONFIGURATION" ] && OPTS="$OPTS -c $CONFIGURATION"
123 [ -n "$VERSION" ] && OPTS="$OPTS /p:Version=$VERSION"
124 run_dotnet pack --no-restore $PROJECT $OPTS $@
126 local NUSPEC=($PROJECT)
127 if [ -d $PROJECT ]; then
128 NUSPEC=($(find $PROJECT -name "*.nuspec"))
130 [ -n "$CONFIGURATION" ] && OPTS="$OPTS -Properties Configuration=$CONFIGURATION"
131 [ -n "$VERSION" ] && OPTS="$OPTS -Version $VERSION"
132 for x in ${NUSPEC[@]}; do
133 run_nuget pack $x $OPTS $@
143 if [[ $TYPE == "assembly" ]]; then
144 find $PROJECT/bin -name $PROJECT.dll -exec install -p -m 644 {} $DEST \;
145 elif [[ $TYPE == "nupkg" ]]; then
146 find . -name "$PROJECT.[0-9]*.nupkg" -exec install -p -m 644 {} $DEST \;
150 cmd_nuspec_addfile() {
152 local TARGET=$1; shift
154 CHK_FILES=$(xmlstarlet sel -t -v "count(/package/files)" $PROJECT)
155 if [ $CHK_FILES -eq 0 ]; then
156 xmlstarlet ed -L -s "/package" -t elem -n "files" -v "" $PROJECT
159 xmlstarlet ed -L -s "/package/files" -t elem -n "file" -v "" \
160 -i "/package/files/file[last()]" -t attr -n "src" -v "$SRC" \
161 -i "/package/files/file[last()]" -t attr -n "target" -v "$TARGET" \
165 #########################################################################
169 while getopts "s:c:v:t:" o; do
171 s) SOURCE=${OPTARG} ;;
172 c) CONFIGURATION=${OPTARG} ;;
173 v) VERSION=${OPTARG} ;;
180 if [ $# -lt 2 ]; then
187 # Check whether the project can be built using dotnet-cli
190 if [ -f $PROJECT ]; then
191 if [[ $PROJECT == *".sln" ]]; then
193 VS_VERSION=$(grep -E "^VisualStudioVersion" $PROJECT | cut -f2 -d= | xargs)
194 if [[ $VS_VERSION == "15."* ]]; then
197 elif [[ $PROJECT == *".csproj" ]]; then
198 PROJECT_TYPE="csproj"
199 RET=$(grep "Microsoft.NET.Sdk" $PROJECT | wc -l)
200 if [ $RET -gt 0 ]; then
203 elif [[ $PROJECT == *".project.json" ]]; then
204 PROJECT_TYPE="project.json"
206 elif [ -d $PROJECT ]; then
208 RET=$(find $PROJECT -name "*.project.json" | wc -l)
209 if [ $RET -eq 0 ]; then
210 CSPROJS=$(find $PROJECT -name "*.csproj")
211 for p in $CSPROJS; do
212 RET=$(grep "Microsoft.NET.Sdk" $p | wc -l)
213 if [ $RET -gt 0 ]; then
221 # Disable telemetry of dotnet
222 export DOTNET_CLI_TELEMETRY_OPTOUT=1
224 # To build PCL projects ReferenceAssemblyRoot should be set.
225 # dotnet-cli will find reference assemblies for PCL in this path.
226 export ReferenceAssemblyRoot=/usr/lib/mono/xbuild-frameworks
229 echo "----------------------------------------------"
231 echo "PROJECT=$PROJECT"
232 echo "PROJECT_TYPE=$PROJECT_TYPE"
233 echo "USE_DOTNET_CLI=$USE_DOTNET_CLI"
234 echo "SOURCE=$SOURCE"
235 echo "CONFIGURATION=$CONFIGURATION"
236 echo "VERSION=$VERSION"
239 echo "----------------------------------------------"
242 restore) cmd_restore $@ ;;
243 build) cmd_build $@ ;;
245 install) cmd_install $@ ;;
246 nuspec_addfile) cmd_nuspec_addfile $@ ;;