diff --git a/lib/random.js b/lib/random.js index a76105a85353def22738a1a7698e5738b66ec9ca..2a837203a1e1f273247eed00f18ed8dfdcc19e74 100644 --- a/lib/random.js +++ b/lib/random.js @@ -1,5 +1,8 @@ // Module to generate a bunch of CATALOG.json files which // have arbitrary but realistic data +// +// TODO: generate some random text files and add them +// as well const ORGANISATION = { 'id': 'https://examples.edu', @@ -35,7 +38,7 @@ const fs = require('fs-extra'); const randdict = require('random-word'); const path = require('path'); const uuidv4 = require('uuid/v4'); - +const ArgumentParser = require('argparse').ArgumentParser; function randrange(min, max) { return Math.floor(Math.random() * (max - min)) + min; @@ -76,7 +79,6 @@ function randsentence() { function randtext() { const nsentences = randrange(PARA_MIN, PARA_MAX); - console.log(nsentences); return randoms(nsentences, randsentence).join(' ') + '\n'; } @@ -117,14 +119,10 @@ async function makedatacrate(dest, datapub) { }); const catfile = path.join(dest, id, 'CATALOG.json'); await fs.writeFile(catfile, JSON.stringify(catalog, null, 2)); - console.log('Wrote ' + catfile); - const datapubfile = path.join(dest, id, 'datapub.json'); - await fs.writeFile(datapubfile, JSON.stringify(datapub, null, 2)); - console.log('Wrote ' + datapubfile); } -async function makedatacrates(dest, n) { +async function randomdatacrates(dest, n) { const datapubs = randdatapubs(n); Promise.all( datapubs.map(async p => { @@ -134,7 +132,37 @@ async function makedatacrates(dest, n) { console.log("Done"); } -makedatacrates('./output/', 5) + +var parser = new ArgumentParser({ + version: '1.0.0', + addHelp: true, + description: 'Generates a bunch of plausible random DataCrates' +}); + + +parser.addArgument( + ['-d', '--directory'], + { + help: "Directory in which to write DataCrates. Will be created if it doesn't exist", + defaultValue: './output/' + } +); + +parser.addArgument( + ['-n', '--number'], + { + help: 'Number of DataCrates to generate.', + type: 'int', + defaultValue: 10 + } +); + + +var args = parser.parseArgs(); + +console.log(`Generating ${args['number']} random DataCrates in ${args['directory']}`); +randomdatacrates(args['directory'], args['number']); + diff --git a/package-lock.json b/package-lock.json index 58e41158eaa940c913ad2e98e55bb4309c344e34..2f0c1d4551d627348ce013000229a98422c86328 100644 --- a/package-lock.json +++ b/package-lock.json @@ -65,6 +65,14 @@ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "requires": { + "sprintf-js": "~1.0.2" + } + }, "array-equal": { "version": "1.0.0", "resolved": "http://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", @@ -1403,6 +1411,11 @@ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "optional": true }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" + }, "ssf": { "version": "0.10.2", "resolved": "https://registry.npmjs.org/ssf/-/ssf-0.10.2.tgz", diff --git a/package.json b/package.json index 281b94ee87574147e995fc0313a990d0e5a0181d..414d1737240fe8bdd1ede569146cdd033eb33a98 100644 --- a/package.json +++ b/package.json @@ -14,6 +14,7 @@ "license": "GPL-3.0", "repository": "https://code.research.uts.edu.au/eresearch/datacrate", "dependencies": { + "argparse": "^1.0.10", "calcyte": "^1.0.2", "fs-extra": "^7.0.0", "jsonld": "^1.1.0",