@osaas/cli 0.10.2 → 0.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cli.js CHANGED
@@ -32,13 +32,13 @@ const path_1 = require("path");
32
32
  const commander_1 = require("commander");
33
33
  const cmd_1 = __importDefault(require("./admin/cmd"));
34
34
  const cmdUser = __importStar(require("./user/cmd"));
35
- const cmd_2 = __importDefault(require("./transcode/cmd"));
36
- const cmd_3 = __importDefault(require("./vmaf/cmd"));
37
- const cmd_4 = __importDefault(require("./packager/cmd"));
38
- const cmd_5 = __importDefault(require("./live/cmd"));
39
- const cmd_6 = __importDefault(require("./intercom/cmd"));
40
- const cmd_7 = __importDefault(require("./transcribe/cmd"));
41
- const cmd_8 = __importDefault(require("./db/cmd"));
35
+ const cmdTranscode = __importStar(require("./transcode/cmd"));
36
+ const cmd_2 = __importDefault(require("./vmaf/cmd"));
37
+ const cmd_3 = __importDefault(require("./packager/cmd"));
38
+ const cmd_4 = __importDefault(require("./live/cmd"));
39
+ const cmd_5 = __importDefault(require("./intercom/cmd"));
40
+ const cmd_6 = __importDefault(require("./transcribe/cmd"));
41
+ const cmd_7 = __importDefault(require("./db/cmd"));
42
42
  const cli = new commander_1.Command();
43
43
  // Read package.json
44
44
  const packageJson = JSON.parse((0, fs_1.readFileSync)((0, path_1.join)(__dirname, '..', 'package.json'), 'utf8'));
@@ -50,12 +50,14 @@ cli.addCommand((0, cmd_1.default)());
50
50
  cli.addCommand(cmdUser.cmdList());
51
51
  cli.addCommand(cmdUser.cmdCreate());
52
52
  cli.addCommand(cmdUser.cmdRemove());
53
+ cli.addCommand(cmdTranscode.cmdTranscode());
54
+ cli.addCommand(cmdTranscode.cmdEncore());
55
+ cli.addCommand(cmdTranscode.cmdVodPipeline());
56
+ cli.addCommand((0, cmd_3.default)());
53
57
  cli.addCommand((0, cmd_2.default)());
54
58
  cli.addCommand((0, cmd_4.default)());
55
- cli.addCommand((0, cmd_3.default)());
56
59
  cli.addCommand((0, cmd_5.default)());
57
60
  cli.addCommand((0, cmd_6.default)());
58
61
  cli.addCommand((0, cmd_7.default)());
59
- cli.addCommand((0, cmd_8.default)());
60
62
  cli.parse(process.argv);
