Files
attest/src/predicate.ts
Brian DeHamer 3ff4eb4c69 centralize collection of action inputs (#72)
Signed-off-by: Brian DeHamer <bdehamer@github.com>
2024-05-24 11:01:44 -07:00

33 lines
926 B
TypeScript

import fs from 'fs'
import type { Predicate } from '@actions/attest'
export type PredicateInputs = {
predicateType: string
predicate: string
predicatePath: string
}
// Returns the predicate specified by the action's inputs. The predicate value
// may be specified as a path to a file or as a string.
export const predicateFromInputs = (inputs: PredicateInputs): Predicate => {
const { predicateType, predicate, predicatePath } = inputs
if (!predicateType) {
throw new Error('predicate-type must be provided')
}
if (!predicatePath && !predicate) {
throw new Error('One of predicate-path or predicate must be provided')
}
if (predicatePath && predicate) {
throw new Error('Only one of predicate-path or predicate may be provided')
}
const params = predicatePath
? fs.readFileSync(predicatePath, 'utf-8')
: predicate
return { type: predicateType, params: JSON.parse(params) }
}