@@ -24,11 +24,58 @@ def call
2424
2525 def parse!
2626 OptionParser . new do |opts |
27- opts . banner = "Usage: meval/matrixeval --[VECTOR_KEY] [VECTOR_CHOICE] [COMMAND] [COMMAND_OPTIONS]"
27+ opts . version = Matrixeval ::Ruby ::VERSION
28+ opts . program_name = ""
29+ opts . banner = <<~USAGE
30+ Usage:
31+ matrixeval(meval) [OPTIONS] COMMAND
32+ USAGE
33+
34+ opts . separator ""
35+ opts . separator "Options:"
36+
37+ opts . on "-a" , "--all" , "# Run the COMMAND against all matrix combinations"
2838
2939 Config . vectors . each do |vector |
30- opts . on ( "--#{ vector . key } [VERSION]" , "Set #{ vector . key } version" )
40+ # short = "-#{vector.short_key}"
41+ long = "--#{ vector . key } [VERSION]"
42+ desc = [
43+ "# Run the COMMAND against a specific #{ vector . key } version" ,
44+ "# Options: #{ vector . variants . map ( &:key ) . join ( "/" ) } " ,
45+ "# Default: #{ vector . default_variant . key } " ,
46+ "# Customizable"
47+ ]
48+ opts . separator ""
49+ opts . on ( long , *desc )
50+ end
51+
52+ opts . separator ""
53+ opts . separator "Commands: #{ COMMANDS . join ( "/" ) } (Customizable)"
54+
55+ opts . separator ""
56+ opts . separator "MatrixEval Options:"
57+
58+ opts . on ( "-h" , "--help" , "# Show help" ) do
59+ puts opts . help
60+ exit
3161 end
62+
63+ opts . on ( "-v" , "--version" , "# Show version" ) do
64+ puts opts . version
65+ exit
66+ end
67+
68+ opts . separator ""
69+ opts . separator "Customizations:"
70+ opts . separator " You can customize all options in matrixeval.yml"
71+
72+ opts . separator ""
73+ opts . separator "Example:"
74+ opts . separator " matrixeval --all bundle install"
75+ opts . separator " matrixeval --ruby 3.0 rspec a_spec.rb"
76+ opts . separator " matrixeval --ruby 3.1 --active_model 7.0 rake test"
77+ opts . separator " matrixeval bash"
78+
3279 end . parse! ( context_arguments , into : options )
3380 end
3481
0 commit comments