File: New-EmitterPackageJson.ps1

package info (click to toggle)
python-azure 20251014%2Bgit-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 766,472 kB
  • sloc: python: 6,314,744; ansic: 804; javascript: 287; makefile: 198; sh: 198; xml: 109
file content (79 lines) | stat: -rw-r--r-- 2,517 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
#Requires -Version 7.0
[CmdletBinding()]
param (
    [parameter(Mandatory = $true)]
    [ValidateScript({ Test-Path $_ })]
    [string]$PackageJsonPath,

    [parameter(Mandatory = $false)]
    [ValidateScript({ Test-Path $_ })]
    [string]$OverridesPath,

    [parameter(Mandatory = $true)]
    [string]$OutputDirectory,

    [parameter(Mandatory = $false)]
    [string]$PackageJsonFileName = "emitter-package.json"
)

$packageJson = Get-Content $PackageJsonPath | ConvertFrom-Json -AsHashtable

# If we provide OverridesPath, use that to load a hashtable of version overrides
$overrides = [ordered]@{}

if ($OverridesPath) {
    Write-Host "Using overrides from $OverridesPath`:`n"
    $overridesJson = Get-Content $OverridesPath | ConvertFrom-Json -AsHashtable
    foreach ($key in $overridesJson.Keys | Sort-Object) {
        $overrides[$key] = $overridesJson[$key]
    }
    Write-Host ($overrides | ConvertTo-Json)
    Write-Host ""
}

# If there's a peer dependency and a dev dependency for the same package, carry the
# dev dependency forward into emitter-package.json

$devDependencies = [ordered]@{}

$possiblyPinnedPackages = $packageJson['azure-sdk/emitter-package-json-pinning'] ?? $packageJson.peerDependencies.Keys;

foreach ($package in $possiblyPinnedPackages | Sort-Object) {
    $pinnedVersion = $packageJson.devDependencies[$package]
    if ($pinnedVersion -and -not $overrides[$package]) {
        #We have a dev pinned version that isn't overridden by the overrides.json file
        Write-Host "Pinning $package to $pinnedVersion"
        $devDependencies[$package] = $pinnedVersion
    }
}

$emitterPackageJson = [ordered]@{
  "main" = "dist/src/index.js"
  "dependencies" = @{
      $packageJson.name = $overrides[$packageJson.name] ?? $packageJson.version
  }
}

# you shouldn't specify the same package in both dependencies and overrides
$overrides.Remove($packageJson.name)

# Avoid adding an empty devDependencies section
if($devDependencies.Keys.Count -gt 0) {
  $emitterPackageJson["devDependencies"] = $devDependencies
}

# Avoid adding an empty overrides section
if($overrides.Keys.Count -gt 0) {
    $emitterPackageJson["overrides"] = $overrides
}

New-Item $OutputDirectory -ItemType Directory -ErrorAction SilentlyContinue | Out-Null
$OutputDirectory = Resolve-Path $OutputDirectory

$dest = Join-Path $OutputDirectory $PackageJsonFileName
$destJson = $emitterPackageJson | ConvertTo-Json -Depth 100

Write-Host "Generating $dest"
$destJson | Out-File $dest

Write-Host $destJson