mirror of https://github.com/Chocobozzz/PeerTube
80 lines
2.3 KiB
TypeScript
80 lines
2.3 KiB
TypeScript
|
import * as repl from 'repl'
|
||
|
import * as path from 'path'
|
||
|
import * as _ from 'lodash'
|
||
|
import * as uuidv1 from 'uuid/v1'
|
||
|
import * as uuidv3 from 'uuid/v3'
|
||
|
import * as uuidv4 from 'uuid/v4'
|
||
|
import * as uuidv5 from 'uuid/v5'
|
||
|
import * as Sequelize from 'sequelize'
|
||
|
import * as YoutubeDL from 'youtube-dl'
|
||
|
|
||
|
import { initDatabaseModels, sequelizeTypescript } from '../initializers'
|
||
|
import * as cli from '../tools/cli'
|
||
|
import { logger } from '../helpers/logger'
|
||
|
import * as constants from '../initializers/constants'
|
||
|
import * as modelsUtils from '../models/utils'
|
||
|
import * as coreUtils from '../helpers/core-utils'
|
||
|
import * as ffmpegUtils from '../helpers/ffmpeg-utils'
|
||
|
import * as peertubeCryptoUtils from '../helpers/peertube-crypto'
|
||
|
import * as signupUtils from '../helpers/signup'
|
||
|
import * as utils from '../helpers/utils'
|
||
|
import * as YoutubeDLUtils from '../helpers/youtube-dl'
|
||
|
|
||
|
let versionCommitHash
|
||
|
|
||
|
const start = async () => {
|
||
|
await initDatabaseModels(true)
|
||
|
|
||
|
await utils.getVersion().then((data) => {
|
||
|
versionCommitHash = data
|
||
|
})
|
||
|
|
||
|
const initContext = (replServer) => {
|
||
|
return (context) => {
|
||
|
const properties = {
|
||
|
context, repl: replServer, env: process.env,
|
||
|
lodash: _, path,
|
||
|
uuidv1, uuidv3, uuidv4, uuidv5,
|
||
|
cli, logger, constants,
|
||
|
Sequelize, sequelizeTypescript, modelsUtils,
|
||
|
models: sequelizeTypescript.models, transaction: sequelizeTypescript.transaction,
|
||
|
query: sequelizeTypescript.query, queryInterface: sequelizeTypescript.getQueryInterface(),
|
||
|
YoutubeDL,
|
||
|
coreUtils, ffmpegUtils, peertubeCryptoUtils, signupUtils, utils, YoutubeDLUtils
|
||
|
}
|
||
|
|
||
|
for (let prop in properties) {
|
||
|
Object.defineProperty(context, prop, {
|
||
|
configurable: false,
|
||
|
enumerable: true,
|
||
|
value: properties[prop]
|
||
|
})
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
const replServer = repl.start({
|
||
|
prompt: `PeerTube [${cli.version}] (${versionCommitHash})> `
|
||
|
})
|
||
|
|
||
|
initContext(replServer)(replServer.context)
|
||
|
replServer.on('reset', initContext(replServer))
|
||
|
|
||
|
const resetCommand = {
|
||
|
help: 'Reset REPL',
|
||
|
action () {
|
||
|
this.write('.clear\n')
|
||
|
this.displayPrompt()
|
||
|
}
|
||
|
}
|
||
|
replServer.defineCommand('reset', resetCommand)
|
||
|
replServer.defineCommand('r', resetCommand)
|
||
|
|
||
|
}
|
||
|
|
||
|
start().then((data) => {
|
||
|
// do nothing
|
||
|
}).catch((err) => {
|
||
|
console.error(err)
|
||
|
})
|