import { readFile } from 'fs' ; import * as jsonminify from 'jsonminify' ; import * as promisify from 'util.promisify' ; import { OpenEdgeFormatOptions } from '../misc/OpenEdgeFormatOptions' ; const readFileAsync = promisify ( readFile ) ; export const OPENEDGE_CONFIG_FILENAME = '.openedge.json' ; export interface TestConfig { files ? : string [ ] ; beforeAll ? : Command ; afterAll ? : Command ; beforeEach ? : Command ; afterEach ? : Command ; } export interface Command { cmd : string ; args ? : string [ ] ; env ? : string [ ] ; cwd ? : string ; } export interface OpenEdgeConfig { dlc ? : string ; proPath ? : string [ ] ; proPathMode ? : 'append' | 'overwrite' | 'prepend' ; parameterFiles ? : string [ ] ; workingDirectory ? : string ; test ? : TestConfig ; startupProcedure ? : string ; dbDictionary ? : string [ ] ; format ? : OpenEdgeFormatOptions ; } export function loadConfigFile ( filename ) { if ( ! filename ) { return Promise . resolve ( { } ) ; } return readFileAsync ( filename , { encoding : 'utf8' } ) . then ( ( text ) => { return JSON . parse ( jsonminify ( text ) ) ; } ) . catch ( ( e ) => { if ( e . code === 'ENOENT' ) { return { } ; } throw e ; } ) ; }