1
1
@ echo Off
2
+ setlocal enabledelayedexpansion
2
3
3
- set ExitCode = 0
4
+ set EXIT_CODE = 0
5
+ set SCRIPT_DIR = %~dp0
6
+ set SCRIPT_DIR = %SCRIPT_DIR:~0 ,-1 %
7
+ set BUILD_CONFIGURATION = Release
8
+ set BUILD_VERSION =
9
+ set PACKAGE_SUFFIX =
10
+ set SUFFIX_FOUND =
11
+ set TEMP_SUFFIX =
4
12
5
13
if /i " %~1 " == " /?" Goto :Usage
6
14
if /i " %~1 " == " -?" Goto :Usage
7
15
if /i " %~1 " == " --help" Goto :Usage
8
16
9
- REM The "VCBuildVersion" environment variable is referenced by the MSBuild processes during build.
10
- REM All binaries will be compiled with this version (e.g. .dlls + .exes). The packaging process uses
11
- REM the same environment variable to define the version of the NuGet package(s) produced. The build
12
- REM version can be overridden on the command line.
13
- if /i NOT " %~1 " == " " (
14
- set VCBuildVersion = %~1
17
+ for %%a in (%* ) do (
18
+
19
+ if defined SUFFIX_FOUND (
20
+ set SUFFIX_FOUND = !!
21
+
22
+ rem Note that we MUST use delayed variable expansion inside of the
23
+ rem 'for' loop here because environment variable are evaluated only once
24
+ rem before the 'for' loop begins otherwise (i.e. vs on each loop).
25
+ set TEMP_SUFFIX = %%a
26
+
27
+ :Loop
28
+ if " !TEMP_SUFFIX:~0 ,1 ! " == " -" (
29
+ set TEMP_SUFFIX = !TEMP_SUFFIX:~1 !
30
+ Goto :Loop
31
+ )
32
+
33
+ set PACKAGE_SUFFIX = !TEMP_SUFFIX!
34
+
35
+ ) else (
36
+ rem Pass in the --suffix flag to define a suffix for the NuGet package
37
+ rem build artifacts produced (e.g. suffix = -beta -> 1.16.25-beta)
38
+ if /i " %%a " == " --suffix" (
39
+ set SUFFIX_FOUND = " true"
40
+ )
41
+ )
42
+ )
43
+
44
+ for %%a in (%* ) do (
45
+
46
+ rem Build Configurations:
47
+ rem 1) Release (Default)
48
+ rem 2) Debug
49
+ rem
50
+ rem Pass in the --debug flag to use 'Debug' build configuration
51
+ if /i " %%a " == " --debug" (
52
+ set BUILD_CONFIGURATION = Debug
53
+ )
15
54
)
16
55
17
- if /i " %VCBuildVersion% " == " " (
18
- set VCBuildVersion = 0.0.1.0
56
+ rem The default build version is defined in the repo VERSION file.
57
+ set /p BUILD_VERSION = < %SCRIPT_DIR% \VERSION
58
+
59
+ rem The default build version can be overridden by the 'VCBUILD_VERSION'
60
+ rem environment variable
61
+ if defined VCBUILD_VERSION (
62
+ set BUILD_VERSION = %VCBUILD_VERSION%
19
63
)
20
64
21
- set VCSolutionDir = %~dp0 src\VirtualClient
22
- set PackageDir = %VCSolutionDir% \VirtualClient.Packaging
23
- set PackagesProject = %VCSolutionDir% \VirtualClient.Packaging\VirtualClient.Packaging.csproj
65
+ set PACKAGE_VERSION = %BUILD_VERSION%
66
+ if defined PACKAGE_SUFFIX set PACKAGE_VERSION = %BUILD_VERSION% -%PACKAGE_SUFFIX%
67
+
68
+ echo :
69
+ echo **********************************************************************
70
+ echo Build Version : %BUILD_VERSION%
71
+ echo Repo Root : %SCRIPT_DIR%
72
+ echo Configuration : %BUILD_CONFIGURATION%
73
+ echo Package Version : %PACKAGE_VERSION%
74
+ echo **********************************************************************
24
75
76
+ set VC_SOLUTION_DIR = %SCRIPT_DIR% \src\VirtualClient
77
+ set PACKAGE_DIR = %VC_SOLUTION_DIR% \VirtualClient.Packaging
78
+ set PACKAGES_PROJECT = %VC_SOLUTION_DIR% \VirtualClient.Packaging\VirtualClient.Packaging.csproj
25
79
26
80
REM The packages project itself is not meant to produce a binary/.dll and thus is not built. However, to ensure
27
81
REM the requisite NuGet package assets file exist in the local 'obj' folder, we need to perform a restore.
28
- call dotnet restore %PackagesProject % --force
82
+ call dotnet restore %PACKAGES_PROJECT % --force
29
83
30
84
echo :
31
- echo [Create NuGet Package] VirtualClient %VCBuildVersion%
32
- echo --------------------------------------------------
33
- call dotnet pack %PackagesProject% --force --no-restore --no-build -c Release -p:Version=%VCBuildVersion% -p:NuspecFile=%PackageDir% \nuspec\VirtualClient.nuspec && echo : || Goto :Error
85
+ echo [Create NuGet Package] VirtualClient.%PACKAGE_VERSION%
86
+ echo ----------------------------------------------------------
87
+ call dotnet pack %PACKAGES_PROJECT% --force --no-restore --no-build -c Release ^
88
+ -p:Version=%PACKAGE_VERSION% -p:NuspecFile=%PACKAGE_DIR% \nuspec\VirtualClient.nuspec && echo : || Goto :Error
34
89
35
90
echo :
36
- echo [Create NuGet Package] VirtualClient.Framework %VCBuildVersion%
37
- echo --------------------------------------------------
38
- call dotnet pack %PackagesProject% --force --no-restore --no-build -c Release -p:Version=%VCBuildVersion% -p:NuspecFile=%PackageDir% \nuspec\VirtualClient.Framework.nuspec && echo : || Goto :Error
91
+ echo [Create NuGet Package] VirtualClient.Framework.%PACKAGE_VERSION%
92
+ echo ----------------------------------------------------------
93
+ call dotnet pack %PACKAGES_PROJECT% --force --no-restore --no-build -c Release ^
94
+ -p:Version=%PACKAGE_VERSION% -p:NuspecFile=%PACKAGE_DIR% \nuspec\VirtualClient.Framework.nuspec && echo : || Goto :Error
39
95
40
96
echo :
41
- echo [Create NuGet Package] VirtualClient.TestFramework %VCBuildVersion%
42
- echo --------------------------------------------------
43
- call dotnet pack %PackagesProject% --force --no-restore --no-build -c Release -p:Version=%VCBuildVersion% -p:NuspecFile=%PackageDir% \nuspec\VirtualClient.TestFramework.nuspec && echo : || Goto :Error
97
+ echo [Create NuGet Package] VirtualClient.TestFramework.%PACKAGE_VERSION%
98
+ echo ----------------------------------------------------------
99
+ call dotnet pack %PACKAGES_PROJECT% --force --no-restore --no-build -c Release ^
100
+ -p:Version=%PACKAGE_VERSION% -p:NuspecFile=%PACKAGE_DIR% \nuspec\VirtualClient.TestFramework.nuspec && echo : || Goto :Error
101
+
44
102
Goto :End
45
103
104
+
46
105
:Usage
47
106
echo :
48
- echo Usage:
107
+ echo Creates packages from the build artifacts (e.g. NuGet).
108
+ echo :
109
+ echo Options:
49
110
echo ---------------------
50
- echo %~0
51
- echo %~0 {buildVersion}
111
+ echo --debug - Flag requests build configuration to be 'Debug' vs. the default 'Release'.
112
+ echo --suffix - Flag requests a suffix be added to the packages produced (e.g. virtualclient.1.16.25-beta).
113
+ echo Valid values include: alpha, beta.
52
114
echo :
115
+ echo Usage:
116
+ echo ---------------------
117
+ echo build-packages.cmd [--debug] [--suffix < alpha| beta> ]
53
118
echo :
54
119
echo Examples:
55
120
echo ---------------------
56
- echo # Build packages using default build version
57
- echo %~0
121
+ echo %SCRIPT_DIR% ^ > build-packages.cmd
58
122
echo :
59
- echo # Pass the build/package version into the command
60
- echo %~0 1.0.1485.571
123
+ echo %SCRIPT_DIR% ^ > build-packages.cmd --debug
61
124
echo :
62
- echo # Set the build/package version in an environment variable, then build
63
- echo set VCBuildVersion=1.0.1485.571
64
- echo %~0
125
+ echo %SCRIPT_DIR% ^ > build-packages.cmd --suffix beta
65
126
echo :
127
+ echo %SCRIPT_DIR% ^ > set VCBUILD_VERSION = 1.16.25
128
+ echo %SCRIPT_DIR% ^ > build.cmd --debug --suffix beta
66
129
Goto :Finish
67
130
131
+
68
132
:Error
69
- set ExitCode = %ERRORLEVEL%
133
+ set EXIT_CODE = %ERRORLEVEL%
134
+
70
135
71
136
:End
72
137
REM Reset environment variables
73
- set PackageDir =
74
- set PackagesProject =
75
- set VCSolutionDir =
76
- echo Packaging Stage Exit Code: %ExitCode%
138
+ set BUILD_CONFIGURATION =
139
+ set BUILD_VERSION =
140
+ set PACKAGE_SUFFIX =
141
+ set PACKAGE_VERSION =
142
+ set SCRIPT_DIR =
143
+ set SUFFIX_FOUND =
144
+ set TEMP_SUFFIX =
145
+ set VC_SOLUTION_DIR =
146
+
147
+ echo Packaging Stage Exit Code: %EXIT_CODE%
148
+
77
149
78
150
:Finish
79
- exit /B %ExitCode %
151
+ exit /B %EXIT_CODE %
0 commit comments