main 6.1.0 → 6.2.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 CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- YmVhZWRjMmM1NGY2MmU2YzAxOGJmZDMwOTFlMjc2NzMzNWJkNmJlZA==
4
+ N2EwNDVmM2IwNTc2NDQ3ZGI0ODFhZjhhOWExYjVlODJmNzQwZGY4NQ==
5
5
  data.tar.gz: !binary |-
6
- Y2IzNDNiMWI0MTRmMDA4YmQ3YjRiYzg2Y2Q2ZDYwZDYyNjVjOGY1NA==
6
+ NjM1NzA0Yzc0MzJhOTlmZTAwMGVmMmU1NWU3NjY2NDQ2NGI2Mzg2OA==
7
7
  !binary "U0hBNTEy":
8
8
  metadata.gz: !binary |-
9
- NGM0OTdlMThiNDMwZmEwOGZjMmVlZWYxNTA2ZjcwYWVmZjhjNzdkOTNiMTAw
10
- OWM1ZmNlZThmYjYyOTEzZjhkODU5OTAzNDZmYTk3MjQ5ZmRkZjQ4MTYyNDU0
11
- YTIzOGZhNzU4NWRhNjIwNDRhODhlOTkyMjFjYzZlMWUyOGY2MWM=
9
+ ZWExOGE1ODRjNDc3MDVhZmI2ZDQwZGMzMmM5Y2IwMmZkYTFhZTBkNTdhNTdk
10
+ YzY3ZGE5NmNkMjZiZDk2MDc4ZGY1OTZhMGU0YTFhNjk3Mzg4NjQ0OTAwZGMy
11
+ ZTcyNzQ5YzdmNTY3ZjE0YmVmNjBiZDJkZTNhMmY3NjhmZTBlMTE=
12
12
  data.tar.gz: !binary |-
13
- ODU2MDQ0NWExNTZhMTBhY2EwNDI2ZDBhMTM5YTg5NmFiMzFiYWM3MGJjYzBl
14
- ODgxNDgwODkxNWU5YmMxN2IzMmY1ZDQxOWEwNmZmMDMzMjIyNDlmYjYxMjgy
15
- MDIxMTUyMGMxMDlkNGI1ZDU2YjAxN2EwOWY1MWM2MzI5MjE1ZjY=
13
+ OTdhYjlhYzc0YTg4NTRiNGNhM2ZhOTBkNWI4NGI0YWZkZjM1MWIzZTNjZjNl
14
+ NDQ5YzMyMmVkMzVmMTBjMzJlZjYyY2I2NGE4ODIyMzFiZjg0MmMwNzcxOTAy
15
+ NzY2MDk0ZDNmMDdhNzVkN2RkMzkwNDFlNzIxZjRjMGM4YTVmNTU=
@@ -1,7 +1,7 @@
1
1
  module Main
2
2
  # top level constants
3
3
  #
4
- Main::VERSION = '6.1.0' unless
4
+ Main::VERSION = '6.2.0' unless
5
5
  defined? Main::VERSION
6
6
  def Main.version() Main::VERSION end
7
7
 
@@ -25,7 +25,7 @@ module Main
25
25
  'chronic' => [ 'chronic' , '>= 0.6.2' ] ,
26
26
  'fattr' => [ 'fattr' , '>= 2.2.0' ] ,
27
27
  'arrayfields' => [ 'arrayfields' , '>= 4.7.4' ] ,
28
- 'map' => [ 'map' , '>= 5.1.0' ] ,
28
+ 'map' => [ 'map' , '>= 6.1.0' ] ,
29
29
  }
30
30
  end
31
31
 
@@ -269,29 +269,66 @@ module Main
269
269
  define_method(:run, &block) if block
270
270
  end
271
271
 
272
+ def main_env(*args, &block)
273
+ @main_env ||= main_env!
274
+
275
+ if args.empty?
276
+ @main_env
277
+ else
278
+ key = main_env_key_for(args.first)
279
+ @main_env[key]
280
+ end
281
+ end
282
+
283
+ def main_env_key_for(key)
284
+ key.to_s.strip.downcase.sub(/^main_/, '')
285
+ end
286
+
287
+ def main_env!
288
+ @main_env = Map.new
289
+
290
+ @main_env[:state] = env['STATE']
291
+ @main_env[:state_dirname] = env['STATE_DIRNAME']
292
+ @main_env[:state_basename] = env['STATE_BASENAME']
293
+
294
+ env.each do |key, val|
295
+ next unless key.to_s =~ /^\s*MAIN_/i
296
+ k = main_env_key_for(key)
297
+ @main_env[k] = val
298
+ end
299
+
300
+ @main_env
301
+ end
302
+
272
303
  def state_dirname(*args)
273
304
  @state_dirname = File.join(*args) unless args.empty?
274
- @state_dirname ||= ENV['STATE_DIRNAME']
305
+ @state_dirname ||= main_env('STATE_DIRNAME')
275
306
  @state_dirname ||= Util.home
276
307
  @state_dirname
277
308
  end
278
309
 
279
310
  def state_basename(*args)
280
311
  @state_basename = File.join(*args) unless args.empty?
281
- @state_basename ||= ENV['STATE_BASENAME']
312
+ @state_basename ||= main_env('STATE_BASENAME')
282
313
  @state_basename ||= ".#{ name }"
