UNPKG

powerbi-cli

Version:

Power BI command line interface for managing Power BI Embedded workspace collections

82 lines 3.78 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var powerbi = require("powerbi-api"); var msrest = require("ms-rest"); var cli_1 = require("./cli"); var config_1 = require("./config"); var fs = require("fs"); var _ = require("lodash"); var program = require("commander"); function CliImport() { var pkg = require('../package.json'); var util = require('util'); program.version(pkg.version) .option('-c, --collection <collection>', 'The Power BI workspace collection') .option('-w, --workspace <workspaceId>', 'The Power BI workspace') .option('-k, --accessKey <accessKey>', 'The Power BI workspace collection access key') .option('-n, --displayName <displayName>', 'The dataset display name') .option('-f, --file <file>', 'The PBIX file to upload') .option('-o, --overwrite [overwrite]', 'Whether to overwrite a dataset with the same name. Default is false') .option('-b --baseUri [baseUri]', 'The base uri to connect to'); program.on('--help', function () { console.log(' Examples:'); console.log(''); console.log(' $ powerbi import -c <collection> -k <accessKey> -w <workspace> -f <file> -n <displayName>'); }); program.parse(process.argv); var settings = config_1.Config.merge(program); if (!(settings.collection && settings.workspace && settings.accessKey && settings.displayName && settings.file)) { program.help(); } else { try { var options = {}; var credentials = new msrest.TokenCredentials(settings.accessKey, 'AppKey'); var client_1 = new powerbi.PowerBIClient(credentials, settings.baseUri, null); if (!_.isUndefined(settings.overwrite) && settings.overwrite) { options.nameConflict = 'Overwrite'; } options.datasetDisplayName = settings.displayName; if (!fs.existsSync(settings.file)) { throw new Error(util.format('File "%s" not found', settings.file)); } cli_1.Cli.print('Importing %s to workspace: %s', settings.file, settings.workspace); client_1.imports.uploadFile(settings.collection, settings.workspace, settings.file, options, function (err, result, request, response) { if (err) { return cli_1.Cli.error(err); } var importResult = result; cli_1.Cli.print('File uploaded successfully'); cli_1.Cli.print('Import ID: %s', importResult.id); checkImportState(client_1, importResult, function (importStateErr, importStateResult) { if (importStateErr) { return cli_1.Cli.print(importStateErr); } cli_1.Cli.print('Import succeeded'); }); }); } catch (err) { cli_1.Cli.error(err); } } /** * Checks the import state of the requested import id */ function checkImportState(client, importResult, callback) { client.imports.getImportById(settings.collection, settings.workspace, importResult.id, function (err, result) { importResult = result; cli_1.Cli.print('Checking import state: %s', importResult.importState); if (importResult.importState === 'Succeeded' || importResult.importState === 'Failed') { callback(null, importResult); } else { setTimeout(function () { checkImportState(client, importResult, callback); }, 500); } }); } } exports.default = CliImport; //# sourceMappingURL=cli-import.js.map