UNPKG

3.03 kBJavaScriptView Raw
1'use strict';
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6
7var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
8
9var _glob = require('glob');
10
11var _glob2 = _interopRequireDefault(_glob);
12
13var _OptionParser = require('./OptionParser');
14
15var _OptionParser2 = _interopRequireDefault(_OptionParser);
16
17var _builtinTransforms = require('./builtinTransforms');
18
19var _builtinTransforms2 = _interopRequireDefault(_builtinTransforms);
20
21var _io = require('./io');
22
23var _io2 = _interopRequireDefault(_io);
24
25function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
26
27function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
28
29/**
30 * Lebab command line app
31 */
32var Cli = function () {
33 /**
34 * @param {String[]} argv Command line arguments
35 */
36 function Cli(argv) {
37 _classCallCheck(this, Cli);
38
39 try {
40 this.options = new _OptionParser2.default().parse(argv);
41 } catch (error) {
42 console.error(error); // eslint-disable-line no-console
43 process.exit(2);
44 }
45
46 this.transformer = _builtinTransforms2.default.createTransformer(this.options.transforms);
47 }
48
49 /**
50 * Runs the app
51 */
52
53
54 _createClass(Cli, [{
55 key: 'run',
56 value: function run() {
57 var _this = this;
58
59 if (this.options.replace) {
60 // Transform all files in a directory
61 _glob2.default.sync(this.options.replace).forEach(function (file) {
62 _this.transformFile(file, file);
63 });
64 } else {
65 // Transform just a single file
66 this.transformFile(this.options.inFile, this.options.outFile);
67 }
68 }
69 }, {
70 key: 'transformFile',
71 value: function transformFile(inFile, outFile) {
72 var _transformer$run = this.transformer.run(_io2.default.read(inFile)),
73 code = _transformer$run.code,
74 warnings = _transformer$run.warnings;
75
76 // Log warnings if there are any
77
78
79 if (warnings.length > 0 && inFile) {
80 console.error(inFile + ':'); // eslint-disable-line no-console
81 }
82
83 warnings.forEach(function (_ref) {
84 var line = _ref.line,
85 msg = _ref.msg,
86 type = _ref.type;
87
88 console.error( // eslint-disable-line no-console
89 line + ': warning ' + msg + ' (' + type + ')');
90 });
91
92 _io2.default.write(outFile, code);
93 }
94 }]);
95
96 return Cli;
97}();
98
99exports.default = Cli;
100module.exports = exports['default'];
\No newline at end of file