1 import { registerTSPaths } from '../helpers/register-ts-paths'
2 import * as repl from 'repl'
3 import * as path from 'path'
4 import * as _ from 'lodash'
5 import { uuidv1, uuidv3, uuidv4, uuidv5 } from 'uuid'
6 import * as Sequelize from 'sequelize'
7 import * as YoutubeDL from 'youtube-dl'
9 import { initDatabaseModels, sequelizeTypescript } from '../initializers'
10 import * as cli from '../tools/cli'
11 import { logger } from '../helpers/logger'
12 import * as constants from '../initializers/constants'
13 import * as modelsUtils from '../models/utils'
14 import * as coreUtils from '../helpers/core-utils'
15 import * as ffmpegUtils from '../helpers/ffmpeg-utils'
16 import * as peertubeCryptoUtils from '../helpers/peertube-crypto'
17 import * as signupUtils from '../helpers/signup'
18 import * as utils from '../helpers/utils'
19 import * as YoutubeDLUtils from '../helpers/youtube-dl'
23 const start = async () => {
24 await initDatabaseModels(true)
26 const versionCommitHash = await utils.getServerCommit()
28 const initContext = (replServer) => {
46 models: sequelizeTypescript.models,
47 transaction: sequelizeTypescript.transaction,
48 query: sequelizeTypescript.query,
49 queryInterface: sequelizeTypescript.getQueryInterface(),
59 for (const prop in properties) {
60 Object.defineProperty(context, prop, {
63 value: properties[prop]
69 const replServer = repl.start({
70 prompt: `PeerTube [${cli.version}] (${versionCommitHash})> `
73 initContext(replServer)(replServer.context)
74 replServer.on('reset', initContext(replServer))
75 replServer.on('exit', () => process.exit())
77 const resetCommand = {
80 this.write('.clear\n')
84 replServer.defineCommand('reset', resetCommand)
85 replServer.defineCommand('r', resetCommand)