UNPKG

@eluvio/elv-utils-js

Version:

Utilities for the Eluvio Content Fabric

56 lines (47 loc) 1.49 kB
const R = require('@eluvio/ramda-fork') const {ModOpt, StdOpt} = require('./lib/options') const Utility = require('./lib/Utility') const ArgLibraryId = require('./lib/concerns/ArgLibraryId') const ArgMetadata = require('./lib/concerns/ArgMetadata') const ArgType = require('./lib/concerns/ArgType') class ObjectCreate extends Utility { static blueprint() { return { concerns: [ArgLibraryId, ArgType, ArgMetadata], options: [ ModOpt('libraryId', {demand: true}), StdOpt('name', { demand: true, forX: 'new object' }) ] } } async body() { const logger = this.logger const {name} = this.args const type = this.args.type ? await this.concerns.ArgType.typVersionHash() : undefined const metadataFromArg = this.concerns.ArgMetadata.asObject() || {} const metadata = R.mergeDeepRight(metadataFromArg, {'public':{name}}) const {objectId, versionHash} = await this.concerns.ArgLibraryId.libCreateObject({ commitMessage: 'create object', metadata, type }) logger.log(`New object ID: ${objectId}`) logger.data('objectId', objectId) logger.log(`version hash: ${versionHash}`) logger.data('versionHash', versionHash) } header() { return `Create object '${this.args.name}' in lib ${this.args.libraryId}` } } if(require.main === module) { Utility.cmdLineInvoke(ObjectCreate) } else { module.exports = ObjectCreate }