diff --git a/src/cli/flowr.ts b/src/cli/flowr.ts index 666de739d1..e4ca0f8dff 100644 --- a/src/cli/flowr.ts +++ b/src/cli/flowr.ts @@ -28,6 +28,7 @@ import { defaultConfigFile, flowrMainOptionDefinitions, getScriptsText } from '. import { TreeSitterExecutor } from '../r-bridge/lang-4.x/tree-sitter/tree-sitter-executor'; import type { KnownParser } from '../r-bridge/parser'; import fs from 'fs'; +import path from 'path'; export const toolName = 'flowr'; @@ -98,7 +99,7 @@ if(options['config-json']) { if(!usedConfig) { if(options['config-file']) { // validate it exists - if(!fs.existsSync(options['config-file'])) { + if(!fs.existsSync(path.resolve(options['config-file']))) { log.error(`Config file '${options['config-file']}' does not exist`); process.exit(1); } diff --git a/src/config.ts b/src/config.ts index 5dba054676..449bcc3bc0 100644 --- a/src/config.ts +++ b/src/config.ts @@ -194,6 +194,14 @@ export function getEngineConfig(engine: T): Engi function loadConfigFromFile(configFile: string | undefined, workingDirectory: string): FlowrConfigOptions { if(configFile !== undefined) { + if(path.isAbsolute(configFile) && fs.existsSync(configFile)) { + log.trace(`Found config at ${configFile} (absolute)`); + const ret = parseConfig(fs.readFileSync(configFile, { encoding: 'utf-8' })); + if(ret) { + log.info(`Using config ${JSON.stringify(ret)}`); + return ret; + } + } let searchPath = path.resolve(workingDirectory); do{ const configPath = path.join(searchPath, configFile);