2016-10-09 19:14:02 +00:00
"use strict" ;
2016-04-28 18:36:09 +00:00
global . log = require ( "../log.js" ) ;
2016-04-16 11:32:38 +00:00
2017-12-09 20:06:41 +00:00
const _ = require ( "lodash" ) ;
2017-11-12 18:28:13 +00:00
const fs = require ( "fs" ) ;
const path = require ( "path" ) ;
2017-07-18 09:36:24 +00:00
const program = require ( "commander" ) ;
const colors = require ( "colors/safe" ) ;
const Helper = require ( "../helper" ) ;
2017-08-21 05:49:32 +00:00
const Utils = require ( "./utils" ) ;
2014-08-19 01:18:40 +00:00
2017-11-18 18:52:31 +00:00
if ( require ( "semver" ) . lt ( process . version , "6.0.0" ) ) {
2017-12-10 21:07:23 +00:00
log . warn ( ` Support of Node.js v4 is ${ colors . bold . red ( "deprecated" ) } and will be removed in The Lounge v3. ` ) ;
2017-11-18 18:52:31 +00:00
log . warn ( "Please upgrade to Node.js v6 or more recent." ) ;
}
2017-02-18 03:23:01 +00:00
program . version ( Helper . getVersion ( ) , "-v, --version" )
2017-12-10 21:07:23 +00:00
. option ( "--home <path>" , ` ${ colors . bold . red ( "[DEPRECATED]" ) } Use the ${ colors . green ( "THELOUNGE_HOME" ) } environment variable instead. ` )
2017-12-09 20:06:41 +00:00
. option (
"-c, --config <key=value>" ,
"override entries of the configuration file, must be specified for each entry that needs to be overriden" ,
Utils . parseConfigOptions
)
2017-12-10 21:57:26 +00:00
. on ( "--help" , Utils . extraHelp ) ;
// Parse options from `argv` returning `argv` void of these options.
const argvWithoutOptions = program . parseOptions ( process . argv ) ;
2016-05-09 16:19:16 +00:00
2017-08-15 18:57:47 +00:00
if ( program . home ) {
2017-12-10 21:57:26 +00:00
log . warn ( ` ${ colors . bold ( "--home" ) } is ${ colors . bold . red ( "deprecated" ) } and will be removed in The Lounge v3. Use the ${ colors . bold ( "THELOUNGE_HOME" ) } environment variable instead. ` ) ;
2017-08-15 18:57:47 +00:00
}
2017-11-12 18:28:13 +00:00
// Check if the app was built before calling setHome as it wants to load manifest.json from the public folder
if ( ! fs . existsSync ( path . join (
_ _dirname ,
".." ,
".." ,
"public" ,
"manifest.json"
) ) ) {
log . error ( ` The client application was not built. Run ${ colors . bold ( "NODE_ENV=production npm run build" ) } to resolve this. ` ) ;
process . exit ( 1 ) ;
}
2017-11-19 18:21:37 +00:00
if ( process . env . LOUNGE _HOME ) {
2017-12-10 21:07:23 +00:00
log . warn ( ` ${ colors . green ( "LOUNGE_HOME" ) } is ${ colors . bold . red ( "deprecated" ) } and will be removed in The Lounge v3. ` ) ;
2017-11-19 18:21:37 +00:00
log . warn ( ` Use ${ colors . green ( "THELOUNGE_HOME" ) } instead. ` ) ;
}
let home = process . env . THELOUNGE _HOME || program . home || process . env . LOUNGE _HOME ;
2017-08-15 18:57:47 +00:00
if ( ! home ) {
2017-11-19 18:21:37 +00:00
home = Utils . defaultHome ( ) ;
2017-08-15 18:57:47 +00:00
}
Helper . setHome ( home ) ;
2014-10-03 23:33:44 +00:00
2017-12-09 20:06:41 +00:00
// Merge config key-values passed as CLI options into the main config
_ . merge ( Helper . config , program . config ) ;
2016-04-19 20:58:49 +00:00
require ( "./start" ) ;
require ( "./config" ) ;
2017-12-07 02:28:21 +00:00
if ( ! Helper . config . public && ! Helper . config . ldap . enable ) {
require ( "./users" ) ;
}
2017-09-18 15:57:24 +00:00
require ( "./install" ) ;
2016-04-19 20:58:49 +00:00
2017-11-12 20:49:04 +00:00
// TODO: Remove this when releasing The Lounge v3
if ( process . argv [ 1 ] . endsWith ( ` ${ require ( "path" ) . sep } lounge ` ) ) {
2017-12-10 21:07:23 +00:00
log . warn ( ` The ${ colors . red ( "lounge" ) } CLI is ${ colors . bold . red ( "deprecated" ) } and will be removed in v3. ` ) ;
2017-11-12 20:49:04 +00:00
log . warn ( ` Use ${ colors . green ( "thelounge" ) } instead. ` ) ;
process . argv [ 1 ] = "thelounge" ;
}
2017-12-10 21:57:26 +00:00
// `parse` expects to be passed `process.argv`, but we need to remove to give it
// a version of `argv` that does not contain options already parsed by
// `parseOptions` above.
// This is done by giving it the updated `argv` that `parseOptions` returned,
// except it returns an object with `args`/`unknown`, so we need to concat them.
// See https://github.com/tj/commander.js/blob/fefda77f463292/index.js#L686-L763
program . parse ( argvWithoutOptions . args . concat ( argvWithoutOptions . unknown ) ) ;
2014-10-14 20:53:26 +00:00
2014-08-19 01:18:40 +00:00
if ( ! program . args . length ) {
2017-02-18 03:23:01 +00:00
program . help ( ) ;
2014-08-19 01:18:40 +00:00
}