2020-02-29 12:56:23 -06:00
import { Input } from './input'
import { Observable , of , throwError } from 'rxjs'
import { deletePackageVersions , getOldestVersions } from './version'
import { concatMap , map } from 'rxjs/operators'
export function getVersionIds ( input : Input ) : Observable < string [ ] > {
if ( input . packageVersionIds . length > 0 ) {
return of ( input . packageVersionIds )
}
if ( input . hasOldestVersionQueryInfo ( ) ) {
return getOldestVersions (
input . owner ,
input . repo ,
input . packageName ,
input . numOldVersionsToDelete ,
input . token
) . pipe ( map ( versionInfo = > versionInfo . map ( info = > info . id ) ) )
}
return throwError (
2020-02-29 13:19:47 -06:00
"Could not get packageVersionIds. Explicitly specify using the 'package-version-ids' input or provide the 'package-name' and 'num-old-versions-to-delete' inputs to dynamically retrieve oldest versions"
2020-02-29 12:56:23 -06:00
)
}
export function deleteVersions ( input : Input ) : Observable < boolean > {
if ( ! input . token ) {
return throwError ( 'No token found' )
}
2020-02-29 14:00:06 -06:00
if ( input . numOldVersionsToDelete <= 0 ) {
console . log (
'Number of old versions to delete input is 0 or less, no versions will be deleted'
)
return of ( true )
}
2020-02-29 12:56:23 -06:00
return getVersionIds ( input ) . pipe (
concatMap ( ids = > deletePackageVersions ( ids , input . token ) )
)
}