Skip to content

Commit cc85930

Browse files
Make template package version numbers more descriptive
1 parent 4451222 commit cc85930

File tree

3 files changed

+45
-17
lines changed

3 files changed

+45
-17
lines changed

templates/package-builder/src/build/build.ts

Lines changed: 26 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -56,18 +56,20 @@ function listFilesExcludingGitignored(root: string): string[] {
5656
.filter(fn => gitignoreEvaluator.accepts(fn));
5757
}
5858

59+
function applyContentReplacements(sourceContent: Buffer, contentReplacements: { from: RegExp, to: string }[]) {
60+
let sourceText = sourceContent.toString('utf8');
61+
contentReplacements.forEach(replacement => {
62+
sourceText = sourceText.replace(replacement.from, replacement.to);
63+
});
64+
65+
return new Buffer(sourceText, 'utf8');
66+
}
67+
5968
function writeTemplate(sourceRoot: string, destRoot: string, contentReplacements: { from: RegExp, to: string }[], filenameReplacements: { from: RegExp, to: string }[]) {
6069
listFilesExcludingGitignored(sourceRoot).forEach(fn => {
6170
let sourceContent = fs.readFileSync(path.join(sourceRoot, fn));
62-
63-
// For text files, replace hardcoded values with template tags
6471
if (isTextFile(fn)) {
65-
let sourceText = sourceContent.toString('utf8');
66-
contentReplacements.forEach(replacement => {
67-
sourceText = sourceText.replace(replacement.from, replacement.to);
68-
});
69-
70-
sourceContent = new Buffer(sourceText, 'utf8');
72+
sourceContent = applyContentReplacements(sourceContent, contentReplacements);
7173
}
7274

7375
// Also apply replacements in filenames
@@ -87,6 +89,11 @@ function copyRecursive(sourceRoot: string, destRoot: string, matchGlob: string)
8789
});
8890
}
8991

92+
function getBuildNumber() {
93+
return process.env.APPVEYOR_BUILD_NUMBER
94+
|| ('t-' + Math.floor((new Date().valueOf() - new Date(2017, 0, 1).valueOf()) / (60*1000)));
95+
}
96+
9097
function buildYeomanNpmPackage(outputRoot: string) {
9198
const outputTemplatesRoot = path.join(outputRoot, 'app/templates');
9299
rimraf.sync(outputTemplatesRoot);
@@ -226,14 +233,18 @@ function buildDotNetNewNuGetPackage(packageId: string) {
226233
}, null, 2));
227234
});
228235

229-
// Invoke NuGet to create the final package
236+
// Create the .nuspec file
230237
const yeomanPackageVersion = JSON.parse(fs.readFileSync(path.join(yeomanGeneratorSource, 'package.json'), 'utf8')).version;
231-
writeTemplate('./src/dotnetnew', outputRoot, [
232-
{ from: /\{packageId\}/g, to: packageId },
233-
{ from: /\{version\}/g, to: yeomanPackageVersion },
234-
], [
235-
{ from: /.*\.nuspec$/, to: `${packageId}.nuspec` },
236-
]);
238+
const nuspecContentTemplate = fs.readFileSync(`./src/dotnetnew/${ packageId }.nuspec`);
239+
writeFileEnsuringDirExists(outputRoot,
240+
`${ packageId }.nuspec`,
241+
applyContentReplacements(nuspecContentTemplate, [
242+
{ from: /\{yeomanversion\}/g, to: yeomanPackageVersion },
243+
{ from: /\{buildnumber\}/g, to: getBuildNumber() },
244+
])
245+
);
246+
247+
// Invoke NuGet to create the final package
237248
const nugetExe = path.join(process.cwd(), './bin/NuGet.exe');
238249
const nugetStartInfo = { cwd: outputRoot, stdio: 'inherit' };
239250
if (isWindows) {

templates/package-builder/src/dotnetnew/templatePackages.nuspec renamed to templates/package-builder/src/dotnetnew/Microsoft.AspNetCore.SpaTemplates.nuspec

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
33
<metadata>
4-
<id>{packageId}</id>
5-
<version>{version}</version>
4+
<id>Microsoft.AspNetCore.SpaTemplates</id>
5+
<version>{yeomanversion}</version>
66
<description>Single Page Application templates for ASP.NET Core</description>
77
<authors>Microsoft</authors>
88
<language>en-US</language>
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
3+
<metadata>
4+
<id>Microsoft.DotNet.Web.Spa.ProjectTemplates</id>
5+
<version>2.0.0-preview2-{buildnumber}</version>
6+
<description>Single Page Application templates for ASP.NET Core</description>
7+
<authors>Microsoft</authors>
8+
<language>en-US</language>
9+
<projectUrl>https://github.com/aspnet/javascriptservices</projectUrl>
10+
<licenseUrl>https://www.microsoft.com/web/webpi/eula/net_library_eula_enu.htm</licenseUrl>
11+
<copyright>Copyright © Microsoft Corporation</copyright>
12+
<requireLicenseAcceptance>true</requireLicenseAcceptance>
13+
<packageTypes>
14+
<packageType name="Template" />
15+
</packageTypes>
16+
</metadata>
17+
</package>

0 commit comments

Comments
 (0)