@@ -133,12 +133,8 @@ pub fn is_valid_python_version(version: &str) -> bool {
133133 true
134134}
135135
136- fn copyright_year_prompt ( license : & LicenseType ) -> String {
136+ fn copyright_year_prompt ( license : & LicenseType , default : Option < String > ) -> String {
137137 let prompt_text = "Copyright Year" . to_string ( ) ;
138- let mut default: Option < String > = None ;
139- if let Ok ( now) = OffsetDateTime :: now_local ( ) {
140- default = Some ( now. year ( ) . to_string ( ) ) ;
141- } ;
142138 let prompt = Prompt {
143139 prompt_text,
144140 default,
@@ -169,7 +165,7 @@ fn copyright_year_prompt(license: &LicenseType) -> String {
169165 input
170166}
171167
172- pub fn get_project_info ( ) -> ProjectInfo {
168+ pub fn get_project_info ( use_defaults : bool ) -> ProjectInfo {
173169 let config = match Config :: load_config ( ) {
174170 Ok ( c) => c,
175171 Err ( _) => Config :: new ( ) ,
@@ -180,11 +176,15 @@ pub fn get_project_info() -> ProjectInfo {
180176 } ;
181177 let project_name = project_name_prompt. show_prompt ( ) ;
182178 let project_slug_default = project_name. replace ( ' ' , "-" ) . to_lowercase ( ) ;
183- let project_slug_prompt = Prompt {
184- prompt_text : "Project Slug" . to_string ( ) ,
185- default : Some ( project_slug_default) ,
179+ let project_slug = if use_defaults {
180+ project_slug_default
181+ } else {
182+ let project_slug_prompt = Prompt {
183+ prompt_text : "Project Slug" . to_string ( ) ,
184+ default : Some ( project_slug_default) ,
185+ } ;
186+ project_slug_prompt. show_prompt ( )
186187 } ;
187- let project_slug = project_slug_prompt. show_prompt ( ) ;
188188
189189 if Path :: new ( & project_slug) . exists ( ) {
190190 let error_message = format ! ( "The {project_slug} directory already exists" ) ;
@@ -193,84 +193,211 @@ pub fn get_project_info() -> ProjectInfo {
193193 }
194194
195195 let source_dir_default = project_name. replace ( ' ' , "_" ) . to_lowercase ( ) ;
196- let source_dir_prompt = Prompt {
197- prompt_text : "Source Directory" . to_string ( ) ,
198- default : Some ( source_dir_default) ,
196+ let source_dir = if use_defaults {
197+ source_dir_default
198+ } else {
199+ let source_dir_prompt = Prompt {
200+ prompt_text : "Source Directory" . to_string ( ) ,
201+ default : Some ( source_dir_default) ,
202+ } ;
203+ source_dir_prompt. show_prompt ( )
199204 } ;
200- let source_dir = source_dir_prompt . show_prompt ( ) ;
205+
201206 let project_description_prompt = Prompt {
202207 prompt_text : "Project Description" . to_string ( ) ,
203208 default : None ,
204209 } ;
205210 let project_description = project_description_prompt. show_prompt ( ) ;
206- let creator_prompt = Prompt {
207- prompt_text : "Creator" . to_string ( ) ,
208- default : config. creator ,
211+
212+ let creator = if use_defaults {
213+ if let Some ( creator) = config. creator {
214+ creator
215+ } else {
216+ let creator_prompt = Prompt {
217+ prompt_text : "Creator" . to_string ( ) ,
218+ default : config. creator ,
219+ } ;
220+ creator_prompt. show_prompt ( )
221+ }
222+ } else {
223+ let creator_prompt = Prompt {
224+ prompt_text : "Creator" . to_string ( ) ,
225+ default : config. creator ,
226+ } ;
227+ creator_prompt. show_prompt ( )
209228 } ;
210- let creator = creator_prompt. show_prompt ( ) ;
211- let email_prompt = Prompt {
212- prompt_text : "Creator Email" . to_string ( ) ,
213- default : config. creator_email ,
229+
230+ let creator_email = if use_defaults {
231+ if let Some ( creator_email) = config. creator_email {
232+ creator_email
233+ } else {
234+ let creator_email_prompt = Prompt {
235+ prompt_text : "Creator Email" . to_string ( ) ,
236+ default : config. creator_email ,
237+ } ;
238+ creator_email_prompt. show_prompt ( )
239+ }
240+ } else {
241+ let creator_email_prompt = Prompt {
242+ prompt_text : "Creator Email" . to_string ( ) ,
243+ default : config. creator_email ,
244+ } ;
245+ creator_email_prompt. show_prompt ( )
214246 } ;
215- let creator_email = email_prompt. show_prompt ( ) ;
216- let license = license_prompt ( config. license ) ;
217247
218- let copyright_year: Option < String > ;
219- if let LicenseType :: Mit = license {
220- copyright_year = Some ( copyright_year_prompt ( & license) ) ;
248+ let license = if use_defaults {
249+ if let Some ( l) = config. license {
250+ l
251+ } else {
252+ LicenseType :: Mit
253+ }
221254 } else {
222- copyright_year = None ;
255+ license_prompt ( config. license )
256+ } ;
257+
258+ let mut copyright_year: Option < String > = None ;
259+ if let LicenseType :: Mit = license {
260+ if let Ok ( now) = OffsetDateTime :: now_local ( ) {
261+ if use_defaults {
262+ copyright_year = Some ( now. year ( ) . to_string ( ) ) ;
263+ } else {
264+ copyright_year = Some ( copyright_year_prompt ( & license, None ) ) ;
265+ }
266+ }
223267 }
224268
225- let version_prompt = Prompt {
226- prompt_text : "Version" . to_string ( ) ,
227- default : Some ( "0.1.0" . to_string ( ) ) ,
269+ let default_version = "0.1.0" . to_string ( ) ;
270+ let version = if use_defaults {
271+ default_version
272+ } else {
273+ let version_prompt = Prompt {
274+ prompt_text : "Version" . to_string ( ) ,
275+ default : Some ( default_version) ,
276+ } ;
277+
278+ version_prompt. show_prompt ( )
228279 } ;
229- let version = version_prompt. show_prompt ( ) ;
230280
231281 let python_version_default = match config. python_version {
232282 Some ( python) => python,
233283 None => "3.11" . to_string ( ) ,
234284 } ;
235- let python_version = python_version_prompt ( python_version_default) ;
285+ let python_version = if use_defaults {
286+ python_version_default
287+ } else {
288+ python_version_prompt ( python_version_default)
289+ } ;
236290
237291 let min_python_version_default = match config. min_python_version {
238292 Some ( python) => python,
239293 None => "3.8" . to_string ( ) ,
240294 } ;
241- let min_python_version = python_min_version_prompt ( min_python_version_default) ;
295+ let min_python_version = if use_defaults {
296+ min_python_version_default
297+ } else {
298+ python_min_version_prompt ( min_python_version_default)
299+ } ;
242300
243301 let github_actions_python_test_version_default =
244302 match config. github_actions_python_test_versions {
245- Some ( versions) => versions. join ( ", " ) ,
246- None => "3.8, 3.9, 3.10, 3.11" . to_string ( ) ,
303+ Some ( versions) => versions,
304+ None => vec ! [
305+ "3.8" . to_string( ) ,
306+ "3.9" . to_string( ) ,
307+ "3.10" . to_string( ) ,
308+ "3.11" . to_string( ) ,
309+ ] ,
247310 } ;
248- let github_actions_python_test_versions =
249- github_actions_python_test_versions_prompt ( github_actions_python_test_version_default) ;
250-
251- let use_pyo3 = boolean_prompt (
252- "Use pyo3\n 1 - Yes\n 2 - No\n Choose from[1, 2]" . to_string ( ) ,
253- config. use_pyo3 ,
254- ) ;
255- let is_application = is_application_prompt ( config. is_application ) ;
256- let max_line_length = max_line_length_prompt ( config. max_line_length ) ;
257-
258- let use_dependabot = boolean_prompt (
259- "Use Dependabot\n 1 - Yes\n 2 - No\n Choose from [1, 2]" . to_string ( ) ,
260- config. use_dependabot ,
261- ) ;
262- let use_continuous_deployment = boolean_prompt (
263- "Use Continuous Deployment\n 1 - Yes\n 2 - No\n Choose from [1, 2]" . to_string ( ) ,
264- config. use_continuous_deployment ,
265- ) ;
266- let use_release_drafter = boolean_prompt (
267- "Use Release Drafter\n 1 - Yes\n 2 - No\n Choose from [1, 2]" . to_string ( ) ,
268- config. use_release_drafter ,
269- ) ;
270- let use_multi_os_ci = boolean_prompt (
271- "Use Multi OS CI\n 1 - Yes\n 2 - No\n Choose from [1, 2]" . to_string ( ) ,
272- config. use_multi_os_ci ,
273- ) ;
311+ let github_actions_python_test_versions = if use_defaults {
312+ github_actions_python_test_version_default
313+ } else {
314+ github_actions_python_test_versions_prompt ( github_actions_python_test_version_default)
315+ } ;
316+
317+ let use_pyo3 = if use_defaults {
318+ if let Some ( c) = config. use_pyo3 {
319+ c
320+ } else {
321+ false
322+ }
323+ } else {
324+ boolean_prompt (
325+ "Use pyo3\n 1 - Yes\n 2 - No\n Choose from[1, 2]" . to_string ( ) ,
326+ config. use_pyo3 ,
327+ )
328+ } ;
329+
330+ let is_application = if use_defaults {
331+ if let Some ( app) = config. is_application {
332+ app
333+ } else {
334+ true
335+ }
336+ } else {
337+ is_application_prompt ( config. is_application )
338+ } ;
339+
340+ let max_line_length = if use_defaults {
341+ if let Some ( max) = config. max_line_length {
342+ max
343+ } else {
344+ 100
345+ }
346+ } else {
347+ max_line_length_prompt ( config. max_line_length )
348+ } ;
349+
350+ let use_dependabot = if use_defaults {
351+ if let Some ( dependabot) = config. use_dependabot {
352+ dependabot
353+ } else {
354+ true
355+ }
356+ } else {
357+ boolean_prompt (
358+ "Use Dependabot\n 1 - Yes\n 2 - No\n Choose from [1, 2]" . to_string ( ) ,
359+ config. use_dependabot ,
360+ )
361+ } ;
362+
363+ let use_continuous_deployment = if use_defaults {
364+ if let Some ( deploy) = config. use_continuous_deployment {
365+ deploy
366+ } else {
367+ true
368+ }
369+ } else {
370+ boolean_prompt (
371+ "Use Continuous Deployment\n 1 - Yes\n 2 - No\n Choose from [1, 2]" . to_string ( ) ,
372+ config. use_continuous_deployment ,
373+ )
374+ } ;
375+
376+ let use_release_drafter = if use_defaults {
377+ if let Some ( drafter) = config. use_release_drafter {
378+ drafter
379+ } else {
380+ true
381+ }
382+ } else {
383+ boolean_prompt (
384+ "Use Release Drafter\n 1 - Yes\n 2 - No\n Choose from [1, 2]" . to_string ( ) ,
385+ config. use_release_drafter ,
386+ )
387+ } ;
388+
389+ let use_multi_os_ci = if use_defaults {
390+ if let Some ( multi_os) = config. use_multi_os_ci {
391+ multi_os
392+ } else {
393+ true
394+ }
395+ } else {
396+ boolean_prompt (
397+ "Use Multi OS CI\n 1 - Yes\n 2 - No\n Choose from [1, 2]" . to_string ( ) ,
398+ config. use_multi_os_ci ,
399+ )
400+ } ;
274401
275402 ProjectInfo {
276403 project_name,
@@ -297,10 +424,11 @@ pub fn get_project_info() -> ProjectInfo {
297424 }
298425}
299426
300- fn github_actions_python_test_versions_prompt ( default : String ) -> Vec < String > {
427+ fn github_actions_python_test_versions_prompt ( default : Vec < String > ) -> Vec < String > {
428+ let default_str = default. join ( ", " ) ;
301429 let prompt = Prompt {
302430 prompt_text : "Python Versions for Github Actions Testing" . to_string ( ) ,
303- default : Some ( default ) ,
431+ default : Some ( default_str ) ,
304432 } ;
305433 let input = prompt. show_prompt ( ) ;
306434 let mut versions: Vec < String > = Vec :: new ( ) ;
0 commit comments