#!/usr/bin/env node if(process.argv[2]){ process.kill(process.argv[2], 'SIGINT'); process.exit(0); } process.env.TERM = 'dumb'; var fs = require('fs'); var path = require('path'); var readline = require('readline') var spawn = require('child_process').spawn; var vault = spawn( 'vault', [ 'server', '-dev', '-dev-ha', '-dev-transactional', '-dev-root-token-id=root', '-dev-listen-address=127.0.0.1:9200' ] ); var output = ''; var unseal, root; readline.createInterface({ input : vault.stdout, terminal : false }).on('line', function(line) { output = output + line; console.log(line); var unsealMatch = output.match(/Unseal Key\: (.+)$/m); if (unsealMatch && !unseal) { unseal = unsealMatch[1] }; var rootMatch = output.match(/Root Token\: (.+)$/m); if (rootMatch && !root) { root = rootMatch[1] }; if (root && unseal) { fs.writeFile( path.join(process.cwd(), 'tests/helpers/vault-keys.js'), `export default ${JSON.stringify({ unseal:unseal, root:root }, null, 2)}` ); console.log('VAULT SERVER READY'); } }); vault.stderr.on('data', function(data) { console.log(data.toString()); }); vault.on('close', function(code) { console.log(`child process exited with code ${code}`); process.exit(); }); vault.on('error', function(error) { console.log(`child process errored: ${error}`); process.exit(); }); var pidFile = 'vault-ui-integration-server.pid'; process.on('SIGINT', function() { vault.kill('SIGINT'); process.exit(); }); process.on('exit', function() { vault.kill('SIGINT'); }); fs.writeFile(pidFile, process.pid);