| @@ -11,7 +11,7 @@ console.dir(processedArgs) | |||
| var path = require('path') | |||
| // Serialize a set of functions that will execute to return a promises one after the other. | |||
| // Will stop when any one fails. | |||
| function any(iterable) { | |||
| function any(iterable, continueOnFailure) { | |||
| return iterable.reduce( | |||
| (p, fn, i ,a) => { | |||
| // console.log('accumulator :'); | |||
| @@ -103,6 +103,26 @@ var dbForLabel = function(label){ | |||
| return dbsForLabel[label] || 'mysql' | |||
| } | |||
| // Relevant git repos | |||
| var gitRepos = [ | |||
| 'ember-masonry-grid' | |||
| , 'bbhverse' | |||
| , 'clientverse' | |||
| , 'serververse' | |||
| , 'client' | |||
| , 'elxr' | |||
| , 'elixir-client' | |||
| , 'elixir-client-unlinked' | |||
| , 'ember-searchable-select' | |||
| , 'loopback-component-jsonapi' | |||
| , 'config' | |||
| , 'loopback-connector-ds' | |||
| , 'chess-server-lib' | |||
| , 'elixir-server' | |||
| , 'chess-server' | |||
| , 'setup' | |||
| ] | |||
| var env = Object.assign({}, process.env); // Shallow clone it. | |||
| var __runcmd = function(label){ | |||
| @@ -223,49 +243,62 @@ var __runcmd = function(label){ | |||
| // nodeShellExec('MSHTA', ["javascript: var shell = new ActiveXObject('shell.application'); shell.ShellExecute('node', 'elxr pull', '', 'runas', 1);close();"]); | |||
| // Clone if not exists | |||
| var gitclonables = [ | |||
| 'ember-masonry-grid' | |||
| , 'bbhverse' | |||
| , 'clientverse' | |||
| , 'serververse' | |||
| , 'client' | |||
| , 'elixir-client' | |||
| , 'elixir-client-unlinked' | |||
| , 'ember-searchable-select' | |||
| , 'loopback-component-jsonapi' | |||
| , 'config' | |||
| , 'loopback-connector-ds' | |||
| , 'chess-server-lib' | |||
| , 'elixir-server' | |||
| , 'chess-server' | |||
| , 'setup' | |||
| ] | |||
| gitclonables.forEach(clonable => { | |||
| if(existsSync(clonable)) { | |||
| console.log('pulling ' + clonable) | |||
| gitRepos.forEach(repo => { | |||
| if(existsSync(repo)) { | |||
| console.log('pulling ' + repo) | |||
| nodeShellExec('git', ['pull'], { | |||
| // inherit : true, shell: true | |||
| // , | |||
| cwd : clonable | |||
| cwd : repo | |||
| // , env: process.env | |||
| , title : `git pull ${clonable}` | |||
| , title : `git pull ${repo}` | |||
| }).catch((e)=>{ console.error(e) }) | |||
| } | |||
| else { | |||
| console.log('cloning ' + clonable) | |||
| nodeShellExec('git', ['clone', '//172.16.0.27/repos/' + clonable + '.git'], | |||
| console.log('cloning ' + repo) | |||
| nodeShellExec('git', ['clone', '//172.16.0.27/repos/' + repo + '.git'], | |||
| { | |||
| // inherit : true, shell: true | |||
| // , | |||
| cwd : clonable | |||
| cwd : repo | |||
| // , env: process.env | |||
| , title : `git clone ${'//172.16.0.27/repos/' + clonable + '.git'}` | |||
| , title : `git clone ${'//172.16.0.27/repos/' + repo + '.git'}` | |||
| }).catch((e)=>{ console.error(e) }) | |||
| } | |||
| }) | |||
| } | |||
| , 'npmi' : ()=>{ | |||
| var tasks = []; | |||
| gitRepos.forEach(repo => { | |||
| console.log('npm i for ' + repo) | |||
| // nodeShellExec('pwd', [], { | |||
| // // inherit : true, shell: true | |||
| // cwd : repo | |||
| // // , env: process.env | |||
| // , title : `pwd for ${repo}` | |||
| // }).catch((e)=>{ console.error(e) }) | |||
| // nodeShellExec('rm', ['package-lock.json'], { | |||
| // inherit : true, shell: true | |||
| // , cwd : repo | |||
| // , env: process.env | |||
| // , title : `rm 'package-lock.json' for ${repo}` | |||
| // }).catch((e)=>{ console.error(e) }) | |||
| tasks.push(()=>{ | |||
| var p = nodeShellExec('npm', ['i'], { | |||
| inherit : true, shell: true | |||
| , cwd : repo | |||
| , env: process.env | |||
| , title : `npm i for ${repo}` | |||
| }).catch((e)=>{ console.error(e) }) | |||
| return p; | |||
| }) | |||
| }) | |||
| any(tasks); | |||
| } | |||
| , 'start' : (label)=>{ | |||
| console.log('Starting Elixir Server.'); | |||
| var env = Object.assign({}, process.env); // Shallow clone it. | |||
| @@ -376,14 +409,17 @@ function nodeShellExec() { | |||
| // use child.stdout.setEncoding('utf8'); if you want text chunks | |||
| child.stdout.setEncoding('utf8'); | |||
| child.stderr.setEncoding('utf8'); | |||
| child.stdout.on('data', (chunk) => { messages.push(chunk); /*console.log(chunk)*/}); | |||
| child.on('error', (chunk) => { messages.push(chunk); /*console.error(chunk)*/ }); | |||
| child.stderr.pipe(process.stderr); | |||
| child.stderr.on('data', (chunk) => { messages.push(chunk); /*console.log(chunk)*/}); | |||
| // child.stderr.pipe(process.stderr); | |||
| child.on('close', (code) => { | |||
| console.log(` ${args[2].title} exited with code ${code}`) | |||
| console.log(messages) | |||
| console.log([` ${args[2].title} exited with code ${code}`]) | |||
| // console.log([ messages.join('') ]) | |||
| process.stdout.write( messages.join('') ) | |||
| if(code !== 0 ) return reject(code) | |||
| resolve(true) | |||
| }); | |||