class.ts 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. import ContentDirectoryCommandBase from '../../base/ContentDirectoryCommandBase'
  2. import chalk from 'chalk'
  3. import { displayCollapsedRow, displayHeader, displayTable } from '../../helpers/display'
  4. export default class ClassCommand extends ContentDirectoryCommandBase {
  5. static description = 'Show Class details by id or name.'
  6. static args = [
  7. {
  8. name: 'className',
  9. required: true,
  10. description: 'Name or ID of the Class',
  11. },
  12. ]
  13. async run() {
  14. const { className } = this.parse(ClassCommand).args
  15. const [id, aClass] = await this.classEntryByNameOrId(className)
  16. const permissions = aClass.class_permissions
  17. const maintainers = permissions.maintainers.toArray()
  18. displayCollapsedRow({
  19. 'Name': aClass.name.toString(),
  20. 'ID': id.toString(),
  21. 'Any member': permissions.any_member.toString(),
  22. 'Entity creation blocked': permissions.entity_creation_blocked.toString(),
  23. 'All property values locked': permissions.all_entity_property_values_locked.toString(),
  24. 'Number of entities': aClass.current_number_of_entities.toNumber(),
  25. 'Max. number of entities': aClass.maximum_entities_count.toNumber(),
  26. 'Default entity creation voucher max.': aClass.default_entity_creation_voucher_upper_bound.toNumber(),
  27. })
  28. displayHeader(`Maintainers`)
  29. this.log(
  30. maintainers.length ? maintainers.map((groupId) => chalk.white(`Group ${groupId.toString()}`)).join(', ') : 'NONE'
  31. )
  32. displayHeader(`Properties`)
  33. if (aClass.properties.length) {
  34. displayTable(
  35. aClass.properties.map((p, i) => ({
  36. 'Index': i,
  37. 'Name': p.name.toString(),
  38. 'Type': JSON.stringify(p.property_type.toJSON()),
  39. 'Required': p.required.toString(),
  40. 'Unique': p.unique.toString(),
  41. 'Controller lock': p.locking_policy.is_locked_from_controller.toString(),
  42. 'Maintainer lock': p.locking_policy.is_locked_from_maintainer.toString(),
  43. })),
  44. 3
  45. )
  46. } else {
  47. this.log('NONE')
  48. }
  49. }
  50. }