1 import CliTable3 from 'cli-table3'
2 import { ensureDir } from 'fs-extra'
3 import { Client as NetIPC } from 'net-ipc'
4 import { ConfigManager } from '../config-manager'
5 import { IPCReponse, IPCReponseData, IPCRequest } from './shared'
7 export class IPCClient {
11 await ensureDir(ConfigManager.Instance.getSocketDirectory())
13 const socketPath = ConfigManager.Instance.getSocketPath()
14 this.netIPC = new NetIPC({ path: socketPath })
15 await this.netIPC.connect()
18 async askRegister (options: {
20 registrationToken: string
22 runnerDescription?: string
24 const req: IPCRequest = {
29 const { success, error } = await this.netIPC.request(req) as IPCReponse
31 if (success) console.log('PeerTube instance registered')
32 else console.error('Could not register PeerTube instance on runner server side', error)
35 async askUnregister (options: {
38 const req: IPCRequest = {
43 const { success, error } = await this.netIPC.request(req) as IPCReponse
45 if (success) console.log('PeerTube instance unregistered')
46 else console.error('Could not unregister PeerTube instance on runner server side', error)
49 async askListRegistered () {
50 const req: IPCRequest = {
51 type: 'list-registered'
54 const { success, error, data } = await this.netIPC.request(req) as IPCReponse<IPCReponseData>
56 console.error('Could not list registered PeerTube instances', error)
60 const table = new CliTable3({
61 head: [ 'instance', 'runner name', 'runner description' ]
64 for (const server of data.servers) {
65 table.push([ server.url, server.runnerName, server.runnerDescription ])
68 console.log(table.toString())