Skip to content

Instantly share code, notes, and snippets.

@enko
Created August 12, 2020 18:01
Show Gist options
  • Save enko/5d471e934b82491f0000496454ad8be0 to your computer and use it in GitHub Desktop.
Save enko/5d471e934b82491f0000496454ad8be0 to your computer and use it in GitHub Desktop.
import * as shelljs from 'shelljs';
import { Logger } from '@flyacts/backend-logger';
import * as path from 'path';
import * as fs from 'fs/promises';
import * as os from 'os';
const logger = new Logger();
(async function(){
const settingsPath = path.resolve(
os.homedir(),
'bitwarden-secrets.json'
);
const settings = JSON.parse(await fs.readFile(settingsPath, 'utf-8'));
const server = settings.server;
logger.info(`Seeding secrets into deployment structure from ${server}`);
shelljs.exec(
'npm run -s bw -- config server ',
{ silent: true }
);
const user = settings.username;
const password = settings.password;
logger.info(`logging into ${server}`)
const accessKey = shelljs.exec(
`npm run -s bw -- login ${user} ${password} --raw`,
{ silent: true }
).stdout;
logger.info(`Fetching secrets from ${server}`);
const itemData = shelljs.exec(
`npm run -s bw -- --session=${accessKey} list items`,
{ silent: true }
).stdout;
const items = JSON.parse(itemData);
for(const item of items) {
const itemPath = path.resolve(__dirname, '..', item.name);
logger.info(`Writing secret to ${itemPath}`);
await fs.writeFile(itemPath, item.notes);
}
logger.info(`Logging out from ${server}`);
shelljs.exec('npm run -s bw -- logout', { silent: true });
})()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment