]>
git.immae.eu Git - github/Chocobozzz/PeerTube.git/blob - packages/peertube-runner/peertube-runner.ts
3 import { Command
, InvalidArgumentError
} from '@commander-js/extra-typings'
4 import { listRegistered
, registerRunner
, unregisterRunner
} from './register'
5 import { RunnerServer
} from './server'
6 import { ConfigManager
, logger
} from './shared'
8 const packageJSON
= require('./package.json')
10 const program
= new Command()
11 .version(packageJSON
.version
)
14 'Runner server id, so you can run multiple PeerTube server runners with different configurations on the same machine',
17 .option('--verbose', 'Run in verbose mode')
18 .hook('preAction', thisCommand
=> {
19 const options
= thisCommand
.opts()
21 ConfigManager
.Instance
.init(options
.id
)
23 if (options
.verbose
=== true) {
24 logger
.level
= 'debug'
28 program
.command('server')
29 .description('Run in server mode, to execute remote jobs of registered PeerTube instances')
32 await RunnerServer
.Instance
.run()
34 logger
.error(err
, 'Cannot run PeerTube runner as server mode')
39 program
.command('register')
40 .description('Register a new PeerTube instance to process runner jobs')
41 .requiredOption('--url <url>', 'PeerTube instance URL', parseUrl
)
42 .requiredOption('--registration-token <token>', 'Runner registration token (can be found in PeerTube instance administration')
43 .requiredOption('--runner-name <name>', 'Runner name')
44 .option('--runner-description <description>', 'Runner description')
45 .action(async options
=> {
47 await
registerRunner(options
)
49 console
.error('Cannot register this PeerTube runner.')
55 program
.command('unregister')
56 .description('Unregister the runner from PeerTube instance')
57 .requiredOption('--url <url>', 'PeerTube instance URL', parseUrl
)
58 .requiredOption('--runner-name <name>', 'Runner name')
59 .action(async options
=> {
61 await
unregisterRunner(options
)
63 console
.error('Cannot unregister this PeerTube runner.')
69 program
.command('list-registered')
70 .description('List registered PeerTube instances')
73 await
listRegistered()
75 console
.error('Cannot list registered PeerTube instances.')
83 // ---------------------------------------------------------------------------
85 // ---------------------------------------------------------------------------
87 function parseUrl (url: string
) {
88 if (url
.startsWith('http://') !== true && url
.startsWith('https://') !== true) {
89 throw new InvalidArgumentError('URL should start with a http:// or https://')