gemrage 0.3.2 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +1 -0
- data/Gemfile.lock +6 -0
- data/VERSION +1 -1
- data/gemrage.gemspec +160 -2
- data/lib/rubygems/commands/scan_command.rb +26 -7
- data/spec/spec_helper.rb +2 -1
- data/vendor/ruby/1.8/bin/launchy +19 -0
- data/vendor/ruby/1.8/bin/rake +19 -0
- data/vendor/ruby/1.8/cache/configuration-1.1.0.gem +0 -0
- data/vendor/ruby/1.8/cache/launchy-0.3.7.gem +0 -0
- data/vendor/ruby/1.8/cache/rake-0.8.7.gem +0 -0
- data/vendor/ruby/1.8/gems/configuration-1.1.0/README +197 -0
- data/vendor/ruby/1.8/gems/configuration-1.1.0/README.erb +69 -0
- data/vendor/ruby/1.8/gems/configuration-1.1.0/Rakefile +241 -0
- data/vendor/ruby/1.8/gems/configuration-1.1.0/config/a.rb +5 -0
- data/vendor/ruby/1.8/gems/configuration-1.1.0/config/b.rb +19 -0
- data/vendor/ruby/1.8/gems/configuration-1.1.0/config/c.rb +8 -0
- data/vendor/ruby/1.8/gems/configuration-1.1.0/config/d.rb +5 -0
- data/vendor/ruby/1.8/gems/configuration-1.1.0/config/e.rb +13 -0
- data/vendor/ruby/1.8/gems/configuration-1.1.0/configuration.gemspec +28 -0
- data/vendor/ruby/1.8/gems/configuration-1.1.0/lib/configuration.rb +199 -0
- data/vendor/ruby/1.8/gems/configuration-1.1.0/samples/a.rb +11 -0
- data/vendor/ruby/1.8/gems/configuration-1.1.0/samples/b.rb +11 -0
- data/vendor/ruby/1.8/gems/configuration-1.1.0/samples/c.rb +11 -0
- data/vendor/ruby/1.8/gems/configuration-1.1.0/samples/d.rb +14 -0
- data/vendor/ruby/1.8/gems/configuration-1.1.0/samples/e.rb +12 -0
- data/vendor/ruby/1.8/gems/launchy-0.3.7/HISTORY +71 -0
- data/vendor/ruby/1.8/gems/launchy-0.3.7/LICENSE +16 -0
- data/vendor/ruby/1.8/gems/launchy-0.3.7/README +53 -0
- data/vendor/ruby/1.8/gems/launchy-0.3.7/Rakefile +62 -0
- data/vendor/ruby/1.8/gems/launchy-0.3.7/bin/launchy +12 -0
- data/vendor/ruby/1.8/gems/launchy-0.3.7/gemspec.rb +41 -0
- data/vendor/ruby/1.8/gems/launchy-0.3.7/lib/launchy/application.rb +178 -0
- data/vendor/ruby/1.8/gems/launchy-0.3.7/lib/launchy/browser.rb +98 -0
- data/vendor/ruby/1.8/gems/launchy-0.3.7/lib/launchy/command_line.rb +48 -0
- data/vendor/ruby/1.8/gems/launchy-0.3.7/lib/launchy/paths.rb +53 -0
- data/vendor/ruby/1.8/gems/launchy-0.3.7/lib/launchy/version.rb +17 -0
- data/vendor/ruby/1.8/gems/launchy-0.3.7/lib/launchy.rb +53 -0
- data/vendor/ruby/1.8/gems/launchy-0.3.7/spec/application_spec.rb +62 -0
- data/vendor/ruby/1.8/gems/launchy-0.3.7/spec/browser_spec.rb +58 -0
- data/vendor/ruby/1.8/gems/launchy-0.3.7/spec/launchy_spec.rb +18 -0
- data/vendor/ruby/1.8/gems/launchy-0.3.7/spec/paths_spec.rb +15 -0
- data/vendor/ruby/1.8/gems/launchy-0.3.7/spec/spec_helper.rb +5 -0
- data/vendor/ruby/1.8/gems/launchy-0.3.7/spec/tattle-host-os.yml +427 -0
- data/vendor/ruby/1.8/gems/launchy-0.3.7/spec/version_spec.rb +11 -0
- data/vendor/ruby/1.8/gems/launchy-0.3.7/tasks/announce.rake +39 -0
- data/vendor/ruby/1.8/gems/launchy-0.3.7/tasks/config.rb +107 -0
- data/vendor/ruby/1.8/gems/launchy-0.3.7/tasks/distribution.rake +46 -0
- data/vendor/ruby/1.8/gems/launchy-0.3.7/tasks/documentation.rake +32 -0
- data/vendor/ruby/1.8/gems/launchy-0.3.7/tasks/rspec.rake +37 -0
- data/vendor/ruby/1.8/gems/launchy-0.3.7/tasks/rubyforge.rake +52 -0
- data/vendor/ruby/1.8/gems/launchy-0.3.7/tasks/utils.rb +80 -0
- data/vendor/ruby/1.8/gems/rake-0.8.7/CHANGES +440 -0
- data/vendor/ruby/1.8/gems/rake-0.8.7/MIT-LICENSE +21 -0
- data/vendor/ruby/1.8/gems/rake-0.8.7/README +196 -0
- data/vendor/ruby/1.8/gems/rake-0.8.7/Rakefile +430 -0
- data/vendor/ruby/1.8/gems/rake-0.8.7/TODO +20 -0
- data/vendor/ruby/1.8/gems/rake-0.8.7/bin/rake +31 -0
- data/vendor/ruby/1.8/gems/rake-0.8.7/doc/command_line_usage.rdoc +102 -0
- data/vendor/ruby/1.8/gems/rake-0.8.7/doc/example/Rakefile1 +38 -0
- data/vendor/ruby/1.8/gems/rake-0.8.7/doc/example/Rakefile2 +35 -0
- data/vendor/ruby/1.8/gems/rake-0.8.7/doc/example/a.c +6 -0
- data/vendor/ruby/1.8/gems/rake-0.8.7/doc/example/b.c +6 -0
- data/vendor/ruby/1.8/gems/rake-0.8.7/doc/example/main.c +11 -0
- data/vendor/ruby/1.8/gems/rake-0.8.7/doc/glossary.rdoc +51 -0
- data/vendor/ruby/1.8/gems/rake-0.8.7/doc/jamis.rb +591 -0
- data/vendor/ruby/1.8/gems/rake-0.8.7/doc/proto_rake.rdoc +127 -0
- data/vendor/ruby/1.8/gems/rake-0.8.7/doc/rake.1.gz +0 -0
- data/vendor/ruby/1.8/gems/rake-0.8.7/doc/rakefile.rdoc +534 -0
- data/vendor/ruby/1.8/gems/rake-0.8.7/doc/rational.rdoc +151 -0
- data/vendor/ruby/1.8/gems/rake-0.8.7/doc/release_notes/rake-0.4.14.rdoc +23 -0
- data/vendor/ruby/1.8/gems/rake-0.8.7/doc/release_notes/rake-0.4.15.rdoc +35 -0
- data/vendor/ruby/1.8/gems/rake-0.8.7/doc/release_notes/rake-0.5.0.rdoc +53 -0
- data/vendor/ruby/1.8/gems/rake-0.8.7/doc/release_notes/rake-0.5.3.rdoc +78 -0
- data/vendor/ruby/1.8/gems/rake-0.8.7/doc/release_notes/rake-0.5.4.rdoc +46 -0
- data/vendor/ruby/1.8/gems/rake-0.8.7/doc/release_notes/rake-0.6.0.rdoc +141 -0
- data/vendor/ruby/1.8/gems/rake-0.8.7/doc/release_notes/rake-0.7.0.rdoc +119 -0
- data/vendor/ruby/1.8/gems/rake-0.8.7/doc/release_notes/rake-0.7.1.rdoc +59 -0
- data/vendor/ruby/1.8/gems/rake-0.8.7/doc/release_notes/rake-0.7.2.rdoc +121 -0
- data/vendor/ruby/1.8/gems/rake-0.8.7/doc/release_notes/rake-0.7.3.rdoc +47 -0
- data/vendor/ruby/1.8/gems/rake-0.8.7/doc/release_notes/rake-0.8.0.rdoc +114 -0
- data/vendor/ruby/1.8/gems/rake-0.8.7/doc/release_notes/rake-0.8.2.rdoc +165 -0
- data/vendor/ruby/1.8/gems/rake-0.8.7/doc/release_notes/rake-0.8.3.rdoc +112 -0
- data/vendor/ruby/1.8/gems/rake-0.8.7/doc/release_notes/rake-0.8.4.rdoc +147 -0
- data/vendor/ruby/1.8/gems/rake-0.8.7/doc/release_notes/rake-0.8.5.rdoc +53 -0
- data/vendor/ruby/1.8/gems/rake-0.8.7/doc/release_notes/rake-0.8.6.rdoc +55 -0
- data/vendor/ruby/1.8/gems/rake-0.8.7/doc/release_notes/rake-0.8.7.rdoc +55 -0
- data/vendor/ruby/1.8/gems/rake-0.8.7/install.rb +88 -0
- data/vendor/ruby/1.8/gems/rake-0.8.7/lib/rake/alt_system.rb +108 -0
- data/vendor/ruby/1.8/gems/rake-0.8.7/lib/rake/classic_namespace.rb +8 -0
- data/vendor/ruby/1.8/gems/rake-0.8.7/lib/rake/clean.rb +33 -0
- data/vendor/ruby/1.8/gems/rake-0.8.7/lib/rake/contrib/compositepublisher.rb +24 -0
- data/vendor/ruby/1.8/gems/rake-0.8.7/lib/rake/contrib/ftptools.rb +153 -0
- data/vendor/ruby/1.8/gems/rake-0.8.7/lib/rake/contrib/publisher.rb +75 -0
- data/vendor/ruby/1.8/gems/rake-0.8.7/lib/rake/contrib/rubyforgepublisher.rb +18 -0
- data/vendor/ruby/1.8/gems/rake-0.8.7/lib/rake/contrib/sshpublisher.rb +47 -0
- data/vendor/ruby/1.8/gems/rake-0.8.7/lib/rake/contrib/sys.rb +209 -0
- data/vendor/ruby/1.8/gems/rake-0.8.7/lib/rake/gempackagetask.rb +97 -0
- data/vendor/ruby/1.8/gems/rake-0.8.7/lib/rake/loaders/makefile.rb +42 -0
- data/vendor/ruby/1.8/gems/rake-0.8.7/lib/rake/packagetask.rb +184 -0
- data/vendor/ruby/1.8/gems/rake-0.8.7/lib/rake/rake_test_loader.rb +5 -0
- data/vendor/ruby/1.8/gems/rake-0.8.7/lib/rake/rdoctask.rb +209 -0
- data/vendor/ruby/1.8/gems/rake-0.8.7/lib/rake/ruby182_test_unit_fix.rb +23 -0
- data/vendor/ruby/1.8/gems/rake-0.8.7/lib/rake/runtest.rb +23 -0
- data/vendor/ruby/1.8/gems/rake-0.8.7/lib/rake/tasklib.rb +23 -0
- data/vendor/ruby/1.8/gems/rake-0.8.7/lib/rake/testtask.rb +161 -0
- data/vendor/ruby/1.8/gems/rake-0.8.7/lib/rake/win32.rb +55 -0
- data/vendor/ruby/1.8/gems/rake-0.8.7/lib/rake.rb +2506 -0
- data/vendor/ruby/1.8/gems/rake-0.8.7/test/capture_stdout.rb +26 -0
- data/vendor/ruby/1.8/gems/rake-0.8.7/test/check_expansion.rb +5 -0
- data/vendor/ruby/1.8/gems/rake-0.8.7/test/check_no_expansion.rb +5 -0
- data/vendor/ruby/1.8/gems/rake-0.8.7/test/contrib/test_sys.rb +47 -0
- data/vendor/ruby/1.8/gems/rake-0.8.7/test/data/chains/Rakefile +15 -0
- data/vendor/ruby/1.8/gems/rake-0.8.7/test/data/default/Rakefile +19 -0
- data/vendor/ruby/1.8/gems/rake-0.8.7/test/data/dryrun/Rakefile +22 -0
- data/vendor/ruby/1.8/gems/rake-0.8.7/test/data/file_creation_task/Rakefile +33 -0
- data/vendor/ruby/1.8/gems/rake-0.8.7/test/data/imports/Rakefile +19 -0
- data/vendor/ruby/1.8/gems/rake-0.8.7/test/data/imports/deps.mf +1 -0
- data/vendor/ruby/1.8/gems/rake-0.8.7/test/data/multidesc/Rakefile +17 -0
- data/vendor/ruby/1.8/gems/rake-0.8.7/test/data/namespace/Rakefile +57 -0
- data/vendor/ruby/1.8/gems/rake-0.8.7/test/data/rakelib/test1.rb +3 -0
- data/vendor/ruby/1.8/gems/rake-0.8.7/test/data/rbext/rakefile.rb +3 -0
- data/vendor/ruby/1.8/gems/rake-0.8.7/test/data/sample.mf +14 -0
- data/vendor/ruby/1.8/gems/rake-0.8.7/test/data/statusreturn/Rakefile +8 -0
- data/vendor/ruby/1.8/gems/rake-0.8.7/test/data/unittest/Rakefile +1 -0
- data/vendor/ruby/1.8/gems/rake-0.8.7/test/filecreation.rb +32 -0
- data/vendor/ruby/1.8/gems/rake-0.8.7/test/functional.rb +15 -0
- data/vendor/ruby/1.8/gems/rake-0.8.7/test/in_environment.rb +30 -0
- data/vendor/ruby/1.8/gems/rake-0.8.7/test/rake_test_setup.rb +24 -0
- data/vendor/ruby/1.8/gems/rake-0.8.7/test/reqfile.rb +3 -0
- data/vendor/ruby/1.8/gems/rake-0.8.7/test/reqfile2.rb +3 -0
- data/vendor/ruby/1.8/gems/rake-0.8.7/test/session_functional.rb +339 -0
- data/vendor/ruby/1.8/gems/rake-0.8.7/test/shellcommand.rb +3 -0
- data/vendor/ruby/1.8/gems/rake-0.8.7/test/test_application.rb +675 -0
- data/vendor/ruby/1.8/gems/rake-0.8.7/test/test_clean.rb +14 -0
- data/vendor/ruby/1.8/gems/rake-0.8.7/test/test_definitions.rb +85 -0
- data/vendor/ruby/1.8/gems/rake-0.8.7/test/test_earlytime.rb +35 -0
- data/vendor/ruby/1.8/gems/rake-0.8.7/test/test_extension.rb +63 -0
- data/vendor/ruby/1.8/gems/rake-0.8.7/test/test_file_creation_task.rb +62 -0
- data/vendor/ruby/1.8/gems/rake-0.8.7/test/test_file_task.rb +143 -0
- data/vendor/ruby/1.8/gems/rake-0.8.7/test/test_filelist.rb +623 -0
- data/vendor/ruby/1.8/gems/rake-0.8.7/test/test_fileutils.rb +251 -0
- data/vendor/ruby/1.8/gems/rake-0.8.7/test/test_ftp.rb +59 -0
- data/vendor/ruby/1.8/gems/rake-0.8.7/test/test_invocation_chain.rb +81 -0
- data/vendor/ruby/1.8/gems/rake-0.8.7/test/test_makefile_loader.rb +26 -0
- data/vendor/ruby/1.8/gems/rake-0.8.7/test/test_multitask.rb +45 -0
- data/vendor/ruby/1.8/gems/rake-0.8.7/test/test_namespace.rb +55 -0
- data/vendor/ruby/1.8/gems/rake-0.8.7/test/test_package_task.rb +118 -0
- data/vendor/ruby/1.8/gems/rake-0.8.7/test/test_pathmap.rb +210 -0
- data/vendor/ruby/1.8/gems/rake-0.8.7/test/test_pseudo_status.rb +26 -0
- data/vendor/ruby/1.8/gems/rake-0.8.7/test/test_rake.rb +41 -0
- data/vendor/ruby/1.8/gems/rake-0.8.7/test/test_rdoc_task.rb +88 -0
- data/vendor/ruby/1.8/gems/rake-0.8.7/test/test_require.rb +35 -0
- data/vendor/ruby/1.8/gems/rake-0.8.7/test/test_rules.rb +349 -0
- data/vendor/ruby/1.8/gems/rake-0.8.7/test/test_task_arguments.rb +89 -0
- data/vendor/ruby/1.8/gems/rake-0.8.7/test/test_task_manager.rb +173 -0
- data/vendor/ruby/1.8/gems/rake-0.8.7/test/test_tasklib.rb +12 -0
- data/vendor/ruby/1.8/gems/rake-0.8.7/test/test_tasks.rb +374 -0
- data/vendor/ruby/1.8/gems/rake-0.8.7/test/test_test_task.rb +77 -0
- data/vendor/ruby/1.8/gems/rake-0.8.7/test/test_top_level_functions.rb +86 -0
- data/vendor/ruby/1.8/gems/rake-0.8.7/test/test_win32.rb +72 -0
- data/vendor/ruby/1.8/specifications/configuration-1.1.0.gemspec +27 -0
- data/vendor/ruby/1.8/specifications/launchy-0.3.7.gemspec +44 -0
- data/vendor/ruby/1.8/specifications/rake-0.8.7.gemspec +32 -0
- metadata +163 -5
@@ -0,0 +1,241 @@
|
|
1
|
+
This.author = "Ara T. Howard"
|
2
|
+
This.email = "ara.t.howard@gmail.com"
|
3
|
+
This.homepage = "http://github.com/ahoward/#{ This.lib }/tree/master"
|
4
|
+
This.rubyforge_project = 'codeforpeople'
|
5
|
+
|
6
|
+
task :default do
|
7
|
+
puts(Rake::Task.tasks.map{|task| task.name} - ['default'])
|
8
|
+
end
|
9
|
+
|
10
|
+
task :spec do
|
11
|
+
require 'spec/rake/spectask'
|
12
|
+
Spec::Rake::SpecTask.new do |t|
|
13
|
+
t.spec_files = FileList['spec/*_spec.rb']
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
task :gemspec do
|
18
|
+
ignore_extensions = 'git', 'svn', 'tmp', /sw./, 'bak', 'gem'
|
19
|
+
ignore_directories = 'pkg'
|
20
|
+
ignore_files = 'test/log'
|
21
|
+
|
22
|
+
shiteless =
|
23
|
+
lambda do |list|
|
24
|
+
list.delete_if do |entry|
|
25
|
+
next unless test(?e, entry)
|
26
|
+
extension = File.basename(entry).split(%r/[.]/).last
|
27
|
+
ignore_extensions.any?{|ext| ext === extension}
|
28
|
+
end
|
29
|
+
list.delete_if do |entry|
|
30
|
+
next unless test(?d, entry)
|
31
|
+
dirname = File.expand_path(entry)
|
32
|
+
ignore_directories.any?{|dir| File.expand_path(dir) == dirname}
|
33
|
+
end
|
34
|
+
list.delete_if do |entry|
|
35
|
+
next unless test(?f, entry)
|
36
|
+
filename = File.expand_path(entry)
|
37
|
+
ignore_files.any?{|file| File.expand_path(file) == filename}
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
lib = This.lib
|
42
|
+
version = This.version
|
43
|
+
files = shiteless[Dir::glob("**/**")]
|
44
|
+
executables = shiteless[Dir::glob("bin/*")].map{|exe| File.basename(exe)}
|
45
|
+
has_rdoc = true #File.exist?('doc')
|
46
|
+
test_files = "test/#{ lib }.rb" if File.file?("test/#{ lib }.rb")
|
47
|
+
|
48
|
+
extensions = This.extensions
|
49
|
+
if extensions.nil?
|
50
|
+
%w( Makefile configure extconf.rb ).each do |ext|
|
51
|
+
extensions << ext if File.exists?(ext)
|
52
|
+
end
|
53
|
+
end
|
54
|
+
extensions = [extensions].flatten.compact
|
55
|
+
|
56
|
+
template =
|
57
|
+
if test(?e, 'gemspec.erb')
|
58
|
+
Template{ IO.read('gemspec.erb') }
|
59
|
+
else
|
60
|
+
Template {
|
61
|
+
<<-__
|
62
|
+
## #{ lib }.gemspec
|
63
|
+
#
|
64
|
+
|
65
|
+
Gem::Specification::new do |spec|
|
66
|
+
spec.name = #{ lib.inspect }
|
67
|
+
spec.version = #{ version.inspect }
|
68
|
+
spec.platform = Gem::Platform::RUBY
|
69
|
+
spec.summary = #{ lib.inspect }
|
70
|
+
|
71
|
+
spec.files = #{ files.inspect }
|
72
|
+
spec.executables = #{ executables.inspect }
|
73
|
+
|
74
|
+
<% if test(?d, 'lib') %>
|
75
|
+
spec.require_path = "lib"
|
76
|
+
<% end %>
|
77
|
+
|
78
|
+
spec.has_rdoc = #{ has_rdoc.inspect }
|
79
|
+
spec.test_files = #{ test_files.inspect }
|
80
|
+
#spec.add_dependency 'lib', '>= version'
|
81
|
+
#spec.add_dependency 'fattr'
|
82
|
+
|
83
|
+
spec.extensions.push(*#{ extensions.inspect })
|
84
|
+
|
85
|
+
spec.rubyforge_project = #{ This.rubyforge_project.inspect }
|
86
|
+
spec.author = #{ This.author.inspect }
|
87
|
+
spec.email = #{ This.email.inspect }
|
88
|
+
spec.homepage = #{ This.homepage.inspect }
|
89
|
+
end
|
90
|
+
__
|
91
|
+
}
|
92
|
+
end
|
93
|
+
|
94
|
+
open("#{ lib }.gemspec", "w"){|fd| fd.puts template}
|
95
|
+
This.gemspec = "#{ lib }.gemspec"
|
96
|
+
end
|
97
|
+
|
98
|
+
task :gem => [:clean, :gemspec] do
|
99
|
+
Fu.mkdir_p This.pkgdir
|
100
|
+
before = Dir['*.gem']
|
101
|
+
cmd = "gem build #{ This.gemspec }"
|
102
|
+
`#{ cmd }`
|
103
|
+
after = Dir['*.gem']
|
104
|
+
gem = ((after - before).first || after.first) or abort('no gem!')
|
105
|
+
Fu.mv gem, This.pkgdir
|
106
|
+
This.gem = File.basename(gem)
|
107
|
+
end
|
108
|
+
|
109
|
+
task :readme do
|
110
|
+
samples = ''
|
111
|
+
prompt = '~ > '
|
112
|
+
lib = This.lib
|
113
|
+
version = This.version
|
114
|
+
|
115
|
+
Dir['sample*/*'].sort.each do |sample|
|
116
|
+
samples << "\n" << " <========< #{ sample } >========>" << "\n\n"
|
117
|
+
|
118
|
+
cmd = "cat #{ sample }"
|
119
|
+
samples << Util.indent(prompt + cmd, 2) << "\n\n"
|
120
|
+
samples << Util.indent(`#{ cmd }`, 4) << "\n"
|
121
|
+
|
122
|
+
cmd = "ruby #{ sample }"
|
123
|
+
samples << Util.indent(prompt + cmd, 2) << "\n\n"
|
124
|
+
|
125
|
+
cmd = "ruby -e'STDOUT.sync=true; exec %(ruby -Ilib -Iconfig #{ sample })'"
|
126
|
+
samples << Util.indent(`#{ cmd } 2>&1`, 4) << "\n"
|
127
|
+
end
|
128
|
+
|
129
|
+
template =
|
130
|
+
if test(?e, 'readme.erb')
|
131
|
+
Template{ IO.read('readme.erb') }
|
132
|
+
else
|
133
|
+
Template {
|
134
|
+
<<-__
|
135
|
+
NAME
|
136
|
+
#{ lib }
|
137
|
+
|
138
|
+
DESCRIPTION
|
139
|
+
|
140
|
+
INSTALL
|
141
|
+
gem install #{ lib }
|
142
|
+
|
143
|
+
SAMPLES
|
144
|
+
#{ samples }
|
145
|
+
__
|
146
|
+
}
|
147
|
+
end
|
148
|
+
|
149
|
+
open("README", "w"){|fd| fd.puts template}
|
150
|
+
end
|
151
|
+
|
152
|
+
|
153
|
+
task :clean do
|
154
|
+
Dir[File.join(This.pkgdir, '**/**')].each{|entry| Fu.rm_rf(entry)}
|
155
|
+
end
|
156
|
+
|
157
|
+
|
158
|
+
task :release => [:clean, :gemspec, :gem] do
|
159
|
+
gems = Dir[File.join(This.pkgdir, '*.gem')].flatten
|
160
|
+
raise "which one? : #{ gems.inspect }" if gems.size > 1
|
161
|
+
raise "no gems?" if gems.size < 1
|
162
|
+
cmd = "rubyforge login && rubyforge add_release #{ This.rubyforge_project } #{ This.lib } #{ This.version } #{ This.pkgdir }/#{ This.gem }"
|
163
|
+
puts cmd
|
164
|
+
system cmd
|
165
|
+
end
|
166
|
+
|
167
|
+
|
168
|
+
|
169
|
+
|
170
|
+
|
171
|
+
BEGIN {
|
172
|
+
$VERBOSE = nil
|
173
|
+
|
174
|
+
require 'ostruct'
|
175
|
+
require 'erb'
|
176
|
+
require 'fileutils'
|
177
|
+
|
178
|
+
Fu = FileUtils
|
179
|
+
|
180
|
+
This = OpenStruct.new
|
181
|
+
|
182
|
+
This.file = File.expand_path(__FILE__)
|
183
|
+
This.dir = File.dirname(This.file)
|
184
|
+
This.pkgdir = File.join(This.dir, 'pkg')
|
185
|
+
|
186
|
+
lib = ENV['LIB']
|
187
|
+
unless lib
|
188
|
+
lib = File.basename(Dir.pwd)
|
189
|
+
end
|
190
|
+
This.lib = lib
|
191
|
+
|
192
|
+
version = ENV['VERSION']
|
193
|
+
unless version
|
194
|
+
name = lib.capitalize
|
195
|
+
library = "./lib/#{ lib }.rb"
|
196
|
+
program = "./bin/#{ lib }"
|
197
|
+
if test(?e, library)
|
198
|
+
require library
|
199
|
+
version = eval(name).send(:version)
|
200
|
+
elsif test(?e, program)
|
201
|
+
version = `#{ program } --version`.strip
|
202
|
+
end
|
203
|
+
abort('no version') if(version.nil? or version.empty?)
|
204
|
+
end
|
205
|
+
This.version = version
|
206
|
+
|
207
|
+
abort('no lib') unless This.lib
|
208
|
+
abort('no version') unless This.version
|
209
|
+
|
210
|
+
module Util
|
211
|
+
def indent(s, n = 2)
|
212
|
+
s = unindent(s)
|
213
|
+
ws = ' ' * n
|
214
|
+
s.gsub(%r/^/, ws)
|
215
|
+
end
|
216
|
+
|
217
|
+
def unindent(s)
|
218
|
+
indent = nil
|
219
|
+
s.each do |line|
|
220
|
+
next if line =~ %r/^\s*$/
|
221
|
+
indent = line[%r/^\s*/] and break
|
222
|
+
end
|
223
|
+
indent ? s.gsub(%r/^#{ indent }/, "") : s
|
224
|
+
end
|
225
|
+
extend self
|
226
|
+
end
|
227
|
+
|
228
|
+
class Template
|
229
|
+
def initialize(&block)
|
230
|
+
@block = block
|
231
|
+
@template = block.call.to_s
|
232
|
+
end
|
233
|
+
def expand(b=nil)
|
234
|
+
ERB.new(Util.unindent(@template)).result(b||@block)
|
235
|
+
end
|
236
|
+
alias_method 'to_s', 'expand'
|
237
|
+
end
|
238
|
+
def Template(*args, &block) Template.new(*args, &block) end
|
239
|
+
|
240
|
+
Dir.chdir(This.dir)
|
241
|
+
}
|
@@ -0,0 +1,19 @@
|
|
1
|
+
Configuration.for('b'){
|
2
|
+
host "codeforpeople.com"
|
3
|
+
|
4
|
+
www {
|
5
|
+
port 80
|
6
|
+
url "http://#{ host }:#{ port }"
|
7
|
+
}
|
8
|
+
|
9
|
+
db {
|
10
|
+
port 5342
|
11
|
+
url "db://#{ host }:#{ port }"
|
12
|
+
}
|
13
|
+
|
14
|
+
mail {
|
15
|
+
host "gmail.com"
|
16
|
+
port 25
|
17
|
+
url "mail://#{ host }:#{ port }"
|
18
|
+
}
|
19
|
+
}
|
@@ -0,0 +1,28 @@
|
|
1
|
+
## configuration.gemspec
|
2
|
+
#
|
3
|
+
|
4
|
+
Gem::Specification::new do |spec|
|
5
|
+
spec.name = "configuration"
|
6
|
+
spec.version = "1.1.0"
|
7
|
+
spec.platform = Gem::Platform::RUBY
|
8
|
+
spec.summary = "configuration"
|
9
|
+
|
10
|
+
spec.files = ["config", "config/a.rb", "config/b.rb", "config/c.rb", "config/d.rb", "config/e.rb", "configuration.gemspec", "lib", "lib/configuration.rb", "Rakefile", "README", "README.erb", "samples", "samples/a.rb", "samples/b.rb", "samples/c.rb", "samples/d.rb", "samples/e.rb"]
|
11
|
+
spec.executables = []
|
12
|
+
|
13
|
+
|
14
|
+
spec.require_path = "lib"
|
15
|
+
|
16
|
+
|
17
|
+
spec.has_rdoc = true
|
18
|
+
spec.test_files = nil
|
19
|
+
#spec.add_dependency 'lib', '>= version'
|
20
|
+
#spec.add_dependency 'fattr'
|
21
|
+
|
22
|
+
spec.extensions.push(*[])
|
23
|
+
|
24
|
+
spec.rubyforge_project = "codeforpeople"
|
25
|
+
spec.author = "Ara T. Howard"
|
26
|
+
spec.email = "ara.t.howard@gmail.com"
|
27
|
+
spec.homepage = "http://github.com/ahoward/configuration/tree/master"
|
28
|
+
end
|
@@ -0,0 +1,199 @@
|
|
1
|
+
class Configuration
|
2
|
+
Configuration::Version = '1.1.0'
|
3
|
+
def Configuration.version() Configuration::Version end
|
4
|
+
|
5
|
+
Path = [
|
6
|
+
if defined? CONFIGURATION_PATH
|
7
|
+
CONFIGURATION_PATH
|
8
|
+
else
|
9
|
+
ENV['CONFIGURATION_PATH']
|
10
|
+
end
|
11
|
+
].compact.flatten.join(File::PATH_SEPARATOR).split(File::PATH_SEPARATOR)
|
12
|
+
|
13
|
+
Table = Hash.new
|
14
|
+
Error = Class.new StandardError
|
15
|
+
Import = Class.new Error
|
16
|
+
|
17
|
+
module ClassMethods
|
18
|
+
def for name, options = nil, &block
|
19
|
+
name = name.to_s
|
20
|
+
if Table.has_key?(name)
|
21
|
+
if options or block
|
22
|
+
configuration = Table[name]
|
23
|
+
Table[name] = DSL.evaluate(configuration, options || {}, &block)
|
24
|
+
else
|
25
|
+
Table[name]
|
26
|
+
end
|
27
|
+
else
|
28
|
+
if options or block
|
29
|
+
Table[name] = new name, options || {}, &block
|
30
|
+
else
|
31
|
+
load name
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
def path *value
|
37
|
+
return self.path = value.first unless value.empty?
|
38
|
+
Path
|
39
|
+
end
|
40
|
+
|
41
|
+
def path= value
|
42
|
+
Path.clear
|
43
|
+
Path.replace [value].compact.flatten.join(File::PATH_SEPARATOR).split(File::PATH_SEPARATOR)
|
44
|
+
end
|
45
|
+
|
46
|
+
def load name
|
47
|
+
name = name.to_s
|
48
|
+
name = name + '.rb' unless name[%r/\.rb$/]
|
49
|
+
key = name.sub %r/\.rb$/, ''
|
50
|
+
load_path = $LOAD_PATH.dup
|
51
|
+
begin
|
52
|
+
$LOAD_PATH.replace(path + load_path)
|
53
|
+
::Kernel.load name
|
54
|
+
ensure
|
55
|
+
$LOAD_PATH.replace load_path
|
56
|
+
end
|
57
|
+
Table[key]
|
58
|
+
end
|
59
|
+
end
|
60
|
+
send :extend, ClassMethods
|
61
|
+
|
62
|
+
module InstanceMethods
|
63
|
+
attr 'name'
|
64
|
+
|
65
|
+
def initialize *argv, &block
|
66
|
+
options = Hash === argv.last ? argv.pop : Hash.new
|
67
|
+
@name = argv.shift
|
68
|
+
DSL.evaluate(self, options, &block)
|
69
|
+
end
|
70
|
+
|
71
|
+
def method_missing m, *a, &b
|
72
|
+
return(Pure[@__parent].send m, *a, &b) rescue super if @__parent
|
73
|
+
super
|
74
|
+
end
|
75
|
+
end
|
76
|
+
send :include, InstanceMethods
|
77
|
+
|
78
|
+
class DSL
|
79
|
+
Protected = %r/^__|^object_id$/
|
80
|
+
|
81
|
+
instance_methods.each do |m|
|
82
|
+
undef_method m unless m[Protected]
|
83
|
+
end
|
84
|
+
|
85
|
+
Kernel.methods.each do |m|
|
86
|
+
next if m[Protected]
|
87
|
+
module_eval <<-code
|
88
|
+
def #{ m }(*a, &b)
|
89
|
+
method_missing '#{ m }', *a, &b
|
90
|
+
end
|
91
|
+
code
|
92
|
+
end
|
93
|
+
|
94
|
+
def Send(m, *a, &b)
|
95
|
+
Method(m).call(*a, &b)
|
96
|
+
end
|
97
|
+
|
98
|
+
def Method m
|
99
|
+
@__configuration.method(m)
|
100
|
+
end
|
101
|
+
|
102
|
+
def self.evaluate configuration, options = {}, &block
|
103
|
+
dsl = new configuration
|
104
|
+
Pure[dsl].instance_eval(&block) if block
|
105
|
+
options.each{|key, value| Pure[dsl].send key, value}
|
106
|
+
Pure[dsl].instance_eval{ @__configuration }
|
107
|
+
end
|
108
|
+
|
109
|
+
def initialize configuration, &block
|
110
|
+
@__configuration = configuration
|
111
|
+
@__singleton_class =
|
112
|
+
class << @__configuration
|
113
|
+
self
|
114
|
+
end
|
115
|
+
end
|
116
|
+
|
117
|
+
def __configuration__
|
118
|
+
@__configuration
|
119
|
+
end
|
120
|
+
|
121
|
+
undef_method(:method_missing) rescue nil
|
122
|
+
def method_missing(m, *a, &b)
|
123
|
+
if(a.empty? and b.nil?)
|
124
|
+
return Pure[@__configuration].send(m, *a, &b)
|
125
|
+
end
|
126
|
+
if b
|
127
|
+
raise ArgumentError unless a.empty?
|
128
|
+
parent = @__configuration
|
129
|
+
name = m.to_s
|
130
|
+
configuration =
|
131
|
+
if @__configuration.respond_to?(name) and Configuration === @__configuration.send(name)
|
132
|
+
@__configuration.send name
|
133
|
+
else
|
134
|
+
Configuration.new name
|
135
|
+
end
|
136
|
+
Pure[configuration].instance_eval{ @__parent = parent }
|
137
|
+
DSL.evaluate configuration, &b
|
138
|
+
value = configuration
|
139
|
+
end
|
140
|
+
unless a.empty?
|
141
|
+
value = a.size == 1 ? a.first : a
|
142
|
+
end
|
143
|
+
@__singleton_class.module_eval do
|
144
|
+
define_method(m){ value }
|
145
|
+
end
|
146
|
+
end
|
147
|
+
|
148
|
+
verbose = $VERBOSE
|
149
|
+
begin
|
150
|
+
$VERBOSE = nil
|
151
|
+
def object_id(*args)
|
152
|
+
unless args.empty?
|
153
|
+
verbose = $VERBOSE
|
154
|
+
begin
|
155
|
+
$VERBOSE = nil
|
156
|
+
define_method(:object_id){ args.first }
|
157
|
+
ensure
|
158
|
+
$VERBOSE = verbose
|
159
|
+
end
|
160
|
+
else
|
161
|
+
return Pure[@__configuration].object_id
|
162
|
+
end
|
163
|
+
end
|
164
|
+
ensure
|
165
|
+
$VERBOSE = verbose
|
166
|
+
end
|
167
|
+
end
|
168
|
+
|
169
|
+
class Pure
|
170
|
+
Instance_Methods = Hash.new
|
171
|
+
Protected = %r/^__|^object_id$/
|
172
|
+
|
173
|
+
::Object.instance_methods.each do |m|
|
174
|
+
Instance_Methods[m.to_s] = ::Object.instance_method m
|
175
|
+
undef_method m unless m[Protected]
|
176
|
+
end
|
177
|
+
|
178
|
+
def method_missing m, *a, &b
|
179
|
+
Instance_Methods[m.to_s].bind(@object).call(*a, &b)
|
180
|
+
end
|
181
|
+
|
182
|
+
def initialize object
|
183
|
+
@object = object
|
184
|
+
end
|
185
|
+
|
186
|
+
def Pure.[] object
|
187
|
+
new object
|
188
|
+
end
|
189
|
+
end
|
190
|
+
end
|
191
|
+
|
192
|
+
def Configuration(*a, &b)
|
193
|
+
if a.empty? and b.nil?
|
194
|
+
const_get :Configuration
|
195
|
+
else
|
196
|
+
Configuration.new(*a, &b)
|
197
|
+
end
|
198
|
+
end
|
199
|
+
|
@@ -0,0 +1,11 @@
|
|
1
|
+
#
|
2
|
+
# basic usage is quite, simple, load the config and use it's values. the
|
3
|
+
# config syntax is fairly obvious, i think, but note that it *is* ruby and any
|
4
|
+
# ruby can be included. also note that each config is named, allowing
|
5
|
+
# multiple configs to be places in one file
|
6
|
+
#
|
7
|
+
require 'configuration'
|
8
|
+
|
9
|
+
c = Configuration.load 'a'
|
10
|
+
|
11
|
+
p c.a + c.b - c.c
|
@@ -0,0 +1,14 @@
|
|
1
|
+
#
|
2
|
+
# configuration.rb makes use of an external blank slate dsl, this means that
|
3
|
+
# you Configuration objects do, in fact, have all built-in ruby methods such
|
4
|
+
# as #inspect, etc, *unless* you configure over the top of them. the effect
|
5
|
+
# is a configuration object that behaves like a nice ruby object, but which
|
6
|
+
# allows *any* key to be configured
|
7
|
+
#
|
8
|
+
require 'configuration'
|
9
|
+
|
10
|
+
c = Configuration.for 'd'
|
11
|
+
|
12
|
+
p c.object_id
|
13
|
+
p c.inspect
|
14
|
+
p c.p
|
@@ -0,0 +1,71 @@
|
|
1
|
+
= Launchy Changlog
|
2
|
+
|
3
|
+
== Version 0.3.7 - 2010-07-19
|
4
|
+
|
5
|
+
* Fix launchy on windows (mikefarmer)
|
6
|
+
|
7
|
+
== Version 0.3.6 - 2010-02-22
|
8
|
+
|
9
|
+
* add a test:spec task to run tests without rcov support
|
10
|
+
* added 'testing' os family for running tests
|
11
|
+
|
12
|
+
== Version 0.3.5 - 2009-12-17
|
13
|
+
|
14
|
+
* clarify that launchy is under ISC license
|
15
|
+
* fix missing data file in released gem needed for running specs
|
16
|
+
|
17
|
+
== Version 0.3.3 - 2009-02-19
|
18
|
+
|
19
|
+
* pass command line as discrete items to system() to avoid string
|
20
|
+
interpretation by the system shell. (Suraj N. Kurapati)
|
21
|
+
* rework project layout and tasks
|
22
|
+
|
23
|
+
== Version 0.3.2 - 2008-05-21
|
24
|
+
|
25
|
+
* detect aix and mingw as known operating systems.
|
26
|
+
|
27
|
+
== Version 0.3.1 - 2007-09-08
|
28
|
+
|
29
|
+
* finalize the command line wrapper around the launchy library.
|
30
|
+
* added more tests
|
31
|
+
|
32
|
+
== Version 0.3.0 - 2007-08-30
|
33
|
+
|
34
|
+
* reorganize the code structure, removing Spawnable namespace
|
35
|
+
* removed 'do_magic' method, changed it to 'open'
|
36
|
+
* added override environment variable LAUNCHY_HOST_OS for testing
|
37
|
+
* fix broken cygwin support [Bug #13472]
|
38
|
+
|
39
|
+
== Version 0.2.1 - 2007-08-18
|
40
|
+
|
41
|
+
* fix inability to find windows executables [Bug #13132]
|
42
|
+
|
43
|
+
== Version 0.2.0 - 2007-08-11
|
44
|
+
|
45
|
+
* rework browser finding
|
46
|
+
* manual override with LAUNCHY_BROWSER environment variable
|
47
|
+
* on *nix use desktop application launcher with fallback to list of browsers
|
48
|
+
* On windows, switch to 'start' command and remove dependency on win32-process
|
49
|
+
* removed win32 gem
|
50
|
+
* Add debug output by setting LAUNCHY_DEBUG environment variable to 'true'
|
51
|
+
|
52
|
+
== Version 0.1.2 - 2007-08-11
|
53
|
+
|
54
|
+
* forked child exits without calling at_exit handlers
|
55
|
+
|
56
|
+
== Version 0.1.1
|
57
|
+
|
58
|
+
* fixed rubyforge task to release mswin32 gem also
|
59
|
+
|
60
|
+
== Version 0.1.0
|
61
|
+
|
62
|
+
* Initial public release
|
63
|
+
* switched to using fork to spawn process and require 'win32/process' if on windows
|
64
|
+
|
65
|
+
== Version 0.0.2
|
66
|
+
|
67
|
+
* First attempt at using systemu to spawn processes
|
68
|
+
|
69
|
+
== Version 0.0.1
|
70
|
+
|
71
|
+
* Initially working release
|
@@ -0,0 +1,16 @@
|
|
1
|
+
ISC LICENSE - http://opensource.org/licenses/isc-license.txt
|
2
|
+
|
3
|
+
Copyright (c) 2007-2009 Jeremy Hinegardner
|
4
|
+
|
5
|
+
Permission to use, copy, modify, and/or distribute this software for any
|
6
|
+
purpose with or without fee is hereby granted, provided that the above
|
7
|
+
copyright notice and this permission notice appear in all copies.
|
8
|
+
|
9
|
+
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
10
|
+
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
11
|
+
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
12
|
+
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
13
|
+
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
14
|
+
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
15
|
+
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
16
|
+
|