11import re
22import secrets
33from pathlib import Path
4+ from urllib .parse import quote
45
56import questionary
67import typer
@@ -84,7 +85,7 @@ def dashboard(
8485 "POSTGRES_USER" : "portabase" ,
8586 "POSTGRES_PASSWORD" : pg_pass ,
8687 "POSTGRES_HOST" : "db" ,
87- "DATABASE_URL" : f"postgresql://portabase:{ pg_pass } @db:5432/portabase?schema=public" ,
88+ "DATABASE_URL" : f"postgresql://portabase:{ quote ( pg_pass , safe = '' ) } @db:5432/portabase?schema=public" ,
8889 "PG_PORT" : str (pg_port ),
8990 }
9091 )
@@ -95,35 +96,41 @@ def dashboard(
9596 db_port = IntPrompt .ask ("Port" , default = 5432 )
9697 db_name = Prompt .ask ("Database Name" , default = "portabase" )
9798 db_user = Prompt .ask ("Username" )
98- db_pass = Prompt .ask ("Password" , password = True )
99+ db_pass = questionary .password ("Password" , style = questionary_style ).ask ()
100+ if db_pass is None :
101+ raise typer .Exit ()
99102
100103 env_vars .update (
101104 {
102105 "POSTGRES_DB" : db_name ,
103106 "POSTGRES_USER" : db_user ,
104107 "POSTGRES_PASSWORD" : db_pass ,
105108 "POSTGRES_HOST" : db_host ,
106- "DATABASE_URL" : f"postgresql://{ db_user } :{ db_pass } @{ db_host } :{ db_port } /{ db_name } ?schema=public" ,
109+ "DATABASE_URL" : f"postgresql://{ quote ( db_user , safe = '' ) } :{ quote ( db_pass , safe = '' ) } @{ db_host } :{ db_port } /{ db_name } ?schema=public" ,
107110 "PG_PORT" : str (db_port ),
108111 }
109112 )
110113
111114 final_compose = re .sub (
112- r"[ ]{8}depends_on:.*?service_healthy\n" , "" , raw_template , flags = re .DOTALL
115+ r"[ ]{4}depends_on:\n[ ]{6}db:\n[ ]{8}condition: service_healthy\n" ,
116+ "" ,
117+ raw_template ,
113118 )
114119 final_compose = re .sub (
115- r"[ ]{4 }db:.*?retries: 5\n" , "" , final_compose , flags = re .DOTALL
120+ r"[ ]{2 }db:.*?retries: 5\n" , "" , final_compose , flags = re .DOTALL
116121 )
117- final_compose = re .sub (r"[ ]{4 }postgres-data:\n" , "" , final_compose )
122+ final_compose = re .sub (r"[ ]{2 }postgres-data:\n" , "" , final_compose )
118123 final_compose = final_compose .replace ("${PROJECT_NAME}" , project_name )
119124 else :
120125 final_compose = re .sub (
121- r"[ ]{8}depends_on:.*?service_healthy\n" , "" , raw_template , flags = re .DOTALL
126+ r"[ ]{4}depends_on:\n[ ]{6}db:\n[ ]{8}condition: service_healthy\n" ,
127+ "" ,
128+ raw_template ,
122129 )
123130 final_compose = re .sub (
124- r"[ ]{4 }db:.*?retries: 5\n" , "" , final_compose , flags = re .DOTALL
131+ r"[ ]{2 }db:.*?retries: 5\n" , "" , final_compose , flags = re .DOTALL
125132 )
126- final_compose = re .sub (r"[ ]{4 }postgres-data:\n" , "" , final_compose )
133+ final_compose = re .sub (r"[ ]{2 }postgres-data:\n" , "" , final_compose )
127134 final_compose = final_compose .replace ("${PROJECT_NAME}" , project_name )
128135
129136 summary = Table (show_header = False , box = None , padding = (0 , 2 ))
0 commit comments