61
63
  //# sourceMappingURL=cli.js.map
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,2BAAkC;AAClC,+BAA4B;AAC5B,yCAAoC;AACpC,sDAAmC;AACnC,oDAAsC;AACtC,0DAA2C;AAC3C,qDAAoC;AACpC,yDAAyC;AACzC,qDAAiC;AACjC,yDAAyC;AACzC,2DAA6C;AAC7C,mDAA6B;AAE7B,MAAM,GAAG,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE1B,oBAAoB;AACpB,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAC5B,IAAA,iBAAY,EAAC,IAAA,WAAI,EAAC,SAAS,EAAE,IAAI,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,CAC5D,CAAC;AAEF,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,EAAE,eAAe,EAAE,4BAA4B,CAAC,CAAC;AAEhF,GAAG;KACA,aAAa,CAAC,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC;KAC1C,MAAM,CAAC,qBAAqB,EAAE,oBAAoB,CAAC,CAAC;AAEvD,GAAG,CAAC,UAAU,CAAC,IAAA,aAAQ,GAAE,CAAC,CAAC;AAC3B,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;AAClC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;AACpC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;AACpC,GAAG,CAAC,UAAU,CAAC,IAAA,aAAY,GAAE,CAAC,CAAC;AAC/B,GAAG,CAAC,UAAU,CAAC,IAAA,aAAW,GAAE,CAAC,CAAC;AAC9B,GAAG,CAAC,UAAU,CAAC,IAAA,aAAU,GAAE,CAAC,CAAC;AAC7B,GAAG,CAAC,UAAU,CAAC,IAAA,aAAO,GAAE,CAAC,CAAC;AAC1B,GAAG,CAAC,UAAU,CAAC,IAAA,aAAW,GAAE,CAAC,CAAC;AAC9B,GAAG,CAAC,UAAU,CAAC,IAAA,aAAa,GAAE,CAAC,CAAC;AAChC,GAAG,CAAC,UAAU,CAAC,IAAA,aAAK,GAAE,CAAC,CAAC;AACxB,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,2BAAkC;AAClC,+BAA4B;AAC5B,yCAAoC;AACpC,sDAAmC;AACnC,oDAAsC;AACtC,8DAAgD;AAChD,qDAAoC;AACpC,yDAAyC;AACzC,qDAAiC;AACjC,yDAAyC;AACzC,2DAA6C;AAC7C,mDAA6B;AAE7B,MAAM,GAAG,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE1B,oBAAoB;AACpB,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAC5B,IAAA,iBAAY,EAAC,IAAA,WAAI,EAAC,SAAS,EAAE,IAAI,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,CAC5D,CAAC;AAEF,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,EAAE,eAAe,EAAE,4BAA4B,CAAC,CAAC;AAEhF,GAAG;KACA,aAAa,CAAC,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC;KAC1C,MAAM,CAAC,qBAAqB,EAAE,oBAAoB,CAAC,CAAC;AAEvD,GAAG,CAAC,UAAU,CAAC,IAAA,aAAQ,GAAE,CAAC,CAAC;AAC3B,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;AAClC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;AACpC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;AACpC,GAAG,CAAC,UAAU,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC,CAAC;AAC5C,GAAG,CAAC,UAAU,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC,CAAC;AACzC,GAAG,CAAC,UAAU,CAAC,YAAY,CAAC,cAAc,EAAE,CAAC,CAAC;AAC9C,GAAG,CAAC,UAAU,CAAC,IAAA,aAAW,GAAE,CAAC,CAAC;AAC9B,GAAG,CAAC,UAAU,CAAC,IAAA,aAAU,GAAE,CAAC,CAAC;AAC7B,GAAG,CAAC,UAAU,CAAC,IAAA,aAAO,GAAE,CAAC,CAAC;AAC1B,GAAG,CAAC,UAAU,CAAC,IAAA,aAAW,GAAE,CAAC,CAAC;AAC9B,GAAG,CAAC,UAAU,CAAC,IAAA,aAAa,GAAE,CAAC,CAAC;AAChC,GAAG,CAAC,UAAU,CAAC,IAAA,aAAK,GAAE,CAAC,CAAC;AACxB,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC"}
@@ -1,3 +1,5 @@
1
1
  import { Command } from 'commander';
2
- export default function cmdTranscode(): Command;
2
+ export declare function cmdTranscode(): Command;
3
+ export declare function cmdVodPipeline(): Command;
4
+ export declare function cmdEncore(): Command;
3
5
  //# sourceMappingURL=cmd.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cmd.d.ts","sourceRoot":"","sources":["../../src/transcode/cmd.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,MAAM,CAAC,OAAO,UAAU,YAAY,YAgCnC"}
