1 | "use strict";
|
2 |
|
3 | var _fs = _interopRequireDefault(require("fs"));
|
4 |
|
5 | var _getCredentials = require("@commercetools/get-credentials");
|
6 |
|
7 | var _pino = _interopRequireDefault(require("pino"));
|
8 |
|
9 | var _prettyError = _interopRequireDefault(require("pretty-error"));
|
10 |
|
11 | var _yargs = _interopRequireDefault(require("yargs"));
|
12 |
|
13 | var _main = _interopRequireDefault(require("./main"));
|
14 |
|
15 | var _package = require("../package.json");
|
16 |
|
17 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
18 |
|
19 | process.title = 'customer-groups-exporter';
|
20 |
|
21 | const args = _yargs.default.usage(`
|
22 | Usage: $0 [options]
|
23 | ${_package.description}`).showHelpOnFail(false).option('output', {
|
24 | alias: 'o',
|
25 | default: 'stdout',
|
26 | describe: 'Path to output file.'
|
27 | }).coerce('output', arg => {
|
28 | if (arg !== 'stdout') return _fs.default.createWriteStream(String(arg));
|
29 | return process.stdout;
|
30 | }).option('apiUrl', {
|
31 | default: 'https://api.sphere.io',
|
32 | describe: 'The host URL of the HTTP API service.'
|
33 | }).option('authUrl', {
|
34 | default: 'https://auth.sphere.io',
|
35 | describe: 'The host URL of the OAuth API service.'
|
36 | }).option('accessToken', {
|
37 | describe: 'CTP client access token.'
|
38 | }).option('projectKey', {
|
39 | alias: 'p',
|
40 | describe: 'API project key.',
|
41 | demand: true
|
42 | }).option('where', {
|
43 | alias: 'w',
|
44 | describe: 'Specify where predicate.'
|
45 | }).option('logLevel', {
|
46 | default: 'info',
|
47 | describe: 'Logging level: error, warn, info or debug.'
|
48 | }).option('prettyLogs ', {
|
49 | describe: 'Pretty print logs to the terminal',
|
50 | type: 'boolean'
|
51 | }).option('logFile', {
|
52 | default: 'customer-groups-export.log',
|
53 | describe: 'Path to where to save logs file.',
|
54 | type: 'string'
|
55 | }).argv;
|
56 |
|
57 |
|
58 | const loggerConfig = {
|
59 | level: args.logLevel,
|
60 | prettyPrint: args.prettyLogs
|
61 | };
|
62 |
|
63 |
|
64 | let logDestination;
|
65 | if (args.output === process.stdout) logDestination = _fs.default.createWriteStream(args.logFile);
|
66 | const logger = (0, _pino.default)(loggerConfig, logDestination);
|
67 |
|
68 |
|
69 | const logError = error => {
|
70 | const errorFormatter = new _prettyError.default();
|
71 | if (args.logLevel === 'debug') process.stderr.write(`ERR: ${errorFormatter.render(error)}`);else process.stderr.write(`ERR: ${error.message || error}`);
|
72 | };
|
73 |
|
74 | const errorHandler = errors => {
|
75 | if (Array.isArray(errors)) errors.forEach(logError);else logError(errors);
|
76 | process.exitCode = 1;
|
77 | };
|
78 |
|
79 | const resolveCredentials = _args => {
|
80 | if (_args.accessToken) return Promise.resolve({});
|
81 | return (0, _getCredentials.getCredentials)(_args.projectKey);
|
82 | };
|
83 |
|
84 |
|
85 | args.output.on('error', errorHandler);
|
86 | resolveCredentials(args).then(credentials => {
|
87 | const apiConfig = {
|
88 | host: args.authUrl,
|
89 | apiUrl: args.apiUrl,
|
90 | projectKey: args.projectKey,
|
91 | credentials
|
92 | };
|
93 | const exporterOptions = {
|
94 | apiConfig,
|
95 | accessToken: args.accessToken,
|
96 | predicate: args.where,
|
97 | logger: {
|
98 | error: logger.error.bind(logger),
|
99 | warn: logger.warn.bind(logger),
|
100 | info: logger.info.bind(logger),
|
101 | debug: logger.debug.bind(logger)
|
102 | }
|
103 | };
|
104 | return new _main.default(exporterOptions);
|
105 | }).then(customerGroupsExporter => customerGroupsExporter.run(args.output)).catch(errorHandler); |
\ | No newline at end of file |