powerbi-cli
Version:
Power BI command line interface for managing Power BI Embedded workspace collections
82 lines • 3.78 kB
JavaScript
;
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