whatoption 0.2.0 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/bin/whatoption +45 -25
  3. data/lib/whatoption.rb +25 -8
  4. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: eba18bf18642b07d11d846b7abbaf16932df2b47ac8a86128243ae5c4a0e5825
4
- data.tar.gz: 487e4c5d7fb30d871deeefcf04f80b9a6f9d82bc80a8cbd4167b25ab27cfaa77
3
+ metadata.gz: c63a49419c51f74f67a91a8f064182e0edad18ea31db1ed86a17cc0022eda091
4
+ data.tar.gz: 840b7599e54ea02c20357e8d653ec6c4ba04aa7c0743983c74ddcec73e45dfb2
5
5
  SHA512:
6
- metadata.gz: 0d945a051921d4b807594f203ab8fc96008e3c392126bd841ffab2d3d280016f9d6bb33a7d718c6ae7a6aeb970aba4d56a3c923ca3ee6ba95c2866843c1921c2
7
- data.tar.gz: 11f2853c227dcb57fd037a28c809ef1325c7a9eb050e02f8eacf5294656c7edccdd482a82e90bb1ab2ff5db182209b8f59e281cafe0402c374a2f8eac4f36ede
6
+ metadata.gz: b5753baf60b7353155c9154495a33c33f10403556f2e73968d650a8fff657e61c25dda3ebb1163491f6d48fa36c5c0c02efc6766fe06c85e6589712df5a4effa
7
+ data.tar.gz: 4468ab208fcc6e0bd24d13307b9f58fcb1939d4ac39b3566c48767aed093dd79958fada73160149fd59ba3e454cf81633c478fe83d898c66d6df938bbf04d3e6
data/bin/whatoption CHANGED
@@ -1,20 +1,15 @@
1
1
  #!/usr/bin/env ruby
2
2
  # ---------------------------------------------------------------
3
3
  # File : whatoption.rb
4
- # Authors : ccmywish <ccmywish@qq.com>
4
+ # Authors : Aoran Zeng <ccmywish@qq.com>
5
5
  # Created on : <2023-02-06>
6
- # Last modified : <2023-02-07>
6
+ # Last modified : <2023-03-14>
7
7
  # Contributors :
8
8
  #
9
9
  # whatoption:
10
10
  #
11
11
  # Tells you what the option of the command means.
12
12
  #
13
- # ----------
14
- # Changelog:
15
- #
16
- # ~> v0.1.0
17
- # <2023-02-06> Create file
18
13
  # ---------------------------------------------------------------
19
14
 
20
15
  require 'whatoption'
@@ -26,6 +21,9 @@ require 'whatoption'
26
21
  class WhatOption::CliHandler
27
22
 
28
23
  def initialize(argv)
24
+
25
+ @argv = argv
26
+
29
27
  if argv.empty?
30
28
  help || return
31
29
  end
@@ -43,18 +41,12 @@ class WhatOption::CliHandler
43
41
  puts cmd = "git -C #{WhatOption::OPTIONS_DATA_DIR} pull"
44
42
  system cmd
45
43
  return
44
+ when '-l'
45
+ list_options
46
+ else
47
+ get_option
46
48
  end
47
49
 
48
- if argv.size == 1
49
- puts("Please input the option for command '#{argv[0]}'".red) || return
50
- end
51
-
52
- @option = ARGV[-1] # Shouldn't detect where is begin with '-' or '--'
53
- # because some options are just single characters,
54
- # for example, 'tar x', this is to use subcommand as option
55
- # That's reasonable also.
56
- @commands = ARGV[0...-1]
57
-
58
50
  # p option
59
51
  # p commands
60
52
  end
@@ -70,9 +62,10 @@ class WhatOption::CliHandler
70
62
 
71
63
  Options:
72
64
 
73
- -u Update ~/.whatoption data
74
- -h Print this help
75
- -v Print version
65
+ -u Update ~/.whatoption data
66
+ -l <command> List command options
67
+ -h Print this help
68
+ -v Print version
76
69
 
77
70
  Examples:
78
71
 
@@ -85,17 +78,44 @@ class WhatOption::CliHandler
85
78
  HELP
86
79
  end
87
80
 
88
- # method
89
- def work
81
+
82
+ # routine
83
+ def get_option
84
+
85
+ if @argv.size == 1
86
+ puts("Please input the option for command '#{@argv[0]}'".red) || return
87
+ end
88
+
89
+ option = ARGV[-1] # Shouldn't detect where is begin with '-' or '--'
90
+ # because some options are just single characters,
91
+ # for example, 'tar x', this is to use subcommand as option
92
+ # That's reasonable also.
93
+ commands = ARGV[0...-1]
94
+
90
95
  # Because the initializer above will not always finish initializing
91
- if (not @commands) || (not @option)
96
+ if (not commands) || (not option)
92
97
  exit
93
98
  end
94
- option_info = WhatOption::OptionInfo.new @commands, @option
99
+ option_info = WhatOption::OptionInfo.new commands, option
95
100
  option_info.show
96
101
  end
97
102
 
103
+
104
+ # routine
105
+ def list_options
106
+
107
+ if @argv.size == 1
108
+ puts("Please input the command name after '-l'".red) || return
109
+ end
110
+
111
+ option = nil
112
+ commands = ARGV[1..-1]
113
+ option_info = WhatOption::OptionInfo.new commands, option
114
+ option_info.list
115
+ end
116
+
117
+
98
118
  end
99
119
 
120
+ # main
100
121
  cli = WhatOption::CliHandler.new ARGV
101
- cli.work
data/lib/whatoption.rb CHANGED
@@ -1,23 +1,18 @@
1
1
  # ---------------------------------------------------------------
2
2
  # File : whatoption.rb
3
- # Authors : ccmywish <ccmywish@qq.com>
3
+ # Authors : Aoran Zeng <ccmywish@qq.com>
4
4
  # Created on : <2023-02-06>
5
- # Last modified : <2023-02-07>
5
+ # Last modified : <2023-03-14>
6
6
  #
7
7
  # whatoption:
8
8
  #
9
9
  # Lib file
10
10
  #
11
- # ----------
12
- # Changelog:
13
- #
14
- # ~> v0.1.0
15
- # <2023-02-06> Create file
16
11
  # ---------------------------------------------------------------
17
12
 
18
13
  module WhatOption
19
14
 
20
- VERSION = "0.2.0"
15
+ VERSION = "0.3.1"
21
16
 
22
17
  require 'pathname'
23
18
  OPTIONS_DATA_DIR = Pathname.new File.expand_path("~/.whatoption")
@@ -91,6 +86,28 @@ module WhatOption
91
86
  end
92
87
 
93
88
 
89
+ # method
90
+ def list
91
+ sheet = load_sheet
92
+ if not sheet
93
+ exit 1
94
+ end
95
+
96
+ option_max_len = sheet.keys.map(&:length).max
97
+ left = option_max_len + 3
98
+
99
+ lmda = -> hash do hash['desc'].length end
100
+ desc_max_len = sheet.values.map(&lmda).max
101
+
102
+ middle = desc_max_len + 3
103
+
104
+ puts "Options for '#{@commands.join}':"
105
+ sheet.each do |key, value|
106
+ printf " %s%s%s\n", key.ljust(left), value['desc'].ljust(middle), value['func']
107
+ end
108
+ end
109
+
110
+
94
111
  # routine
95
112
  def resolve
96
113
  sheet = load_sheet
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: whatoption
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - ccmywish
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-02-08 00:00:00.000000000 Z
11
+ date: 2023-03-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: tomlrb