console.log("[red]Setup was already completed! Please make sure you have to run this script again. If you have to, please delete the file .setup-done-before")
exit()
defhandle_input(
message:str="",
check_type=False,
match:str="",
err_message:str="",
nmin=None,
nmax=None,
oob_error="",
):
match=re.compile(match)
whileTrue:
user_input=input(message+"\n> ").strip()
ifre.match(match,user_input)isnotNone:
ifcheck_typeisnotFalse:
try:
user_input=check_type(user_input)
ifnminisnotNoneanduser_input<nmin:
console.log("[red]"+oob_error)# Input too low failstate
continue
ifnmaxisnotNoneanduser_input>nmax:
console.log("[red]"+oob_error)# Input too high
continue
break# Successful type conversion and number in bounds
exceptValueError:
console.log("[red]"+err_message)# Type conversion failed
continue
if(
nminisnotNoneandlen(user_input)<nmin
):# Check if string is long enough
console.log("[red]"+oob_error)
continue
if(
nmaxisnotNoneandlen(user_input)>nmax
):# Check if string is not too long
console.log("[red]"+oob_error)
continue
break
console.log("[red]"+err_message)
returnuser_input
ifos.path.isfile(".setup-done-before"):
console.log(
"[red]Setup was already completed! Please make sure you have to run this script again. If that is such, delete the file .setup-done-before"
)
exit()
# These lines ensure the user:
# - knows they are in setup mode
# - knows that they are about to erase any other setup files/data.
print_step("Setup Assistant")
print_markdown(
"### You're in the setup wizard. Ensure you're supposed to be here, then type yes to continue. If you're not sure, type no to quit."
"### You're in the setup wizard. Ensure you're supposed to be here, then type yes to continue. If you're not sure, type no to quit."
)
# This Input is used to ensure the user is sure they want to continue.
ensureSetupIsRequired=input("Are you sure you want to continue? > ").casefold()
ifensureSetupIsRequired!="yes":
console.print("[red]Exiting...")
time.sleep(0.5)
exit()
else:
# Again, let them know they are about to erase all other setup data.
console.print("[bold red] This will overwrite your current settings. Are you sure you want to continue? [bold green]yes/no")
overwriteSettings=input("Are you sure you want to continue? > ").casefold()
ifoverwriteSettings!="yes":
console.print("[red]Abort mission! Exiting...")
time.sleep(0.5)
exit()
else:
# Once they confirm, move on with the script.
console.print("[bold green]Alright! Let's get started!")
time.sleep(1)
ifinput("Are you sure you want to continue? > ").strip().casefold()!="yes":
console.print("[red]Exiting...")
exit()
# This code is inaccessible if the prior check fails, and thus an else statement is unnecessary
# Again, let them know they are about to erase all other setup data.
console.print(
"[bold red] This will overwrite your current settings. Are you sure you want to continue? [bold green]yes/no"
)
ifinput("Are you sure you want to continue? > ").strip().casefold()!="yes":
console.print("[red]Abort mission! Exiting...")
exit()
# This is once again inaccessible if the prior checks fail
# Once they confirm, move on with the script.
console.print("[bold green]Alright! Let's get started!")
print("\n")
console.log("Ensure you have the following ready to enter:")
console.log("[bold green]Reddit Client ID")
console.log("[bold green]Reddit Client Secret")
@ -59,64 +102,108 @@ console.log("[bold green]Reddit 2FA (yes or no)")
console.log("[bold green]Opacity (range of 0-1, decimals are OK)")
console.log("[bold green]Subreddit (without r/ or /r/)")
console.log("[bold green]Theme (light or dark)")
time.sleep(0.5)
console.print("[green]If you don't have these, please follow the instructions in the README.md file to set them up.")
console.print("[green]If you do have these, type yes to continue. If you dont, go ahead and grab those quickly and come back.")
confirmUserHasCredentials=input("Are you sure you have the credentials? > ").casefold()
ifconfirmUserHasCredentials!="yes":
console.print("[red]I don't understand that.")
console.print("[red]Exiting...")
exit()
else:
console.print("[bold green]Alright! Let's get started!")
time.sleep(1)
console.print(
"[green]If you don't have these, please follow the instructions in the README.md file to set them up."
)
console.print(
"[green]If you do have these, type yes to continue. If you dont, go ahead and grab those quickly and come back."
)
print()
"""
Beginthesetupprocess.
ifinput("Are you sure you have the credentials? > ").strip().casefold()!="yes":
console.print("[red]I don't understand that.")
console.print("[red]Exiting...")
exit()
"""
console.print("[bold green]Alright! Let's get started!")
# Begin the setup process.
console.log("Enter your credentials now.")
cliID=input("Client ID > ")
cliSec=input("Client Secret > ")
user=input("Username > ")
passw=input("Password > ")
twofactor=input("2fa Enabled? (yes/no) > ")
opacity=input("Opacity? (range of 0-1) > ")
subreddit=input("Subreddit (without r/) > ")
theme=input("Theme? (light or dark) > ")
console.log("Attempting to save your credentials...")