Skip to content

Commit

Permalink
Merge pull request #44 from pwsh-cs-tools/refactor+patch-v0.5.2
Browse files Browse the repository at this point in the history
Refactor+Patch: 0.5.2 - Implement Better Version Control and Fix Cache Bugs
  • Loading branch information
anonhostpi authored Jan 17, 2024
2 parents aad6fd0 + 3d60c69 commit df642b4
Show file tree
Hide file tree
Showing 9 changed files with 318 additions and 236 deletions.
3 changes: 0 additions & 3 deletions Import-Package/Import-Package.psm1
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,6 @@ New-Item (Join-Path $PSScriptRoot "Temp") -Force -ItemType Directory
} -ThrottleLimit 12 -AsJob | Out-Null
}


. "$PSScriptRoot\src\ConvertTo-SemVerObject.ps1"
. "$PSScriptRoot\src\Resolve-DependencyVersions.ps1"
. "$PSScriptRoot\src\Resolve-CachedPackage.ps1"
. "$PSScriptRoot\src\Build-PackageData.ps1"

Expand Down
65 changes: 3 additions & 62 deletions Import-Package/packaging.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -5,67 +5,8 @@
# Exported methods and properties
$Exported = New-Object psobject

$Exported | Add-Member `
-MemberType NoteProperty `
-Name APIs `
-Value (& {
$apis = Invoke-WebRequest https://api.nuget.org/v3/index.json
ConvertFrom-Json $apis
})

$Exported | Add-Member `
-MemberType ScriptMethod `
-Name GetLatest `
-Value {
param( $Name )
$resource = $this.APIs.resources | Where-Object {
($_."@type" -eq "SearchQueryService") -and
($_.comment -like "*(primary)*")
}
$id = $resource."@id"

$results = Invoke-WebRequest "$id`?q=packageid:$Name&prerelease=false&take=1"
$results = ConvertFrom-Json $results

If( $Name -eq $results.data[0].id ){
$results.data[0].version
} else {
Write-Warning "Unable to find latest version of $Name via NuGet Search API"
}
}

