Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on May 8th, 2012  |  syntax: None  |  size: 2.45 KB  |  hits: 11  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. var control = require('control'),
  2.     script = process.argv[1],
  3.     perform = control.perform,
  4.     task = control.task;
  5.  
  6. var ProjectConfig = {
  7.   rootDir: 'staging',
  8.   git: 'git://github.com/we4tech/restaurant-review.git',
  9.   branch: 'master',
  10.   serverPort: 4000
  11. };
  12.  
  13. function buildServerCommand(start) {
  14.   return 'cd ~/' + ProjectConfig.rootDir + ' && /usr/bin/ruby1.8 /usr/local/bin/mongrel_rails cluster::' + (start ? 'start' : 'stop') +
  15.          ' -C config/staging_mongrel.conf';
  16. }
  17.  
  18. task('staging', 'Config staging server', function() {
  19.   var config = {
  20.     'my-server-host': {
  21.       user: 'some-user'
  22.     }
  23.   };
  24.  
  25.   return control.controllers(config)
  26. });
  27.  
  28. task('setup_dir', 'Setup project directory', function(c) {
  29.   // Nothing to do here
  30. });
  31.  
  32. task('setup_code', 'Update code base', function(c) {
  33.   var cmd = 'git clone ' + ProjectConfig.git + ' ' + ProjectConfig.rootDir + '';
  34.   cmd += ' && mkdir ~/' + ProjectConfig.rootDir + '/log ';
  35.   cmd += ' && mkdir ~/' + ProjectConfig.rootDir + '/tmp ';
  36.   cmd += ' && mkdir ~/' + ProjectConfig.rootDir + '/tmp/pids ';
  37.   c.ssh(cmd);
  38. });
  39.  
  40. task('setup', 'Setup whole project', function(c) {
  41.   perform('setup_dir', c);
  42.   perform('setup_code', c);
  43. });
  44.  
  45. task('destroy', 'Destroy existing code base', function(c) {
  46.   c.ssh('rm -rf ' + ProjectConfig.rootDir);
  47. });
  48.  
  49. task('update_code', 'Update code base', function(c) {
  50.   c.ssh('cd ' + ProjectConfig.rootDir + ' && git checkout master && git pull');
  51. });
  52.  
  53. task('start_server', 'Start server', function(c) {
  54.   c.ssh(buildServerCommand(true));
  55. });
  56.  
  57. task('stop_server', 'Stop already running server processes', function(c) {
  58.   c.ssh(buildServerCommand(false));
  59. });
  60.  
  61. task('restart_server', 'Restart server process', function(c) {
  62.   c.ssh(buildServerCommand(false) + ' && ' + buildServerCommand(true));
  63. });
  64.  
  65. task('rake', 'Execute rake at server end', function(c) {
  66.   var argv = (process.argv || []);
  67.   var needle = argv.indexOf('rake');
  68.   var cmd = "cd " + ProjectConfig.rootDir + " && " + argv.splice(needle, argv.length).join(' ');
  69.  
  70.   if (cmd.indexOf('RAILS_ENV') == -1) {
  71.     cmd += ' RAILS_ENV=' + ProjectConfig.rootDir;
  72.   }
  73.  
  74.   c.ssh(cmd);
  75. });
  76.  
  77. task('exec', 'Execute command in server end', function(c) {
  78.   var argv = (process.argv || []);
  79.   var needle = argv.indexOf('exec');
  80.   var cmd = "cd " + ProjectConfig.rootDir + " && " + argv.splice(needle + 1, argv.length).join(' ');
  81.  
  82.   c.ssh(cmd);
  83. });
  84.  
  85. task('update', 'Deploy code in staging server', function(controller) {
  86.   perform('update_code', controller);
  87. });
  88.  
  89. control.begin();