shared 1.1.0 → 1.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (5) hide show
  1. checksums.yaml +15 -0
  2. data/Rakefile +177 -29
  3. data/lib/shared.rb +5 -1
  4. data/shared.gemspec +10 -6
  5. metadata +26 -36
checksums.yaml ADDED
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ M2U5MTJjNDcyOTI3N2NkZWRjYWVkNjc4ZjJkMGEzYzkyYTI3Y2VhMQ==
5
+ data.tar.gz: !binary |-
6
+ MzAyNzE1ZTE2NWUwODc1MzJjMTYyZWYzMWRiMDgwM2ExOThhOGE2Nw==
7
+ !binary "U0hBNTEy":
8
+ metadata.gz: !binary |-
9
+ YTQ1OTBmN2Y0NjZmYTM5YTExMzc4OTk5NGZkYmQ5NGY0OWJmYzJjMDdhYjVj
10
+ N2NiMjBlYjBkYjZmNGM1ZDM0OTExM2NlYjI1ODY5YjhlYWMwZWE3ZjAyYWY1
11
+ YTVmMmQwNWQ1NjRlN2Y3YWMxNjY4NmJmYzliMDgyZGM5NWRmN2Y=
12
+ data.tar.gz: !binary |-
13
+ ZTBkMTk3NmZjOWZjOWMyZDNmM2JhNDhiOWNlNTg5MzUxYzZjNjBjZTA2NGM0
14
+ ZmUzYzI4ZGFiNWRjOTBjZDc4YWFiYjc5YThlMmM5ZjY3MmJjMzE5MTAyMTVm
15
+ ZmMwOWMyOTY5MzVlM2E2ZTMxOTNjYTQ4NmQ1NGRlMTRlZTdmMGM=
data/Rakefile CHANGED
@@ -1,19 +1,69 @@
1
-
2
1
  This.rubyforge_project = 'codeforpeople'
3
2
  This.author = "Ara T. Howard"
4
3
  This.email = "ara.t.howard@gmail.com"
5
- This.homepage = "http://github.com/ahoward/#{ This.lib }/tree/master"
4
+ This.homepage = "https://github.com/ahoward/#{ This.lib }"
6
5
 
6
+ task :license do
7
+ open('LICENSE', 'w'){|fd| fd.puts "same as ruby's"}
8
+ end
7
9
 
8
10
  task :default do
9
- puts(Rake::Task.tasks.map{|task| task.name} - ['default'])
11
+ puts((Rake::Task.tasks.map{|task| task.name.gsub(/::/,':')} - ['default']).sort)
12
+ end
13
+
14
+ task :test do
15
+ run_tests!
16
+ end
17
+
18
+ namespace :test do
19
+ task(:unit){ run_tests!(:unit) }
20
+ task(:functional){ run_tests!(:functional) }
21
+ task(:integration){ run_tests!(:integration) }
22
+ end
23
+
24
+ def run_tests!(which = nil)
25
+ which ||= '**'
26
+ test_dir = File.join(This.dir, "test")
27
+ test_glob ||= File.join(test_dir, "#{ which }/**_test.rb")
28
+ test_rbs = Dir.glob(test_glob).sort
29
+
30
+ div = ('=' * 119)
31
+ line = ('-' * 119)
32
+
33
+ test_rbs.each_with_index do |test_rb, index|
34
+ testno = index + 1
35
+ command = "#{ This.ruby } -w -I ./lib -I ./test/lib #{ test_rb }"
36
+
37
+ puts
38
+ say(div, :color => :cyan, :bold => true)
39
+ say("@#{ testno } => ", :bold => true, :method => :print)
40
+ say(command, :color => :cyan, :bold => true)
41
+ say(line, :color => :cyan, :bold => true)
42
+
43
+ system(command)
44
+
45
+ say(line, :color => :cyan, :bold => true)
46
+
47
+ status = $?.exitstatus
48
+
49
+ if status.zero?
50
+ say("@#{ testno } <= ", :bold => true, :color => :white, :method => :print)
51
+ say("SUCCESS", :color => :green, :bold => true)
52
+ else
53
+ say("@#{ testno } <= ", :bold => true, :color => :white, :method => :print)
54
+ say("FAILURE", :color => :red, :bold => true)
55
+ end
56
+ say(line, :color => :cyan, :bold => true)
57
+
58
+ exit(status) unless status.zero?
59
+ end
10
60
  end
