mirror of https://github.com/Chocobozzz/PeerTube
				
				
				
			
		
			
				
	
	
		
			92 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			TypeScript
		
	
	
			
		
		
	
	
			92 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			TypeScript
		
	
	
import { registerTSPaths } from '../helpers/register-ts-paths'
 | 
						|
registerTSPaths()
 | 
						|
 | 
						|
import * as repl from 'repl'
 | 
						|
import * as path from 'path'
 | 
						|
import * as _ from 'lodash'
 | 
						|
import { uuidv1, uuidv3, uuidv4, uuidv5 } from 'uuid'
 | 
						|
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'
 | 
						|
 | 
						|
const start = async () => {
 | 
						|
  await initDatabaseModels(true)
 | 
						|
 | 
						|
  const versionCommitHash = await utils.getServerCommit()
 | 
						|
 | 
						|
  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 (const 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))
 | 
						|
  replServer.on('exit', () => process.exit())
 | 
						|
 | 
						|
  const resetCommand = {
 | 
						|
    help: 'Reset REPL',
 | 
						|
    action () {
 | 
						|
      this.write('.clear\n')
 | 
						|
      this.displayPrompt()
 | 
						|
    }
 | 
						|
  }
 | 
						|
  replServer.defineCommand('reset', resetCommand)
 | 
						|
  replServer.defineCommand('r', resetCommand)
 | 
						|
 | 
						|
}
 | 
						|
 | 
						|
start()
 | 
						|
  .catch((err) => {
 | 
						|
    console.error(err)
 | 
						|
  })
 |