xig_installer 0.0.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.
- data/ChangeLog +4 -0
- data/README +29 -0
- data/Rakefile +145 -0
- data/bin/xig_installer +7 -0
- data/lib/xig_installer.rb +300 -0
- data/test/test_helper.rb +3 -0
- data/test/xig_installer_test.rb +155 -0
- metadata +82 -0
data/ChangeLog
ADDED
data/README
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
|
2
|
+
= xig_installer
|
3
|
+
|
4
|
+
|
5
|
+
== Description
|
6
|
+
|
7
|
+
|
8
|
+
== Installation
|
9
|
+
|
10
|
+
=== Archive Installation
|
11
|
+
|
12
|
+
rake install
|
13
|
+
|
14
|
+
=== Gem Installation
|
15
|
+
|
16
|
+
gem install xig_installer
|
17
|
+
|
18
|
+
|
19
|
+
== Features/Problems
|
20
|
+
|
21
|
+
|
22
|
+
== Synopsis
|
23
|
+
|
24
|
+
|
25
|
+
== Copyright
|
26
|
+
|
27
|
+
Author:: wtnabe <wtnabe@gmail.com>
|
28
|
+
Copyright:: Copyright (c) 2010 wtnabe
|
29
|
+
License::
|
data/Rakefile
ADDED
@@ -0,0 +1,145 @@
|
|
1
|
+
# -*- mode: ruby -*-
|
2
|
+
require 'rubygems'
|
3
|
+
require 'rake'
|
4
|
+
require 'rake/clean'
|
5
|
+
require 'rake/testtask'
|
6
|
+
require 'rake/packagetask'
|
7
|
+
require 'rake/gempackagetask'
|
8
|
+
require 'rake/rdoctask'
|
9
|
+
require 'rake/contrib/rubyforgepublisher'
|
10
|
+
require 'rake/contrib/sshpublisher'
|
11
|
+
require 'fileutils'
|
12
|
+
require 'lib/xig_installer'
|
13
|
+
include FileUtils
|
14
|
+
|
15
|
+
NAME = "xig_installer"
|
16
|
+
AUTHOR = "wtnabe"
|
17
|
+
EMAIL = "wtnabe@gmail.com"
|
18
|
+
DESCRIPTION = "Installer for net-irc example irc gateways"
|
19
|
+
RUBYFORGE_PROJECT = "xig_installer"
|
20
|
+
HOMEPATH = "http://github.com/wtnabe/xig_installer"
|
21
|
+
BIN_FILES = %w( xig_installer )
|
22
|
+
|
23
|
+
VERS = XigInstaller::VERSION
|
24
|
+
REV = File.read(".svn/entries")[/committed-rev="(d+)"/, 1] rescue nil
|
25
|
+
CLEAN.include ['**/.*.sw?', '*.gem', '.config']
|
26
|
+
RDOC_OPTS = [
|
27
|
+
'--title', "#{NAME} documentation",
|
28
|
+
"--charset", "utf-8",
|
29
|
+
"--opname", "index.html",
|
30
|
+
"--line-numbers",
|
31
|
+
"--main", "README",
|
32
|
+
"--inline-source",
|
33
|
+
]
|
34
|
+
|
35
|
+
task :default => [:test]
|
36
|
+
task :package => [:clean]
|
37
|
+
|
38
|
+
Rake::TestTask.new("test") do |t|
|
39
|
+
t.libs << "test"
|
40
|
+
t.pattern = "test/**/*_test.rb"
|
41
|
+
t.verbose = true
|
42
|
+
end
|
43
|
+
|
44
|
+
spec = Gem::Specification.new do |s|
|
45
|
+
s.name = NAME
|
46
|
+
s.version = VERS
|
47
|
+
s.platform = Gem::Platform::RUBY
|
48
|
+
s.has_rdoc = true
|
49
|
+
s.extra_rdoc_files = ["README", "ChangeLog"]
|
50
|
+
s.rdoc_options += RDOC_OPTS + ['--exclude', '^(examples|extras)/']
|
51
|
+
s.summary = DESCRIPTION
|
52
|
+
s.description = DESCRIPTION
|
53
|
+
s.author = AUTHOR
|
54
|
+
s.email = EMAIL
|
55
|
+
s.homepage = HOMEPATH
|
56
|
+
s.executables = BIN_FILES
|
57
|
+
s.rubyforge_project = RUBYFORGE_PROJECT
|
58
|
+
s.bindir = "bin"
|
59
|
+
s.require_path = "lib"
|
60
|
+
#s.autorequire = ""
|
61
|
+
s.test_files = Dir["test/*_test.rb"]
|
62
|
+
|
63
|
+
s.add_dependency('net-irc')
|
64
|
+
#s.required_ruby_version = '>= 1.8.2'
|
65
|
+
|
66
|
+
s.files = %w(README ChangeLog Rakefile) +
|
67
|
+
Dir.glob("{bin,doc,test,lib,templates,generator,extras,website,script}/**/*") +
|
68
|
+
Dir.glob("ext/**/*.{h,c,rb}") +
|
69
|
+
Dir.glob("examples/**/*.rb") +
|
70
|
+
Dir.glob("tools/*.rb") +
|
71
|
+
Dir.glob("rails/*.rb")
|
72
|
+
|
73
|
+
s.extensions = FileList["ext/**/extconf.rb"].to_a
|
74
|
+
end
|
75
|
+
|
76
|
+
Rake::GemPackageTask.new(spec) do |p|
|
77
|
+
p.need_tar = true
|
78
|
+
p.gem_spec = spec
|
79
|
+
end
|
80
|
+
|
81
|
+
task :install do
|
82
|
+
name = "#{NAME}-#{VERS}.gem"
|
83
|
+
sh %{rake package}
|
84
|
+
sh %{sudo gem install pkg/#{name}}
|
85
|
+
end
|
86
|
+
|
87
|
+
task :uninstall => [:clean] do
|
88
|
+
sh %{sudo gem uninstall #{NAME}}
|
89
|
+
end
|
90
|
+
|
91
|
+
|
92
|
+
Rake::RDocTask.new do |rdoc|
|
93
|
+
rdoc.rdoc_dir = 'html'
|
94
|
+
rdoc.options += RDOC_OPTS
|
95
|
+
rdoc.template = "resh"
|
96
|
+
#rdoc.template = "#{ENV['template']}.rb" if ENV['template']
|
97
|
+
if ENV['DOC_FILES']
|
98
|
+
rdoc.rdoc_files.include(ENV['DOC_FILES'].split(/,\s*/))
|
99
|
+
else
|
100
|
+
rdoc.rdoc_files.include('README', 'ChangeLog')
|
101
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
102
|
+
rdoc.rdoc_files.include('ext/**/*.c')
|
103
|
+
end
|
104
|
+
end
|
105
|
+
|
106
|
+
desc "Publish to RubyForge"
|
107
|
+
task :rubyforge => [:rdoc, :package] do
|
108
|
+
require 'rubyforge'
|
109
|
+
Rake::RubyForgePublisher.new(RUBYFORGE_PROJECT, 'wtnabe').upload
|
110
|
+
end
|
111
|
+
|
112
|
+
desc 'Package and upload the release to rubyforge.'
|
113
|
+
task :release => [:clean, :package] do |t|
|
114
|
+
v = ENV["VERSION"] or abort "Must supply VERSION=x.y.z"
|
115
|
+
abort "Versions don't match #{v} vs #{VERS}" unless v == VERS
|
116
|
+
pkg = "pkg/#{NAME}-#{VERS}"
|
117
|
+
|
118
|
+
require 'rubyforge'
|
119
|
+
rf = RubyForge.new.configure
|
120
|
+
puts "Logging in"
|
121
|
+
rf.login
|
122
|
+
|
123
|
+
c = rf.userconfig
|
124
|
+
# c["release_notes"] = description if description
|
125
|
+
# c["release_changes"] = changes if changes
|
126
|
+
c["preformatted"] = true
|
127
|
+
|
128
|
+
files = [
|
129
|
+
"#{pkg}.tgz",
|
130
|
+
"#{pkg}.gem"
|
131
|
+
].compact
|
132
|
+
|
133
|
+
puts "Releasing #{NAME} v. #{VERS}"
|
134
|
+
rf.add_release RUBYFORGE_PROJECT, NAME, VERS, *files
|
135
|
+
end
|
136
|
+
|
137
|
+
desc 'Show information about the gem.'
|
138
|
+
task :debug_gem do
|
139
|
+
puts spec.to_ruby
|
140
|
+
end
|
141
|
+
|
142
|
+
desc 'Update gem spec'
|
143
|
+
task :gemspec do
|
144
|
+
open("#{NAME}.gemspec", 'w').write spec.to_ruby
|
145
|
+
end
|
data/bin/xig_installer
ADDED
@@ -0,0 +1,300 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
require 'pathname'
|
3
|
+
require 'optparse'
|
4
|
+
require 'erb'
|
5
|
+
include FileUtils::Verbose
|
6
|
+
|
7
|
+
class XigInstaller
|
8
|
+
VERSION = '0.0.1'
|
9
|
+
TARGET_DIR = '/usr/local/bin'
|
10
|
+
XIG_GLOB = '*ig.rb'
|
11
|
+
|
12
|
+
class CommandNotExist < StandardError ; end
|
13
|
+
class DirectoryNotExist < StandardError; end
|
14
|
+
class NetIRCNotInstalled < StandardError; end
|
15
|
+
class TargetGatewayNotValid < StandardError; end
|
16
|
+
class TargetGatewayNotInstalled < StandardError; end
|
17
|
+
|
18
|
+
def initialize
|
19
|
+
@commands = nil
|
20
|
+
@gateways = nil
|
21
|
+
@gateway_dir = nil
|
22
|
+
@max_cmdname_length = nil
|
23
|
+
@target_dir = TARGET_DIR
|
24
|
+
end
|
25
|
+
attr_reader :target_dir
|
26
|
+
|
27
|
+
def run
|
28
|
+
if ( cmd = parse_args() )
|
29
|
+
if ( commands.include?( cmd ) )
|
30
|
+
exec_cmd( cmd )
|
31
|
+
elsif ( cmd == 'help' )
|
32
|
+
usage( ARGV.shift )
|
33
|
+
elsif ( cmd =~ /\A(?:--)?version\z/ )
|
34
|
+
usage( 'version' )
|
35
|
+
end
|
36
|
+
else
|
37
|
+
usage
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
def exec_cmd( cmd )
|
42
|
+
if commands.include?( cmd )
|
43
|
+
send( "cmd_#{cmd}", *ARGV )
|
44
|
+
else
|
45
|
+
raise CommandNotExist
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
def commands
|
50
|
+
if ( !@commands )
|
51
|
+
@commands = methods.grep( /\Acmd_(.*)\z/ ).map { |e|
|
52
|
+
e.sub( /\Acmd_(.*)\z/, '\1' )
|
53
|
+
}
|
54
|
+
end
|
55
|
+
|
56
|
+
return @commands
|
57
|
+
end
|
58
|
+
|
59
|
+
def installed?( name )
|
60
|
+
Dir.chdir( @target_dir ) {
|
61
|
+
Dir.glob( XIG_GLOB ).include?( name )
|
62
|
+
}
|
63
|
+
end
|
64
|
+
|
65
|
+
def different?( name )
|
66
|
+
begin
|
67
|
+
src = File.stat( File.join( gateway_dir, name ) )
|
68
|
+
begin
|
69
|
+
dest = File.stat( File.join( @target_dir, name ) )
|
70
|
+
if ( src.mtime != dest.mtime )
|
71
|
+
return true
|
72
|
+
else
|
73
|
+
return false
|
74
|
+
end
|
75
|
+
rescue Errno::ENOENT
|
76
|
+
return true
|
77
|
+
end
|
78
|
+
rescue Errno::ENOENT
|
79
|
+
raise NetIRCNotInstalled
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
def gateways( dir = nil )
|
84
|
+
dir ||= gateway_dir
|
85
|
+
|
86
|
+
if ( dir )
|
87
|
+
if ( File.exist?( dir ) )
|
88
|
+
Dir.chdir( dir ) {
|
89
|
+
Dir.glob( XIG_GLOB )
|
90
|
+
}
|
91
|
+
else
|
92
|
+
raise DirectoryNotExist, dir
|
93
|
+
end
|
94
|
+
else
|
95
|
+
raise NetIRCNotInstalled
|
96
|
+
end
|
97
|
+
end
|
98
|
+
|
99
|
+
def gateway_dir
|
100
|
+
if ( @gateway_dir.nil? )
|
101
|
+
net_irc = `gem which net/irc`.chomp
|
102
|
+
|
103
|
+
if ( File.exist?( net_irc ) )
|
104
|
+
@gateway_dir = (Pathname( net_irc ).
|
105
|
+
parent.parent.parent + 'examples').to_s
|
106
|
+
else
|
107
|
+
@gateway_dir = false
|
108
|
+
end
|
109
|
+
end
|
110
|
+
|
111
|
+
return @gateway_dir
|
112
|
+
end
|
113
|
+
|
114
|
+
def cmd_list( subcmd = nil )
|
115
|
+
subcmds = methods.grep( /\A_cmd_list_(.*)\z/ ).map { |c|
|
116
|
+
c.sub( /\A_cmd_list_(.*)\z/, '\1' )
|
117
|
+
}
|
118
|
+
if ( subcmd == 'help' )
|
119
|
+
subcmds
|
120
|
+
elsif ( subcmds.include?( subcmd ) )
|
121
|
+
puts send( "_cmd_list_#{subcmd}" )
|
122
|
+
else
|
123
|
+
puts _cmd_list_available
|
124
|
+
end
|
125
|
+
end
|
126
|
+
|
127
|
+
def _cmd_list_available
|
128
|
+
gateways
|
129
|
+
end
|
130
|
+
|
131
|
+
def _cmd_list_installed
|
132
|
+
gateways.reject { |e|
|
133
|
+
!installed?( e )
|
134
|
+
}
|
135
|
+
end
|
136
|
+
|
137
|
+
def _cmd_list_update
|
138
|
+
_cmd_list_installed.reject { |e|
|
139
|
+
different?( name )
|
140
|
+
}
|
141
|
+
end
|
142
|
+
|
143
|
+
def cmd_install( *targets )
|
144
|
+
available = gateways & targets
|
145
|
+
if ( targets.size == 0 )
|
146
|
+
_copy( gateways )
|
147
|
+
elsif ( available == targets )
|
148
|
+
_copy( targets )
|
149
|
+
else
|
150
|
+
raise TargetGatewayNotValid, (targets - available).join( ', ' )
|
151
|
+
end
|
152
|
+
end
|
153
|
+
|
154
|
+
def cmd_upgrade( *targets )
|
155
|
+
if ( targets.size == 0 )
|
156
|
+
_cmd_list_installed.map { |e|
|
157
|
+
different?( e ) ? cmd_install( e ).to_s : nil
|
158
|
+
}.compact
|
159
|
+
else
|
160
|
+
targets.reject { |e|
|
161
|
+
!installed?( e )
|
162
|
+
}.map { |e|
|
163
|
+
different?( e ) ? cmd_install( e ).to_s : nil
|
164
|
+
}.compact
|
165
|
+
end
|
166
|
+
end
|
167
|
+
|
168
|
+
def _copy( targets )
|
169
|
+
targets.each { |e|
|
170
|
+
cp( File.join( gateway_dir, e ), @target_dir, :preserve => true )
|
171
|
+
}
|
172
|
+
end
|
173
|
+
|
174
|
+
def cmd_uninstall( *targets )
|
175
|
+
installed = _cmd_list_installed
|
176
|
+
available = installed & targets
|
177
|
+
if ( targets.size == 0 )
|
178
|
+
_remove( installed )
|
179
|
+
elsif ( available == targets )
|
180
|
+
_remove( targets )
|
181
|
+
else
|
182
|
+
raise TargetGatewayNotInstalled, (targets - installed).join( ', ' )
|
183
|
+
end
|
184
|
+
end
|
185
|
+
|
186
|
+
def _remove( targets )
|
187
|
+
targets.each { |e|
|
188
|
+
rm( File.join( @target_dir, e ) )
|
189
|
+
}
|
190
|
+
end
|
191
|
+
|
192
|
+
def usage( cmd = nil )
|
193
|
+
puts "#{self.class} ver.#{VERSION}"
|
194
|
+
if ( commands.include?( cmd ) )
|
195
|
+
puts "\n"
|
196
|
+
puts send( "usage_#{cmd}" )
|
197
|
+
elsif ( cmd == 'version' )
|
198
|
+
;
|
199
|
+
else
|
200
|
+
puts ERB.new( <<EOD, nil, '-' ).result( binding )
|
201
|
+
|
202
|
+
Usage: #{File.basename( $0 )} command [options] [TARGET]
|
203
|
+
|
204
|
+
Commands:
|
205
|
+
<%- commands.sort.each do |e| -%>
|
206
|
+
<%= simple_help( e ) %>
|
207
|
+
<%- end -%>
|
208
|
+
|
209
|
+
Options:
|
210
|
+
<%= parser.help.sub( /[\r\n]/, '' ) %>
|
211
|
+
EOD
|
212
|
+
end
|
213
|
+
exit
|
214
|
+
end
|
215
|
+
|
216
|
+
def usage_list( subcmd = nil )
|
217
|
+
ERB.new( <<EOD, nil, '-' ).result( binding )
|
218
|
+
show gateway list
|
219
|
+
|
220
|
+
Usage: #{File.basename( $0 )} list [subcommand]
|
221
|
+
|
222
|
+
Subcommands:
|
223
|
+
<%- cmd_list( 'help' ).sort.each do |cmd| -%>
|
224
|
+
<%= cmd %>
|
225
|
+
<%- end -%>
|
226
|
+
EOD
|
227
|
+
end
|
228
|
+
|
229
|
+
def usage_install
|
230
|
+
ERB.new( <<EOD ).result( binding )
|
231
|
+
install specified or all gateways
|
232
|
+
EOD
|
233
|
+
end
|
234
|
+
|
235
|
+
def usage_upgrade
|
236
|
+
ERB.new( <<EOD ).result( binding )
|
237
|
+
upgrade specified or all gateways if need
|
238
|
+
EOD
|
239
|
+
end
|
240
|
+
|
241
|
+
def usage_uninstall
|
242
|
+
ERB.new( <<EOD ).result( binding )
|
243
|
+
uninstall specified or all gateways
|
244
|
+
EOD
|
245
|
+
end
|
246
|
+
|
247
|
+
def simple_help( cmd )
|
248
|
+
if ( commands.include?( cmd ) )
|
249
|
+
return sprintf( "%-*s %s",
|
250
|
+
max_cmdname_length,
|
251
|
+
cmd,
|
252
|
+
send( "usage_#{cmd}" ).lines.first.chomp )
|
253
|
+
end
|
254
|
+
end
|
255
|
+
|
256
|
+
def max_cmdname_length
|
257
|
+
if ( !@max_cmdname_length )
|
258
|
+
@max_cmdname_length = commands.map { |e|
|
259
|
+
e.size
|
260
|
+
}.max
|
261
|
+
end
|
262
|
+
|
263
|
+
return @max_cmdname_length
|
264
|
+
end
|
265
|
+
|
266
|
+
def parse_args
|
267
|
+
parser.parse!( ARGV )
|
268
|
+
return ARGV.shift
|
269
|
+
end
|
270
|
+
|
271
|
+
def parser
|
272
|
+
return OptionParser.new { |opt|
|
273
|
+
opt.banner = ''
|
274
|
+
opt.on( '-t', '--target DIR', 'target directory' ) { |d|
|
275
|
+
dir = File.expand_path( d )
|
276
|
+
if ( File.exist?( dir ) and File.directory?( dir ) )
|
277
|
+
@target_dir = dir
|
278
|
+
else
|
279
|
+
raise DirectoryNotExist, d
|
280
|
+
end
|
281
|
+
}
|
282
|
+
opt.on( '-g', '--gateway DIR', 'gateway source directory' ) { |d|
|
283
|
+
dir = File.expand_path( d )
|
284
|
+
if ( File.exist?( dir ) and File.directory?( dir ) )
|
285
|
+
@gateway_dir = dir
|
286
|
+
else
|
287
|
+
raise DirectoryNotExist, d
|
288
|
+
end
|
289
|
+
}
|
290
|
+
}
|
291
|
+
end
|
292
|
+
end
|
293
|
+
|
294
|
+
if ( !String.respond_to?( :lines ) )
|
295
|
+
class String
|
296
|
+
def lines
|
297
|
+
self.split( /(?:\r\n|[\r\n])/ )
|
298
|
+
end
|
299
|
+
end
|
300
|
+
end
|
data/test/test_helper.rb
ADDED
@@ -0,0 +1,155 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require File.dirname(__FILE__) + '/test_helper.rb'
|
3
|
+
|
4
|
+
require "test/unit"
|
5
|
+
class XigInstallerTest < Test::Unit::TestCase
|
6
|
+
def setup
|
7
|
+
@obj = XigInstaller.new
|
8
|
+
begin
|
9
|
+
@obj.cmd_uninstall
|
10
|
+
rescue
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
def teardown
|
15
|
+
@obj.cmd_uninstall
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_exec_cmd
|
19
|
+
c = 'abc'
|
20
|
+
assert( !@obj.commands.include?( c ) )
|
21
|
+
begin
|
22
|
+
assert( @obj.exec_cmd( c ) )
|
23
|
+
rescue XigInstaller::CommandNotExist
|
24
|
+
assert( true )
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def test_commands
|
29
|
+
cmds = @obj.commands
|
30
|
+
assert( cmds.is_a?( Array ) )
|
31
|
+
assert( cmds.size > 0 )
|
32
|
+
end
|
33
|
+
|
34
|
+
def test_installed?
|
35
|
+
assert( !@obj.installed?( 'tig.rb' ) )
|
36
|
+
@obj.cmd_install( 'tig.rb' )
|
37
|
+
assert( @obj.installed?( 'tig.rb' ) )
|
38
|
+
end
|
39
|
+
|
40
|
+
def test_gateways
|
41
|
+
begin
|
42
|
+
require 'net/irc'
|
43
|
+
gateways = @obj.gateways
|
44
|
+
assert( gateways.is_a?( Array ) )
|
45
|
+
assert( gateways.size > 0 )
|
46
|
+
gateways.each { |e|
|
47
|
+
assert( e =~ /\A.*ig\.rb\z/ )
|
48
|
+
}
|
49
|
+
rescue LoadError
|
50
|
+
assert( !@obj.gateways )
|
51
|
+
end
|
52
|
+
begin
|
53
|
+
@obj.gateways( 'target' )
|
54
|
+
rescue XigInstaller::DirectoryNotExist
|
55
|
+
assert( true )
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
def test_gateway_dir
|
60
|
+
begin
|
61
|
+
require 'net/irc'
|
62
|
+
assert( File.exist?( @obj.gateway_dir ) )
|
63
|
+
rescue LoadError
|
64
|
+
assert( !@obj.gateway_dir )
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
def test_cmd_list
|
69
|
+
subcmds = @obj.cmd_list( 'help' )
|
70
|
+
assert( subcmds.is_a?( Array ) )
|
71
|
+
assert( subcmds.size > 0 )
|
72
|
+
end
|
73
|
+
|
74
|
+
def test_cmd_list_available
|
75
|
+
availables = @obj._cmd_list_available
|
76
|
+
assert( availables.is_a?( Array ) )
|
77
|
+
assert( availables.size > 0 )
|
78
|
+
end
|
79
|
+
|
80
|
+
def test_cmd_list_installed
|
81
|
+
assert( @obj._cmd_list_installed.is_a?( Array ) )
|
82
|
+
end
|
83
|
+
|
84
|
+
def test_cmd_list_update
|
85
|
+
installed = @obj._cmd_list_installed
|
86
|
+
assert( @obj._cmd_list_update.size == installed.size )
|
87
|
+
end
|
88
|
+
|
89
|
+
def test_cmd_install
|
90
|
+
begin
|
91
|
+
@obj.cmd_install( 'foo' )
|
92
|
+
rescue XigInstaller::TargetGatewayNotValid
|
93
|
+
assert( true )
|
94
|
+
end
|
95
|
+
assert( tig = @obj.cmd_install( 'tig.rb' ) )
|
96
|
+
@obj.cmd_uninstall()
|
97
|
+
assert( all = @obj.cmd_install() )
|
98
|
+
assert( all.size > tig.size )
|
99
|
+
end
|
100
|
+
|
101
|
+
def test_cmd_upgrade
|
102
|
+
target = 'tig.rb'
|
103
|
+
@obj.cmd_install( target )
|
104
|
+
File.utime( File.stat( __FILE__ ).atime,
|
105
|
+
File.stat( __FILE__ ).mtime,
|
106
|
+
File.join( @obj.target_dir, target ) )
|
107
|
+
assert( @obj.different?( target ) )
|
108
|
+
assert( @obj.cmd_upgrade( target ) == [target] )
|
109
|
+
assert( !@obj.different?( target ) )
|
110
|
+
assert( @obj.cmd_upgrade( target ) == [] )
|
111
|
+
File.utime( File.stat( __FILE__ ).atime,
|
112
|
+
File.stat( __FILE__ ).mtime,
|
113
|
+
File.join( @obj.target_dir, target ) )
|
114
|
+
assert( @obj.cmd_upgrade() == [target] )
|
115
|
+
end
|
116
|
+
|
117
|
+
def test_cmd_uninstall
|
118
|
+
@obj.cmd_install( 'tig.rb' )
|
119
|
+
assert( tig = @obj.cmd_uninstall( 'tig.rb' ) )
|
120
|
+
@obj.cmd_install( 'tig.rb' )
|
121
|
+
assert( all = @obj.cmd_uninstall() )
|
122
|
+
assert( tig == all )
|
123
|
+
assert( @obj.cmd_uninstall() )
|
124
|
+
begin
|
125
|
+
@obj.cmd_uninstall( 'tig.rb' )
|
126
|
+
rescue XigInstaller::TargetGatewayNotInstalled
|
127
|
+
assert( true )
|
128
|
+
end
|
129
|
+
begin
|
130
|
+
@obj.cmd_uninstall( 'foo' )
|
131
|
+
rescue XigInstaller::TargetGatewayNotInstalled
|
132
|
+
assert( true )
|
133
|
+
end
|
134
|
+
end
|
135
|
+
def test_parser
|
136
|
+
assert( @obj.parser.parse( %w( help ) ) == %w( help ) )
|
137
|
+
assert( @obj.target_dir == '/usr/local/bin' )
|
138
|
+
# -t
|
139
|
+
target = (%w( /opt/local/bin /sw/local/bin ) +
|
140
|
+
[File.expand_path(File.dirname( __FILE__ ))]).find { |e|
|
141
|
+
File.exist?( e )
|
142
|
+
}
|
143
|
+
@obj.parser.parse( %w( install -t ) + [target] )
|
144
|
+
assert( @obj.target_dir == target )
|
145
|
+
begin
|
146
|
+
@obj.parser.parse( %w( install -t ) + [target] )
|
147
|
+
rescue XigInstaller::DirectoryNotExist
|
148
|
+
assert( true )
|
149
|
+
end
|
150
|
+
# -g
|
151
|
+
src = (Pathname( __FILE__ ).parent.expand_path).to_s
|
152
|
+
@obj.parser.parse( %w( install -g ) + [src] )
|
153
|
+
assert( @obj.gateway_dir == src )
|
154
|
+
end
|
155
|
+
end
|
metadata
ADDED
@@ -0,0 +1,82 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: xig_installer
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- wtnabe
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
|
12
|
+
date: 2010-01-05 00:00:00 +09:00
|
13
|
+
default_executable:
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: net-irc
|
17
|
+
type: :runtime
|
18
|
+
version_requirement:
|
19
|
+
version_requirements: !ruby/object:Gem::Requirement
|
20
|
+
requirements:
|
21
|
+
- - ">="
|
22
|
+
- !ruby/object:Gem::Version
|
23
|
+
version: "0"
|
24
|
+
version:
|
25
|
+
description: Installer for net-irc example irc gateways
|
26
|
+
email: wtnabe@gmail.com
|
27
|
+
executables:
|
28
|
+
- xig_installer
|
29
|
+
extensions: []
|
30
|
+
|
31
|
+
extra_rdoc_files:
|
32
|
+
- README
|
33
|
+
- ChangeLog
|
34
|
+
files:
|
35
|
+
- README
|
36
|
+
- ChangeLog
|
37
|
+
- Rakefile
|
38
|
+
- bin/xig_installer
|
39
|
+
- test/xig_installer_test.rb
|
40
|
+
- test/test_helper.rb
|
41
|
+
- lib/xig_installer.rb
|
42
|
+
has_rdoc: true
|
43
|
+
homepage: http://github.com/wtnabe/xig_installer
|
44
|
+
licenses: []
|
45
|
+
|
46
|
+
post_install_message:
|
47
|
+
rdoc_options:
|
48
|
+
- --title
|
49
|
+
- xig_installer documentation
|
50
|
+
- --charset
|
51
|
+
- utf-8
|
52
|
+
- --opname
|
53
|
+
- index.html
|
54
|
+
- --line-numbers
|
55
|
+
- --main
|
56
|
+
- README
|
57
|
+
- --inline-source
|
58
|
+
- --exclude
|
59
|
+
- ^(examples|extras)/
|
60
|
+
require_paths:
|
61
|
+
- lib
|
62
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
63
|
+
requirements:
|
64
|
+
- - ">="
|
65
|
+
- !ruby/object:Gem::Version
|
66
|
+
version: "0"
|
67
|
+
version:
|
68
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
69
|
+
requirements:
|
70
|
+
- - ">="
|
71
|
+
- !ruby/object:Gem::Version
|
72
|
+
version: "0"
|
73
|
+
version:
|
74
|
+
requirements: []
|
75
|
+
|
76
|
+
rubyforge_project: xig_installer
|
77
|
+
rubygems_version: 1.3.5
|
78
|
+
signing_key:
|
79
|
+
specification_version: 3
|
80
|
+
summary: Installer for net-irc example irc gateways
|
81
|
+
test_files:
|
82
|
+
- test/xig_installer_test.rb
|