yacl 1.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.
- data/HISTORY.rdoc +5 -0
- data/LICENSE +16 -0
- data/Manifest.txt +48 -0
- data/README.rdoc +55 -0
- data/Rakefile +308 -0
- data/example/myapp-simple/bin/myapp +16 -0
- data/example/myapp-simple/config/database.yml +8 -0
- data/example/myapp-simple/config/host.yml +2 -0
- data/example/myapp-simple/config/pipeline.yml +1 -0
- data/example/myapp-simple/lib/myapp.rb +53 -0
- data/example/myapp/bin/myapp +17 -0
- data/example/myapp/bin/myapp-job +10 -0
- data/example/myapp/config/database.yml +8 -0
- data/example/myapp/config/httpserver.yml +3 -0
- data/example/myapp/config/pipeline.yml +1 -0
- data/example/myapp/lib/myapp.rb +6 -0
- data/example/myapp/lib/myapp/cli.rb +92 -0
- data/example/myapp/lib/myapp/defaults.rb +28 -0
- data/example/myapp/lib/myapp/job.rb +56 -0
- data/lib/yacl.rb +12 -0
- data/lib/yacl/define.rb +9 -0
- data/lib/yacl/define/cli.rb +7 -0
- data/lib/yacl/define/cli/options.rb +97 -0
- data/lib/yacl/define/cli/parser.rb +112 -0
- data/lib/yacl/define/cli/runner.rb +82 -0
- data/lib/yacl/define/defaults.rb +58 -0
- data/lib/yacl/define/plan.rb +197 -0
- data/lib/yacl/loader.rb +80 -0
- data/lib/yacl/loader/env.rb +103 -0
- data/lib/yacl/loader/yaml_dir.rb +137 -0
- data/lib/yacl/loader/yaml_file.rb +102 -0
- data/lib/yacl/properties.rb +144 -0
- data/lib/yacl/simple.rb +52 -0
- data/spec/data/yaml_dir/database.yml +8 -0
- data/spec/data/yaml_dir/httpserver.yml +3 -0
- data/spec/define/cli/options_spec.rb +47 -0
- data/spec/define/cli/parser_spec.rb +64 -0
- data/spec/define/cli/runner_spec.rb +57 -0
- data/spec/define/defaults_spec.rb +24 -0
- data/spec/define/plan_spec.rb +77 -0
- data/spec/loader/env_spec.rb +32 -0
- data/spec/loader/yaml_dir_spec.rb +43 -0
- data/spec/loader/yaml_file_spec.rb +80 -0
- data/spec/loader_spec.rb +16 -0
- data/spec/properties_spec.rb +60 -0
- data/spec/simple_spec.rb +85 -0
- data/spec/spec_helper.rb +31 -0
- data/spec/version_spec.rb +8 -0
- metadata +207 -0
data/HISTORY.rdoc
ADDED
data/LICENSE
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
ISC LICENSE - http://opensource.org/licenses/isc-license.txt
|
2
|
+
|
3
|
+
Copyright (c) 2012 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
|
+
|
data/Manifest.txt
ADDED
@@ -0,0 +1,48 @@
|
|
1
|
+
HISTORY.rdoc
|
2
|
+
LICENSE
|
3
|
+
Manifest.txt
|
4
|
+
README.rdoc
|
5
|
+
Rakefile
|
6
|
+
example/myapp-simple/bin/myapp
|
7
|
+
example/myapp-simple/config/database.yml
|
8
|
+
example/myapp-simple/config/host.yml
|
9
|
+
example/myapp-simple/config/pipeline.yml
|
10
|
+
example/myapp-simple/lib/myapp.rb
|
11
|
+
example/myapp/bin/myapp
|
12
|
+
example/myapp/bin/myapp-job
|
13
|
+
example/myapp/config/database.yml
|
14
|
+
example/myapp/config/httpserver.yml
|
15
|
+
example/myapp/config/pipeline.yml
|
16
|
+
example/myapp/lib/myapp.rb
|
17
|
+
example/myapp/lib/myapp/cli.rb
|
18
|
+
example/myapp/lib/myapp/defaults.rb
|
19
|
+
example/myapp/lib/myapp/job.rb
|
20
|
+
lib/yacl.rb
|
21
|
+
lib/yacl/define.rb
|
22
|
+
lib/yacl/define/cli.rb
|
23
|
+
lib/yacl/define/cli/options.rb
|
24
|
+
lib/yacl/define/cli/parser.rb
|
25
|
+
lib/yacl/define/cli/runner.rb
|
26
|
+
lib/yacl/define/defaults.rb
|
27
|
+
lib/yacl/define/plan.rb
|
28
|
+
lib/yacl/loader.rb
|
29
|
+
lib/yacl/loader/env.rb
|
30
|
+
lib/yacl/loader/yaml_dir.rb
|
31
|
+
lib/yacl/loader/yaml_file.rb
|
32
|
+
lib/yacl/properties.rb
|
33
|
+
lib/yacl/simple.rb
|
34
|
+
spec/data/yaml_dir/database.yml
|
35
|
+
spec/data/yaml_dir/httpserver.yml
|
36
|
+
spec/define/cli/options_spec.rb
|
37
|
+
spec/define/cli/parser_spec.rb
|
38
|
+
spec/define/cli/runner_spec.rb
|
39
|
+
spec/define/defaults_spec.rb
|
40
|
+
spec/define/plan_spec.rb
|
41
|
+
spec/loader/env_spec.rb
|
42
|
+
spec/loader/yaml_dir_spec.rb
|
43
|
+
spec/loader/yaml_file_spec.rb
|
44
|
+
spec/loader_spec.rb
|
45
|
+
spec/properties_spec.rb
|
46
|
+
spec/simple_spec.rb
|
47
|
+
spec/spec_helper.rb
|
48
|
+
spec/version_spec.rb
|
data/README.rdoc
ADDED
@@ -0,0 +1,55 @@
|
|
1
|
+
== YACL
|
2
|
+
|
3
|
+
* Homepage[https://github.com/copiousfreetime/yacl/]
|
4
|
+
* {Github Project}[https://github.com/copiousfreetime/yacl]
|
5
|
+
* email jeremy at hinegardner dot org
|
6
|
+
|
7
|
+
== DESCRIPTION
|
8
|
+
|
9
|
+
YACL is your application configuration library.
|
10
|
+
|
11
|
+
== FEATURES
|
12
|
+
|
13
|
+
Yacl is a full featured commandline and application configuration library. It
|
14
|
+
pulls together the different components of a system that provide application
|
15
|
+
configuration properties:
|
16
|
+
|
17
|
+
* Commandline options
|
18
|
+
* Environment Variables
|
19
|
+
* Configuration directory
|
20
|
+
* Configuration files
|
21
|
+
* Global Defaults
|
22
|
+
|
23
|
+
It allows you to define the order and priority of the various contributors to
|
24
|
+
the configuration in a fairly easy way.
|
25
|
+
|
26
|
+
== Examples
|
27
|
+
|
28
|
+
There are two full examples in the examples directory:
|
29
|
+
|
30
|
+
myapp-simple:: This uses the Yacl::Simple library to quickly define
|
31
|
+
commandline options, global defaults, configuration directory and
|
32
|
+
environment parsing all in short amout of code using a dsl.
|
33
|
+
myapp:: This is a more full featured approach that you may want to look
|
34
|
+
at should you have more complex application configuration needs.
|
35
|
+
Functionally it is very similar to myapp-simple
|
36
|
+
|
37
|
+
== ISC LICENSE
|
38
|
+
|
39
|
+
http://opensource.org/licenses/isc-license.txt
|
40
|
+
|
41
|
+
Copyright (c) 2012 Jeremy Hinegardner
|
42
|
+
|
43
|
+
Permission to use, copy, modify, and/or distribute this software for any
|
44
|
+
purpose with or without fee is hereby granted, provided that the above
|
45
|
+
copyright notice
|
46
|
+
and this permission notice appear in all copies.
|
47
|
+
|
48
|
+
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
49
|
+
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
50
|
+
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
51
|
+
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
52
|
+
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
53
|
+
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
54
|
+
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
55
|
+
|
data/Rakefile
ADDED
@@ -0,0 +1,308 @@
|
|
1
|
+
# vim: syntax=ruby
|
2
|
+
|
3
|
+
This.name = "yacl"
|
4
|
+
This.author = "Jeremy Hinegardner"
|
5
|
+
This.email = "jeremy@copiousfreetime.org"
|
6
|
+
This.homepage = "http://github.com/copiousfreetime/#{ This.name }"
|
7
|
+
This.version = Util.version
|
8
|
+
|
9
|
+
#------------------------------------------------------------------------------
|
10
|
+
# If you want to Develop on this project just run 'rake develop' and you'll
|
11
|
+
# have all you need to get going. If you want to use bundler for development,
|
12
|
+
# then run 'rake develop:using_bundler'
|
13
|
+
#------------------------------------------------------------------------------
|
14
|
+
namespace :develop do
|
15
|
+
|
16
|
+
# Install all the development and runtime dependencies of this gem using the
|
17
|
+
# gemspec.
|
18
|
+
task :default do
|
19
|
+
require 'rubygems/dependency_installer'
|
20
|
+
installer = Gem::DependencyInstaller.new
|
21
|
+
|
22
|
+
# list these here instead of gem dependencies since there is not a way to
|
23
|
+
# specify ruby version specific dependencies
|
24
|
+
if RUBY_VERSION < "1.9.2"
|
25
|
+
Util.platform_gemspec.add_development_dependency( 'rcov', '~> 0.9.11' )
|
26
|
+
else
|
27
|
+
Util.platform_gemspec.add_development_dependency( 'simplecov', '~> 0.6.4' )
|
28
|
+
end
|
29
|
+
|
30
|
+
puts "Installing gem depedencies needed for development"
|
31
|
+
Util.platform_gemspec.dependencies.each do |dep|
|
32
|
+
if dep.matching_specs.empty? then
|
33
|
+
puts "Installing : #{dep}"
|
34
|
+
installer.install dep
|
35
|
+
else
|
36
|
+
puts "Skipping : #{dep} -> already installed #{dep.matching_specs.first.full_name}"
|
37
|
+
end
|
38
|
+
end
|
39
|
+
puts "\n\nNow run 'rake test'"
|
40
|
+
end
|
41
|
+
|
42
|
+
# Create a Gemfile that just references the gemspec
|
43
|
+
file 'Gemfile' => :gemspec do
|
44
|
+
File.open( "Gemfile", "w+" ) do |f|
|
45
|
+
f.puts 'source :rubygems'
|
46
|
+
f.puts 'gemspec'
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
desc "Create a bundler Gemfile"
|
51
|
+
task :using_bundler => 'Gemfile' do
|
52
|
+
puts "Now you can 'bundle'"
|
53
|
+
end
|
54
|
+
|
55
|
+
# Gemfiles are build artifacts
|
56
|
+
CLOBBER << FileList['Gemfile*']
|
57
|
+
end
|
58
|
+
desc "Boostrap development"
|
59
|
+
task :develop => "develop:default"
|
60
|
+
|
61
|
+
#------------------------------------------------------------------------------
|
62
|
+
# Minitest - standard TestTask
|
63
|
+
#------------------------------------------------------------------------------
|
64
|
+
begin
|
65
|
+
require 'rake/testtask'
|
66
|
+
Rake::TestTask.new( :test ) do |t|
|
67
|
+
t.ruby_opts = %w[ -w -rubygems ]
|
68
|
+
t.libs = %w[ lib spec ]
|
69
|
+
t.pattern = "spec/**/*_spec.rb"
|
70
|
+
end
|
71
|
+
task :default => :test
|
72
|
+
rescue LoadError
|
73
|
+
Util.task_warning( 'test' )
|
74
|
+
end
|
75
|
+
|
76
|
+
#------------------------------------------------------------------------------
|
77
|
+
# RDoc - standard rdoc rake task, although we must make sure to use a more
|
78
|
+
# recent version of rdoc since it is the one that has 'tomdoc' markup
|
79
|
+
#------------------------------------------------------------------------------
|
80
|
+
begin
|
81
|
+
gem 'rdoc' # otherwise we get the wrong task from stdlib
|
82
|
+
require 'rdoc/task'
|
83
|
+
RDoc::Task.new do |t|
|
84
|
+
t.markup = 'tomdoc'
|
85
|
+
t.rdoc_dir = 'doc'
|
86
|
+
t.main = 'README.rdoc'
|
87
|
+
t.title = "#{This.name} #{This.version}"
|
88
|
+
t.rdoc_files.include( '*.rdoc', 'lib/**/*.rb' )
|
89
|
+
end
|
90
|
+
rescue LoadError => le
|
91
|
+
Util.task_warning( 'rdoc' )
|
92
|
+
end
|
93
|
+
|
94
|
+
#------------------------------------------------------------------------------
|
95
|
+
# Coverage - optional code coverage, rcov for 1.8 and simplecov for 1.9, so
|
96
|
+
# for the moment only rcov is listed.
|
97
|
+
#------------------------------------------------------------------------------
|
98
|
+
if RUBY_VERSION <= "1.9.2"
|
99
|
+
begin
|
100
|
+
require 'rcov/rcovtask'
|
101
|
+
Rcov::RcovTask.new( 'coverage' ) do |t|
|
102
|
+
t.libs << 'spec'
|
103
|
+
t.pattern = 'spec/**/*_spec.rb'
|
104
|
+
t.verbose = true
|
105
|
+
t.rcov_opts << "-x ^/" # remove all the global files
|
106
|
+
t.rcov_opts << "--sort coverage" # so we see the worst files at the top
|
107
|
+
end
|
108
|
+
rescue LoadError
|
109
|
+
Util.task_warning( 'rcov' )
|
110
|
+
end
|
111
|
+
else
|
112
|
+
begin
|
113
|
+
require 'simplecov'
|
114
|
+
desc 'Run tests with code coverage'
|
115
|
+
task :coverage do
|
116
|
+
ENV['COVERAGE'] = 'true'
|
117
|
+
Rake::Task[:test].execute
|
118
|
+
end
|
119
|
+
CLOBBER << FileList["coverage"]
|
120
|
+
rescue LoadError
|
121
|
+
Util.task_warning( 'simplecov' )
|
122
|
+
end
|
123
|
+
end
|
124
|
+
#------------------------------------------------------------------------------
|
125
|
+
# Manifest - We want an explicit list of thos files that are to be packaged in
|
126
|
+
# the gem. Most of this is from Hoe.
|
127
|
+
#------------------------------------------------------------------------------
|
128
|
+
namespace 'manifest' do
|
129
|
+
desc "Check the manifest"
|
130
|
+
task :check => :clean do
|
131
|
+
files = FileList["**/*", ".*"].exclude( This.exclude_from_manifest ).to_a.sort
|
132
|
+
files = files.select{ |f| File.file?( f ) }
|
133
|
+
|
134
|
+
tmp = "Manifest.tmp"
|
135
|
+
File.open( tmp, 'w' ) do |f|
|
136
|
+
f.puts files.join("\n")
|
137
|
+
end
|
138
|
+
|
139
|
+
begin
|
140
|
+
sh "diff -du Manifest.txt #{tmp}"
|
141
|
+
ensure
|
142
|
+
rm tmp
|
143
|
+
end
|
144
|
+
puts "Manifest looks good"
|
145
|
+
end
|
146
|
+
|
147
|
+
desc "Generate the manifest"
|
148
|
+
task :generate => :clean do
|
149
|
+
files = %x[ git ls-files ].split("\n").sort
|
150
|
+
files.reject! { |f| f =~ This.exclude_from_manifest }
|
151
|
+
File.open( "Manifest.txt", "w" ) do |f|
|
152
|
+
f.puts files.join("\n")
|
153
|
+
end
|
154
|
+
end
|
155
|
+
end
|
156
|
+
|
157
|
+
#------------------------------------------------------------------------------
|
158
|
+
# Gem Specification
|
159
|
+
#------------------------------------------------------------------------------
|
160
|
+
This.gemspec = Hash.new
|
161
|
+
This.gemspec['ruby'] = Gem::Specification.new do |spec|
|
162
|
+
spec.name = This.name
|
163
|
+
spec.version = This.version
|
164
|
+
spec.author = This.author
|
165
|
+
spec.email = This.email
|
166
|
+
spec.homepage = This.homepage
|
167
|
+
|
168
|
+
spec.summary = This.summary
|
169
|
+
spec.description = This.description
|
170
|
+
|
171
|
+
spec.files = This.manifest
|
172
|
+
spec.executables = spec.files.grep(/^bin/) { |f| File.basename(f) }
|
173
|
+
spec.test_files = spec.files.grep(/^spec/)
|
174
|
+
|
175
|
+
spec.extra_rdoc_files += spec.files.grep(/(txt|rdoc)$/)
|
176
|
+
spec.rdoc_options = [ "--main" , 'README.rdoc', ]
|
177
|
+
|
178
|
+
# The Runtime Dependencies
|
179
|
+
spec.add_dependency( 'map', '~> 6.2.0')
|
180
|
+
spec.add_dependency( 'trollop', '~> 1.16' )
|
181
|
+
|
182
|
+
# The Development Dependencies
|
183
|
+
spec.add_development_dependency( 'rake' , '~> 0.9.2.2')
|
184
|
+
spec.add_development_dependency( 'minitest' , '~> 3.3.0' )
|
185
|
+
spec.add_development_dependency( 'rdoc' , '~> 3.12' )
|
186
|
+
end
|
187
|
+
|
188
|
+
|
189
|
+
# The name of the gemspec file on disk
|
190
|
+
This.gemspec_file = "#{This.name}.gemspec"
|
191
|
+
|
192
|
+
# Really this is only here to support those who use bundler
|
193
|
+
desc "Build the #{This.name}.gemspec file"
|
194
|
+
task :gemspec do
|
195
|
+
File.open( This.gemspec_file, "wb+" ) do |f|
|
196
|
+
f.write Util.platform_gemspec.to_ruby
|
197
|
+
end
|
198
|
+
end
|
199
|
+
|
200
|
+
# the gemspec is also a dev artifact and should not be kept around.
|
201
|
+
CLOBBER << This.gemspec_file
|
202
|
+
|
203
|
+
# The standard gem packaging task, everyone has it.
|
204
|
+
require 'rubygems/package_task'
|
205
|
+
Gem::PackageTask.new( Util.platform_gemspec ) do
|
206
|
+
# nothing
|
207
|
+
end
|
208
|
+
|
209
|
+
#------------------------------------------------------------------------------
|
210
|
+
# Release - the steps we go through to do a final release, this is pulled from
|
211
|
+
# a compbination of mojombo's rakegem, hoe and hoe-git
|
212
|
+
#
|
213
|
+
# 1) make sure we are on the master branch
|
214
|
+
# 2) make sure there are no uncommitted items
|
215
|
+
# 3) check the manifest and make sure all looks good
|
216
|
+
# 4) build the gem
|
217
|
+
# 5) do an empty commit to have the commit message of the version
|
218
|
+
# 6) tag that commit as the version
|
219
|
+
# 7) push master
|
220
|
+
# 8) push the tag
|
221
|
+
# 7) pus the gem
|
222
|
+
#------------------------------------------------------------------------------
|
223
|
+
task :release_check do
|
224
|
+
unless `git branch` =~ /^\* master$/
|
225
|
+
abort "You must be on the master branch to release!"
|
226
|
+
end
|
227
|
+
unless `git status` =~ /^nothing to commit/m
|
228
|
+
abort "Nope, sorry, you have unfinished business"
|
229
|
+
end
|
230
|
+
end
|
231
|
+
|
232
|
+
desc "Create tag v#{This.version}, build and push #{Util.platform_gemspec.full_name} to rubygems.org"
|
233
|
+
task :release => [ :release_check, 'manifest:check', :gem ] do
|
234
|
+
sh "git commit --allow-empty -a -m 'Release #{This.version}'"
|
235
|
+
sh "git tag -a -m 'v#{This.version}' v#{This.version}"
|
236
|
+
sh "git push origin master"
|
237
|
+
sh "git push origin v#{This.version}"
|
238
|
+
sh "gem push pkg/#{Util.platform_gemspec.full_name}.gem"
|
239
|
+
end
|
240
|
+
|
241
|
+
#------------------------------------------------------------------------------
|
242
|
+
# Rakefile Support - This is all the guts and utility methods that are
|
243
|
+
# necessary to support the above tasks.
|
244
|
+
#
|
245
|
+
# Lots of Credit for this Rakefile goes to:
|
246
|
+
#
|
247
|
+
# Ara T. Howard - see the Rakefile in all of his projects -
|
248
|
+
# https://github.com/ahoward/
|
249
|
+
# Tom Preston Werner - his Rakegem project https://github.com/mojombo/rakegem
|
250
|
+
# Seattle.rb - Hoe - cuz it has relly good stuff in there
|
251
|
+
#------------------------------------------------------------------------------
|
252
|
+
BEGIN {
|
253
|
+
|
254
|
+
require 'ostruct'
|
255
|
+
require 'rake/clean'
|
256
|
+
require 'rubygems' unless defined? Gem
|
257
|
+
|
258
|
+
module Util
|
259
|
+
def self.version
|
260
|
+
[ "lib/#{ This.name }.rb", "lib/#{ This.name }/version.rb" ].each do |v|
|
261
|
+
line = File.read( v )[/^\s*VERSION\s*=\s*.*/]
|
262
|
+
if line then
|
263
|
+
return line.match(/.*VERSION\s*=\s*['"](.*)['"]/)[1]
|
264
|
+
end
|
265
|
+
end
|
266
|
+
end
|
267
|
+
|
268
|
+
# Partition an rdoc file into sections and return the text of the section
|
269
|
+
# as an array of paragraphs
|
270
|
+
def self.section_of( file, section_name )
|
271
|
+
re = /^=+ (.*)$/
|
272
|
+
parts = File.read( file ).split( re )[1..-1]
|
273
|
+
parts.map! { |p| p.strip }
|
274
|
+
|
275
|
+
sections = Hash.new
|
276
|
+
Hash[*parts].each do |k,v|
|
277
|
+
sections[k] = v.split("\n\n")
|
278
|
+
end
|
279
|
+
return sections[section_name]
|
280
|
+
end
|
281
|
+
|
282
|
+
def self.task_warning( task )
|
283
|
+
warn "WARNING: '#{task}' tasks are not defined. Please run 'rake develop'"
|
284
|
+
end
|
285
|
+
|
286
|
+
def self.read_manifest
|
287
|
+
abort "You need a Manifest.txt" unless File.readable?( "Manifest.txt" )
|
288
|
+
File.readlines( "Manifest.txt" ).map { |l| l.strip }
|
289
|
+
end
|
290
|
+
|
291
|
+
def self.platform_gemspec
|
292
|
+
This.gemspec[This.platform]
|
293
|
+
end
|
294
|
+
end
|
295
|
+
|
296
|
+
# Hold all the metadata about this project
|
297
|
+
This = OpenStruct.new
|
298
|
+
This.platform = (RUBY_PLATFORM == "java") ? 'java' : Gem::Platform::RUBY
|
299
|
+
|
300
|
+
desc = Util.section_of( 'README.rdoc', 'DESCRIPTION')
|
301
|
+
This.summary = desc.first
|
302
|
+
This.description = desc.join(" ").tr("\n", ' ').gsub(/[{}]/,'').gsub(/\[[^\]]+\]/,'') # strip rdoc
|
303
|
+
|
304
|
+
|
305
|
+
This.exclude_from_manifest = %r/tmp$|\.(git|DS_Store)|^(doc|coverage|pkg)|\.gemspec$|\.swp$|\.jar|\.rvmrc$|~$/
|
306
|
+
This.manifest = Util.read_manifest
|
307
|
+
|
308
|
+
}
|
@@ -0,0 +1,16 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
# load path munging so the example works from a git checkout, do not do this
|
4
|
+
# in your program
|
5
|
+
$: << File.expand_path( "../../../../lib", __FILE__ ) # yacl library
|
6
|
+
$: << File.expand_path( "../../lib", __FILE__ ) # lib dir of this sample app
|
7
|
+
require 'rubygems'
|
8
|
+
|
9
|
+
#------------------------------------------------------------------------------
|
10
|
+
# This would be the top level commandline entry point for your program. Feel
|
11
|
+
# free to have multiple of them if that is what your situation requires.
|
12
|
+
#------------------------------------------------------------------------------
|
13
|
+
|
14
|
+
require 'myapp'
|
15
|
+
|
16
|
+
MyApp::Application.go( ARGV, ENV )
|