[redbot.setup] Ask for confirmation when passed instance name contains hyphens + allow to use dots (#3920)

* Change regex and the error message

* few changes see ^^^ GH comment

if it doesn't pass the RegEx `[a-zA-Z0-9_\.]*` then:
- if on Linux and contains a "-" anywhere, not allowed
- if it contains a space or starts with a "-", not allowed
- if the top two don't trigger, then `confirm()` with the user.

* black why

* 3.3.9

* fk

* ty aika

* review :aha:

* oopsie

Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>

* this is just vexed tries and jack fixes

Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>

* quite sad really

Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>

Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
This commit is contained in:
Vexed 2020-06-19 15:16:22 +01:00 committed by GitHub
parent 144b7b36d0
commit 4c62c67fd4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -12,6 +12,7 @@ from typing import Dict, Any, Optional, Union
import appdirs import appdirs
import click import click
from redbot.core.cli import confirm
from redbot.core.utils._internal_utils import safe_delete, create_backup as red_create_backup from redbot.core.utils._internal_utils import safe_delete, create_backup as red_create_backup
from redbot.core import config, data_manager, drivers from redbot.core import config, data_manager, drivers
from redbot.core.drivers import BackendType, IdentifierData from redbot.core.drivers import BackendType, IdentifierData
@ -128,16 +129,23 @@ def get_name() -> str:
print( print(
"Please enter a name for your instance," "Please enter a name for your instance,"
" it will be used to run your bot from here on out.\n" " it will be used to run your bot from here on out.\n"
"This name is case-sensitive and can only include characters" "This name is case-sensitive and should only include characters"
" A-z, numbers, underscores, and hyphens." " A-z, numbers, underscores (_) and periods (.)."
) )
name = input("> ") name = input("> ")
if re.fullmatch(r"[a-zA-Z0-9_\-]*", name) is None: if re.fullmatch(r"[A-Za-z0-9_\.\-]*", name) is None:
print( print(
"ERROR: Instance name can only include" "ERROR: Instance names can only include characters A-z, numbers, "
" characters A-z, numbers, underscores, and hyphens!" "underscores (_) and periods (.)."
) )
name = "" name = ""
elif "-" in name and not confirm(
"Hyphens (-) in instance names may cause issues. Are you sure you want to continue with this instance name?",
default=False,
):
name = ""
print() # new line for aesthetics
return name return name