UNPKG

1.81 kBapplication/x-shView Raw
1#! /usr/bin/env node
2
3'use strict'
4
5var nomnom = require('nomnom')
6var fs = require('fs')
7var path = require('path')
8
9var espresso = require('../src/index.js')
10
11var 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
49var pathStats = fs.lstatSync(opts.path)
50var files = []
51
52opts.path = opts.path.slice(-1) === '/' ? opts.path.slice(0, -1) : opts.path
53
54if (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
62files.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})
71console.log('Your files have been converted, disaster averted.')