cmdparse 2.0.6 → 3.0.0
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.
- checksums.yaml +4 -4
- data/COPYING +21 -674
- data/README.md +29 -26
- data/Rakefile +58 -94
- data/VERSION +1 -1
- data/doc/api.api +5 -0
- data/doc/api.template +24 -0
- data/doc/default.scss +1987 -0
- data/doc/default.template +47 -26
- data/doc/images/bg01.png +0 -0
- data/doc/images/bg02.png +0 -0
- data/doc/index.page +81 -74
- data/doc/{download.page → installation.page} +13 -14
- data/doc/metainfo +14 -0
- data/doc/news.page +113 -0
- data/doc/tutorial.page +211 -115
- data/doc/virtual +2 -5
- data/example/net.rb +85 -0
- data/lib/cmdparse.rb +675 -284
- data/webgen.config +22 -0
- metadata +39 -24
- data/COPYING.LESSER +0 -165
- data/doc/about.page +0 -24
- data/doc/default.css +0 -152
- data/doc/logo.png +0 -0
- data/lib/cmdparse/wrappers/optparse.rb +0 -63
- data/net.rb +0 -88
- data/test/tc_commandhash.rb +0 -96
data/doc/logo.png
DELETED
Binary file
|
@@ -1,63 +0,0 @@
|
|
1
|
-
#
|
2
|
-
#--
|
3
|
-
# cmdparse: advanced command line parser supporting commands
|
4
|
-
# Copyright (C) 2004-2014 Thomas Leitner
|
5
|
-
#
|
6
|
-
# This file is part of cmdparse.
|
7
|
-
#
|
8
|
-
# cmdparse is free software: you can redistribute it and/or modify it under the terms of the GNU
|
9
|
-
# Lesser General Public License as published by the Free Software Foundation, either version 3 of
|
10
|
-
# the License, or (at your option) any later version.
|
11
|
-
#
|
12
|
-
# cmdparse is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even
|
13
|
-
# the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser
|
14
|
-
# General Public License for more details.
|
15
|
-
#
|
16
|
-
# You should have received a copy of the GNU Lesser General Public License along with cmdparse. If
|
17
|
-
# not, see <http://www.gnu.org/licenses/>.
|
18
|
-
#
|
19
|
-
#++
|
20
|
-
#
|
21
|
-
|
22
|
-
require 'optparse'
|
23
|
-
|
24
|
-
# Some extension to the standard option parser class
|
25
|
-
class OptionParser
|
26
|
-
|
27
|
-
if const_defined?('Officious')
|
28
|
-
Officious.delete('version')
|
29
|
-
Officious.delete('help')
|
30
|
-
else
|
31
|
-
DefaultList.long.delete('version')
|
32
|
-
DefaultList.long.delete('help')
|
33
|
-
end
|
34
|
-
|
35
|
-
end
|
36
|
-
|
37
|
-
module CmdParse
|
38
|
-
|
39
|
-
# Parser wrapper for OptionParser (included in Ruby Standard Library).
|
40
|
-
class OptionParserWrapper < ParserWrapper
|
41
|
-
|
42
|
-
# Initializes the wrapper with a default OptionParser instance or the +parser+ parameter and
|
43
|
-
# yields this instance.
|
44
|
-
def initialize(parser = OptionParser.new, &block)
|
45
|
-
@instance = parser
|
46
|
-
self.instance(&block)
|
47
|
-
end
|
48
|
-
|
49
|
-
def order(args)
|
50
|
-
@instance.order(args)
|
51
|
-
end
|
52
|
-
|
53
|
-
def permute(args)
|
54
|
-
@instance.permute(args)
|
55
|
-
end
|
56
|
-
|
57
|
-
def summarize
|
58
|
-
@instance.summarize
|
59
|
-
end
|
60
|
-
|
61
|
-
end
|
62
|
-
|
63
|
-
end
|
data/net.rb
DELETED
@@ -1,88 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
# if something is changed here -> change line numbers in doc/src/documentation.page
|
3
|
-
|
4
|
-
$:.unshift "lib"
|
5
|
-
require 'cmdparse'
|
6
|
-
require 'ostruct'
|
7
|
-
require 'yaml'
|
8
|
-
|
9
|
-
class NetStatCommand < CmdParse::Command
|
10
|
-
|
11
|
-
def initialize
|
12
|
-
super('stat', false)
|
13
|
-
self.short_desc = "Show network statistics"
|
14
|
-
self.description = "This command shows very useful network statistics - eye catching!!!"
|
15
|
-
end
|
16
|
-
|
17
|
-
def execute(args)
|
18
|
-
puts "Showing network statistics" if $verbose
|
19
|
-
puts
|
20
|
-
puts "Yeah, I will do something now..."
|
21
|
-
puts
|
22
|
-
1.upto(10) do |row|
|
23
|
-
puts " "*(20-row) + "#"*(row*2 - 1)
|
24
|
-
end
|
25
|
-
puts
|
26
|
-
end
|
27
|
-
|
28
|
-
end
|
29
|
-
|
30
|
-
cmd = CmdParse::CommandParser.new(true, true)
|
31
|
-
cmd.program_name = "net"
|
32
|
-
cmd.program_version = [0, 1, 1]
|
33
|
-
cmd.options = CmdParse::OptionParserWrapper.new do |opt|
|
34
|
-
opt.separator "Global options:"
|
35
|
-
opt.on("--verbose", "Be verbose when outputting info") {|t| $verbose = true }
|
36
|
-
end
|
37
|
-
cmd.add_command(CmdParse::HelpCommand.new)
|
38
|
-
cmd.add_command(CmdParse::VersionCommand.new)
|
39
|
-
cmd.add_command(NetStatCommand.new)
|
40
|
-
|
41
|
-
# ipaddr
|
42
|
-
ipaddr = CmdParse::Command.new('ipaddr', true, true)
|
43
|
-
ipaddr.short_desc = "Manage IP addresses"
|
44
|
-
cmd.add_command(ipaddr)
|
45
|
-
|
46
|
-
# ipaddr add
|
47
|
-
add = CmdParse::Command.new('add', false)
|
48
|
-
add.short_desc = "Add an IP address"
|
49
|
-
add.set_execution_block do |args|
|
50
|
-
puts "Adding ip addresses: #{args.join(', ')}" if $verbose
|
51
|
-
$ipaddrs += args
|
52
|
-
end
|
53
|
-
ipaddr.add_command(add)
|
54
|
-
|
55
|
-
# ipaddr del
|
56
|
-
del = CmdParse::Command.new('del', false)
|
57
|
-
del.short_desc = "Delete an IP address"
|
58
|
-
del.options = CmdParse::OptionParserWrapper.new do |opt|
|
59
|
-
opt.on('-a', '--all', 'Delete all IP addresses') { $deleteAll = true }
|
60
|
-
end
|
61
|
-
del.set_execution_block do |args|
|
62
|
-
if $deleteAll
|
63
|
-
$ipaddrs = []
|
64
|
-
else
|
65
|
-
puts "Deleting ip addresses: #{args.join(', ')}" if $verbose
|
66
|
-
args.each {|ip| $ipaddrs.delete(ip) }
|
67
|
-
end
|
68
|
-
end
|
69
|
-
ipaddr.add_command(del)
|
70
|
-
|
71
|
-
# ipaddr list
|
72
|
-
list = CmdParse::Command.new('list', false)
|
73
|
-
list.short_desc = "Lists all IP addresses"
|
74
|
-
list.set_execution_block do |args|
|
75
|
-
puts "Listing ip addresses:" if $verbose
|
76
|
-
puts $ipaddrs.to_yaml
|
77
|
-
end
|
78
|
-
ipaddr.add_command(list, true)
|
79
|
-
|
80
|
-
if File.exists?('dumpnet')
|
81
|
-
$ipaddrs = Marshal.load(File.read('dumpnet'))
|
82
|
-
else
|
83
|
-
$ipaddrs = []
|
84
|
-
end
|
85
|
-
|
86
|
-
cmd.parse
|
87
|
-
|
88
|
-
File.open('dumpnet', 'w+') {|f| f.write(Marshal.dump($ipaddrs)) }
|
data/test/tc_commandhash.rb
DELETED
@@ -1,96 +0,0 @@
|
|
1
|
-
require 'minitest/autorun'
|
2
|
-
require 'cmdparse'
|
3
|
-
|
4
|
-
class CommandHashTest < Minitest::Test
|
5
|
-
def setup
|
6
|
-
@cmd = CmdParse::CommandHash.new
|
7
|
-
end
|
8
|
-
|
9
|
-
def test_basic
|
10
|
-
assert_equal 0, @cmd.size
|
11
|
-
assert_nil @cmd['import']
|
12
|
-
@cmd['import'] = 1
|
13
|
-
assert_equal 1, @cmd['import']
|
14
|
-
assert_equal 1, @cmd['i']
|
15
|
-
assert_equal 1, @cmd['im']
|
16
|
-
assert_equal 1, @cmd['imp']
|
17
|
-
assert_equal 1, @cmd['impo']
|
18
|
-
assert_equal 1, @cmd['impor']
|
19
|
-
assert_nil @cmd['importer']
|
20
|
-
|
21
|
-
@cmd['implode'] = 2
|
22
|
-
assert_equal 2, @cmd.size
|
23
|
-
|
24
|
-
assert_equal 1, @cmd['import']
|
25
|
-
assert_equal 2, @cmd['implode']
|
26
|
-
assert_nil @cmd['impart']
|
27
|
-
|
28
|
-
assert_nil @cmd['i']
|
29
|
-
assert_nil @cmd['im']
|
30
|
-
assert_nil @cmd['imp']
|
31
|
-
assert_equal 1, @cmd['impo']
|
32
|
-
assert_equal 1, @cmd['impor']
|
33
|
-
assert_equal 1, @cmd['import']
|
34
|
-
assert_equal 2, @cmd['implo']
|
35
|
-
assert_equal 2, @cmd['implod']
|
36
|
-
assert_equal 2, @cmd['implode']
|
37
|
-
end
|
38
|
-
|
39
|
-
def test_edge_cases
|
40
|
-
@cmd['import'] = 1
|
41
|
-
@cmd['important'] = 2
|
42
|
-
|
43
|
-
assert_equal 1, @cmd['import']
|
44
|
-
assert_equal 2, @cmd['important']
|
45
|
-
assert_nil @cmd['i']
|
46
|
-
assert_nil @cmd['im']
|
47
|
-
assert_nil @cmd['imp']
|
48
|
-
assert_nil @cmd['impo']
|
49
|
-
assert_nil @cmd['impor']
|
50
|
-
assert_equal 2, @cmd['importa']
|
51
|
-
assert_equal 2, @cmd['importan']
|
52
|
-
|
53
|
-
assert_nil @cmd['impart']
|
54
|
-
end
|
55
|
-
|
56
|
-
def test_integration
|
57
|
-
# define and setup the commands
|
58
|
-
cmd = CmdParse::CommandParser.new(handle_exceptions = false)
|
59
|
-
cmd.main_command.use_partial_commands( true )
|
60
|
-
Object.const_set(:ImportCommand, Class.new(CmdParse::Command) do
|
61
|
-
def initialize() super('import', false) end
|
62
|
-
def execute(args) raise 'import' end
|
63
|
-
def show_help() raise 'import' end
|
64
|
-
end)
|
65
|
-
Object.const_set(:ImpolodeCommand, Class.new(CmdParse::Command) do
|
66
|
-
def initialize() super('implode', false) end
|
67
|
-
def execute(args) raise 'implode' end
|
68
|
-
def show_help() raise 'implode' end
|
69
|
-
end)
|
70
|
-
cmd.add_command( ImportCommand.new )
|
71
|
-
cmd.add_command( ImpolodeCommand.new )
|
72
|
-
|
73
|
-
# simulate running the program
|
74
|
-
assert_raises(RuntimeError, 'import') {cmd.parse(['import'])}
|
75
|
-
assert_raises(RuntimeError, 'implode') {cmd.parse(['implode'])}
|
76
|
-
assert_raises(CmdParse::InvalidCommandError) {cmd.parse(['impart'])}
|
77
|
-
|
78
|
-
assert_raises(CmdParse::InvalidCommandError) {cmd.parse(['i'])}
|
79
|
-
assert_raises(CmdParse::InvalidCommandError) {cmd.parse(['im'])}
|
80
|
-
assert_raises(CmdParse::InvalidCommandError) {cmd.parse(['imp'])}
|
81
|
-
assert_raises(RuntimeError, 'import') {cmd.parse(['impo'])}
|
82
|
-
assert_raises(RuntimeError, 'import') {cmd.parse(['impor'])}
|
83
|
-
assert_raises(RuntimeError, 'implode') {cmd.parse(['impl'])}
|
84
|
-
assert_raises(RuntimeError, 'implode') {cmd.parse(['implo'])}
|
85
|
-
assert_raises(RuntimeError, 'implode') {cmd.parse(['implod'])}
|
86
|
-
|
87
|
-
# simulate the help command
|
88
|
-
cmd.add_command( CmdParse::HelpCommand.new )
|
89
|
-
assert_raises(RuntimeError, 'import') {cmd.parse(['help', 'import'])}
|
90
|
-
assert_raises(RuntimeError, 'implode') {cmd.parse(['help', 'implode'])}
|
91
|
-
|
92
|
-
cmd.main_command.use_partial_commands( false )
|
93
|
-
assert_raises(CmdParse::InvalidCommandError, 'import') {cmd.parse(['impo'])}
|
94
|
-
assert_raises(CmdParse::InvalidCommandError, 'implode') {cmd.parse(['impl'])}
|
95
|
-
end
|
96
|
-
end
|