diff --git a/src/Nerdbank.GitVersioning.Tasks/Nerdbank.GitVersioning.Tasks.csproj b/src/Nerdbank.GitVersioning.Tasks/Nerdbank.GitVersioning.Tasks.csproj index ad327582..cf75137d 100644 --- a/src/Nerdbank.GitVersioning.Tasks/Nerdbank.GitVersioning.Tasks.csproj +++ b/src/Nerdbank.GitVersioning.Tasks/Nerdbank.GitVersioning.Tasks.csproj @@ -46,19 +46,6 @@ - - - ..\nerdbank-gitversioning.npm\out\nbgv.nuget\ - - - - $(NpmPackageLayoutDir)$([System.IO.Path]::GetDirectoryName('%(_PackageFiles.PackagePath)'))\%(FileName)%(Extension) - $(NpmPackageLayoutDir)%(FileName)%(Extension) - - - - - true diff --git a/src/nbgv/Program.cs b/src/nbgv/Program.cs index fb29148e..69e5879c 100644 --- a/src/nbgv/Program.cs +++ b/src/nbgv/Program.cs @@ -264,7 +264,11 @@ private static ExitCodes OnGetVersionCommand(string projectPath, string format, Console.WriteLine("NPM package Version: {0}", oracle.NpmPackageVersion); break; case "json": - Console.WriteLine(JsonConvert.SerializeObject(oracle, Formatting.Indented)); + var converters = new JsonConverter[] + { + new Newtonsoft.Json.Converters.VersionConverter(), + }; + Console.WriteLine(JsonConvert.SerializeObject(oracle, Formatting.Indented, converters)); break; default: Console.Error.WriteLine("Unsupported format: {0}", format); diff --git a/src/nbgv/nbgv.csproj b/src/nbgv/nbgv.csproj index a047810e..3d23899e 100644 --- a/src/nbgv/nbgv.csproj +++ b/src/nbgv/nbgv.csproj @@ -23,4 +23,17 @@ + + + ..\nerdbank-gitversioning.npm\out\nbgv.cli\ + + + + $(NpmPackageLayoutDir)$([System.IO.Path]::GetDirectoryName('%(_PackageFiles.PackagePath)'))\%(FileName)%(Extension) + $(NpmPackageLayoutDir)%(FileName)%(Extension) + + + + + diff --git a/src/nerdbank-gitversioning.npm/gulpfile.js b/src/nerdbank-gitversioning.npm/gulpfile.js index 175b0f33..909e3d06 100644 --- a/src/nerdbank-gitversioning.npm/gulpfile.js +++ b/src/nerdbank-gitversioning.npm/gulpfile.js @@ -62,3 +62,9 @@ gulp.task('default', ['package'], function() { gulp.task('watch', ['tsc'], function() { return gulp.watch('**/*.ts', ['tsc']); }); + +gulp.task('test', ['tsc'], async function() { + var nbgv = require('./out'); + var v = await nbgv.getVersion(); + console.log(v); +}); diff --git a/src/nerdbank-gitversioning.npm/ts/index.ts b/src/nerdbank-gitversioning.npm/ts/index.ts index d5e76194..1c673168 100644 --- a/src/nerdbank-gitversioning.npm/ts/index.ts +++ b/src/nerdbank-gitversioning.npm/ts/index.ts @@ -5,7 +5,7 @@ import * as path from 'path'; var camelCase = require('camel-case') import {execAsync} from './asyncprocess'; -const nbgvPath = 'nbgv.nuget'; +const nbgvPath = 'nbgv.cli'; /** * The various aspects of a version that can be calculated. @@ -42,25 +42,16 @@ export interface IGitVersion { */ export async function getVersion(projectDirectory?: string): Promise { projectDirectory = projectDirectory || '.'; - var getVersionScriptPath = path.join(__dirname, nbgvPath, "tools", "Get-Version.ps1"); - var versionText = await execAsync(`powershell -ExecutionPolicy Bypass -Command "& '${getVersionScriptPath}' -ProjectDirectory '${projectDirectory}'"`) + var getVersionScriptPath = path.join(__dirname, nbgvPath, "tools", "netcoreapp2.1", "any", "nbgv.dll"); + var versionText = await execAsync(`dotnet "${getVersionScriptPath}" get-version --project "${projectDirectory}" --format json`) if (versionText.stderr) { throw versionText.stderr; } - var varsRegEx = /^(\w+)\s*: (.+)/mg; - var match; + var directResult = JSON.parse(versionText.stdout); var result = {}; - while (match = varsRegEx.exec(versionText.stdout)) { - // Do a few type casts if appropriate. - let value = match[2]; - if (value.toUpperCase() === 'TRUE') { - value = true; - } else if (value.toUpperCase() === 'FALSE') { - value = false; - } - - result[camelCase(match[1])] = value; + for (var field in directResult) { + result[camelCase(field)] = directResult[field]; } return result; @@ -69,7 +60,7 @@ export async function getVersion(projectDirectory?: string): Promise