hologit
Version:
Hologit automates the projection of layered composite file trees based on flat, declarative plans
45 lines (34 loc) • 1.13 kB
JavaScript
exports.command = 'merge-trees <treeish-base> <treeish-input>';
exports.desc = 'Merge <treeish-input> into <treeish-base> and output resulting tree hash';
exports.builder = {
'treeish-base': {
describe: 'Base tree',
type: 'string'
},
'treeish-input': {
describe: 'Input tree for merge',
type: 'string'
},
'method': {
describe: 'Merge method for applying input tree to base tree',
default: 'overlay'
}
};
exports.handler = async function mergeTrees ({ treeishBase, treeishInput, method }) {
const { Repo } = require('../../lib');
// load holorepo
const repo = await Repo.getFromEnvironment();
// check inputs
const baseTree = await repo.createTreeFromRef(treeishBase);
const inputTree = await repo.createTreeFromRef(treeishInput);
// apply merge
if (method == 'overlay') {
await baseTree.merge(inputTree);
} else {
throw new Error('unhandled merge method: '+method);
}
// write tree
const outputTree = await baseTree.write();
console.log(outputTree);
return outputTree;
};