YouTransfer/YouTransfer

View on GitHub
bin/youtransfer

Summary

Maintainability
Test Coverage
#!/usr/bin/env node

'use strict';

var path = require('path');
var fs = require('fs-extra');
var program = require('commander');

program.version('1.0.6')
       .command('<init>', 'Initialise a YouTransfer project')
       .command('<dockerize>', 'Prepare a YouTransfer project to run in a docker container')
       .action(function(cmd) {
            if(cmd === 'init') {
                fs.copy(path.join(__dirname,'../'), process.cwd(), function(err) {
                    if(err) {
                        return console.error('Unable to initialize YouTransfer\n' + err);
                    }
                    console.log('YouTransfer project initialised succesfully!');
                    console.log('Make sure to run "npm init" and "npm install" to setup your project.');
                    console.log('Afterwards, you can start the project by running "npm start"');
                });
            } else if(cmd === "dockerize") {

                fs.stat('./config/config.json', function(err, stats) {
                    if(!stats) {
                        fs.move('./config.json', './config/config.json', { mkdirp: true }, function(err) {
                            if(err && !err.code === 'EEXIST') { throw err; }
                            fs.ensureSymlink('./config/config.json', './config.json', function (err) {
                                if(err) { throw err; }
                            });
                        });
                    } else {
                        fs.unlink('./config.json', function(err) {
                            if(err && !err.code === 'EEXIST') { throw err; }
                            fs.ensureSymlink('./config/config.json', './config.json', function (err) {
                                if(err) { throw err; }
                            });
                        });
                    }
                });

                fs.stat('./config/settings.json', function(err, stats) {
                    if(!stats) {
                        fs.outputFile('./config/settings.json', '{}', function (err) {
                            fs.ensureSymlink('./config/settings.json', './settings.json', function (err) {
                                if(err) { throw err; }
                            });
                        });
                    } else {
                        fs.ensureSymlink('./config/settings.json', './settings.json', function (err) {
                            if(err) { throw err; }
                        });
                    }
                });

            } else {
                program.help();
            }
        })
       .parse(process.argv);