1 |
|
2 |
|
3 | 'use strict'
|
4 |
|
5 | var nomnom = require('nomnom')
|
6 | var fs = require('fs')
|
7 | var path = require('path')
|
8 |
|
9 | var espresso = require('../src/index.js')
|
10 |
|
11 | var opts = nomnom
|
12 | .script('espresso')
|
13 | .options({
|
14 | path: {
|
15 | position: 0,
|
16 | help: 'Files or directory to transform',
|
17 | metavar: 'FILE',
|
18 | required: true
|
19 | },
|
20 | match: {
|
21 | abbr: 'm',
|
22 | help: 'File extensions to target in directory',
|
23 | default: '.coffee'
|
24 | },
|
25 | extension: {
|
26 | abbr: 'ext',
|
27 | help: 'The extension for transformed files, i.e. .js OR .es6',
|
28 | default: '.es6'
|
29 | },
|
30 | core: {
|
31 | flag: true,
|
32 | help: 'Basic ES2015 transforms, i.e. arrowFunctions, object methods, and import/exports',
|
33 | default: true
|
34 | },
|
35 | jsx: {
|
36 | flag: true,
|
37 | help: 'Transform any available React.DOM or Components to JSX',
|
38 | default: false
|
39 | },
|
40 | backbone: {
|
41 | abbr: 'bb',
|
42 | flag: true,
|
43 | help: 'Transform any available Backbone Classes into their Backbone.extend equivalent',
|
44 | default: false
|
45 | }
|
46 | })
|
47 | .parse()
|
48 |
|
49 | var pathStats = fs.lstatSync(opts.path)
|
50 | var files = []
|
51 |
|
52 | opts.path = opts.path.slice(-1) === '/' ? opts.path.slice(0, -1) : opts.path
|
53 |
|
54 | if (pathStats.isDirectory()) {
|
55 | files = fs.readdirSync(opts.path).map(function (file) {
|
56 | return opts.path + '/' + file
|
57 | })
|
58 | } else if (pathStats.isFile()) {
|
59 | files.push(opts.path)
|
60 | }
|
61 |
|
62 | files.forEach(function (file) {
|
63 | if (path.extname(file) === opts.match) {
|
64 | console.log('-----------------\n', file, '\n--------------------')
|
65 | var content = fs.readFileSync(file).toString()
|
66 | var es6Content = espresso(content, opts)
|
67 |
|
68 | fs.writeFileSync(path.dirname(file) + '/' + path.basename(file, opts.match) + opts.extension, es6Content)
|
69 | }
|
70 | })
|
71 | console.log('Your files have been converted, disaster averted.')
|