283
314
  @state_basename
284
315
  end
285
316
 
286
317
  def state_path(*state_path, &block)
287
- @state_path = File.join(state_dirname, state_basename) unless defined?(@state_path)
288
-
289
- @state_path = state_path.join('/') unless state_path.empty?
318
+ unless defined?(@state_path)
319
+ if main_env('STATE')
320
+ @state_path = File.expand_path(main_env('STATE'))
321
+ @state_dirname = File.dirname(@state_path)
322
+ @state_basename = File.basename(@state_path)
323
+ else
324
+ @state_path = File.join(state_dirname, state_basename)
325
+ end
326
+ end
290
327
 
291
328
  if block
292
329
  require 'fileutils' unless defined?(FileUtils)
293
330
  FileUtils.mkdir_p(@state_path) unless test(?d, @state_path)
294
- Dir.chdir(&block)
331
+ Dir.chdir(@state_path, &block)
295
332
  else
296
333
  @state_path
297
334
  end
@@ -277,6 +277,10 @@ module Main
277
277
  fcall(self, '__instance_eval_block', *argv, &block)
278
278
  end
279
279
 
280
+ def main_env(*args, &block)
281
+ self.class.main_env(*args, &block)
282
+ end
283
+
280
284
  def state_path(&block)
281
285
  self.class.state_path(&block)
282
286
  end
@@ -3,7 +3,7 @@
3
3
 
4
4
  Gem::Specification::new do |spec|
5
5
  spec.name = "main"
6
- spec.version = "6.1.0"
6
+ spec.version = "6.2.0"
7
7
  spec.platform = Gem::Platform::RUBY
8
8
  spec.summary = "main"
9
9
  spec.description = "a class factory and dsl for generating command line programs real quick"
@@ -63,7 +63,7 @@ Gem::Specification::new do |spec|
63
63
 
64
64
  spec.add_dependency(*["arrayfields", ">= 4.7.4"])
65
65
 
66
- spec.add_dependency(*["map", ">= 5.1.0"])
66
+ spec.add_dependency(*["map", ">= 6.1.0"])
67
67
 
68
68
 
69
69
  spec.extensions.push(*[])
@@ -433,6 +433,7 @@ class T < Test::Unit::TestCase
433
433
  assert bar.value == 2
434
434
  assert foobar.value == 'foobar'
435
435
  end
436
+
436
437
  def test_0270
437
438
  foo = nil
438
439
  assert_nothing_raised{
@@ -949,6 +950,57 @@ class T < Test::Unit::TestCase
949
950
  }
950
951
  assert a == ["--", "--bar"]
951
952
  end
953
+
954
+ # main_env
955
+ #
956
+ def test_0900
957
+ %w[ STATE STATE_DIRNAME STATE_BASENAME ].each do |key|
958
+ value = nil
959
+ assert_nothing_raised{
960
+ main([], key => '42'){
961
+ define_method('run'){
962
+ k = key.downcase
963
+ value = main_env[k]
964
+ }
965
+ }
966
+ }
967
+ assert value == '42'
968
+ end
969
+ end
970
+ def test_0910
971
+ %w[ MAIN_STATE MAIN_STATE_DIRNAME MAIN_STATE_BASENAME ].each do |key|
972
+ value = nil
973
+ assert_nothing_raised{
974
+ main([], key => '42'){
975
+ define_method('run'){
976
+ k = key.downcase.sub('main_', '')
977
+ value = main_env[k]
978
+ }
979
+ }
980
+ }
981
+ assert value == '42'
982
+ end
983
+ end
984
+ def test_0920
985
+ %w[ STATE MAIN_STATE ].each do |key|
986
+ dir = File.expand_path(".main-test-#{ Process.pid }-#{ (rand*1000000000000).to_i }")
987
+ FileUtils.mkdir_p(dir)
988
+ begin
989
+ values = []
990
+ assert_nothing_raised{
991
+ main([], key => dir){
992
+ define_method('run'){
993
+ values.push state_path
994
+ state_path{ values.push File.expand_path(Dir.pwd) }
995
+ }
996
+ }
997
+ }
998
+ assert values == [dir, dir]
999
+ ensure
1000
+ FileUtils.rm_rf(dir)
1001
+ end
1002
+ end
1003
+ end
952
1004
  end
953
1005
 
954
1006
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: main
3
3
  version: !ruby/object:Gem::Version
4
- version: 6.1.0
4
+ version: 6.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ara T. Howard
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-10-30 00:00:00.000000000 Z
11
+ date: 2015-12-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: chronic
@@ -58,14 +58,14 @@ dependencies:
58
58
  requirements:
59
59
  - - ! '>='
60
60
  - !ruby/object:Gem::Version
61
- version: 5.1.0
61
+ version: 6.1.0
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - ! '>='
67
67
  - !ruby/object:Gem::Version
68
- version: 5.1.0
68
+ version: 6.1.0
69
69
  description: a class factory and dsl for generating command line programs real quick
70
70
  email: ara.t.howard@gmail.com
71
71
  executables: []
@@ -131,3 +131,4 @@ signing_key:
131
131
  specification_version: 4
132
132
  summary: main
133
133
  test_files: []
134
+ has_rdoc: