@@ -46,33 +46,63 @@ def update_component():
46
46
47
47
def _example_name_input () -> str :
48
48
if len (sys .argv ) == 1 :
49
- print ("No example argument given. Provide an example's number or name:" )
50
- _print_available_options ()
49
+ _print_error (
50
+ "No example argument given. Provide an example's number from above."
51
+ )
51
52
sys .exit (1 )
52
53
53
- ex_name = sys .argv [1 ]
54
-
55
- if ex_name in EXAMPLE_NAME_SET :
56
- return ex_name
54
+ ex_num = sys .argv [1 ]
57
55
58
56
try :
59
- ex_num = int (ex_name )
57
+ ex_num = int (ex_num )
60
58
except ValueError :
61
- print (f"No example { ex_name !r} exists. Provide an example's number or name:" )
62
- _print_available_options ()
59
+ _print_error (
60
+ f"No example { ex_num !r} exists. Provide an example's number as an integer."
61
+ )
63
62
sys .exit (1 )
64
63
65
64
ex_index = ex_num - 1
66
65
try :
67
66
return EXAMPLE_NAME_LIST [ex_index ]
68
67
except IndexError :
69
- print (f"No example #{ ex_num } exists." )
68
+ _print_error (f"No example #{ ex_num } exists. Choose from an option above ." )
70
69
sys .exit (1 )
71
70
72
71
72
+ def _print_error (* args ) -> None :
73
+ _print_available_options ()
74
+ print (* args )
75
+
76
+
73
77
def _print_available_options ():
78
+ examples_by_path = {}
74
79
for i , name in enumerate (EXAMPLE_NAME_LIST ):
75
- print (f"{ i + 1 } ." , name )
80
+ if "/" not in name :
81
+ path = ""
82
+ else :
83
+ path , name = name .rsplit ("/" , 1 )
84
+ examples_by_path .setdefault (path , []).append (name )
85
+
86
+ number = 1
87
+ print ()
88
+ for path , names in examples_by_path .items ():
89
+ title = " " .join (
90
+ map (
91
+ str .title ,
92
+ path .replace ("/_examples" , "" )
93
+ .replace ("/" , " > " )
94
+ .replace ("-" , " " )
95
+ .replace ("_" , " " )
96
+ .upper ()
97
+ .split (),
98
+ )
99
+ )
100
+ print (title )
101
+ print ("-" * len (title ))
102
+ for name in names :
103
+ print (f"{ number } . " , name )
104
+ number += 1
105
+ print ()
76
106
77
107
78
108
if __name__ == "__main__" :
0 commit comments