mirror of
https://github.com/Chocobozzz/PeerTube.git
synced 2024-05-17 04:12:40 +00:00
3a4992633e
Sorry for the very big commit that may lead to git log issues and merge conflicts, but it's a major step forward: * Server can be faster at startup because imports() are async and we can easily lazy import big modules * Angular doesn't seem to support ES import (with .js extension), so we had to correctly organize peertube into a monorepo: * Use yarn workspace feature * Use typescript reference projects for dependencies * Shared projects have been moved into "packages", each one is now a node module (with a dedicated package.json/tsconfig.json) * server/tools have been moved into apps/ and is now a dedicated app bundled and published on NPM so users don't have to build peertube cli tools manually * server/tests have been moved into packages/ so we don't compile them every time we want to run the server * Use isolatedModule option: * Had to move from const enum to const (https://www.typescriptlang.org/docs/handbook/enums.html#objects-vs-enums) * Had to explictely specify "type" imports when used in decorators * Prefer tsx (that uses esbuild under the hood) instead of ts-node to load typescript files (tests with mocha or scripts): * To reduce test complexity as esbuild doesn't support decorator metadata, we only test server files that do not import server models * We still build tests files into js files for a faster CI * Remove unmaintained peertube CLI import script * Removed some barrels to speed up execution (less imports)
65 lines
2.1 KiB
JavaScript
65 lines
2.1 KiB
JavaScript
#!/usr/bin/env node
|
|
|
|
import { Command } from '@commander-js/extra-typings'
|
|
import { defineAuthProgram } from './peertube-auth.js'
|
|
import { defineGetAccessProgram } from './peertube-get-access-token.js'
|
|
import { definePluginsProgram } from './peertube-plugins.js'
|
|
import { defineRedundancyProgram } from './peertube-redundancy.js'
|
|
import { defineUploadProgram } from './peertube-upload.js'
|
|
import { getSettings, version } from './shared/index.js'
|
|
|
|
const program = new Command()
|
|
|
|
program
|
|
.version(version, '-v, --version')
|
|
.usage('[command] [options]')
|
|
|
|
program.addCommand(defineAuthProgram())
|
|
program.addCommand(defineUploadProgram())
|
|
program.addCommand(defineRedundancyProgram())
|
|
program.addCommand(definePluginsProgram())
|
|
program.addCommand(defineGetAccessProgram())
|
|
|
|
// help on no command
|
|
if (!process.argv.slice(2).length) {
|
|
const logo = '░P░e░e░r░T░u░b░e░'
|
|
console.log(`
|
|
___/),.._ ` + logo + `
|
|
/' ,. ."'._
|
|
( "' '-.__"-._ ,-
|
|
\\'='='), "\\ -._-"-. -"/
|
|
/ ""/"\\,_\\,__"" _" /,-
|
|
/ / -" _/"/
|
|
/ | ._\\\\ |\\ |_.".-" /
|
|
/ | __\\)|)|),/|_." _,."
|
|
/ \\_." " ") | ).-""---''--
|
|
( "/.""7__-""''
|
|
| " ."._--._
|
|
\\ \\ (_ __ "" ".,_
|
|
\\.,. \\ "" -"".-"
|
|
".,_, (",_-,,,-".-
|
|
"'-,\\_ __,-"
|
|
",)" ")
|
|
/"\\-"
|
|
,"\\/
|
|
_,.__/"\\/_ (the CLI for red chocobos)
|
|
/ \\) "./, ".
|
|
--/---"---" "-) )---- by Chocobozzz et al.\n`)
|
|
}
|
|
|
|
getSettings()
|
|
.then(settings => {
|
|
const state = (settings.default === undefined || settings.default === -1)
|
|
? 'no instance selected, commands will require explicit arguments'
|
|
: 'instance ' + settings.remotes[settings.default] + ' selected'
|
|
|
|
program
|
|
.addHelpText('after', '\n\n State: ' + state + '\n\n' +
|
|
' Examples:\n\n' +
|
|
' $ peertube auth add -u "PEERTUBE_URL" -U "PEERTUBE_USER" --password "PEERTUBE_PASSWORD"\n' +
|
|
' $ peertube up <videoFile>\n'
|
|
)
|
|
.parse(process.argv)
|
|
})
|
|
.catch(err => console.error(err))
|