コマンドにおけるオプション、引数を間違えた時にhelpを出力する
Sep 7, 2006 From: yasuo@e...
えとー@引越し準備長期化中。。。
現在の所、コマンドを使った際に、オプションの値のミスや
オプションの引数の指定に失敗した場合は以下のようになります。
$ /usr/sbin/qwik-service --showpassword
/usr/lib/ruby/1.8/optparse.rb:446:in `parse': missing argument: --showpassword (OptionParser::MissingArgument)
from /usr/lib/ruby/1.8/optparse.rb:1278:in `order!' from /usr/lib/ruby/1.8/optparse.rb:1266:in `catch' from /usr/lib/ruby/1.8/optparse.rb:1266:in `order!' from /usr/lib/ruby/1.8/optparse.rb:1346:in `permute!' from /usr/lib/ruby/1.8/optparse.rb:1373:in `parse!' from /usr/lib/ruby/1.8/qwik/qwik-service.rb:108:in `parse_args' from /usr/lib/ruby/1.8/qwik/qwik-service.rb:27:in `run' from /usr/lib/ruby/1.8/qwik/qwik-service.rb:22:in `main' from /usr/sbin/qwik-service:3
これだと、この直後に -h などで確認したりすることになるので
$ /usr/sbin/qwik-service --showpassword
missing argument: --showpassword
Usage: qwik-service [options]{{br}}
Specific options:
-c, --config file Specify config file.
-d, --[no-]debug Run in debug mode.
--start Start qwikWeb and QuickML services.
--stop Stop qwikWeb and QuickML services.
--restart Restart qwikWeb and QuickML services.
--web-start Start qwikWeb services.
--web-stop Stop qwikWeb services.
--web-restart Restart qwikWeb services.
--ml-start Start QuickML services.
--ml-stop Stop QuickML services.
--ml-restart Restart QuickML services.
--watchlog Watch log continuously.
--makesite sitename,mailaddr Make a new site.
--adduser sitename,mailaddr Add a user.
--showpassword mailaddress Show password.
--incgen mailaddress Increment a generation.
Common options:
-h, --help Show this message. -v, --version Show version.
のように -h の出力と同様のものを出すようにしませんか?
パッチは以下のような簡単なものです。
$ diff -u qwik-service.rb.orig qwik-service.rb
- qwik-service.rb.orig 2006-09-07 00:05:10.000000000 +0900
- qwik-service.rb 2006-09-07 00:05:23.000000000 +0900
@@ -4,7 +4,6 @@
require 'optparse'
- $LOAD_PATH << '..' unless $LOAD_PATH.include? '..'
require 'qwik/config' require 'qwik/version' require 'qwik/util-pathname'
@@ -106,7 +105,13 @@
exit
}
}- optionparser.parse!(args)
- begin
- optionparser.parse!(args)
- rescue OptionParser::ParseError => err
- puts err.message
- puts optionparser.to_s
- exit
- end
if cmd.empty? print ' To show help,
これで問題なさそうでしたらマージしたいと思います。
ついでに、
qwik-service以外もこうしたほうがいいかなと思っていますが、
optparseをrequreしている物についていちお所見を
ユーザも使うかもしれないが、デベロッパー向けなので
コマンドラインミスについてもそのままでもいいかもしれないもの
lib/qwik/dev-bench.rb
lib/qwik/test-module-suite.rb
lib/qwik/dev-release.rb
開発用途ではなくユーザが使うことを想定されているので
変更したほうがよいと思うもの
lib/qwik/config.rb
lib/qwik/qwik-service.rb
#debパッケージそろそろ再ITPしたいですね。。。
Sep 7, 2006 From: yasuo@e...
えとーです。
そーいえば、オプション、引数がなにもなかった場合を忘れてました。
To show help,
% qwik-service --help
とか、表示するよりも、helpを表示したほうがいいと思います。
よって、前記のパッチは以下のように変更したいと思います。
$ diff -u qwik-service.rb.orig qwik-service.rb
- qwik-service.rb.orig 2006-09-07 00:05:10.000000000 +0900
- qwik-service.rb 2006-09-07 00:19:43.000000000 +0900
@@ -4,7 +4,6 @@
require 'optparse'
- $LOAD_PATH << '..' unless $LOAD_PATH.include? '..'
require 'qwik/config' require 'qwik/version' require 'qwik/util-pathname'
@@ -106,14 +105,15 @@
exit
}
}- optionparser.parse!(args)
- begin
- optionparser.parse!(args)
- rescue OptionParser::ParseError => err
- puts err.message
- puts optionparser.to_s
- exit
- end
if cmd.empty?
- print '
- To show help,
-
- % qwik-service --help
-
- '
- puts optionparser.to_s
exit
end
return config, cmdSep 28, 2006 From: yasuo@e...
えとーです。
これはコミットしてしまってもよいでしょうか?
それともなにか問題ありそうですか?
Sep 29, 2006 From: 2006@e...
えとです。
これはコミットしてしまってもよいでしょうか? それともなにか問題ありそうですか?
確認遅くなりましてすいません。問題ないのでコミットお願いします。