@ethersphere/swarm-cli
Version:
CLI tool for Bee
59 lines (50 loc) • 1.8 kB
text/typescript
import fs from 'fs'
import { Argument, LeafCommand, Option } from 'furious-commander'
import { stampProperties } from '../../utils/option'
import { createKeyValue } from '../../utils/text'
import { GranteeCommand } from './grantee-command'
export class Patch extends GranteeCommand implements LeafCommand {
public readonly name = 'patch'
public readonly description = 'Patch grantee list'
private actReqHeaders: Record<string, string> = {}
({
key: 'path',
description: 'Path to the JSON file with grantee patch (add, revoke)',
required: true,
autocompletePath: true,
conflicts: 'stdin',
})
public path!: string
({ key: 'stdin', type: 'boolean', description: 'Take data from standard input', conflicts: 'path' })
public stdin!: boolean
(stampProperties)
public stamp!: string
({
key: 'reference',
type: 'string',
description: 'Encrypted grantee list reference with 128 characters length',
length: 128,
required: true,
})
public eref!: string
({
key: 'history',
type: 'string',
description: 'Swarm address reference to the ACT history entry',
length: 64,
required: true,
})
public history!: string
public async run(): Promise<void> {
super.init()
this.actReqHeaders = {
'Swarm-Act': 'true',
'Swarm-Act-Timestamp': Date.now().toString(),
}
const patchContent = fs.readFileSync(this.path, 'utf8')
const patch = JSON.parse(patchContent)
const response = await this.bee.patchGrantees(this.stamp, this.eref, this.history, patch, this.actReqHeaders)
this.console.log(createKeyValue('Grantee reference', response.ref.toHex()))
this.console.log(createKeyValue('Grantee history reference', response.historyref.toHex()))
}
}