Skip to content

Commit

Permalink
Use Commander in metabase init script (#84)
Browse files Browse the repository at this point in the history
  • Loading branch information
ypc-faros committed Mar 28, 2022
1 parent bce557e commit 8891681
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 28 deletions.
2 changes: 1 addition & 1 deletion init/scripts/metabase-init.sh
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,7 @@ else
fi

echo "Importing dashboards"
node ../lib/metabase/init.js "$mb_url" "$mb_user" "$mb_password" import
node ../lib/metabase/init.js --metabase-url "$mb_url" --username "$mb_user" --password "$mb_password" --database "$db_name" --import
fi

echo "Attached Faros database to Metabase"
54 changes: 27 additions & 27 deletions init/src/metabase/init.ts
Original file line number Diff line number Diff line change
@@ -1,44 +1,44 @@
import {InvalidArgumentError, Option, program} from 'commander';
import pino from 'pino';
import {VError} from 'verror';

import {Dashboards} from './dashboards';

const USAGE =
'Usage: node init.js ' +
'<metabase url> <username> <password> <export <dashboardId> | import>';

const logger = pino({
name: 'metabase-init',
level: process.env.LOG_LEVEL || 'info',
});

async function main(): Promise<void> {
const args = process.argv.slice(2);
if (args.length < 4) {
console.error(USAGE);
process.exit(1);
program
.requiredOption('--metabase-url <string>')
.requiredOption('--username <string>')
.requiredOption('--password <string>')
.requiredOption('--database <string>')
.addOption(new Option('--export <dashboardId>').conflicts('import'))
.addOption(new Option('--import').conflicts('export'));

program.parse();
const options = program.opts();

if (!options.export && !options.import) {
throw new InvalidArgumentError('Must use with import or export');
}
const [url, username, password, operation, dashboardId] = args;

const dashboards = await Dashboards.fromConfig({
metabase: {url, username, password},
// TODO: Pass databaseName as argument
databaseName: 'faros',
metabase: {
url: options.metabaseUrl,
username: options.username,
password: options.password,
},
databaseName: options.database,
logger,
});
switch (operation) {
case 'export':
if (!dashboardId) {
throw new VError('Must specify dashboard id to export');
}
console.log(await dashboards.export(parseInt(dashboardId, 10)));
break;
case 'import':
await dashboards.import();
logger.info('Metabase import is complete');
break;
default:
console.error(USAGE);
process.exit(1);

if (options.export) {
console.log(await dashboards.export(parseInt(options.export, 10)));
} else {
await dashboards.import();
logger.info('Metabase import is complete');
}
}

Expand Down

0 comments on commit 8891681

Please sign in to comment.