UNPKG

@eluvio/elv-utils-js

Version:

Utilities for the Eluvio Content Fabric

86 lines (74 loc) 2.4 kB
// List versions of an object const {NewOpt} = require('./lib/options') const Utility = require('./lib/Utility') const ArgOutfile = require('./lib/concerns/ArgOutfile') const ExistObj = require('./lib/concerns/kits/ExistObj') const Version = require('./lib/concerns/libs/Version') class ListVersions extends Utility { static blueprint() { return { concerns: [ArgOutfile, ExistObj], options: [ NewOpt('type', { descTemplate: 'include type of each version', type: 'boolean' }), NewOpt('commitTime', { descTemplate: 'include commit timestamp if available', type: 'boolean' }), NewOpt('commitMsg', { descTemplate: 'include commit message if available', type: 'boolean' }), NewOpt('decode', { descTemplate: 'include fields decoded from version hash', type: 'boolean' }) ] } } async body() { const {libraryId, objectId} = await this.concerns.ExistObj.argsProc() const {commitTime, commitMsg} = this.args const versionList = await this.concerns.ExistObj.versionList() for(let i = 0; i < versionList.length; i++) { const v = versionList[i] if(commitTime || commitMsg) { const commitInfo = await this.concerns.Metadata.commitInfo({ libraryId, objectId, versionHash: v.hash }) if(commitMsg) v.commit_message = commitInfo.message if(commitTime) v.commit_timestamp = commitInfo.timestamp } if(this.args.decode) { const decoded = Version.decode({versionHash: v.hash}) v.decode_digest = decoded.digest v.decode_objectId = decoded.objectId v.decode_partHash = decoded.partHash v.decode_size = decoded.size } } this.logger.data('versions', versionList) this.logger.data('version_count', versionList.length) if(this.args.outfile) { if(this.args.json) { this.concerns.ArgOutfile.writeJson({obj: versionList}) } else { this.concerns.ArgOutfile.writeTable({list: versionList}) } } else { this.logger.logTable({list: versionList}) } } header() { return `List versions for object ${this.args.objectId}` } } if(require.main === module) { Utility.cmdLineInvoke(ListVersions) } else { module.exports = ListVersions }