$Exported | Add-Member `
-MemberType ScriptMethod `
-Name GetPreRelease `
-Value {
param( $Name, $Wanted )
$resource = $this.APIs.resources | Where-Object {
$_."@type" -eq "PackageBaseAddress/3.0.0"
}
$id = $resource."@id"

$versions = @(
$id,
$Name,
"/index.json"
) -join ""

$versions = Invoke-WebRequest $versions
$versions = (ConvertFrom-Json $versions).versions

If( $Wanted ){
$out = $versions | Where-Object {
$_ -eq $Wanted
}
If( $out ){
$out
} Else {
$versions | Select-Object -last 1
}
} Else {
$versions | Select-Object -last 1
}
}
# Versioning capabilities
& "$PSScriptRoot/versioning.ps1" $Exported | Out-Null

$Exported | Add-Member `
-MemberType ScriptMethod `
Expand Down Expand Up @@ -170,7 +111,7 @@
If( ($global:DIS_AUTOUPDATE_IMPORTS -eq $true ) -or ( $env:DIS_AUTOUPDATE_IMPORTS -eq 1 ) ){
$package.Version
} Else {
$this.GetLatest( $package_name )
$this.GetStable( $package_name )
}
} Catch { $package.Version }

Expand Down
2 changes: 1 addition & 1 deletion Import-Package/platforms.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ param(
## Get all NuGet and Microsoft Supported RIDs from Microsoft.NETCore.Platforms
$package = Get-Package "Microsoft.NETCore.Platforms" -ProviderName NuGet -ErrorAction SilentlyContinue
$latest = Try {
$Exported.GetLatest( "Microsoft.NETCore.Platforms" )
$Exported.GetStable( "Microsoft.NETCore.Platforms" )
} Catch { $package.Version }

if( (-not $package) -or ($package.Version -ne $latest) ){
Expand Down
4 changes: 2 additions & 2 deletions Import-Package/src/Build-PackageData.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -172,15 +172,15 @@ function Build-PackageData {
$out_dependencies = @{}

Try {
$out_dependencies.Agnostic = Resolve-DependencyVersions $Out.XML.package.metadata.dependencies.dependency
$out_dependencies.Agnostic = $Bootstrapper.ParseVersOnDeps( $Out.XML.package.metadata.dependencies.dependency )
} Catch {}
Try{
$out_dependencies.ByFramework = & {
$by_framework = @{}
$Out.XML.package.metadata.dependencies.group | ForEach-Object {
$group = $_

$by_framework[ $group.TargetFramework.ToString() ] = Resolve-DependencyVersions $group.dependency
$by_framework[ $group.TargetFramework.ToString() ] = $Bootstrapper.ParseVersOnDeps( $group.dependency )
}
$by_framework
}
Expand Down
84 changes: 0 additions & 84 deletions Import-Package/src/ConvertTo-SemVerObject.ps1

This file was deleted.

45 changes: 30 additions & 15 deletions Import-Package/src/Resolve-CachedPackage.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -56,10 +56,10 @@ function Resolve-CachedPackage {

If( $Options.Stable ){
$versions.pm.upstream = Try {
$Bootstrapper.GetLatest( $Options.Name )
$Bootstrapper.GetStable( $Options.Name, $versions.wanted )
} Catch {}
}

# If Options.Stable was false or an upstream stable version could not be found, try for a prerelease version
If( [string]::IsNullOrWhiteSpace( "$( $versions.pm.upstream )" ) ){
$versions.pm.upstream = Try {
Expand All @@ -79,7 +79,14 @@ function Resolve-CachedPackage {
# Get all cached packages with the same name
$candidate_packages = Try {
Join-Path $root "*" | Resolve-Path | Split-Path -Leaf | Where-Object {
"$_" -like "$( $Options.Name )*"
$ending_tokens = "$_".Replace( $Options.Name, "" ) -replace "^\.",""
$first_token = ($ending_tokens -split "\.")[0]
Try{
$null = [int]$first_token
$true
} Catch {
$false
}
}
} Catch { $null }

Expand All @@ -99,10 +106,10 @@ function Resolve-CachedPackage {

[Array]::Sort[string]( $candidate_versions, [System.Comparison[string]]({
param($x, $y)
$x = ConvertTo-SemVerObject $x
$y = ConvertTo-SemVerObject $y
$x = $Bootstrapper.ParseSemVer( $x )
$y = $Bootstrapper.ParseSemVer( $y )

Compare-SemVerObject $x $y
$Bootstrapper.CompareSemVers( $x, $y )
}))

If( -not $versions.cached.local ){
Expand Down Expand Up @@ -159,6 +166,15 @@ function Resolve-CachedPackage {
"pm"
}
}

$install_condition = -not( $no_upstream ) -and (& {
$no_local -or (& {
$best_upstream = $versions[ $versions.best.upstream ].upstream
$best_local = $versions[ $versions.best.local ].local

$best_upstream -ne $best_local
})
})

If(@(
$PSCmdlet.MyInvocation.BoundParameters["Verbose"].IsPresent,
Expand Down Expand Up @@ -203,16 +219,15 @@ function Resolve-CachedPackage {
}
})
Write-Host
}

$install_condition = -not( $no_upstream ) -and (& {
$no_local -or (& {
$best_upstream = $versions[ $versions.best.upstream ].upstream
$best_local = $versions[ $versions.best.local ].local

$best_upstream -ne $best_local
Write-Host "Attempt Install?" $install_condition -ForegroundColor (& {
If( $install_condition ){
"Red"
} Else {
"White"
}
})
})
Write-Host
}

$Options.Source = If( $install_condition ){
If( $Options.Stable ){
Expand Down
54 changes: 0 additions & 54 deletions Import-Package/src/Resolve-DependencyVersions.ps1

This file was deleted.

Loading

0 comments on commit df642b4

Please sign in to comment.