Add --setup option to setup_nimforum script.
This commit is contained in:
parent
b958904b6a
commit
0e30f4f625
1 changed files with 73 additions and 3 deletions
|
|
@ -7,7 +7,7 @@
|
||||||
#
|
#
|
||||||
# Script to initialise the nimforum.
|
# Script to initialise the nimforum.
|
||||||
|
|
||||||
import strutils, db_sqlite, os, times, json, options
|
import strutils, db_sqlite, os, times, json, options, terminal
|
||||||
|
|
||||||
import auth, frontend/user
|
import auth, frontend/user
|
||||||
|
|
||||||
|
|
@ -210,7 +210,8 @@ proc initialiseConfig(
|
||||||
recaptcha: tuple[siteKey, secretKey: string],
|
recaptcha: tuple[siteKey, secretKey: string],
|
||||||
smtp: tuple[address, user, password: string],
|
smtp: tuple[address, user, password: string],
|
||||||
isDev: bool,
|
isDev: bool,
|
||||||
dbPath: string
|
dbPath: string,
|
||||||
|
ga: string=""
|
||||||
) =
|
) =
|
||||||
let path = getCurrentDir() / "forum.json"
|
let path = getCurrentDir() / "forum.json"
|
||||||
|
|
||||||
|
|
@ -226,6 +227,8 @@ proc initialiseConfig(
|
||||||
"isDev": %isDev,
|
"isDev": %isDev,
|
||||||
"dbPath": %dbPath
|
"dbPath": %dbPath
|
||||||
}
|
}
|
||||||
|
if ga.len > 0:
|
||||||
|
j["ga"] = %ga
|
||||||
|
|
||||||
backup(path, some(pretty(j)))
|
backup(path, some(pretty(j)))
|
||||||
writeFile(path, pretty(j))
|
writeFile(path, pretty(j))
|
||||||
|
|
@ -235,6 +238,67 @@ proc question(q: string): string =
|
||||||
stdout.write(q)
|
stdout.write(q)
|
||||||
result = stdin.readLine()
|
result = stdin.readLine()
|
||||||
|
|
||||||
|
proc setup() =
|
||||||
|
echo("""
|
||||||
|
Welcome to the NimForum setup script. Please answer the following questions.
|
||||||
|
These can be changed later in the generated forum.json file.
|
||||||
|
""")
|
||||||
|
|
||||||
|
let name = question("Forum full name: ")
|
||||||
|
let title = question("Forum short name: ")
|
||||||
|
|
||||||
|
let hostname = question("Forum hostname: ")
|
||||||
|
|
||||||
|
let adminUser = question("Admin username: ")
|
||||||
|
let adminPass = readPasswordFromStdin("Admin password: ")
|
||||||
|
let adminEmail = question("Admin email: ")
|
||||||
|
|
||||||
|
echo("")
|
||||||
|
echo("The following question are related to recaptcha. \nYou must set up a " &
|
||||||
|
"recaptcha for your forum before answering them. \nPlease do so now " &
|
||||||
|
"and then answer these questions: https://www.google.com/recaptcha/admin")
|
||||||
|
let recaptchaSiteKey = question("Recaptcha site key: ")
|
||||||
|
let recaptchaSecretKey = question("Recaptcha secret key: ")
|
||||||
|
|
||||||
|
|
||||||
|
echo("The following questions are related to smtp. You must set up a \n" &
|
||||||
|
"mailing server for your forum or use an external service.")
|
||||||
|
let smtpAddress = question("SMTP address (eg: mail.hostname.com): ")
|
||||||
|
let smtpUser = question("SMTP user: ")
|
||||||
|
let smtpPassword = readPasswordFromStdin("SMTP pass: ")
|
||||||
|
|
||||||
|
echo("The following is optional. You can specify your Google Analytics ID " &
|
||||||
|
"if you wish. Otherwise just leave it blank.")
|
||||||
|
stdout.write("Google Analytics (eg: UA-12345678-1): ")
|
||||||
|
let ga = stdin.readLine().strip()
|
||||||
|
|
||||||
|
let dbPath = "nimforum.db"
|
||||||
|
initialiseConfig(
|
||||||
|
name, title, hostname, (recaptchaSiteKey, recaptchaSecretKey),
|
||||||
|
(smtpAddress, smtpUser, smtpPassword), isDev=false,
|
||||||
|
dbPath, ga
|
||||||
|
)
|
||||||
|
|
||||||
|
initialiseDb(
|
||||||
|
admin=(adminUser, adminPass, adminEmail),
|
||||||
|
dbPath
|
||||||
|
)
|
||||||
|
|
||||||
|
echo("Setup complete!")
|
||||||
|
|
||||||
|
proc echoHelp() =
|
||||||
|
quit("""
|
||||||
|
Usage: setup_nimforum opts
|
||||||
|
|
||||||
|
Options:
|
||||||
|
--setup Performs first time setup for end users.
|
||||||
|
|
||||||
|
Development options:
|
||||||
|
--dev Creates a new development DB and config.
|
||||||
|
--test Creates a new test DB and config.
|
||||||
|
--blank Creates a new blank DB.
|
||||||
|
""")
|
||||||
|
|
||||||
when isMainModule:
|
when isMainModule:
|
||||||
if paramCount() > 0:
|
if paramCount() > 0:
|
||||||
case paramStr(1)
|
case paramStr(1)
|
||||||
|
|
@ -279,5 +343,11 @@ when isMainModule:
|
||||||
admin=("", "", ""),
|
admin=("", "", ""),
|
||||||
dbPath
|
dbPath
|
||||||
)
|
)
|
||||||
|
of "--setup":
|
||||||
|
setup()
|
||||||
else:
|
else:
|
||||||
quit("--dev|--test|--prod")
|
echoHelp()
|
||||||
|
else:
|
||||||
|
echoHelp()
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue