Skip to content

Commit a636a4d

Browse files
committed
Merge pull request #38 from rwjblue/add-simple-logging
Add some rudimentary console output.
2 parents 0bb3359 + 658b63d commit a636a4d

5 files changed

Lines changed: 99 additions & 4 deletions

File tree

bin/ember-module-migrator

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
'use strict';
33

44
// Local Variables:
5-
// mode: javascript
5+
// mode: js2
66
// End:
77

88
// Provide a title to the process in `ps`
@@ -14,16 +14,19 @@ var nopt = require("nopt");
1414
var options = {
1515
'project-root': [String],
1616
'engine': [String, 'classic']
17-
}
17+
};
1818
var parsed = nopt(options);
1919

2020
var migrator = new Migrator({
2121
projectRoot: parsed['project-root'] || process.cwd(),
22-
engine: parsed['engine']
22+
engine: parsed['engine'],
23+
verbose: true
2324
});
2425

2526
migrator.processFiles()
2627
.then(function() {
28+
/* eslint no-console: 0 */
29+
2730
console.log('Finished successfully!');
2831
})
2932
.catch(function(error) {

lib/index.js

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ var move = RSVP.denodeify(fse.move);
55
var CoreObject = require('core-object');
66
var engines = require('./engines');
77
var FileInfoCollection = require('./models/file-info-collection');
8+
var Logger = require('./models/logger');
89

910
var Engine = CoreObject.extend({
1011
init: function() {
@@ -26,13 +27,21 @@ var Engine = CoreObject.extend({
2627

2728
this._promise = null;
2829
this._fileInfoCollection = new FileInfoCollection();
30+
this._logger = new Logger({
31+
projectRoot: this.projectRoot
32+
});
2933
this._fileInfos = [];
3034
},
3135

3236
_queueMoveFile: function(source, dest) {
37+
var logger = this._logger;
38+
3339
this._promise = this._promise
3440
.then(function() {
3541
return move(source, dest);
42+
})
43+
.then(function() {
44+
logger.movedFile(source, dest);
3645
});
3746
},
3847

@@ -90,6 +99,8 @@ var Engine = CoreObject.extend({
9099
this._filesInDir('tests')
91100
);
92101

102+
var verbose = this.verbose;
103+
var logger = this._logger;
93104
var projectRoot = this.projectRoot;
94105
var i;
95106

@@ -116,7 +127,13 @@ var Engine = CoreObject.extend({
116127
this._queueRemoveEmptyDirs('app');
117128
this._queueRemoveEmptyDirs('tests');
118129

119-
return this._promise;
130+
return this._promise
131+
.then(function() {
132+
/*eslint no-console: 0 */
133+
if (verbose) {
134+
console.log(logger.flush());
135+
}
136+
});
120137
},
121138

122139
fileInfoFor: function(path) {

lib/models/logger.js

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
var path = require('path');
2+
var chalk = require('chalk');
3+
var CoreObject = require('core-object');
4+
var Table = require('cli-table2');
5+
6+
var Logger = CoreObject.extend({
7+
init: function() {
8+
this._movedFiles = {};
9+
this._renamedRenderables = [];
10+
},
11+
12+
movedFile: function(_source, _destination) {
13+
var source = path.relative(this.projectRoot, _source);
14+
var destination = path.relative(this.projectRoot, _destination);
15+
16+
this._movedFiles[source] = destination;
17+
},
18+
19+
flush: function() {
20+
var maxWidth = process.stdout.columns - 4;
21+
var table = new Table({
22+
head: ['Source', 'Destination'],
23+
colWidths: [maxWidth / 2, maxWidth / 2]
24+
});
25+
26+
27+
for (var source in this._movedFiles) {
28+
var destination = this._movedFiles[source];
29+
30+
table.push([chalk.cyan(source), chalk.yellow(destination)]);
31+
}
32+
33+
return table.toString();
34+
}
35+
});
36+
37+
module.exports = Logger;

package.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@
2323
"rimraf": "^2.5.2"
2424
},
2525
"dependencies": {
26+
"chalk": "^1.1.3",
27+
"cli-table2": "^0.2.0",
2628
"core-object": "^2.0.0",
2729
"exists-sync": "0.0.3",
2830
"fs-extra": "^0.28.0",

test/logger-test.js

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
var path = require('path');
2+
var assert = require('power-assert');
3+
var Logger = require('../lib/models/logger');
4+
5+
describe('logger', function() {
6+
var logger;
7+
8+
beforeEach(function() {
9+
logger = new Logger({
10+
projectRoot: __dirname
11+
});
12+
});
13+
14+
it('tracks moved files', function() {
15+
var source = 'app/helpers/titleize.js';
16+
var dest = 'src/ui/components/titleize.js';
17+
18+
logger.movedFile(source, dest);
19+
20+
var output = logger.flush();
21+
22+
assert(output.indexOf(source) > -1);
23+
assert(output.indexOf(dest) > -1);
24+
});
25+
26+
it('uses paths relative to root', function() {
27+
var source = path.resolve(__dirname, 'app/helpers/titleize.js');
28+
var dest = path.resolve(__dirname, 'src/ui/components/titleize.js');
29+
30+
logger.movedFile(source, dest);
31+
32+
var output = logger.flush();
33+
34+
assert(output.indexOf(__dirname) === -1);
35+
});
36+
});

0 commit comments

Comments
 (0)