]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blame - server/tools/cli.ts
Fix video action dropdown
[github/Chocobozzz/PeerTube.git] / server / tools / cli.ts
CommitLineData
8704acf4
RK
1const config = require('application-config')('PeerTube/CLI')
2const netrc = require('netrc-parser').default
3
499d9015 4const version = require('../../../package.json').version
8704acf4 5
8704acf4
RK
6interface Settings {
7 remotes: any[],
8 default: number
9}
10
2b4dd7e2 11function getSettings () {
8704acf4 12 return new Promise<Settings>((res, rej) => {
2b4dd7e2 13 const defaultSettings = {
8704acf4
RK
14 remotes: [],
15 default: 0
2b4dd7e2
C
16 }
17
8704acf4 18 config.read((err, data) => {
2b4dd7e2
C
19 if (err) return rej(err)
20
21 return res(Object.keys(data).length === 0 ? defaultSettings : data)
8704acf4
RK
22 })
23 })
24}
25
2b4dd7e2
C
26async function getNetrc () {
27 await netrc.load()
28
29 return netrc
30}
31
32function writeSettings (settings) {
8704acf4
RK
33 return new Promise((res, rej) => {
34 config.write(settings, function (err) {
2b4dd7e2
C
35 if (err) return rej(err)
36
8704acf4
RK
37 return res()
38 })
39 })
40}
41
2b4dd7e2
C
42function getRemoteObjectOrDie (program: any, settings: Settings) {
43 if (!program['url'] || !program['username'] || !program['password']) {
44 // No remote and we don't have program parameters: throw
45 if (settings.remotes.length === 0) {
46 if (!program[ 'url' ]) console.error('--url field is required.')
47 if (!program[ 'username' ]) console.error('--username field is required.')
48 if (!program[ 'password' ]) console.error('--password field is required.')
49
50 return process.exit(-1)
51 }
52
53 let url: string = program['url']
54 let username: string = program['username']
55 let password: string = program['password']
56
57 if (!url) {
58 url = settings.default !== -1
59 ? settings.remotes[settings.default]
60 : settings.remotes[0]
61 }
62
63 if (!username) username = netrc.machines[url].login
64 if (!password) password = netrc.machines[url].password
65
66 return { url, username, password }
67 }
68
69 return {
70 url: program[ 'url' ],
71 username: program[ 'username' ],
72 password: program[ 'password' ]
73 }
74}
8704acf4
RK
75
76// ---------------------------------------------------------------------------
77
78export {
79 version,
80 config,
8704acf4 81 getSettings,
2b4dd7e2
C
82 getNetrc,
83 getRemoteObjectOrDie,
84 writeSettings
8704acf4 85}