1. set default option -h for tool [why] the tool will show help message if no option specified the tool will get no email address without both '-e' and '-f'
[how] add '-h' as default option if no option specified options will be reset to '-h' if both '-e' and '-f' are not specified
2. fix undefined method 'empty' [why] the original data is defined nil, but not empty for my_email when execute answerback-email with no -e or -f, it will throw error as: raceback (most recent call last): 2: from ./answerback-email.rb:213:in `<main>' 1: from ./answerback-email.rb:184:in `send_account' ./answerback-email.rb:155:in `check_my_email': undefined method `empty?' for nil:NilClass (NoMethodError)
Signed-off-by: Luan Shengde shdluan@163.com --- container/assign-account/answerback-email.rb | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-)
diff --git a/container/assign-account/answerback-email.rb b/container/assign-account/answerback-email.rb index c6bfdd3..badbdea 100755 --- a/container/assign-account/answerback-email.rb +++ b/container/assign-account/answerback-email.rb @@ -80,7 +80,7 @@ end
options = OptionParser.new do |opts| opts.banner = 'Usage: answerback-mail.rb [-e|--email email] [-n|--name name] ' - opts.banner += "[-s|--ssh-pubkey pub_key_file] [-g|--gen-sshkey] [--login y|n] [--update]\n" + opts.banner += "[-s|--ssh-pubkey pub_key_file] [-g|--gen-sshkey] [-l|--login y|n] [-u|--update]\n" opts.banner += ' answerback-mail.rb [-f|--raw-email email_file] ' opts.banner += "[-g|--gen-sshkey] [--login y|n] [--update]\n" opts.banner += " -e|-f is required when applying account or updating account\n" @@ -121,12 +121,15 @@ options = OptionParser.new do |opts| end
opts.on('-l value', '--login value', 'enable/disable login, value: y|n') do |value| - if value.downcase == 'y' + case value + when 'y', 'Y' conf_info['enable_login'] = true - elsif value.downcase == 'n' + when 'n', 'N' conf_info['enable_login'] = false else - raise 'invalid parameter, please use y|n' + puts "-l: bad value #{value}, please use y|n\n\n" + puts opts.banner + return 0 end end
@@ -136,6 +139,12 @@ options = OptionParser.new do |opts| end end
+if ARGV.empty? + ARGV << '-h' +elsif (['-e', '-f'] - ARGV).eql? ['-e', '-f'] + ARGV.clear + ARGV << '-h' +end options.parse!(ARGV)
def apply_account(my_info, conf_info) @@ -152,7 +161,7 @@ def check_my_email(my_info) message += "use -e to add an email address for applying account\n" message += 'or use -f to add an email file'
- raise message if my_info['my_email'].empty? + raise message if my_info['my_email'].nil? end
def build_my_info_from_input(my_info, email_info, my_info_es, stdin_info)
pls ignore this patch
Thanks, Luan Shengde
On Sat, Nov 28, 2020 at 11:37:05AM +0800, Luan Shengde wrote:
- set default option -h for tool
[why] the tool will show help message if no option specified the tool will get no email address without both '-e' and '-f'
[how] add '-h' as default option if no option specified options will be reset to '-h' if both '-e' and '-f' are not specified
- fix undefined method 'empty'
[why] the original data is defined nil, but not empty for my_email when execute answerback-email with no -e or -f, it will throw error as: raceback (most recent call last): 2: from ./answerback-email.rb:213:in `<main>' 1: from ./answerback-email.rb:184:in `send_account' ./answerback-email.rb:155:in `check_my_email': undefined method `empty?' for nil:NilClass (NoMethodError)
Signed-off-by: Luan Shengde shdluan@163.com
container/assign-account/answerback-email.rb | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-)
diff --git a/container/assign-account/answerback-email.rb b/container/assign-account/answerback-email.rb index c6bfdd3..badbdea 100755 --- a/container/assign-account/answerback-email.rb +++ b/container/assign-account/answerback-email.rb @@ -80,7 +80,7 @@ end
options = OptionParser.new do |opts| opts.banner = 'Usage: answerback-mail.rb [-e|--email email] [-n|--name name] '
- opts.banner += "[-s|--ssh-pubkey pub_key_file] [-g|--gen-sshkey] [--login y|n] [--update]\n"
- opts.banner += "[-s|--ssh-pubkey pub_key_file] [-g|--gen-sshkey] [-l|--login y|n] [-u|--update]\n" opts.banner += ' answerback-mail.rb [-f|--raw-email email_file] ' opts.banner += "[-g|--gen-sshkey] [--login y|n] [--update]\n" opts.banner += " -e|-f is required when applying account or updating account\n"
@@ -121,12 +121,15 @@ options = OptionParser.new do |opts| end
opts.on('-l value', '--login value', 'enable/disable login, value: y|n') do |value|
- if value.downcase == 'y'
- case value
- when 'y', 'Y' conf_info['enable_login'] = true
- elsif value.downcase == 'n'
- when 'n', 'N' conf_info['enable_login'] = false else
raise 'invalid parameter, please use y|n'
puts "-l: bad value #{value}, please use y|n\n\n"
puts opts.banner
end endreturn 0
@@ -136,6 +139,12 @@ options = OptionParser.new do |opts| end end
+if ARGV.empty?
- ARGV << '-h'
+elsif (['-e', '-f'] - ARGV).eql? ['-e', '-f']
- ARGV.clear
- ARGV << '-h'
+end options.parse!(ARGV)
def apply_account(my_info, conf_info) @@ -152,7 +161,7 @@ def check_my_email(my_info) message += "use -e to add an email address for applying account\n" message += 'or use -f to add an email file'
- raise message if my_info['my_email'].empty?
- raise message if my_info['my_email'].nil?
end
def build_my_info_from_input(my_info, email_info, my_info_es, stdin_info)
2.23.0