diff --git a/.config/dotnet-tools.json b/.config/dotnet-tools.json new file mode 100644 index 0000000..8f3a438 --- /dev/null +++ b/.config/dotnet-tools.json @@ -0,0 +1,12 @@ +{ + "version": 1, + "isRoot": true, + "tools": { + "cake.tool": { + "version": "3.1.0", + "commands": [ + "dotnet-cake" + ] + } + } +} \ No newline at end of file diff --git a/Build/BSN.Commons.Orm.EntityFramework.nuspec b/Build/BSN.Commons.Orm.EntityFramework.nuspec index 0f3b2af..e9be6f6 100644 --- a/Build/BSN.Commons.Orm.EntityFramework.nuspec +++ b/Build/BSN.Commons.Orm.EntityFramework.nuspec @@ -2,7 +2,7 @@ BSN.Commons.Orm.EntityFramework - 1.10.3 + 1.11.0 Seyyed Soroosh Hosseinalipour sorosh_sabz, BSN MIT diff --git a/Build/BSN.Commons.Users.nuspec b/Build/BSN.Commons.Users.nuspec index 2a11104..0bd4289 100644 --- a/Build/BSN.Commons.Users.nuspec +++ b/Build/BSN.Commons.Users.nuspec @@ -2,7 +2,7 @@ BSN.Commons.Users - 1.10.3 + 1.11.0 Seyyed Soroosh Hosseinalipour sorosh_sabz, BSN MIT diff --git a/Build/build.cake b/Build/build.cake index f7b270b..f34957a 100644 --- a/Build/build.cake +++ b/Build/build.cake @@ -1,22 +1,21 @@ -#tool "nuget:?package=coveralls.io&version=1.4.2" -#tool "nuget:?package=GitVersion.CommandLine&version=5.1.3" +#tool "nuget:?package=GitVersion.CommandLine&version=5.12.0" #tool "nuget:?package=gitlink&version=3.1.0" #tool "nuget:?package=GitReleaseNotes&version=0.7.1" -#tool "nuget:?package=NUnit.ConsoleRunner&version=3.11.1" +#tool dotnet:?package=dotnet-reportgenerator-globaltool&version=5.1.19 -#addin "nuget:?package=Cake.Git&version=0.21.0" -#addin "nuget:?package=Nuget.Core&version=2.14.0" -#addin "nuget:?package=Cake.Coveralls&version=0.10.1" -#addin "nuget:?package=Cake.Coverlet&version=2.3.4" +#addin "nuget:?package=Cake.Coveralls&version=1.1.0" +#addin "nuget:?package=Cake.Coverlet&version=3.0.4" +#addin "nuget:?package=Cake.Git&version=3.0.0" +#addin "nuget:?package=NuGet.Packaging&version=6.6.1" -using NuGet; +using NuGet.Packaging; var target = Argument("target", "Default"); var artifactsDir = "./artifacts/"; var solutionPath = "../BSN.Commons.sln"; var projectName = "BSN.Commons"; var projectFolder = "../Source/"; -var solutionVersion = "1.10.3"; +var solutionVersion = "1.11.0"; var projects = new List<(string path, string name, string version)> { ("BSN.Commons/", "BSN.Commons.csproj", solutionVersion), @@ -59,7 +58,7 @@ Task("Clean") ); } CreateDirectory(artifactsDir); - DotNetCoreClean(solutionPath); + DotNetClean(solutionPath); }); @@ -90,9 +89,9 @@ Task("Build") .IsDependentOn("Restore") .IsDependentOn("Clean") .Does(() => { - DotNetCoreBuild( + DotNetBuild( solutionPath, - new DotNetCoreBuildSettings + new DotNetBuildSettings { Configuration = configuration } @@ -107,7 +106,7 @@ Task("Test") var specificCoverageResultsFileName = testProject.name + coverageResultsFileName; var specificTestResultsFileName = testProject.name + testResultsFileName; - var settings = new DotNetCoreTestSettings { + var settings = new DotNetTestSettings { VSTestReportPath = new FilePath(artifactsDir + specificTestResultsFileName) }; @@ -118,7 +117,7 @@ Task("Test") CoverletOutputName = specificCoverageResultsFileName }; - DotNetCoreTest(testFolder + testProject.path + testProject.name, settings, coverletSettings); + DotNetTest(testFolder + testProject.path + testProject.name, settings, coverletSettings); if (AppVeyor.IsRunningOnAppVeyor) @@ -139,7 +138,7 @@ Task("UploadCoverage") Task("Package") .IsDependentOn("Version") .Does(() => { - var settings = new DotNetCorePackSettings + var settings = new DotNetPackSettings { OutputDirectory = artifactsDir, NoBuild = true, @@ -172,7 +171,7 @@ Task("Package") continue; } - DotNetCorePack(projectFolder + project.path + project.name, settings); + DotNetPack(projectFolder + project.path + project.name, settings); } if (AppVeyor.IsRunningOnAppVeyor) @@ -185,7 +184,7 @@ Task("Package") Task("Publish") .IsDependentOn("Package") .Does(() => { - var pushSettings = new DotNetCoreNuGetPushSettings + var pushSettings = new DotNetNuGetPushSettings { Source = nugetSource, ApiKey = nugetApiKey @@ -197,7 +196,7 @@ Task("Publish") if(!IsNuGetPublished(pkg)) { Information($"Publishing \"{pkg}\"."); - DotNetCoreNuGetPush(pkg.FullPath, pushSettings); + DotNetNuGetPush(pkg.FullPath, pushSettings); } else { Information($"Bypassing publishing \"{pkg}\" as it is already published."); @@ -207,17 +206,17 @@ Task("Publish") }); private bool IsNuGetPublished(FilePath packagePath) { - var package = new ZipPackage(packagePath.FullPath); + using var package = new PackageArchiveReader(new FileStream(packagePath.FullPath, FileMode.Open)); var latestPublishedVersions = NuGetList( - package.Id, + package.NuspecReader.GetId(), new NuGetListSettings { Prerelease = true } ); - return latestPublishedVersions.Any(p => package.Version.Equals(new SemanticVersion(p.Version))); + return latestPublishedVersions.Any(p => package.NuspecReader.GetVersion().Equals(p.Version)); } private void UpdateVersion(string projectPath, string version) diff --git a/Build/build.ps1 b/Build/build.ps1 index 1d4d63f..58bfd66 100644 --- a/Build/build.ps1 +++ b/Build/build.ps1 @@ -1,3 +1,5 @@ +# ITNOA + ########################################################################## # This is the Cake bootstrapper script for PowerShell. # This file was downloaded from https://github.com/cake-build/resources @@ -37,7 +39,8 @@ https://cakebuild.net [CmdletBinding()] Param( - [string]$Script = "build.cake", + # TODO: https://devblogs.microsoft.com/scripting/powertip-identify-which-platform-powershell-is-running-on/ + [string]$Script = "windows-build.cake", [string]$Target, [string]$Configuration, [ValidateSet("Quiet", "Minimal", "Normal", "Verbose", "Diagnostic")] @@ -50,195 +53,48 @@ Param( [string[]]$ScriptArgs ) -# Attempt to set highest encryption available for SecurityProtocol. -# PowerShell will not set this by default (until maybe .NET 4.6.x). This -# will typically produce a message for PowerShell v2 (just an info -# message though) -try { - # Set TLS 1.2 (3072), then TLS 1.1 (768), then TLS 1.0 (192), finally SSL 3.0 (48) - # Use integers because the enumeration values for TLS 1.2 and TLS 1.1 won't - # exist in .NET 4.0, even though they are addressable if .NET 4.5+ is - # installed (.NET 4.5 is an in-place upgrade). - [System.Net.ServicePointManager]::SecurityProtocol = 3072 -bor 768 -bor 192 -bor 48 - } catch { - Write-Output 'Unable to set PowerShell to use TLS 1.2 and TLS 1.1 due to old .NET Framework installed. If you see underlying connection closed or trust errors, you may need to upgrade to .NET Framework 4.5+ and PowerShell v3' - } - -[Reflection.Assembly]::LoadWithPartialName("System.Security") | Out-Null -function MD5HashFile([string] $filePath) -{ - if ([string]::IsNullOrEmpty($filePath) -or !(Test-Path $filePath -PathType Leaf)) - { - return $null - } - - [System.IO.Stream] $file = $null; - [System.Security.Cryptography.MD5] $md5 = $null; - try - { - $md5 = [System.Security.Cryptography.MD5]::Create() - $file = [System.IO.File]::OpenRead($filePath) - return [System.BitConverter]::ToString($md5.ComputeHash($file)) - } - finally - { - if ($file -ne $null) - { - $file.Dispose() - } - } -} - -function GetProxyEnabledWebClient -{ - $wc = New-Object System.Net.WebClient - $proxy = [System.Net.WebRequest]::GetSystemWebProxy() - $proxy.Credentials = [System.Net.CredentialCache]::DefaultCredentials - $wc.Proxy = $proxy - return $wc -} - -Write-Host "Preparing to run build script..." - -if(!$PSScriptRoot){ - $PSScriptRoot = Split-Path $MyInvocation.MyCommand.Path -Parent -} - -$TOOLS_DIR = Join-Path $PSScriptRoot "tools" -$ADDINS_DIR = Join-Path $TOOLS_DIR "Addins" -$MODULES_DIR = Join-Path $TOOLS_DIR "Modules" -$NUGET_EXE = Join-Path $TOOLS_DIR "nuget.exe" -$CAKE_EXE = Join-Path $TOOLS_DIR "Cake/Cake.exe" -$NUGET_URL = "https://dist.nuget.org/win-x86-commandline/latest/nuget.exe" -$PACKAGES_CONFIG = Join-Path $TOOLS_DIR "packages.config" -$PACKAGES_CONFIG_MD5 = Join-Path $TOOLS_DIR "packages.config.md5sum" -$ADDINS_PACKAGES_CONFIG = Join-Path $ADDINS_DIR "packages.config" -$MODULES_PACKAGES_CONFIG = Join-Path $MODULES_DIR "packages.config" - -# Make sure tools folder exists -if ((Test-Path $PSScriptRoot) -and !(Test-Path $TOOLS_DIR)) { - Write-Verbose -Message "Creating tools directory..." - New-Item -Path $TOOLS_DIR -Type directory | out-null -} - -# Make sure that packages.config exist. -if (!(Test-Path $PACKAGES_CONFIG)) { - Write-Verbose -Message "Downloading packages.config..." - try { - $wc = GetProxyEnabledWebClient - $wc.DownloadFile("https://cakebuild.net/download/bootstrapper/packages", $PACKAGES_CONFIG) - } catch { - Throw "Could not download packages.config." - } -} - -# Try find NuGet.exe in path if not exists -if (!(Test-Path $NUGET_EXE)) { - Write-Verbose -Message "Trying to find nuget.exe in PATH..." - $existingPaths = $Env:Path -Split ';' | Where-Object { (![string]::IsNullOrEmpty($_)) -and (Test-Path $_ -PathType Container) } - $NUGET_EXE_IN_PATH = Get-ChildItem -Path $existingPaths -Filter "nuget.exe" | Select -First 1 - if ($NUGET_EXE_IN_PATH -ne $null -and (Test-Path $NUGET_EXE_IN_PATH.FullName)) { - Write-Verbose -Message "Found in PATH at $($NUGET_EXE_IN_PATH.FullName)." - $NUGET_EXE = $NUGET_EXE_IN_PATH.FullName - } -} - -# Try download NuGet.exe if not exists -if (!(Test-Path $NUGET_EXE)) { - Write-Verbose -Message "Downloading NuGet.exe..." - try { - $wc = GetProxyEnabledWebClient - $wc.DownloadFile($NUGET_URL, $NUGET_EXE) - } catch { - Throw "Could not download NuGet.exe." - } -} - -# Save nuget.exe path to environment to be available to child processed -$ENV:NUGET_EXE = $NUGET_EXE - -# Restore tools from NuGet? -if(-Not $SkipToolPackageRestore.IsPresent) { - Push-Location - Set-Location $TOOLS_DIR - - # Check for changes in packages.config and remove installed tools if true. - [string] $md5Hash = MD5HashFile($PACKAGES_CONFIG) - if((!(Test-Path $PACKAGES_CONFIG_MD5)) -Or - ($md5Hash -ne (Get-Content $PACKAGES_CONFIG_MD5 ))) { - Write-Verbose -Message "Missing or changed package.config hash..." - Get-ChildItem -Exclude packages.config,nuget.exe,Cake.Bakery | - Remove-Item -Recurse - } - - Write-Verbose -Message "Restoring tools from NuGet..." - $NuGetOutput = Invoke-Expression "&`"$NUGET_EXE`" install -ExcludeVersion -OutputDirectory `"$TOOLS_DIR`"" - - if ($LASTEXITCODE -ne 0) { - Throw "An error occurred while restoring NuGet tools." - } - else - { - $md5Hash | Out-File $PACKAGES_CONFIG_MD5 -Encoding "ASCII" - } - Write-Verbose -Message ($NuGetOutput | out-string) - - Pop-Location -} - -# Restore addins from NuGet -if (Test-Path $ADDINS_PACKAGES_CONFIG) { - Push-Location - Set-Location $ADDINS_DIR - - Write-Verbose -Message "Restoring addins from NuGet..." - $NuGetOutput = Invoke-Expression "&`"$NUGET_EXE`" install -ExcludeVersion -OutputDirectory `"$ADDINS_DIR`"" + # Build an array (not a string) of Cake arguments to be joined later +$cakeArguments = @() +if ($Script) { $cakeArguments += "`"$Script`"" } +if ($Target) { $cakeArguments += "--target=`"$Target`"" } +if ($Configuration) { $cakeArguments += "--configuration=$Configuration" } +if ($Verbosity) { $cakeArguments += "--verbosity=$Verbosity" } +if ($ShowDescription) { $cakeArguments += "--showdescription" } +if ($DryRun) { $cakeArguments += "--dryrun" } +$cakeArguments += $ScriptArgs - if ($LASTEXITCODE -ne 0) { - Throw "An error occurred while restoring NuGet addins." +# TODO: Read port number from config and input +if ([System.Environment]::UserName -eq "Network Service") { + if (-Not (Get-UrlAcl -Url "http://+:1372")) { + Write-Verbose -Message "Add UrlAcl..." + New-UrlAcl -Protocol http -HostName + -Port 1372 -SecurityContext "NT AUTHORITY\Network Service" } - - Write-Verbose -Message ($NuGetOutput | out-string) - - Pop-Location } -# Restore modules from NuGet -if (Test-Path $MODULES_PACKAGES_CONFIG) { - Push-Location - Set-Location $MODULES_DIR +# Start Cake +Write-Host "Running build script..." - Write-Verbose -Message "Restoring modules from NuGet..." - $NuGetOutput = Invoke-Expression "&`"$NUGET_EXE`" install -ExcludeVersion -OutputDirectory `"$MODULES_DIR`"" +Write-Host "CAKE_EXE: " + $CAKE_EXE_INVOCATION +Write-Host "CAKE Arguments: " +$cakeArguments - if ($LASTEXITCODE -ne 0) { - Throw "An error occurred while restoring NuGet modules." - } +$ErrorActionPreference = 'Stop' - Write-Verbose -Message ($NuGetOutput | out-string) +Set-Location -LiteralPath $PSScriptRoot - Pop-Location -} - -# Make sure that Cake has been installed. -if (!(Test-Path $CAKE_EXE)) { - Throw "Could not find Cake.exe at $CAKE_EXE" -} +$env:DOTNET_SKIP_FIRST_TIME_EXPERIENCE = '1' +$env:DOTNET_CLI_TELEMETRY_OPTOUT = '1' +$env:DOTNET_NOLOGO = '1' +Write-Host "Add nuget.org to sources" +# TODO: Check does not add duplicate +dotnet nuget add source https://api.nuget.org/v3/index.json -n nuget.org --configfile $env:APPDATA\NuGet\NuGet.Config -# Build Cake arguments -$cakeArguments = @("$Script"); -if ($Target) { $cakeArguments += "-target=$Target" } -if ($Configuration) { $cakeArguments += "-configuration=$Configuration" } -if ($Verbosity) { $cakeArguments += "-verbosity=$Verbosity" } -if ($ShowDescription) { $cakeArguments += "-showdescription" } -if ($DryRun) { $cakeArguments += "-dryrun" } -$cakeArguments += $ScriptArgs +Write-Host "Start dotnet tool restore" -# Start Cake -Write-Host "Running build script..." -Write-Host "$CAKE_EXE $cakeArguments" +dotnet tool restore +if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE } -&$CAKE_EXE $cakeArguments -exit $LASTEXITCODE +dotnet cake $cakeArguments +if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE } diff --git a/Build/linux-build.cake b/Build/linux-build.cake new file mode 100644 index 0000000..1e849db --- /dev/null +++ b/Build/linux-build.cake @@ -0,0 +1,7 @@ +// ITNOA + +// See https://cakebuild.net/docs/writing-builds/preprocessor-directives/define +#define _LINUX_ + +// https://github.com/cake-build/cake/issues/1860#issuecomment-453080685 +#load "build.cake" diff --git a/Build/windows-build.cake b/Build/windows-build.cake new file mode 100644 index 0000000..00b56c7 --- /dev/null +++ b/Build/windows-build.cake @@ -0,0 +1,13 @@ +// ITNOA + +// See https://cakebuild.net/docs/writing-builds/preprocessor-directives/define +#define _WINDOWS_ + +#tool "nuget:?package=NUnit.ConsoleRunner&version=3.11.1" +#tool "nuget:?package=vswhere&version=2.8.4" + +// https://github.com/cake-build/cake/issues/1860#issuecomment-453080685 +#load "build.cake" + +// To exclusively build system telephony modules, comment top line and uncomment: +// #load "build-call-control-system.cake" \ No newline at end of file diff --git a/Source/BSN.Commons.Orm.EntityFramework/Properties/AssemblyInfo.cs b/Source/BSN.Commons.Orm.EntityFramework/Properties/AssemblyInfo.cs index 8cac58a..7086ccb 100644 --- a/Source/BSN.Commons.Orm.EntityFramework/Properties/AssemblyInfo.cs +++ b/Source/BSN.Commons.Orm.EntityFramework/Properties/AssemblyInfo.cs @@ -11,9 +11,9 @@ [assembly: AssemblyDescription("ORM Helpers for using entity framework in enterprise application")] [assembly: AssemblyCompany("BSN Company")] [assembly: AssemblyProduct("BSN.Commons.Orm.EntityFramework")] -[assembly: AssemblyVersion("1.10.3")] -[assembly: AssemblyFileVersion("1.10.3")] -[assembly: AssemblyInformationalVersion("1.10.3")] +[assembly: AssemblyVersion("1.11.0")] +[assembly: AssemblyFileVersion("1.11.0")] +[assembly: AssemblyInformationalVersion("1.11.0")] [assembly: AssemblyCopyright("Copyright © 2020-2023 BSN Co.")] [assembly: AssemblyTrademark("")] [assembly: AssemblyConfiguration("")] diff --git a/Source/BSN.Commons.Orm.EntityFrameworkCore/BSN.Commons.Orm.EntityFrameworkCore.csproj b/Source/BSN.Commons.Orm.EntityFrameworkCore/BSN.Commons.Orm.EntityFrameworkCore.csproj index 3626b60..96b1a5e 100644 --- a/Source/BSN.Commons.Orm.EntityFrameworkCore/BSN.Commons.Orm.EntityFrameworkCore.csproj +++ b/Source/BSN.Commons.Orm.EntityFrameworkCore/BSN.Commons.Orm.EntityFrameworkCore.csproj @@ -2,8 +2,8 @@ netstandard2.0;net6.0 - 1.10.3 - 1.10.3 + 1.11.0 + 1.11.0 BSN Developers BSN Company ORM Helpers for using entity framework core in enterprise application @@ -13,7 +13,7 @@ https://github.com/BSVN/Commons.git git Please see CHANGELOG.md - 1.10.3 + 1.11.0 True True BSN.Commons.Orm.EntityFrameworkCore diff --git a/Source/BSN.Commons.PresentationInfrastructure/BSN.Commons.PresentationInfrastructure.csproj b/Source/BSN.Commons.PresentationInfrastructure/BSN.Commons.PresentationInfrastructure.csproj index edcb66f..3fc3f49 100644 --- a/Source/BSN.Commons.PresentationInfrastructure/BSN.Commons.PresentationInfrastructure.csproj +++ b/Source/BSN.Commons.PresentationInfrastructure/BSN.Commons.PresentationInfrastructure.csproj @@ -3,9 +3,9 @@ netstandard2.0 Presentation infrastructure layer of BSN.Commons library for enterprise application. - 1.10.3 - 1.10.3 - 1.10.3 + 1.11.0 + 1.11.0 + 1.11.0 BSN Developers BSN Company BSN Co 2019-2023 diff --git a/Source/BSN.Commons.Users/Properties/AssemblyInfo.cs b/Source/BSN.Commons.Users/Properties/AssemblyInfo.cs index 5fd48ed..b8f8266 100644 --- a/Source/BSN.Commons.Users/Properties/AssemblyInfo.cs +++ b/Source/BSN.Commons.Users/Properties/AssemblyInfo.cs @@ -11,9 +11,9 @@ [assembly: AssemblyDescription("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("BSN.Commons.Users")] -[assembly: AssemblyVersion("1.10.3")] -[assembly: AssemblyFileVersion("1.10.3")] -[assembly: AssemblyInformationalVersion("1.10.3")] +[assembly: AssemblyVersion("1.11.0")] +[assembly: AssemblyFileVersion("1.11.0")] +[assembly: AssemblyInformationalVersion("1.11.0")] [assembly: AssemblyCopyright("Copyright © 2022 BSN Co.")] [assembly: AssemblyTrademark("")] [assembly: AssemblyConfiguration("")] diff --git a/Source/BSN.Commons/BSN.Commons.csproj b/Source/BSN.Commons/BSN.Commons.csproj index c3c1afc..53808dc 100644 --- a/Source/BSN.Commons/BSN.Commons.csproj +++ b/Source/BSN.Commons/BSN.Commons.csproj @@ -2,13 +2,13 @@ netstandard2.0 - 1.10.3 - 1.10.3 + 1.11.0 + 1.11.0 BSN Company BSN Developers BSN Co 2019-2023 true - 1.10.3 + 1.11.0 https://github.com/BSVN/Commons Commons library for enterprise application diff --git a/sbuild.bat b/sbuild.bat index 7c7006b..27cdf90 100644 --- a/sbuild.bat +++ b/sbuild.bat @@ -12,12 +12,21 @@ @echo off setlocal EnableDelayedExpansion +echo "Starting sbuild" + rem If you want to run this script in silent mode, you need to disable UAC + set path=%path%;"C:\ProgramData\chocolatey\bin" set path=%path%;"C:\ProgramData\chocolatey\lib\gsudo\bin\" set ARGS=%* +rem Check choco is exist? +where /q choco +if %ERRORLEVEL% neq 0 ( + echo "Choco does not exist" +) + rem Administrative permissions required. Detecting permissions... if not defined RUNNING_ON_CI ( net session >NUL 2>&1 @@ -28,15 +37,16 @@ if not defined RUNNING_ON_CI ( ) ) rem Check gsudo is exist? -where gsudo +where /q gsudo >NUL 2>NUL if %ERRORLEVEL% neq 0 ( rem gsudo Does not found, so we try to install it - :: This command need UAC attention - :: Check if choco is avalable use choco - PowerShell -Command "Set-ExecutionPolicy RemoteSigned -scope Process; iwr -useb https://raw.githubusercontent.com/gerardog/gsudo/master/installgsudo.ps1 | iex" + rem This command need UAC attention + rem Check if choco is avalable use choco + rem PowerShell -Command "Set-ExecutionPolicy RemoteSigned -scope Process; iwr -useb https://raw.githubusercontent.com/gerardog/gsudo/master/installgsudo.ps1 | iex" + echo "Try to install gsudo" ) -call :BUILD 1 +call :BUILD 0 endlocal exit /B @@ -44,12 +54,13 @@ exit /B :BUILD VAL_NEED_GSUDO if %~1 equ 1 ( echo "Run with gsudo" - gsudo powershell.exe -NoProfile -ExecutionPolicy Bypass "& {& '%~dp0build\build.ps1' -Script Build/build.cake %ARGS%}" + gsudo powershell.exe -NoProfile -ExecutionPolicy Bypass "& {& '%~dp0build\build.ps1' %ARGS%}" ) else ( if %~1 equ 0 ( - powershell.exe -NoProfile -ExecutionPolicy Bypass "& {& '%~dp0build\build.ps1' -Script Build/build.cake %ARGS%}" + echo "Run without gsudo" + powershell.exe -NoProfile -ExecutionPolicy Bypass "& {& '%~dp0build\build.ps1' %ARGS%}" ) else ( echo "VAL_NEED_GSUDO must be valid value, the current value is" %~1 exit /B 1 ) - ) + ) \ No newline at end of file