2019-10-31 01:48:49 +07:00
import * as core from "@actions/core" ;
2019-11-13 22:54:39 +07:00
2020-05-15 04:27:38 +07:00
import { Outputs , RefKey , State } from "../constants" ;
2019-10-31 01:48:49 +07:00
2020-09-29 21:58:32 +07:00
export function isGhes ( ) : boolean {
const ghUrl = new URL (
process . env [ "GITHUB_SERVER_URL" ] || "https://github.com"
) ;
return ghUrl . hostname . toUpperCase ( ) !== "GITHUB.COM" ;
}
2020-05-15 04:27:38 +07:00
export function isExactKeyMatch ( key : string , cacheKey? : string ) : boolean {
2019-10-31 01:48:49 +07:00
return ! ! (
2020-05-15 04:27:38 +07:00
cacheKey &&
cacheKey . localeCompare ( key , undefined , {
2019-10-31 01:48:49 +07:00
sensitivity : "accent"
} ) === 0
) ;
}
2020-05-15 04:27:38 +07:00
export function setCacheState ( state : string ) : void {
2020-05-20 00:46:58 +07:00
core . saveState ( State . CacheMatchedKey , state ) ;
2019-11-13 04:48:02 +07:00
}
export function setCacheHitOutput ( isCacheHit : boolean ) : void {
core . setOutput ( Outputs . CacheHit , isCacheHit . toString ( ) ) ;
}
2020-05-15 04:27:38 +07:00
export function setOutputAndState ( key : string , cacheKey? : string ) : void {
setCacheHitOutput ( isExactKeyMatch ( key , cacheKey ) ) ;
2020-05-20 00:46:58 +07:00
// Store the matched cache key if it exists
2020-05-15 04:27:38 +07:00
cacheKey && setCacheState ( cacheKey ) ;
2019-10-31 01:48:49 +07:00
}
2020-05-15 04:27:38 +07:00
export function getCacheState ( ) : string | undefined {
2020-05-20 00:46:58 +07:00
const cacheKey = core . getState ( State . CacheMatchedKey ) ;
2020-05-15 04:27:38 +07:00
if ( cacheKey ) {
core . debug ( ` Cache state/key: ${ cacheKey } ` ) ;
return cacheKey ;
2019-11-14 04:13:00 +07:00
}
return undefined ;
2019-10-31 01:48:49 +07:00
}
2019-11-22 02:37:54 +07:00
export function logWarning ( message : string ) : void {
const warningPrefix = "[warning]" ;
core . info ( ` ${ warningPrefix } ${ message } ` ) ;
}
2020-04-18 02:46:46 +07:00
// Cache token authorized for all events that are tied to a ref
2019-11-13 22:54:39 +07:00
// See GitHub Context https://help.github.com/actions/automating-your-workflow-with-github-actions/contexts-and-expression-syntax-for-github-actions#github-context
export function isValidEvent ( ) : boolean {
2020-04-21 00:44:37 +07:00
return RefKey in process . env && Boolean ( process . env [ RefKey ] ) ;
2019-11-13 22:54:39 +07:00
}
2020-06-02 22:21:03 +07:00
export function getInputAsArray (
name : string ,
options? : core.InputOptions
) : string [ ] {
return core
. getInput ( name , options )
. split ( "\n" )
. map ( s = > s . trim ( ) )
. filter ( x = > x !== "" ) ;
}
2020-10-02 21:59:55 +07:00
export function getInputAsInt (
name : string ,
options? : core.InputOptions
) : number | undefined {
2020-10-02 22:55:30 +07:00
const value = parseInt ( core . getInput ( name , options ) ) ;
if ( isNaN ( value ) || value < 0 ) {
2020-10-02 21:59:55 +07:00
return undefined ;
}
return value ;
}