1
+ {"version":3,"file":"cmd.d.ts","sourceRoot":"","sources":["../../src/transcode/cmd.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,wBAAgB,YAAY,YAuC3B;AAED,wBAAgB,cAAc,YAmD7B;AAED,wBAAgB,SAAS,YAqCxB"}
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.cmdEncore = exports.cmdVodPipeline = exports.cmdTranscode = void 0;
3
4
  const client_core_1 = require("@osaas/client-core");
4
5
  const client_transcode_1 = require("@osaas/client-transcode");
5
6
  const commander_1 = require("commander");
@@ -11,18 +12,25 @@ function cmdTranscode() {
11
12
  .argument('<dest>', 'Destination URL (supported protocols: s3)')
12
13
  .argument('[packageDestination]', 'Optional destination URL for Streaming package (supported protocols: s3)')
13
14
  .option('-d, --duration <duration>', 'Duration in seconds. If not provided will transcode entire file')
15
+ .option('-b, --background', 'Run transcoding and packaging in background')
14
16
  .action(async (source, dest, packageDestination, options, command) => {
15
17
  try {
16
18
  const globalOpts = command.optsWithGlobals();
17
19
  const environment = globalOpts?.env || 'prod';
18
20
  const ctx = new client_core_1.Context({ environment });
19
- const pool = new client_transcode_1.QueuePool({ context: ctx, size: 1 });
21
+ const pool = new client_transcode_1.QueuePool({
22
+ context: ctx,
23
+ size: 1,
24
+ usePackagingQueue: options.background
25
+ });
20
26
  await pool.init();
21
27
  await pool.transcode(new URL(source), new URL(dest), {
22
28
  duration: options.duration,
23
29
  packageDestination: packageDestination
24
30
  });
25
- await pool.destroy();
31
+ if (!options.background) {
32
+ await pool.destroy();
33
+ }
26
34
  }
27
35
  catch (err) {
28
36
  console.log(err.message);
@@ -30,5 +38,88 @@ function cmdTranscode() {
30
38
  });
31
39
  return transcode;
32
40
  }
33
- exports.default = cmdTranscode;
41
+ exports.cmdTranscode = cmdTranscode;
42
+ function cmdVodPipeline() {
43
+ const pipeline = new commander_1.Command('pipeline');
44
+ pipeline
45
+ .command('create')
46
+ .description('Create a new VOD pipeline')
47
+ .option('-s, --size <size>', 'Number of Encore instances in the pool (default: 1)')
48
+ .action(async (options, command) => {
49
+ try {
50
+ const globalOpts = command.optsWithGlobals();
51
+ const environment = globalOpts?.env || 'prod';
52
+ const ctx = new client_core_1.Context({ environment });
53
+ const pool = new client_transcode_1.QueuePool({
54
+ context: ctx,
55
+ size: options.size || 1,
56
+ usePackagingQueue: true
57
+ });
58
+ await pool.init();
59
+ console.log('VOD pipeline created');
60
+ }
61
+ catch (err) {
62
+ console.log(err.message);
63
+ }
64
+ });
65
+ pipeline
66
+ .command('teardown')
67
+ .description('Tear down the VOD pipeline')
68
+ .option('-s, --size <size>', 'Number of Encore instances in the pool (default: 1)')
69
+ .action(async (options, command) => {
70
+ try {
71
+ const globalOpts = command.optsWithGlobals();
72
+ const environment = globalOpts?.env || 'prod';
73
+ const ctx = new client_core_1.Context({ environment });
74
+ const pool = new client_transcode_1.QueuePool({
75
+ context: ctx,
76
+ size: options.size || 1,
77
+ usePackagingQueue: true
78
+ });
79
+ await pool.init();
80
+ await pool.destroy();
81
+ console.log('VOD pipeline torn down');
82
+ }
83
+ catch (err) {
84
+ console.log(err.message);
85
+ }
86
+ });
87
+ return pipeline;
88
+ }
89
+ exports.cmdVodPipeline = cmdVodPipeline;
90
+ function cmdEncore() {
91
+ const encore = new commander_1.Command('encore');
92
+ encore
93
+ .command('list-callbacks')
94
+ .description('List all callback listeners')
95
+ .action(async (options, command) => {
96
+ try {
97
+ const globalOpts = command.optsWithGlobals();
98
+ const environment = globalOpts?.env || 'prod';
99
+ const ctx = new client_core_1.Context({ environment });
100
+ const callbacks = await client_transcode_1.EncoreCallbackListener.list(ctx);
101
+ callbacks.map((callback) => console.log(callback.getName()));
102
+ }
103
+ catch (err) {
104
+ console.log(err.message);
105
+ }
106
+ });
107
+ encore
108
+ .command('list-packagers')
109
+ .description('List all packagers')
110
+ .action(async (options, command) => {
111
+ try {
112
+ const globalOpts = command.optsWithGlobals();
113
+ const environment = globalOpts?.env || 'prod';
114
+ const ctx = new client_core_1.Context({ environment });
115
+ const packagers = await client_transcode_1.EncorePackager.list(ctx);
116
+ packagers.map((packager) => console.log(packager.getName() + ': ' + packager.getOutputFolder()));
117
+ }
118
+ catch (err) {
119
+ console.log(err.message);
120
+ }
121
+ });
122
+ return encore;
123
+ }
124
+ exports.cmdEncore = cmdEncore;
34
125
  //# sourceMappingURL=cmd.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cmd.js","sourceRoot":"","sources":["../../src/transcode/cmd.ts"],"names":[],"mappings":";;AAAA,oDAA6C;AAC7C,8DAAoD;AACpD,yCAAoC;AAEpC,SAAwB,YAAY;IAClC,MAAM,SAAS,GAAG,IAAI,mBAAO,CAAC,WAAW,CAAC,CAAC;IAE3C,SAAS;SACN,WAAW,CAAC,sDAAsD,CAAC;SACnE,QAAQ,CAAC,UAAU,EAAE,+CAA+C,CAAC;SACrE,QAAQ,CAAC,QAAQ,EAAE,2CAA2C,CAAC;SAC/D,QAAQ,CACP,sBAAsB,EACtB,0EAA0E,CAC3E;SACA,MAAM,CACL,2BAA2B,EAC3B,iEAAiE,CAClE;SACA,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE;QACnE,IAAI;YACF,MAAM,UAAU,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;YAC7C,MAAM,WAAW,GAAG,UAAU,EAAE,GAAG,IAAI,MAAM,CAAC;YAC9C,MAAM,GAAG,GAAG,IAAI,qBAAO,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC;YACzC,MAAM,IAAI,GAAG,IAAI,4BAAS,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;YACtD,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;YAClB,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,EAAE,IAAI,GAAG,CAAC,IAAI,CAAC,EAAE;gBACnD,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,kBAAkB,EAAE,kBAAkB;aACvC,CAAC,CAAC;YACH,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;SACtB;QAAC,OAAO,GAAG,EAAE;YACZ,OAAO,CAAC,GAAG,CAAE,GAAa,CAAC,OAAO,CAAC,CAAC;SACrC;IACH,CAAC,CAAC,CAAC;IACL,OAAO,SAAS,CAAC;AACnB,CAAC;AAhCD,+BAgCC"}
1
+ {"version":3,"file":"cmd.js","sourceRoot":"","sources":["../../src/transcode/cmd.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@osaas/cli",
3
- "version": "0.10.2",
3
+ "version": "0.11.0",
4
4
  "description": "Open Source Cloud CLI",
5
5
  "author": "Eyevinn Technology <work@eyevinn.se>",
6
6
  "homepage": "https://www.osaas.io",
@@ -21,10 +21,10 @@
21
21
  "test": "jest --pass-with-no-tests"
22
22
  },
23
23
  "dependencies": {
24
- "@osaas/client-core": "^0.8.0",
25
- "@osaas/client-db": "^0.1.2",
26
- "@osaas/client-intercom": "^0.1.0",
27
- "@osaas/client-transcode": "^0.7.1",
24
+ "@osaas/client-core": "^0.9.0",
25
+ "@osaas/client-db": "^0.2.0",
26
+ "@osaas/client-intercom": "^0.1.1",
27
+ "@osaas/client-transcode": "^0.8.0",
28
28
  "chalk": "4.1.2",
29
29
  "commander": "^12.1.0",
30
30
  "fast-jwt": "^4.0.1"
@@ -32,5 +32,5 @@
32
32
  "publishConfig": {
33
33
  "access": "public"
34
34
  },
35
- "gitHead": "566fb72bae92453c7062fe63900afb368070c139"
35
+ "gitHead": "b80ac35f717ad81d9684a3316f7226255da7b673"
36
36
  }
package/readme.md CHANGED
@@ -85,6 +85,15 @@ osc transcode \
85
85
  s3://lab-testcontent-store/birme/
86
86
  ```
87
87
 
88
+ ### Transcode and create streaming package using SVT Encore and Shaka Packager
89
+
90
+ ```
91
+ osc transcode -b \
92
+ https://testcontent.eyevinn.technology/mp4/stswe-tvplus-promo.mp4 \
93
+ s3://lab-testcontent-store/birme/ \
94
+ s3://lab-testcontent-store/birme/output/
95
+ ```
96
+
88
97
  ### Compare two video files using VMAF
89
98
 
90
99
  ```
package/src/cli.ts CHANGED
@@ -5,7 +5,7 @@ import { join } from 'path';
5
5
  import { Command } from 'commander';
6
6
  import cmdAdmin from './admin/cmd';
7
7
  import * as cmdUser from './user/cmd';
8
- import cmdTranscode from './transcode/cmd';
8
+ import * as cmdTranscode from './transcode/cmd';
9
9
  import cmdCompare from './vmaf/cmd';
10
10
  import cmdPackager from './packager/cmd';
11
11
  import cmdLive from './live/cmd';
@@ -30,7 +30,9 @@ cli.addCommand(cmdAdmin());
30
30
  cli.addCommand(cmdUser.cmdList());
31
31
  cli.addCommand(cmdUser.cmdCreate());
32
32
  cli.addCommand(cmdUser.cmdRemove());
33
- cli.addCommand(cmdTranscode());
33
+ cli.addCommand(cmdTranscode.cmdTranscode());
34
+ cli.addCommand(cmdTranscode.cmdEncore());
35
+ cli.addCommand(cmdTranscode.cmdVodPipeline());
34
36
  cli.addCommand(cmdPackager());
35
37
  cli.addCommand(cmdCompare());
36
38
  cli.addCommand(cmdLive());
@@ -1,8 +1,12 @@
1
1
  import { Context } from '@osaas/client-core';
2
- import { QueuePool } from '@osaas/client-transcode';
2
+ import {
3
+ EncoreCallbackListener,
4
+ EncorePackager,
5
+ QueuePool
6
+ } from '@osaas/client-transcode';
3
7
  import { Command } from 'commander';
4
8
 
5
- export default function cmdTranscode() {
9
+ export function cmdTranscode() {
6
10
  const transcode = new Command('transcode');
7
11
 
8
12
  transcode
@@ -17,21 +21,120 @@ export default function cmdTranscode() {
17
21
  '-d, --duration <duration>',
18
22
  'Duration in seconds. If not provided will transcode entire file'
19
23
  )
24
+ .option('-b, --background', 'Run transcoding and packaging in background')
20
25
  .action(async (source, dest, packageDestination, options, command) => {
21
26
  try {
22
27
  const globalOpts = command.optsWithGlobals();
23
28
  const environment = globalOpts?.env || 'prod';
24
29
  const ctx = new Context({ environment });
25
- const pool = new QueuePool({ context: ctx, size: 1 });
30
+ const pool = new QueuePool({
31
+ context: ctx,
32
+ size: 1,
33
+ usePackagingQueue: options.background
34
+ });
26
35
  await pool.init();
27
36
  await pool.transcode(new URL(source), new URL(dest), {
28
37
  duration: options.duration,
29
38
  packageDestination: packageDestination
30
39
  });
31
- await pool.destroy();
40
+ if (!options.background) {
41
+ await pool.destroy();
42
+ }
32
43
  } catch (err) {
33
44
  console.log((err as Error).message);
34
45
  }
35
46
  });
36
47
  return transcode;
37
48
  }
49
+
50
+ export function cmdVodPipeline() {
51
+ const pipeline = new Command('pipeline');
52
+ pipeline
53
+ .command('create')
54
+ .description('Create a new VOD pipeline')
55
+ .option(
56
+ '-s, --size <size>',
57
+ 'Number of Encore instances in the pool (default: 1)'
58
+ )
59
+ .action(async (options, command) => {
60
+ try {
61
+ const globalOpts = command.optsWithGlobals();
62
+ const environment = globalOpts?.env || 'prod';
63
+ const ctx = new Context({ environment });
64
+ const pool = new QueuePool({
65
+ context: ctx,
66
+ size: options.size || 1,
67
+ usePackagingQueue: true
68
+ });
69
+ await pool.init();
70
+ console.log('VOD pipeline created');
71
+ } catch (err) {
72
+ console.log((err as Error).message);
73
+ }
74
+ });
75
+
76
+ pipeline
77
+ .command('teardown')
78
+ .description('Tear down the VOD pipeline')
79
+ .option(
80
+ '-s, --size <size>',
81
+ 'Number of Encore instances in the pool (default: 1)'
82
+ )
83
+ .action(async (options, command) => {
84
+ try {
85
+ const globalOpts = command.optsWithGlobals();
86
+ const environment = globalOpts?.env || 'prod';
87
+ const ctx = new Context({ environment });
88
+ const pool = new QueuePool({
89
+ context: ctx,
90
+ size: options.size || 1,
91
+ usePackagingQueue: true
92
+ });
93
+ await pool.init();
94
+ await pool.destroy();
95
+ console.log('VOD pipeline torn down');
96
+ } catch (err) {
97
+ console.log((err as Error).message);
98
+ }
99
+ });
100
+ return pipeline;
101
+ }
102
+
103
+ export function cmdEncore() {
104
+ const encore = new Command('encore');
105
+ encore
106
+ .command('list-callbacks')
107
+ .description('List all callback listeners')
108
+ .action(async (options, command) => {
109
+ try {
110
+ const globalOpts = command.optsWithGlobals();
111
+ const environment = globalOpts?.env || 'prod';
112
+ const ctx = new Context({ environment });
113
+ const callbacks = await EncoreCallbackListener.list(ctx);
114
+ callbacks.map((callback: EncoreCallbackListener) =>
115
+ console.log(callback.getName())
116
+ );
117
+ } catch (err) {
118
+ console.log((err as Error).message);
119
+ }
120
+ });
121
+
122
+ encore
123
+ .command('list-packagers')
124
+ .description('List all packagers')
125
+ .action(async (options, command) => {
126
+ try {
127
+ const globalOpts = command.optsWithGlobals();
128
+ const environment = globalOpts?.env || 'prod';
129
+ const ctx = new Context({ environment });
130
+ const packagers = await EncorePackager.list(ctx);
131
+ packagers.map((packager: EncorePackager) =>
132
+ console.log(packager.getName() + ': ' + packager.getOutputFolder())
133
+ );
134
+ } catch (err) {
135
+ console.log((err as Error).message);
136
+ }
137
+ });
138
+
139
+ return encore;
140
+ }