From cc859306a3fb383f9fa635b9ae37d6dc945c5ee1 Mon Sep 17 00:00:00 2001 From: Steve Sanderson Date: Thu, 25 May 2017 11:19:14 +0100 Subject: [PATCH] Make template package version numbers more descriptive --- templates/package-builder/src/build/build.ts | 41 ++++++++++++------- ... Microsoft.AspNetCore.SpaTemplates.nuspec} | 4 +- ...oft.DotNet.Web.Spa.ProjectTemplates.nuspec | 17 ++++++++ 3 files changed, 45 insertions(+), 17 deletions(-) rename templates/package-builder/src/dotnetnew/{templatePackages.nuspec => Microsoft.AspNetCore.SpaTemplates.nuspec} (88%) create mode 100644 templates/package-builder/src/dotnetnew/Microsoft.DotNet.Web.Spa.ProjectTemplates.nuspec diff --git a/templates/package-builder/src/build/build.ts b/templates/package-builder/src/build/build.ts index b5c770a..5c036bf 100644 --- a/templates/package-builder/src/build/build.ts +++ b/templates/package-builder/src/build/build.ts @@ -56,18 +56,20 @@ function listFilesExcludingGitignored(root: string): string[] { .filter(fn => gitignoreEvaluator.accepts(fn)); } +function applyContentReplacements(sourceContent: Buffer, contentReplacements: { from: RegExp, to: string }[]) { + let sourceText = sourceContent.toString('utf8'); + contentReplacements.forEach(replacement => { + sourceText = sourceText.replace(replacement.from, replacement.to); + }); + + return new Buffer(sourceText, 'utf8'); +} + function writeTemplate(sourceRoot: string, destRoot: string, contentReplacements: { from: RegExp, to: string }[], filenameReplacements: { from: RegExp, to: string }[]) { listFilesExcludingGitignored(sourceRoot).forEach(fn => { let sourceContent = fs.readFileSync(path.join(sourceRoot, fn)); - - // For text files, replace hardcoded values with template tags if (isTextFile(fn)) { - let sourceText = sourceContent.toString('utf8'); - contentReplacements.forEach(replacement => { - sourceText = sourceText.replace(replacement.from, replacement.to); - }); - - sourceContent = new Buffer(sourceText, 'utf8'); + sourceContent = applyContentReplacements(sourceContent, contentReplacements); } // Also apply replacements in filenames @@ -87,6 +89,11 @@ function copyRecursive(sourceRoot: string, destRoot: string, matchGlob: string) }); } +function getBuildNumber() { + return process.env.APPVEYOR_BUILD_NUMBER + || ('t-' + Math.floor((new Date().valueOf() - new Date(2017, 0, 1).valueOf()) / (60*1000))); +} + function buildYeomanNpmPackage(outputRoot: string) { const outputTemplatesRoot = path.join(outputRoot, 'app/templates'); rimraf.sync(outputTemplatesRoot); @@ -226,14 +233,18 @@ function buildDotNetNewNuGetPackage(packageId: string) { }, null, 2)); }); - // Invoke NuGet to create the final package + // Create the .nuspec file const yeomanPackageVersion = JSON.parse(fs.readFileSync(path.join(yeomanGeneratorSource, 'package.json'), 'utf8')).version; - writeTemplate('./src/dotnetnew', outputRoot, [ - { from: /\{packageId\}/g, to: packageId }, - { from: /\{version\}/g, to: yeomanPackageVersion }, - ], [ - { from: /.*\.nuspec$/, to: `${packageId}.nuspec` }, - ]); + const nuspecContentTemplate = fs.readFileSync(`./src/dotnetnew/${ packageId }.nuspec`); + writeFileEnsuringDirExists(outputRoot, + `${ packageId }.nuspec`, + applyContentReplacements(nuspecContentTemplate, [ + { from: /\{yeomanversion\}/g, to: yeomanPackageVersion }, + { from: /\{buildnumber\}/g, to: getBuildNumber() }, + ]) + ); + + // Invoke NuGet to create the final package const nugetExe = path.join(process.cwd(), './bin/NuGet.exe'); const nugetStartInfo = { cwd: outputRoot, stdio: 'inherit' }; if (isWindows) { diff --git a/templates/package-builder/src/dotnetnew/templatePackages.nuspec b/templates/package-builder/src/dotnetnew/Microsoft.AspNetCore.SpaTemplates.nuspec similarity index 88% rename from templates/package-builder/src/dotnetnew/templatePackages.nuspec rename to templates/package-builder/src/dotnetnew/Microsoft.AspNetCore.SpaTemplates.nuspec index 032a7c3..615d8b0 100644 --- a/templates/package-builder/src/dotnetnew/templatePackages.nuspec +++ b/templates/package-builder/src/dotnetnew/Microsoft.AspNetCore.SpaTemplates.nuspec @@ -1,8 +1,8 @@ - {packageId} - {version} + Microsoft.AspNetCore.SpaTemplates + {yeomanversion} Single Page Application templates for ASP.NET Core Microsoft en-US diff --git a/templates/package-builder/src/dotnetnew/Microsoft.DotNet.Web.Spa.ProjectTemplates.nuspec b/templates/package-builder/src/dotnetnew/Microsoft.DotNet.Web.Spa.ProjectTemplates.nuspec new file mode 100644 index 0000000..234add1 --- /dev/null +++ b/templates/package-builder/src/dotnetnew/Microsoft.DotNet.Web.Spa.ProjectTemplates.nuspec @@ -0,0 +1,17 @@ + + + + Microsoft.DotNet.Web.Spa.ProjectTemplates + 2.0.0-preview2-{buildnumber} + Single Page Application templates for ASP.NET Core + Microsoft + en-US + https://github.com/aspnet/javascriptservices + https://www.microsoft.com/web/webpi/eula/net_library_eula_enu.htm + Copyright © Microsoft Corporation + true + + + + +