scout-essentials 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.
Files changed (107) hide show
  1. checksums.yaml +7 -0
  2. data/.document +5 -0
  3. data/.vimproject +78 -0
  4. data/Gemfile +14 -0
  5. data/LICENSE.txt +20 -0
  6. data/README.rdoc +18 -0
  7. data/Rakefile +47 -0
  8. data/VERSION +1 -0
  9. data/lib/scout/cmd.rb +348 -0
  10. data/lib/scout/concurrent_stream.rb +284 -0
  11. data/lib/scout/config.rb +168 -0
  12. data/lib/scout/exceptions.rb +77 -0
  13. data/lib/scout/indiferent_hash/case_insensitive.rb +30 -0
  14. data/lib/scout/indiferent_hash/options.rb +115 -0
  15. data/lib/scout/indiferent_hash.rb +96 -0
  16. data/lib/scout/log/color.rb +224 -0
  17. data/lib/scout/log/color_class.rb +269 -0
  18. data/lib/scout/log/fingerprint.rb +69 -0
  19. data/lib/scout/log/progress/report.rb +244 -0
  20. data/lib/scout/log/progress/util.rb +173 -0
  21. data/lib/scout/log/progress.rb +106 -0
  22. data/lib/scout/log/trap.rb +107 -0
  23. data/lib/scout/log.rb +441 -0
  24. data/lib/scout/meta_extension.rb +100 -0
  25. data/lib/scout/misc/digest.rb +63 -0
  26. data/lib/scout/misc/filesystem.rb +25 -0
  27. data/lib/scout/misc/format.rb +255 -0
  28. data/lib/scout/misc/helper.rb +31 -0
  29. data/lib/scout/misc/insist.rb +56 -0
  30. data/lib/scout/misc/monitor.rb +66 -0
  31. data/lib/scout/misc/system.rb +73 -0
  32. data/lib/scout/misc.rb +10 -0
  33. data/lib/scout/named_array.rb +138 -0
  34. data/lib/scout/open/lock/lockfile.rb +587 -0
  35. data/lib/scout/open/lock.rb +68 -0
  36. data/lib/scout/open/remote.rb +135 -0
  37. data/lib/scout/open/stream.rb +491 -0
  38. data/lib/scout/open/util.rb +244 -0
  39. data/lib/scout/open.rb +170 -0
  40. data/lib/scout/path/find.rb +204 -0
  41. data/lib/scout/path/tmpfile.rb +8 -0
  42. data/lib/scout/path/util.rb +127 -0
  43. data/lib/scout/path.rb +51 -0
  44. data/lib/scout/persist/open.rb +17 -0
  45. data/lib/scout/persist/path.rb +15 -0
  46. data/lib/scout/persist/serialize.rb +157 -0
  47. data/lib/scout/persist.rb +104 -0
  48. data/lib/scout/resource/open.rb +8 -0
  49. data/lib/scout/resource/path.rb +80 -0
  50. data/lib/scout/resource/produce/rake.rb +69 -0
  51. data/lib/scout/resource/produce.rb +151 -0
  52. data/lib/scout/resource/scout.rb +3 -0
  53. data/lib/scout/resource/software.rb +178 -0
  54. data/lib/scout/resource/util.rb +59 -0
  55. data/lib/scout/resource.rb +40 -0
  56. data/lib/scout/simple_opt/accessor.rb +54 -0
  57. data/lib/scout/simple_opt/doc.rb +126 -0
  58. data/lib/scout/simple_opt/get.rb +57 -0
  59. data/lib/scout/simple_opt/parse.rb +67 -0
  60. data/lib/scout/simple_opt/setup.rb +26 -0
  61. data/lib/scout/simple_opt.rb +5 -0
  62. data/lib/scout/tmpfile.rb +129 -0
  63. data/lib/scout-essentials.rb +10 -0
  64. data/scout-essentials.gemspec +143 -0
  65. data/share/color/color_names +507 -0
  66. data/share/color/diverging_colors.hex +12 -0
  67. data/share/software/install_helpers +523 -0
  68. data/test/scout/indiferent_hash/test_case_insensitive.rb +16 -0
  69. data/test/scout/indiferent_hash/test_options.rb +46 -0
  70. data/test/scout/log/test_color.rb +0 -0
  71. data/test/scout/log/test_progress.rb +108 -0
  72. data/test/scout/misc/test_digest.rb +30 -0
  73. data/test/scout/misc/test_filesystem.rb +30 -0
  74. data/test/scout/misc/test_insist.rb +13 -0
  75. data/test/scout/misc/test_system.rb +21 -0
  76. data/test/scout/open/test_lock.rb +52 -0
  77. data/test/scout/open/test_remote.rb +25 -0
  78. data/test/scout/open/test_stream.rb +676 -0
  79. data/test/scout/open/test_util.rb +73 -0
  80. data/test/scout/path/test_find.rb +110 -0
  81. data/test/scout/path/test_util.rb +22 -0
  82. data/test/scout/persist/test_open.rb +37 -0
  83. data/test/scout/persist/test_path.rb +37 -0
  84. data/test/scout/persist/test_serialize.rb +114 -0
  85. data/test/scout/resource/test_path.rb +58 -0
  86. data/test/scout/resource/test_produce.rb +94 -0
  87. data/test/scout/resource/test_software.rb +24 -0
  88. data/test/scout/resource/test_util.rb +38 -0
  89. data/test/scout/simple_opt/test_doc.rb +16 -0
  90. data/test/scout/simple_opt/test_get.rb +11 -0
  91. data/test/scout/simple_opt/test_parse.rb +10 -0
  92. data/test/scout/simple_opt/test_setup.rb +77 -0
  93. data/test/scout/test_cmd.rb +85 -0
  94. data/test/scout/test_concurrent_stream.rb +29 -0
  95. data/test/scout/test_config.rb +66 -0
  96. data/test/scout/test_indiferent_hash.rb +26 -0
  97. data/test/scout/test_log.rb +32 -0
  98. data/test/scout/test_meta_extension.rb +80 -0
  99. data/test/scout/test_misc.rb +6 -0
  100. data/test/scout/test_named_array.rb +43 -0
  101. data/test/scout/test_open.rb +146 -0
  102. data/test/scout/test_path.rb +54 -0
  103. data/test/scout/test_persist.rb +186 -0
  104. data/test/scout/test_resource.rb +26 -0
  105. data/test/scout/test_tmpfile.rb +53 -0
  106. data/test/test_helper.rb +50 -0
  107. metadata +247 -0
