Implement script to prepare packages with Node.js

This commit is contained in:
Maxim Lobanov
2020-04-23 12:58:18 +03:00
commit 4e7c1d2a13
26 changed files with 1486 additions and 0 deletions

View File

@@ -0,0 +1,62 @@
using module "./builders/node-builder.psm1"
class NixNodeBuilder : NodeBuilder {
<#
.SYNOPSIS
Ubuntu Node.js builder class.
.DESCRIPTION
Contains methods that required to build Ubuntu Node.js artifact from sources. Inherited from base NixNodeBuilder.
.PARAMETER platform
The full name of platform for which Node.js should be built.
.PARAMETER version
The version of Node.js that should be built.
#>
[string] $InstallationTemplateName
[string] $InstallationScriptName
[string] $OutputArtifactName
NixNodeBuilder(
[version] $version,
[string] $platform,
[string] $architecture
) : Base($version, $platform, $architecture) {
$this.InstallationTemplateName = "nix-setup-template.sh"
$this.InstallationScriptName = "setup.sh"
$this.OutputArtifactName = "tool.tar.gz"
}
[uri] GetBinariesUri() {
<#
.SYNOPSIS
Get base Node.js URI and return complete URI for Node.js installation executable.
#>
$base = $this.GetBaseUri()
return "${base}/v$($this.Version)/node-v$($this.Version)-$($this.Platform)-$($this.Architecture).tar.gz"
}
[void] ExtractBinaries($archivePath) {
Extract-TarArchive -ArchivePath $archivePath -OutputDirectory $this.ArtifactLocation
}
[void] CreateInstallationScript() {
<#
.SYNOPSIS
Create Node.js artifact installation script based on template specified in InstallationTemplateName property.
#>
$installationScriptLocation = New-Item -Path $this.ArtifactLocation -Name $this.InstallationScriptName -ItemType File
$installationTemplateLocation = Join-Path -Path $this.InstallationTemplatesLocation -ChildPath $this.InstallationTemplateName
$installationTemplateContent = Get-Content -Path $installationTemplateLocation -Raw
$installationTemplateContent = $installationTemplateContent -f $this.Version.ToString(3)
$installationTemplateContent | Out-File -FilePath $installationScriptLocation
Write-Debug "Done; Installation script location: $installationScriptLocation)"
}
}