mirror of
https://github.com/Start9Labs/start-os.git
synced 2026-04-02 05:23:14 +00:00
0.2.5 initial commit
Makefile incomplete
This commit is contained in:
64
ui/src/app/pipes/emver.pipe.ts
Normal file
64
ui/src/app/pipes/emver.pipe.ts
Normal file
@@ -0,0 +1,64 @@
|
||||
import { Pipe, PipeTransform } from '@angular/core'
|
||||
import { Emver } from '../services/emver.service'
|
||||
@Pipe({
|
||||
name: 'satisfiesEmver',
|
||||
})
|
||||
export class EmverSatisfiesPipe implements PipeTransform {
|
||||
constructor (private readonly emver: Emver) { }
|
||||
|
||||
transform (versionUnderTest: string, range: string): boolean {
|
||||
return this.emver.satisfies(versionUnderTest, range)
|
||||
}
|
||||
}
|
||||
|
||||
@Pipe({
|
||||
name: 'compareEmver',
|
||||
})
|
||||
export class EmverComparesPipe implements PipeTransform {
|
||||
constructor (private readonly emver: Emver) { }
|
||||
|
||||
transform (first: string, second: string): SemverResult {
|
||||
try {
|
||||
return this.emver.compare(first, second) as SemverResult
|
||||
} catch (e) {
|
||||
console.warn(`emver comparison failed`, e, first, second)
|
||||
return 'comparison-impossible'
|
||||
}
|
||||
}
|
||||
}
|
||||
type SemverResult = 0 | 1 | -1 | 'comparison-impossible'
|
||||
|
||||
@Pipe({
|
||||
name: 'displayEmver',
|
||||
})
|
||||
export class EmverDisplayPipe implements PipeTransform {
|
||||
constructor () { }
|
||||
|
||||
transform (version: string): string {
|
||||
return displayEmver(version)
|
||||
}
|
||||
}
|
||||
|
||||
@Pipe({
|
||||
name: 'isValidEmver',
|
||||
})
|
||||
export class EmverIsValidPipe implements PipeTransform {
|
||||
constructor () { }
|
||||
|
||||
transform (version: string): boolean {
|
||||
return isValidEmver(version)
|
||||
}
|
||||
}
|
||||
|
||||
export function isValidEmver (version: string): boolean {
|
||||
const vs = version.split('.')
|
||||
if (vs.length < 3 || vs.length > 5) return false
|
||||
if (!vs.every(v => !isNaN(parseFloat(v)))) return false
|
||||
return true
|
||||
}
|
||||
|
||||
export function displayEmver (version: string): string {
|
||||
const vs = version.split('.')
|
||||
if (vs.length === 4) return `${vs[0]}.${vs[1]}.${vs[2]}~${vs[3]}`
|
||||
return version
|
||||
}
|
||||
Reference in New Issue
Block a user