@@ -0,0 +1,186 @@
1
+ require File.expand_path(__FILE__).sub(%r(/test/.*), '/test/test_helper.rb')
2
+ require File.expand_path(__FILE__).sub(%r(.*/test/), '').sub(/test_(.*)\.rb/,'\1')
3
+
4
+ class TestPersist < Test::Unit::TestCase
5
+ def test_string
6
+ TmpFile.with_file do |tmpfile|
7
+ Path.setup(tmpfile)
8
+ obj = "TEST"
9
+ type = :string
10
+ refute tmpdir.persist.glob("*").any?
11
+ assert_equal obj, Persist.persist(tmpfile, type, :dir => tmpdir.persist){ obj }
12
+ assert tmpdir.persist.glob("*").any?
13
+ assert_equal obj, Persist.persist(tmpfile, type, :dir => tmpdir.persist){ raise "Error" }
14
+ end
15
+ end
16
+
17
+ def test_float_array
18
+ TmpFile.with_file do |tmpfile|
19
+ Path.setup(tmpfile)
20
+ obj = [1.2,2.2]
21
+ type = :float_array
22
+ refute tmpdir.persist.glob("*").any?
23
+ assert_equal obj, Persist.persist(tmpfile, type, :dir => tmpdir.persist){ obj }
24
+ assert tmpdir.persist.glob("*").any?
25
+ assert_equal obj, Persist.persist(tmpfile, type, :dir => tmpdir.persist){ raise "Error" }
26
+ end
27
+ end
28
+
29
+ def test_string_update
30
+ TmpFile.with_file do |tmpfile|
31
+ Path.setup(tmpfile)
32
+ obj = "TEST"
33
+ type = :string
34
+ refute tmpdir.persist.glob("*").any?
35
+ assert_equal obj, Persist.persist(tmpfile, type, :dir => tmpdir.persist){ obj }
36
+ assert tmpdir.persist.glob("*").any?
37
+ assert_raises ScoutException do
38
+ Persist.persist(tmpfile, type, :dir => tmpdir.persist, :update => true){ raise ScoutException }
39
+ end
40
+ assert_raises ScoutException do
41
+ Persist.persist(tmpfile, type, :persist_dir => tmpdir.persist, :persist_update => true){ raise ScoutException }
42
+ end
43
+ end
44
+ end
45
+
46
+ def test_stream
47
+ TmpFile.with_file do |tmpfile|
48
+ Path.setup(tmpfile)
49
+ obj = "TEST\nTEST"
50
+ stream = StringIO.new obj
51
+ stream.rewind
52
+ res = Persist.persist(tmpfile, :string, :dir => tmpdir.persist){ stream }
53
+ assert IO === res
54
+ assert_equal obj, res.read
55
+ assert_equal obj, Persist.persist(tmpfile, :string, :dir => tmpdir.persist){ raise ScoutException }
56
+ end
57
+ end
58
+
59
+ def test_stream_multiple
60
+ TmpFile.with_file do |tmpfile|
61
+ Path.setup(tmpfile)
62
+ obj = "TEST\nTEST"
63
+ stream = StringIO.new obj
64
+ stream.rewind
65
+ res1 = Persist.persist(tmpfile, :string, :dir => tmpdir.persist, :tee_copies => 2){ stream }
66
+ res2 = res1.next
67
+ assert IO === res1
68
+ assert_equal obj, res1.read
69
+ assert_equal obj, res2.read
70
+ assert_equal obj, Persist.persist(tmpfile, :string, :dir => tmpdir.persist){ raise ScoutException }
71
+ end
72
+ end
73
+
74
+ def test_update_time
75
+ TmpFile.with_file do |dir|
76
+ Path.setup(dir)
77
+ obj = "TEST"
78
+ type = :string
79
+
80
+ Open.write(dir.file, "TEST")
81
+ assert_equal "TEST", Persist.persist(dir.cache, type, :dir => tmpdir.persist){ Open.read(dir.file) }
82
+ Open.rm(dir.file)
83
+ assert_equal "TEST", Persist.persist(dir.cache, type, :dir => tmpdir.persist){ Open.read(dir.file) }
84
+
85
+ sleep 1
86
+ Open.write(dir.file2, "TEST2")
87
+ assert_equal "TEST", Persist.persist(dir.cache, type, :dir => tmpdir.persist){ Open.read(dir.file2) }
88
+ assert_equal "TEST2", Persist.persist(dir.cache, type, :dir => tmpdir.persist, :update => dir.file2){ Open.read(dir.file2) }
89
+
90
+ sleep 1
91
+ Open.write(dir.file3, "TEST3")
92
+ sleep 1
93
+ Open.touch tmpdir.persist.glob("*").first
94
+ assert_equal "TEST2", Persist.persist(dir.cache, type, :dir => tmpdir.persist, :update => dir.file3){ Open.read(dir.file3) }
95
+ end
96
+ end
97
+
98
+ def test_concurrent
99
+ num = 10
100
+
101
+ s = 0.01
102
+ 10.times do
103
+ TmpFile.with_file do |file|
104
+ output1 = file + '.output1'
105
+ output2 = file + '.output2'
106
+ pid1 = Process.fork do
107
+ Open.purge_pipes
108
+ sleep rand/10.0
109
+ io = Persist.persist("test", :string, :path => file) do
110
+ Open.open_pipe do |sin|
111
+ num.times do |i|
112
+ sin.puts "line-#{i}-#{Process.pid}"
113
+ sleep s
114
+ end
115
+ end
116
+ end
117
+
118
+ if IO === io
119
+ Open.consume_stream(io, false)
120
+ else
121
+ Open.write(output1, io)
122
+ end
123
+ end
124
+ pid2 = Process.fork do
125
+ Open.purge_pipes
126
+ sleep rand/10.0
127
+ io = Persist.persist("test", :string, :path => file) do
128
+ Open.open_pipe do |sin|
129
+ num.times do |i|
130
+ sin.puts "line-#{i}-#{Process.pid}"
131
+ sleep s
132
+ end
133
+ end
134
+ end
135
+ if IO === io
136
+ Open.consume_stream(io, false)
137
+ else
138
+ Open.write(output2, io)
139
+ end
140
+ end
141
+ Process.waitpid pid1
142
+ Process.waitpid pid2
143
+
144
+ assert File.exist?(output1) || File.exist?(output2)
145
+ [pid1, pid2].zip([output2, output1]).each do |pid, found|
146
+ next unless File.exist?(found)
147
+ assert Open.read(found).include? "-#{pid}\n"
148
+ end
149
+ [pid1, pid2].zip([output1, output2]).each do |pid, found|
150
+ next unless File.exist?(found)
151
+ refute Open.read(found).include? "-#{pid}\n"
152
+ end
153
+ Open.rm file
154
+ Open.rm output1
155
+ Open.rm output2
156
+ end
157
+ end
158
+ end
159
+
160
+ def test_path_prefix
161
+ Persist.persist('foo', :tsv, :prefix => "TSV") do |filename|
162
+ assert File.basename(filename).start_with? "TSV"
163
+ end
164
+ end
165
+
166
+ def __test_speed
167
+ times = 100_000
168
+ TmpFile.with_file do |tmpfile|
169
+ sout = Persist.persist(tmpfile, :string, :path => tmpfile) do
170
+ Open.open_pipe do |sin|
171
+ times.times do |i|
172
+ sin.puts "line-#{i}"
173
+ end
174
+ end
175
+ end
176
+
177
+ Log::ProgressBar.with_bar do |bar|
178
+ while l = sout.gets
179
+ bar.tick
180
+ end
181
+ end
182
+ end
183
+ end
184
+
185
+ end
186
+
@@ -0,0 +1,26 @@
1
+ require File.expand_path(__FILE__).sub(%r(/test/.*), '/test/test_helper.rb')
2
+ require File.expand_path(__FILE__).sub(%r(.*/test/), '').sub(/test_(.*)\.rb/,'\1')
3
+
4
+ class TestResourceUnit < Test::Unit::TestCase
5
+ module TestResource
6
+ extend Resource
7
+
8
+ self.subdir = Path.setup('tmp/test-resource')
9
+ end
10
+
11
+
12
+ def test_root
13
+
14
+ p = TestResource.root.some_file
15
+ assert p.find(:user).include?(ENV["HOME"])
16
+ end
17
+
18
+ def __test_identify
19
+ assert_equal 'etc/', Rbbt.identify(File.join(ENV["HOME"], '.rbbt/etc/'))
20
+ assert_equal 'share/databases/', Rbbt.identify('/usr/local/share/rbbt/databases/')
21
+ assert_equal 'share/databases/DATABASE', Rbbt.identify('/usr/local/share/rbbt/databases/DATABASE')
22
+ assert_equal 'share/databases/DATABASE/FILE', Rbbt.identify('/usr/local/share/rbbt/databases/DATABASE/FILE')
23
+ assert_equal 'share/databases/DATABASE/FILE', Rbbt.identify(File.join(ENV["HOME"], '.rbbt/share/databases/DATABASE/FILE'))
24
+ assert_equal 'share/databases/DATABASE/FILE', Rbbt.identify('/usr/local/share/rbbt/databases/DATABASE/FILE')
25
+ end
26
+ end
@@ -0,0 +1,53 @@
1
+ require File.expand_path(__FILE__).sub(%r(/test/.*), '/test/test_helper.rb')
2
+ require File.expand_path(__FILE__).sub(%r(.*/test/), '').sub(/test_(.*)\.rb/,'\1')
3
+
4
+ class TestTmpFile < Test::Unit::TestCase
5
+
6
+ def test_tmp_file
7
+ assert(TmpFile.tmp_file("test") =~ /(tmpfiles|tmp)\/test\d+$/)
8
+ end
9
+
10
+ def test_do_tmp_file
11
+ content = "Hello World!"
12
+ TmpFile.with_file(content) do |file|
13
+ assert_equal content, File.open(file).read
14
+ end
15
+ end
16
+
17
+ def test_do_tmp_file_io
18
+ content = "Hello World!"
19
+ TmpFile.with_file(content) do |file1|
20
+ File.open(file1) do |io|
21
+ TmpFile.with_file(io) do |file|
22
+ assert_equal content, File.open(file).read
23
+ end
24
+ end
25
+ end
26
+ end
27
+
28
+ def test_extension
29
+ TmpFile.with_file(nil, true, :extension => 'txt') do |file|
30
+ assert file =~ /\.txt$/
31
+ end
32
+ end
33
+
34
+ def test_tmpdir
35
+ TmpFile.with_file(nil, true, :tmpdir => TmpFile.user_tmp("TMPDIR")) do |file|
36
+ assert file =~ /TMPDIR/
37
+ end
38
+
39
+ TmpFile.tmpdir = TmpFile.user_tmp("TMPDIR")
40
+
41
+ TmpFile.with_file do |file|
42
+ assert file =~ /TMPDIR/
43
+ end
44
+ end
45
+
46
+ def test_in_dir
47
+ TmpFile.in_dir do |dir|
48
+ assert_equal_path dir, FileUtils.pwd
49
+ end
50
+ end
51
+
52
+ end
53
+
@@ -0,0 +1,50 @@
1
+
2
+ require 'simplecov'
3
+
4
+ module SimpleCov::Configuration
5
+ def clean_filters
6
+ @filters = []
7
+ end
8
+ end
9
+
10
+ SimpleCov.configure do
11
+ clean_filters
12
+ load_adapter 'test_frameworks'
13
+ end
14
+
15
+ ENV["COVERAGE"] && SimpleCov.start do
16
+ add_filter "/.rvm/"
17
+ end
18
+ require 'rubygems'
19
+ require 'test/unit'
20
+
21
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
22
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
23
+
24
+ require 'scout/tmpfile'
25
+ require 'scout/log'
26
+ require 'scout/open'
27
+ require 'scout/persist'
28
+
29
+ class Test::Unit::TestCase
30
+
31
+ def assert_equal_path(path1, path2)
32
+ assert_equal File.expand_path(path1), File.expand_path(path2)
33
+ end
34
+
35
+ def tmpdir
36
+ @tmpdir ||= Path.setup('tmp/test_tmpdir').find
37
+ end
38
+
39
+ setup do
40
+ TmpFile.tmpdir = tmpdir.tmpfiles
41
+ Log::ProgressBar.default_severity = 0
42
+ Persist.cache_dir = tmpdir.var.cache
43
+ Persist::MEMORY_CACHE.clear
44
+ Open.remote_cache_dir = tmpdir.var.cache
45
+ end
46
+
47
+ teardown do
48
+ Open.rm_rf tmpdir
49
+ end
50
+ end
metadata ADDED
@@ -0,0 +1,247 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: scout-essentials
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Miguel Vazquez
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2023-07-04 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: shoulda
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rdoc
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '3.12'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '3.12'
41
+ - !ruby/object:Gem::Dependency
42
+ name: bundler
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '1.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '1.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: juwelier
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: 2.1.0
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: 2.1.0
69
+ - !ruby/object:Gem::Dependency
70
+ name: simplecov
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: term-ansicolor
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: yaml
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ description: Things a scout can use anywhere
112
+ email: mikisvaz@gmail.com
113
+ executables: []
114
+ extensions: []
115
+ extra_rdoc_files:
116
+ - LICENSE.txt
117
+ - README.rdoc
118
+ files:
119
+ - ".document"
120
+ - ".vimproject"
121
+ - Gemfile
122
+ - LICENSE.txt
123
+ - README.rdoc
124
+ - Rakefile
125
+ - VERSION
126
+ - lib/scout-essentials.rb
127
+ - lib/scout/cmd.rb
128
+ - lib/scout/concurrent_stream.rb
129
+ - lib/scout/config.rb
130
+ - lib/scout/exceptions.rb
131
+ - lib/scout/indiferent_hash.rb
132
+ - lib/scout/indiferent_hash/case_insensitive.rb
133
+ - lib/scout/indiferent_hash/options.rb
134
+ - lib/scout/log.rb
135
+ - lib/scout/log/color.rb
136
+ - lib/scout/log/color_class.rb
137
+ - lib/scout/log/fingerprint.rb
138
+ - lib/scout/log/progress.rb
139
+ - lib/scout/log/progress/report.rb
140
+ - lib/scout/log/progress/util.rb
141
+ - lib/scout/log/trap.rb
142
+ - lib/scout/meta_extension.rb
143
+ - lib/scout/misc.rb
144
+ - lib/scout/misc/digest.rb
145
+ - lib/scout/misc/filesystem.rb
146
+ - lib/scout/misc/format.rb
147
+ - lib/scout/misc/helper.rb
148
+ - lib/scout/misc/insist.rb
149
+ - lib/scout/misc/monitor.rb
150
+ - lib/scout/misc/system.rb
151
+ - lib/scout/named_array.rb
152
+ - lib/scout/open.rb
153
+ - lib/scout/open/lock.rb
154
+ - lib/scout/open/lock/lockfile.rb
155
+ - lib/scout/open/remote.rb
156
+ - lib/scout/open/stream.rb
157
+ - lib/scout/open/util.rb
158
+ - lib/scout/path.rb
159
+ - lib/scout/path/find.rb
160
+ - lib/scout/path/tmpfile.rb
161
+ - lib/scout/path/util.rb
162
+ - lib/scout/persist.rb
163
+ - lib/scout/persist/open.rb
164
+ - lib/scout/persist/path.rb
165
+ - lib/scout/persist/serialize.rb
166
+ - lib/scout/resource.rb
167
+ - lib/scout/resource/open.rb
168
+ - lib/scout/resource/path.rb
169
+ - lib/scout/resource/produce.rb
170
+ - lib/scout/resource/produce/rake.rb
171
+ - lib/scout/resource/scout.rb
172
+ - lib/scout/resource/software.rb
173
+ - lib/scout/resource/util.rb
174
+ - lib/scout/simple_opt.rb
175
+ - lib/scout/simple_opt/accessor.rb
176
+ - lib/scout/simple_opt/doc.rb
177
+ - lib/scout/simple_opt/get.rb
178
+ - lib/scout/simple_opt/parse.rb
179
+ - lib/scout/simple_opt/setup.rb
180
+ - lib/scout/tmpfile.rb
181
+ - scout-essentials.gemspec
182
+ - share/color/color_names
183
+ - share/color/diverging_colors.hex
184
+ - share/software/install_helpers
185
+ - test/scout/indiferent_hash/test_case_insensitive.rb
186
+ - test/scout/indiferent_hash/test_options.rb
187
+ - test/scout/log/test_color.rb
188
+ - test/scout/log/test_progress.rb
189
+ - test/scout/misc/test_digest.rb
190
+ - test/scout/misc/test_filesystem.rb
191
+ - test/scout/misc/test_insist.rb
192
+ - test/scout/misc/test_system.rb
193
+ - test/scout/open/test_lock.rb
194
+ - test/scout/open/test_remote.rb
195
+ - test/scout/open/test_stream.rb
196
+ - test/scout/open/test_util.rb
197
+ - test/scout/path/test_find.rb
198
+ - test/scout/path/test_util.rb
199
+ - test/scout/persist/test_open.rb
200
+ - test/scout/persist/test_path.rb
201
+ - test/scout/persist/test_serialize.rb
202
+ - test/scout/resource/test_path.rb
203
+ - test/scout/resource/test_produce.rb
204
+ - test/scout/resource/test_software.rb
205
+ - test/scout/resource/test_util.rb
206
+ - test/scout/simple_opt/test_doc.rb
207
+ - test/scout/simple_opt/test_get.rb
208
+ - test/scout/simple_opt/test_parse.rb
209
+ - test/scout/simple_opt/test_setup.rb
210
+ - test/scout/test_cmd.rb
211
+ - test/scout/test_concurrent_stream.rb
212
+ - test/scout/test_config.rb
213
+ - test/scout/test_indiferent_hash.rb
214
+ - test/scout/test_log.rb
215
+ - test/scout/test_meta_extension.rb
216
+ - test/scout/test_misc.rb
217
+ - test/scout/test_named_array.rb
218
+ - test/scout/test_open.rb
219
+ - test/scout/test_path.rb
220
+ - test/scout/test_persist.rb
221
+ - test/scout/test_resource.rb
222
+ - test/scout/test_tmpfile.rb
223
+ - test/test_helper.rb
224
+ homepage: http://github.com/mikisvaz/scout-essentials
225
+ licenses:
226
+ - MIT
227
+ metadata: {}
228
+ post_install_message:
229
+ rdoc_options: []
230
+ require_paths:
231
+ - lib
232
+ required_ruby_version: !ruby/object:Gem::Requirement
233
+ requirements:
234
+ - - ">="
235
+ - !ruby/object:Gem::Version
236
+ version: '0'
237
+ required_rubygems_version: !ruby/object:Gem::Requirement
238
+ requirements:
239
+ - - ">="
240
+ - !ruby/object:Gem::Version
241
+ version: '0'
242
+ requirements: []
243
+ rubygems_version: 3.4.13
244
+ signing_key:
245
+ specification_version: 4
246
+ summary: Scout essential tools
247
+ test_files: []