1+ function New-PackageFromBower ($name ) {
2+ bower install $name
3+ $packageInfo = (Get-Content .\bower_components\$name \.bower.json) -join " `n " | ConvertFrom-Json
4+ $version = $packageInfo.version
5+ $allPaths = (bower list -- paths -- json) -join " `n " | ConvertFrom-Json
6+ $paths = @ ($allPaths .$name )
7+ $jsPaths = @ ($paths | ? { $_ -match ' \.js$' })
8+
9+ if ($jsPaths.Count -eq 0 ) {
10+ $jsPaths = @ (ls $paths * .js - Recurse)
11+ }
12+ if ($jsPaths.Count -gt 1 ) {
13+ Write-Warning ' Package contains multiple JS files, only the first will be listed in the package'
14+ }
15+
16+ $jsFile = $jsPaths [0 ]
17+ $fileName = Split-Path $jsFile - Leaf
18+
19+ mkdir $name
20+
21+ $versionedFolder = " $name \$ ( $name ) _$version "
22+ mkdir $versionedFolder
23+
24+ $filePaths = @ ($paths | ? { -not (Test-Path $_ - PathType Container) })
25+ if ($filePaths.Count -eq 0 ) {
26+ $jsPaths | % { cp $_.FullName $versionedFolder }
27+ } else {
28+ $filePaths | % { cp $_ $versionedFolder }
29+ }
30+
31+ $manifestFile = " $versionedFolder \$name .dnn"
32+ cp _template\library.dnn $manifestFile
33+ $changesFile = " $versionedFolder \CHANGES.htm"
34+ cp _template\CHANGES.htm $changesFile
35+ $licenseFile = " $versionedFolder \LICENSE.htm"
36+ cp _template\LICENSE.htm $licenseFile
37+
38+ ReplaceTokens $manifestFile $name $version $fileName
39+ ReplaceTokens $changesFile $name $version $fileName
40+ ReplaceTokens $licenseFile $name $version $fileName
41+
42+ notepad $manifestFile
43+ notepad $changesFile
44+ notepad $licenseFile
45+
46+ if (@ (Get-Member - InputObject $packageInfo | ? { $_.Name -eq ' dependencies' }).Count -gt 0 ) {
47+ Write-Warning ' Package has dependencies' ; Write-Warning $packageInfo.dependencies
48+ }
49+ }
50+
51+ function ReplaceTokens ($file , $name , $version , $fileName ) {
52+ (Get-Content $file ) |
53+ % { $_ -replace ' \[name\]' , $name -replace ' \[version\]' , $version -replace ' \[file\]' , $fileName } |
54+ Set-Content $file
55+ }
56+
57+ Export-ModuleMember New-PackageFromBower
0 commit comments