11
61
 
12
62
 
13
63
  task :gemspec do
14
- ignore_extensions = 'git', 'svn', 'tmp', /sw./, 'bak', 'gem'
15
- ignore_directories = 'pkg'
16
- ignore_files = 'test/log'
64
+ ignore_extensions = ['git', 'svn', 'tmp', /sw./, 'bak', 'gem']
65
+ ignore_directories = ['pkg']
66
+ ignore_files = ['test/log']
17
67
 
18
68
  shiteless =
19
69
  lambda do |list|
@@ -35,14 +85,19 @@ task :gemspec do
35
85
  end
36
86
 
37
87
  lib = This.lib
88
+ object = This.object
38
89
  version = This.version
39
90
  files = shiteless[Dir::glob("**/**")]
40
91
  executables = shiteless[Dir::glob("bin/*")].map{|exe| File.basename(exe)}
41
- has_rdoc = true #File.exist?('doc')
92
+ #has_rdoc = true #File.exist?('doc')
42
93
  test_files = "test/#{ lib }.rb" if File.file?("test/#{ lib }.rb")
94
+ summary = object.respond_to?(:summary) ? object.summary : "summary: #{ lib } kicks the ass"
95
+ description = object.respond_to?(:description) ? object.description : "description: #{ lib } kicks the ass"
96
+ license = object.respond_to?(:license) ? object.license : "same as ruby's"
43
97
 
44
- extensions = This.extensions
45
- if extensions.nil?
98
+ if This.extensions.nil?
99
+ This.extensions = []
100
+ extensions = This.extensions
46
101
  %w( Makefile configure extconf.rb ).each do |ext|
47
102
  extensions << ext if File.exists?(ext)
48
103
  end
@@ -63,16 +118,18 @@ task :gemspec do
63
118
  spec.version = #{ version.inspect }
64
119
  spec.platform = Gem::Platform::RUBY
65
120
  spec.summary = #{ lib.inspect }
121
+ spec.description = #{ description.inspect }
122
+ spec.license = #{ license.inspect }
66
123
 
67
- spec.files = #{ files.inspect }
124
+ spec.files =\n#{ files.sort.pretty_inspect }
68
125
  spec.executables = #{ executables.inspect }
69
126
 
70
127
  spec.require_path = "lib"
71
128
 
72
- spec.has_rdoc = #{ has_rdoc.inspect }
73
129
  spec.test_files = #{ test_files.inspect }
74
- #spec.add_dependency 'lib', '>= version'
75
- #spec.add_dependency 'fattr'
130
+
131
+ ### spec.add_dependency 'lib', '>= version'
132
+ #### spec.add_dependency 'map'
76
133
 
77
134
  spec.extensions.push(*#{ extensions.inspect })
78
135
 
@@ -85,19 +142,21 @@ task :gemspec do
85
142
  }
86
143
  end
87
144
 
88
- open("#{ lib }.gemspec", "w"){|fd| fd.puts template}
89
- This.gemspec = "#{ lib }.gemspec"
145
+ Fu.mkdir_p(This.pkgdir)
146
+ gemspec = "#{ lib }.gemspec"
147
+ open(gemspec, "w"){|fd| fd.puts(template)}
148
+ This.gemspec = gemspec
90
149
  end
91
150
 
92
151
  task :gem => [:clean, :gemspec] do
93
- Fu.mkdir_p This.pkgdir
152
+ Fu.mkdir_p(This.pkgdir)
94
153
  before = Dir['*.gem']
95
154
  cmd = "gem build #{ This.gemspec }"
96
155
  `#{ cmd }`
97
156
  after = Dir['*.gem']
98
157
  gem = ((after - before).first || after.first) or abort('no gem!')
