bin/captain.js
function init(target) {

  function create_project(name, uri) {
    console.log();
    console.log(terminal.cyan('Creating project: ') + name);
    console.log();

    // Creating dirs
    helpers.dirs(name, ['cache', 'media', 'logs', 'themes']);

    // Copying files
    helpers.copyR([join('themes','default')],  name);

    // Creating files
    var templates = helpers.files({
      name: name,
      uri: uri
    });

    Object.keys(templates).forEach(function(key) {
      var p = join(name, key),
          dir = dirname(key);

      if(dir != '.') {
        helpers.mkdir(join(name, dir));
      }
      helpers.write(p, templates[key]);
    });
  }

  if(target === true) {
      program.help();
  }

  function _init() {
    console.log();
    console.log(terminal.cyan('Initializing project: ') + target);
    // Testing connection
    prompt_uri(function(uri) {
      console.info(terminal.cyan('Connection successful!'));
      console.log();
      console.info(terminal.cyan('Creating database schema...'));

      // Creating projects files
      create_project(target, uri);

      // Synchronizing database
      var db = require('captain-core/lib/db');
      var conf = require('captain-core').conf;


      conf.reload(join(cwd, target));
      db.syncDB({
        uri: uri,
        complete: function(err) {
          if(err) {
            terminal.abort(err);
          }
          console.log();
          console.info(terminal.cyan('Done!'));
          console.log();
          console.info(terminal.cyan('Creating first user...'));
          console.log();

          // Creating user
          create_user({
            no_commit: true,
            success: function() {

              // Instructions
              console.log();
              console.info(terminal.cyan('Done!'));
              console.log();
              console.info(terminal.cyan('Now run:'));
              console.log(helpers.pad('cd ' + target));
              console.log(helpers.pad('captain run'));
              terminal.exit('');
            }
          });
        }
      });
    });
  }

  if(helpers.exists(target) && !helpers.isEmptyDirectory(target) && !program.force) {
    program.prompt('Directory not empty, force create? (y/n): ', function(answer) {
      var forceCreate = !!answer.match(/y|yes|arrr/i);

      if(forceCreate) {
        _init();
      } else {
        terminal.abort('Cowardly refusing to init project in a non-empty directory');
      }
    });
  } else {
    _init();
  }
}
function init(target) {

  function create_project(name, uri) {
    console.log();
    console.log(terminal.cyan('Creating project: ') + name);
    console.log();

    // Creating dirs
    helpers.dirs(name, ['cache', 'media', 'logs', 'themes']);

    // Copying files
    helpers.copyR([join('themes','default')],  name);

    // Creating files
    var templates = helpers.files({
      name: name,
      uri: uri
    });

    Object.keys(templates).forEach(function(key) {
      var p = join(name, key),
          dir = dirname(key);

      if(dir != '.') {
        helpers.mkdir(join(name, dir));
      }
      helpers.write(p, templates[key]);
    });
  }

  if(target === true) {
      program.help();
  }

  function _init() {
    console.log();
    console.log(terminal.cyan('Initializing project: ') + target);
    // Testing connection
    prompt_uri(function(uri) {
      console.info(terminal.cyan('Connection successful!'));
      console.log();
      console.info(terminal.cyan('Creating database schema...'));

      // Creating projects files
      create_project(target, uri);

      // Synchronizing database
      var db = require('captain-core/lib/db');
      var conf = require('captain-core').conf;


      conf.reload(join(cwd, target));
      db.syncDB({
        uri: uri,
        complete: function(err) {
          if(err) {
            terminal.abort(err);
          }
          console.log();
          console.info(terminal.cyan('Done!'));
          console.log();
          console.info(terminal.cyan('Creating first user...'));
          console.log();

          // Creating user
          create_user({
            no_commit: true,
            success: function() {

              // Instructions
              console.log();
              console.info(terminal.cyan('Done!'));
              console.log();
              console.info(terminal.cyan('Now run:'));
              console.log(helpers.pad('cd ' + target));
              console.log(helpers.pad('captain run'));
              terminal.exit('');
            }
          });
        }
      });
    });
  }

  if(helpers.exists(target) && !helpers.isEmptyDirectory(target) && !program.force) {
    program.prompt('Directory not empty, force create? (y/n): ', function(answer) {
      var forceCreate = !!answer.match(/y|yes|arrr/i);

      if(forceCreate) {
        _init();
      } else {
        terminal.abort('Cowardly refusing to init project in a non-empty directory');
      }
    });
  } else {
    _init();
  }
}
Usage: captain init <name> [--force]

Creates a new project.
Use --force if directory <name> already exists