diff --git a/Dockerfile b/Dockerfile index b3a8697..a486510 100644 --- a/Dockerfile +++ b/Dockerfile @@ -9,10 +9,8 @@ COPY ./src /src WORKDIR /src -# install dependencies: js-yaml and papaparse -# in node, the dependencies are directly install into /src/ -RUN npm install js-yaml -RUN npm install papaparse +# install dependencies: js2args +RUN npm install js2args@v0.3.0 # run command CMD ["node", "run.js"] \ No newline at end of file diff --git a/in/parameters.json b/in/parameters.json index 6314c67..fee51ad 100644 --- a/in/parameters.json +++ b/in/parameters.json @@ -5,7 +5,7 @@ "foo_string": "Never eat yellow snow", "foo_enum": "bar", "foo_array": [34, 55, 23, 43, 23], - "foo_matrix": "/in/foo_matrix.dat", + "foo_matrix": "/in/foo_mat.dat", "foo_csv": "/in/foo_csv.csv" } } \ No newline at end of file diff --git a/src/getParameter.js b/src/getParameter.js deleted file mode 100644 index 229d37d..0000000 --- a/src/getParameter.js +++ /dev/null @@ -1,80 +0,0 @@ -const { PARAM_FILE, CONF_FILE, TOOL_RUN } = process.env; -const fs = require('fs'); -const yaml = require('js-yaml'); -const papa = require('papaparse'); - -const getParameter = () => { - // load parameters file - const params = require(PARAM_FILE || '/in/parameters.json'); - - // if no tool name was passed, return first configured tool - const toolName = TOOL_RUN ? TOOL_RUN : Object.keys(params)[0] - - // load the yaml file - const config = yaml.load(fs.readFileSync(CONF_FILE || '/src/tool.yml')) - const toolConf = config['tools'][toolName] - - // create the kwargs - const kwargs = {} - - // foreach param passed - Object.entries(params[toolName]).forEach(([key, val]) => { - // get the param conf - const parConf = toolConf[key] - - // if it is not specified, add anyway - if (!parConf) { - kwargs[key] = val - } else { - // parse dates - if (['date', 'time', 'datetime'].includes(parConf['type'].toLowerCase())) { - kwargs[key] = new Date(val) - } - - if (parConf['type'] === 'file') { - ext = val.split('.').pop().toLowerCase() - - // switch the file extension - // json - if (ext === 'json') { - kwargs[key] = require(val) - } - - // dat - else if (ext === 'dat') { - raw = fs.readFileSync(val) - const dat = [] - raw.split('\n').forEach(line => { - if (!line.startsWith('#')) { - dat.push(line.split(' ')) - } - }) - - // add data - kwargs[key] = dat - - } - - // read csv data - else if (ext === 'csv') { - // - raw = fs.readFileSync(val).split('\n') - const recs = papa.parse(raw, {header: true}) - - // add - kwargs[key] = recs - } - - // else the tool should handle it - else { - // pass the file path anyway, because we don't know this file - kwargs[key] = val - } - } - } - }) - - return kwargs; -} - -module.exports = getParameter \ No newline at end of file diff --git a/src/run.js b/src/run.js index 6f0c9c8..1080f70 100644 --- a/src/run.js +++ b/src/run.js @@ -1,4 +1,4 @@ -const getParameter = require('./getParameter'); +const getParameter = require('js2args'); // get the tool names const toolName = process.env.RUN_TOOL || 'foobar';