import csvparse from 'csv-parse/lib/sync' ; import * as core from '@actions/core' ; import { issueCommand } from '@actions/core/lib/command' ; import * as fs from 'fs' ; import * as os from 'os' ; import * as path from 'path' ; let _tmpDir ; export interface Inputs { images : string [ ] ; tags : string [ ] ; flavor : string [ ] ; labels : string [ ] ; sepTags : string ; sepLabels : string ; bakeTarget : string ; githubToken : string ; } export function tmpDir ( ) { if ( ! _tmpDir ) { _tmpDir = fs . mkdtempSync ( path . join ( os . tmpdir ( ) , 'docker-metadata-action-' ) ) . split ( path . sep ) . join ( path . posix . sep ) ; } return _tmpDir ; } export function getInputs ( ) { return { images : getInputList ( 'images' ) , tags : getInputList ( 'tags' , true ) , flavor : getInputList ( 'flavor' , true ) , labels : getInputList ( 'labels' , true ) , sepTags : core . getInput ( 'sep-tags' ) || `\n` , sepLabels : core . getInput ( 'sep-labels' ) || `\n` , bakeTarget : core . getInput ( 'bake-target' ) || `docker-metadata-action` , githubToken : core . getInput ( 'github-token' ) } ; } export function getInputList ( name , ignoreComma ? ) { let res = [ ] ; const items = core . getInput ( name ) ; if ( items == '' ) { return res ; } for ( let output of csvparse ( items , { columns : false , relax : true , relaxColumnCount : true , skipLinesWithEmptyValues : true } ) as Array < string [ ] > ) { if ( output . length == 1 ) { res . push ( output [ 0 ] ) ; continue ; } else if ( ! ignoreComma ) { res . push ( ... output ) ; continue ; } res . push ( output . join ( ',' ) ) ; } return res . filter ( item => item ) . map ( pat => pat . trim ( ) ) ; } export const asyncForEach = async ( array , callback ) => { for ( let index = 0 ; index < array . length ; index ++ ) { await callback ( array [ index ] , index , array ) ; } } ; export function setOutput ( name , value ) { issueCommand ( 'set-output' , { name } , value ) ; }