99
- Fu.mv gem, This.pkgdir
100
- This.gem = File.basename(gem)
158
+ Fu.mv(gem, This.pkgdir)
159
+ This.gem = File.join(This.pkgdir, File.basename(gem))
101
160
  end
102
161
 
103
162
  task :readme do
@@ -116,13 +175,13 @@ task :readme do
116
175
  cmd = "ruby #{ sample }"
117
176
  samples << Util.indent(prompt + cmd, 2) << "\n\n"
118
177
 
119
- cmd = "ruby -e'STDOUT.sync=true; exec %(ruby -Ilib #{ sample })'"
178
+ cmd = "ruby -e'STDOUT.sync=true; exec %(ruby -I ./lib #{ sample })'"
120
179
  samples << Util.indent(`#{ cmd } 2>&1`, 4) << "\n"
121
180
  end
122
181
 
123
182
  template =
124
- if test(?e, 'readme.erb')
125
- Template{ IO.read('readme.erb') }
183
+ if test(?e, 'README.erb')
184
+ Template{ IO.read('README.erb') }
126
185
  else
127
186
  Template {
128
187
  <<-__
@@ -153,9 +212,18 @@ task :release => [:clean, :gemspec, :gem] do
153
212
  gems = Dir[File.join(This.pkgdir, '*.gem')].flatten
154
213
  raise "which one? : #{ gems.inspect }" if gems.size > 1
155
214
  raise "no gems?" if gems.size < 1
156
- cmd = "rubyforge login && rubyforge add_release #{ This.rubyforge_project } #{ This.lib } #{ This.version } #{ This.pkgdir }/#{ This.gem }"
215
+
216
+ cmd = "gem push #{ This.gem }"
217
+ puts cmd
218
+ puts
219
+ system(cmd)
220
+ abort("cmd(#{ cmd }) failed with (#{ $?.inspect })") unless $?.exitstatus.zero?
221
+
222
+ cmd = "rubyforge login && rubyforge add_release #{ This.rubyforge_project } #{ This.lib } #{ This.version } #{ This.gem }"
157
223
  puts cmd
158
- system cmd
224
+ puts
225
+ system(cmd)
226
+ abort("cmd(#{ cmd }) failed with (#{ $?.inspect })") unless $?.exitstatus.zero?
159
227
  end
160
228
 
161
229
 
@@ -163,37 +231,63 @@ end
163
231
 
164
232
 
165
233
  BEGIN {
234
+ # support for this rakefile
235
+ #
166
236
  $VERBOSE = nil
167
237
 
168
238
  require 'ostruct'
169
239
  require 'erb'
170
240
  require 'fileutils'
241
+ require 'rbconfig'
242
+ require 'pp'
171
243
 
244
+ # fu shortcut
245
+ #
172
246
  Fu = FileUtils
173
247
 
248
+ # cache a bunch of stuff about this rakefile/environment
249
+ #
174
250
  This = OpenStruct.new
175
251
 
176
252
  This.file = File.expand_path(__FILE__)
177
253
  This.dir = File.dirname(This.file)
178
254
  This.pkgdir = File.join(This.dir, 'pkg')
179
255
 
256
+ # grok lib
257
+ #
180
258
  lib = ENV['LIB']
181
259
  unless lib
182
- lib = File.basename(Dir.pwd)
260
+ lib = File.basename(Dir.pwd).sub(/[-].*$/, '')
183
261
  end
184
262
  This.lib = lib
185
263
 
264
+ # grok version
265
+ #
186
266
  version = ENV['VERSION']
187
267
  unless version
188
- name = lib.capitalize
189
- require "./lib/#{ lib }"
190
- version = eval(name).send(:version)
268
+ require "./lib/#{ This.lib }"
269
+ This.name = lib.capitalize
270
+ This.object = eval(This.name)
271
+ version = This.object.send(:version)
191
272
  end
192
273
  This.version = version
193
274
 
275
+ # we need to know the name of the lib an it's version
276
+ #
194
277
  abort('no lib') unless This.lib
195
278
  abort('no version') unless This.version
196
279
 
280
+ # discover full path to this ruby executable
281
+ #
282
+ c = Config::CONFIG
283
+ bindir = c["bindir"] || c['BINDIR']
284
+ ruby_install_name = c['ruby_install_name'] || c['RUBY_INSTALL_NAME'] || 'ruby'
285
+ ruby_ext = c['EXEEXT'] || ''
286
+ ruby = File.join(bindir, (ruby_install_name + ruby_ext))
287
+ This.ruby = ruby
288
+
289
+ # some utils
290
+ #
197
291
  module Util
198
292
  def indent(s, n = 2)
199
293
  s = unindent(s)
@@ -203,7 +297,7 @@ BEGIN {
203
297
 
204
298
  def unindent(s)
205
299
  indent = nil
206
- s.each do |line|
300
+ s.each_line do |line|
207
301
  next if line =~ %r/^\s*$/
208
302
  indent = line[%r/^\s*/] and break
209
303
  end
@@ -212,17 +306,71 @@ BEGIN {
212
306
  extend self
213
307
  end
214
308
 
309
+ # template support
310
+ #
215
311
  class Template
216
312
  def initialize(&block)
217
313
  @block = block
218
314
  @template = block.call.to_s
219
315
  end
220
316
  def expand(b=nil)
221
- ERB.new(Util.unindent(@template)).result(b||@block)
317
+ ERB.new(Util.unindent(@template)).result((b||@block).binding)
222
318
  end
223
319
  alias_method 'to_s', 'expand'
224
320
  end
225
321
  def Template(*args, &block) Template.new(*args, &block) end
226
322
 
323
+ # colored console output support
324
+ #
325
+ This.ansi = {
326
+ :clear => "\e[0m",
327
+ :reset => "\e[0m",
328
+ :erase_line => "\e[K",
329
+ :erase_char => "\e[P",
330
+ :bold => "\e[1m",
331
+ :dark => "\e[2m",
332
+ :underline => "\e[4m",
333
+ :underscore => "\e[4m",
334
+ :blink => "\e[5m",
335
+ :reverse => "\e[7m",
336
+ :concealed => "\e[8m",
337
+ :black => "\e[30m",
338
+ :red => "\e[31m",
339
+ :green => "\e[32m",
340
+ :yellow => "\e[33m",
341
+ :blue => "\e[34m",
342
+ :magenta => "\e[35m",
343
+ :cyan => "\e[36m",
344
+ :white => "\e[37m",
345
+ :on_black => "\e[40m",
346
+ :on_red => "\e[41m",
347
+ :on_green => "\e[42m",
348
+ :on_yellow => "\e[43m",
349
+ :on_blue => "\e[44m",
350
+ :on_magenta => "\e[45m",
351
+ :on_cyan => "\e[46m",
352
+ :on_white => "\e[47m"
353
+ }
354
+ def say(phrase, *args)
355
+ options = args.last.is_a?(Hash) ? args.pop : {}
356
+ options[:color] = args.shift.to_s.to_sym unless args.empty?
357
+ keys = options.keys
358
+ keys.each{|key| options[key.to_s.to_sym] = options.delete(key)}
359
+
360
+ color = options[:color]
361
+ bold = options.has_key?(:bold)
362
+
363
+ parts = [phrase]
364
+ parts.unshift(This.ansi[color]) if color
365
+ parts.unshift(This.ansi[:bold]) if bold
366
+ parts.push(This.ansi[:clear]) if parts.size > 1
367
+
368
+ method = options[:method] || :puts
369
+
370
+ Kernel.send(method, parts.join)
371
+ end
372
+
373
+ # always run out of the project dir
374
+ #
227
375
  Dir.chdir(This.dir)
228
376
  }
data/lib/shared.rb CHANGED
@@ -38,9 +38,13 @@
38
38
 
39
39
  unless defined?(Shared)
40
40
  module Shared
41
- Shared::VERSION = '1.1.0' unless defined?(Shared::VERSION)
41
+ Shared::VERSION = '1.1.1' unless defined?(Shared::VERSION)
42
42
  def version() Shared::VERSION end
43
43
 
44
+ def Shared.description
45
+ 'a clean way to factor class/instance mixins in ruby'
46
+ end
47
+
44
48
  Code = {}
45
49
 
46
50
  def load key
data/shared.gemspec CHANGED
@@ -3,24 +3,28 @@
3
3
 
4
4
  Gem::Specification::new do |spec|
5
5
  spec.name = "shared"
6
- spec.version = "1.1.0"
6
+ spec.version = "1.1.1"
7
7
  spec.platform = Gem::Platform::RUBY
8
8
  spec.summary = "shared"
9
+ spec.description = "a clean way to factor class/instance mixins in ruby"
10
+ spec.license = "same as ruby's"
11
+
12
+ spec.files =
13
+ ["README", "Rakefile", "lib", "lib/shared.rb", "readme.erb", "shared.gemspec"]
9
14
 
10
- spec.files = ["lib", "lib/shared.rb", "Rakefile", "README", "readme.erb", "shared.gemspec"]
11
15
  spec.executables = []
12
16
 
13
17
  spec.require_path = "lib"
14
18
 
15
- spec.has_rdoc = true
16
19
  spec.test_files = nil
17
- #spec.add_dependency 'lib', '>= version'
18
- #spec.add_dependency 'fattr'
20
+
21
+ ### spec.add_dependency 'lib', '>= version'
22
+ #### spec.add_dependency 'map'
19
23
 
20
24
  spec.extensions.push(*[])
21
25
 
22
26
  spec.rubyforge_project = "codeforpeople"
23
27
  spec.author = "Ara T. Howard"
24
28
  spec.email = "ara.t.howard@gmail.com"
25
- spec.homepage = "http://github.com/ahoward/shared/tree/master"
29
+ spec.homepage = "https://github.com/ahoward/shared"
26
30
  end
metadata CHANGED
@@ -1,58 +1,48 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: shared
3
- version: !ruby/object:Gem::Version
4
- version: 1.1.0
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.1.1
5
5
  platform: ruby
6
- authors:
6
+ authors:
7
7
  - Ara T. Howard
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
-
12
- date: 2009-07-28 00:00:00 -06:00
13
- default_executable:
11
+ date: 2014-02-15 00:00:00.000000000 Z
14
12
  dependencies: []
15
-
16
- description:
13
+ description: a clean way to factor class/instance mixins in ruby
17
14
  email: ara.t.howard@gmail.com
18
15
  executables: []
19
-
20
16
  extensions: []
21
-
22
17
  extra_rdoc_files: []
23
-
24
- files:
25
- - lib
26
- - lib/shared.rb
27
- - Rakefile
18
+ files:
28
19
  - README
20
+ - Rakefile
21
+ - lib/shared.rb
29
22
  - readme.erb
30
23
  - shared.gemspec
31
- has_rdoc: true
32
- homepage: http://github.com/ahoward/shared/tree/master
24
+ homepage: https://github.com/ahoward/shared
25
+ licenses:
26
+ - same as ruby's
27
+ metadata: {}
33
28
  post_install_message:
34
29
  rdoc_options: []
35
-
36
- require_paths:
30
+ require_paths:
37
31
  - lib
38
- required_ruby_version: !ruby/object:Gem::Requirement
39
- requirements:
40
- - - ">="
41
- - !ruby/object:Gem::Version
42
- version: "0"
43
- version:
44
- required_rubygems_version: !ruby/object:Gem::Requirement
45
- requirements:
46
- - - ">="
47
- - !ruby/object:Gem::Version
48
- version: "0"
49
- version:
32
+ required_ruby_version: !ruby/object:Gem::Requirement
33
+ requirements:
34
+ - - ! '>='
35
+ - !ruby/object:Gem::Version
36
+ version: '0'
37
+ required_rubygems_version: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - ! '>='
40
+ - !ruby/object:Gem::Version
41
+ version: '0'
50
42
  requirements: []
51
-
52
43
  rubyforge_project: codeforpeople
53
- rubygems_version: 1.3.1
44
+ rubygems_version: 2.0.3
54
45
  signing_key:
55
- specification_version: 2
46
+ specification_version: 4
56
47
  summary: shared
57
48
  test_files: []
58
-