unienv 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: d558588d0a1db334b80091c0a7f45fed561e3056
4
+ data.tar.gz: d0e9e3f6cdb50b125404926fc48e75515fc81ba7
5
+ SHA512:
6
+ metadata.gz: 02acd146cbbb5a83187f17001936116b987a0ae6177a64c93cfa0f18aa8c89f52c38193123efb4972f036ab7c0587298c4604d8d7bfb4b3ed28f39335da5cb1b
7
+ data.tar.gz: d1ca507e19f828b59ace2a7f6ff19357d96dab62093b6df582e1f977f73e8bdde2dc2f63a2a1caea1228f91fb7be43c8bc3a4d2c30ede8fbfad4fa0862aa7135
data/.gitignore ADDED
@@ -0,0 +1,14 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /Gemfile.lock
4
+ /_yardoc/
5
+ /coverage/
6
+ /doc/
7
+ /pkg/
8
+ /spec/reports/
9
+ /tmp/
10
+ *.bundle
11
+ *.so
12
+ *.o
13
+ *.a
14
+ mkmf.log
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in unienv.gemspec
4
+ gemspec
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2015 fum1h1ro
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,74 @@
1
+ # Ubb
2
+
3
+ Helper for Unity batch build.
4
+
5
+ [![Gem Version](https://badge.fury.io/rb/ubb.svg)](http://badge.fury.io/rb/ubb)
6
+
7
+
8
+ ## Description
9
+
10
+ Unity Editor からビルドしたりパッケージを入出力する時に使うツールです。
11
+
12
+
13
+ ## Installation
14
+
15
+ Install it yourself as:
16
+
17
+ ```
18
+ $ gem install ubb
19
+ ```
20
+
21
+ ## Usage
22
+
23
+ ```
24
+ $ ubb export -o hoge.unitypackage Plugins/hoge
25
+ $ ubb import hoge.unitypackage
26
+ ```
27
+
28
+ Unity のプロジェクトフォルダは、明示的に指定されなければカレントディレクトリ以下で、最初に見つかったものを自動的に選択します。
29
+ 明示的に指定するには `--project PATH` オプションを使用してください。
30
+
31
+
32
+
33
+ ### export
34
+
35
+ 指定したフォルダ及びファイルを .unitypackage としてエクスポートします。
36
+
37
+ ```
38
+ ubb export -o '出力ファイル名' 'パッケージに含むファイル名(フォルダ可&複数指定可)'
39
+ ```
40
+
41
+ ### import
42
+
43
+ 指定した .unitypackage をプロジェクトにインポートします。
44
+
45
+ ```
46
+ ubb import 'パッケージファイル名'
47
+ ```
48
+
49
+ ### build
50
+
51
+ 指定したプロジェクトのビルドを行います。
52
+
53
+ ```
54
+ ubb build --output '出力先フォルダ' --target [ios] --config [development|release|distribution]
55
+ ```
56
+
57
+ * target
58
+ * ビルドターゲットの指定。現在は `ios` のみ。
59
+ * config
60
+ * ビルドコンフィグの指定。
61
+
62
+
63
+
64
+
65
+
66
+
67
+
68
+ ## Contributing
69
+
70
+ 1. Fork it ( https://github.com/fum1h1ro/ubb/fork )
71
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
72
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
73
+ 4. Push to the branch (`git push origin my-new-feature`)
74
+ 5. Create a new Pull Request
data/Rakefile ADDED
@@ -0,0 +1,9 @@
1
+ require "bundler/gem_tasks"
2
+ require "rspec/core/rake_task"
3
+ require "rake/clean"
4
+
5
+ RSpec::Core::RakeTask.new(:spec)
6
+
7
+ task :default => :spec
8
+
9
+ CLEAN.include('pkg')
data/bin/unienv ADDED
@@ -0,0 +1,33 @@
1
+ #!/usr/bin/env ruby
2
+ LIB_PATH = File.expand_path("../../lib", __FILE__)
3
+ ASSETS_PATH = File.expand_path("../../lib/assets", __FILE__)
4
+ $:.unshift LIB_PATH
5
+ #require 'rubygems'
6
+ require 'commander/import'
7
+ require 'unienv'
8
+ require 'optparse'
9
+ require 'fileutils'
10
+ require 'erb'
11
+
12
+ $unity_app_path = "/Applications/Unity/Unity.app/Contents/MacOS/Unity"
13
+
14
+ program :version, UniEnv::VERSION
15
+ program :description, 'Unity Environment Helper'
16
+ program :help_formatter, :compact
17
+
18
+ global_option('--verbose', 'VERBOSE') { $verbose = true }
19
+ #global_option('-p', '--project PATH', 'specify Unity project path') { |path| $project_path = path }
20
+ #global_option('-u', '--unity PATH', 'specify Unity application path') { |path| $unity_app_path = path }
21
+
22
+
23
+ #p LIB_PATH
24
+ #p ASSETS_PATH
25
+ #app = UniEnv::App.new
26
+
27
+
28
+
29
+ default_command :help
30
+
31
+ always_trace!
32
+
33
+
@@ -0,0 +1,8 @@
1
+ version:
2
+ 5.2.0f3:
3
+ editor: http://netstorage.unity3d.com/unity/e7947df39b5c/MacEditorInstaller/Unity-5.2.0f3.pkg
4
+ standard_assets: http://netstorage.unity3d.com/unity/e7947df39b5c/MacStandardAssetsInstaller/StandardAssets-5.2.0f3.pkg
5
+ 5.1.3p3:
6
+ editor: http://beta.unity3d.com/download/f0a33a6ef422/MacEditorInstaller/Unity-5.1.3p3.pkg
7
+ standard_assets: http://beta.unity3d.com/download/f0a33a6ef422/MacStandardAssetsInstaller/StandardAssets-5.1.3p3.pkg
8
+
@@ -0,0 +1,3 @@
1
+ module UniEnv
2
+ VERSION = "0.0.1"
3
+ end
data/lib/unienv.rb ADDED
@@ -0,0 +1,319 @@
1
+ require "unienv/version"
2
+ require "yaml"
3
+ require "tmpdir"
4
+ require "open-uri"
5
+
6
+
7
+ module UniEnv
8
+ def self.sh(cmd)
9
+ print "exec: #{cmd}\n"
10
+ system cmd
11
+ if $? != 0
12
+ raise "ERROR: #{$?.to_i}"
13
+ end
14
+ end
15
+ def self.editor_path
16
+ "#{$project_path}/Assets/Editor"
17
+ end
18
+ def self.has_editor?
19
+ Dir.exist?(self.editor_path)
20
+ end
21
+ def self.find_project
22
+ return unless $project_path.nil?
23
+ dirs = Dir.glob("**/Assets")
24
+ dirs.each do |d|
25
+ d = d.sub(/(\/)?Assets$/, '')
26
+ if Dir.exist?("#{d}/ProjectSettings")
27
+ $project_path = File.expand_path(d)
28
+ end
29
+ end
30
+ end
31
+ def self.check_target(target)
32
+ cand = [ 'ios', 'android' ]
33
+ cand.select! { |c| c =~ /^#{target}/i }
34
+ return cand[0] if cand.size == 1
35
+ return nil
36
+ end
37
+ def self.check_config(config)
38
+ cand = [ 'development', 'release', 'distribution' ]
39
+ cand.select! { |c| c =~ /^#{config}/i }
40
+ return cand[0] if cand.size == 1
41
+ return nil
42
+ end
43
+
44
+
45
+
46
+
47
+
48
+ def self.load_config
49
+ txt = File.read("#{ASSETS_PATH}/unity_versions.yml")
50
+ YAML.load(txt)
51
+ end
52
+
53
+
54
+ def self.enum_installed
55
+ unis = Dir.glob('/Applications/Unity*')
56
+ list = {}
57
+ unis.each do |uni|
58
+ if File.basename(uni) =~ /\AUnity(.+)\Z/
59
+ ver = $1
60
+ list[ver] = uni
61
+ end
62
+ end
63
+ list
64
+ end
65
+
66
+ def self.search_version(config, name)
67
+ vers = []
68
+ config['version'].each do |k, v|
69
+ vers << k if k.include?(name)
70
+ end
71
+ vers
72
+ end
73
+ def self.editor_uri(config, version)
74
+ config['version'][version]['editor']
75
+ end
76
+ def self.standard_assets_uri(config, version)
77
+ config['version'][version]['standard_assets']
78
+ end
79
+
80
+ def self.tmpdir
81
+ Dir.tmpdir + "/unienv"
82
+ end
83
+ def self.make_tmpdir
84
+ FileUtils.mkdir_p(tmpdir)
85
+ end
86
+ def self.clean_tmpdir
87
+ FileUtils.remove_entry_secure(tmpdir)
88
+ end
89
+ def self.make_cache_path(type, version)
90
+ "#{tmpdir}/#{type}-#{version}.pkg"
91
+ end
92
+ def self.make_editor_cache_path(version)
93
+ make_cache_path("Unity", version)
94
+ end
95
+ def self.make_standard_assets_cache_path(version)
96
+ make_cache_path("StandardAssets", version)
97
+ end
98
+ def self.find_cache(type, version)
99
+ Dir.glob(make_cache_path(type, version))
100
+ end
101
+ def self.find_editor_cache(version)
102
+ find_cache("Unity", version)
103
+ end
104
+ def self.find_standard_assets_cache(version)
105
+ find_cache("StandardAssets", version)
106
+ end
107
+
108
+ def self.download(uri, path)
109
+ totalsize = nil
110
+ size = 0
111
+ progress = 0
112
+ sio =
113
+ OpenURI.open_uri(
114
+ uri,
115
+ {
116
+ :content_length_proc => lambda { |sz|
117
+ totalsize = sz
118
+ print "total: #{sz / 1024}KB\n"
119
+ },
120
+ :progress_proc => lambda { |sz|
121
+ unless totalsize.nil?
122
+ size = sz
123
+ rate = ((size.to_f / totalsize.to_f) * 10).to_i
124
+ if rate > progress
125
+ print ". #{sz / 1024}KB\n"
126
+ progress = rate
127
+ end
128
+ end
129
+ },
130
+ }
131
+ )
132
+ File.open(path, "w+") do |f|
133
+ f.write(sio.read)
134
+ end
135
+ end
136
+
137
+
138
+ end
139
+
140
+
141
+
142
+
143
+ command :list do |c|
144
+ c.syntax = 'unienv list'
145
+ c.summary = 'display unity versions'
146
+ c.option '--local', 'specify .unitypackage name'
147
+ c.action do |args, options|
148
+ if options.local
149
+ list = UniEnv.enum_installed
150
+ print "local installed:\n"
151
+ list.sort.reverse.each do |k, v|
152
+ print " #{k}\n"
153
+ end
154
+ else
155
+ config = UniEnv.load_config
156
+ config['version'].sort.reverse.each do |k, v|
157
+ print " #{k}\n"
158
+ end
159
+ end
160
+ end
161
+ end
162
+
163
+
164
+ command :install do |c|
165
+ c.syntax = 'unienv install [version]'
166
+ c.summary = 'install specified version'
167
+ c.action do |args, options|
168
+ raise 'specify version' unless args.size != 0
169
+ config = UniEnv.load_config
170
+ candidates = UniEnv.search_version(config, args[0])
171
+ raise "ambiguous versions. #{candidates}" unless candidates.size == 1
172
+ version = candidates[0]
173
+
174
+ UniEnv.make_tmpdir
175
+ editor_cache = UniEnv.find_editor_cache(version)
176
+ standard_assets_cache = UniEnv.find_standard_assets_cache(version)
177
+ if editor_cache.empty?
178
+ UniEnv.download(UniEnv.editor_uri(config, version), UniEnv.make_editor_cache_path(version))
179
+ editor_cache = UniEnv.find_editor_cache(version)
180
+ end
181
+ if standard_assets_cache.empty?
182
+ UniEnv.download(UniEnv.standard_assets_uri(config, version), UniEnv.make_standard_assets_cache_path(version))
183
+ standard_assets_cache = UniEnv.find_standard_assets_cache(version)
184
+ end
185
+
186
+ p editor_cache
187
+ p standard_assets_cache
188
+ p candidates
189
+ #UniEnv.clean_tmpdir(tmppath)
190
+
191
+ UniEnv.sh "installer -package #{editor_cache[0]} -target /"
192
+ UniEnv.sh "installer -package #{standard_assets_cache[0]} -target /"
193
+
194
+ FileUtils.mv("/Applications/Unity", "/Applications/Unity#{version}")
195
+ end
196
+ end
197
+
198
+ command :select do |c|
199
+ c.syntax = 'unienv select [version]'
200
+ c.summary = 'select version'
201
+ c.action do |args, options|
202
+ list = UniEnv.enum_installed
203
+ raise 'specify version' if args.size != 1
204
+ version = args[0]
205
+ raise "not installed #{version}" if list[version].nil?
206
+ link = '/Applications/Unity'
207
+ FileUtils.rm(link) if File.exist?(link)
208
+ sleep 4
209
+ FileUtils.symlink("#{list[version]}", link, { :force => true })
210
+
211
+
212
+
213
+
214
+
215
+ end
216
+ end
217
+
218
+
219
+
220
+
221
+
222
+
223
+
224
+
225
+
226
+
227
+
228
+
229
+
230
+ __END__
231
+
232
+
233
+
234
+ command :showlog do |c|
235
+ c.syntax = 'ubb showlog'
236
+ c.summary = 'show Unity Editor log'
237
+ c.action do |args, options|
238
+ log = '~/Library/Logs/Unity/Editor.log'
239
+ UniEnv.sh "less #{log}"
240
+ end
241
+ end
242
+ alias_command :log, :showlog
243
+
244
+ command :export do |c|
245
+ UniEnv.find_project
246
+ c.syntax = 'ubb export [options]'
247
+ c.summary = 'export .unitypackage'
248
+ c.description = 'hoge'
249
+ c.example 'export some folders to unitypackage', 'ubb export --project path/to/unityproject --output some.unitypackage Plugins/Something Resources/Something'
250
+ c.option '--output FILENAME', String, 'specify .unitypackage name'
251
+ c.action do |args, options|
252
+ raise 'specify output filename' if options.output.nil?
253
+ output = (options.output !~ /\.unitypackage$/)? options.output + ".unitypackage" : options.output
254
+ output = File.expand_path(output)
255
+ paths = args.map { |pt| "Assets/#{pt}" }.join(' ')
256
+ UniEnv.sh "#{$unity_app_path} -batchmode -projectPath #{$project_path} -exportPackage #{paths} #{output} -quit"
257
+ end
258
+ end
259
+
260
+ command :import do |c|
261
+ UniEnv.find_project
262
+ c.syntax = 'ubb import [package]'
263
+ c.summary = 'import .unitypackage'
264
+ c.description = 'hoge'
265
+ c.example 'import some unitypackage', 'ubb import --project path/to/unityproject some.unitypackage'
266
+ c.action do |args, options|
267
+ raise 'specify unitypackage file' if args.size == 0
268
+ raise 'too many unitypackage files' if args.size > 1
269
+ input = args[0]
270
+ raise "#{input} does not exist" unless File.exist?(input)
271
+ UniEnv.sh "#{$unity_app_path} -batchmode -projectPath #{$project_path} -importPackage #{input} -quit"
272
+ end
273
+ end
274
+
275
+ command :build do |c|
276
+ UniEnv.find_project
277
+ c.syntax = 'ubb build [options]'
278
+ c.summary = 'build project'
279
+ c.description = 'hoge'
280
+ c.example 'build project', 'ubb build --project path/to/unityproject --output path/to/outputproject'
281
+ c.option '--output PATH', String, 'specify output path'
282
+ c.option '--target TARGET', String, 'specify build target (ios|android)'
283
+ c.option '--config COFIGURATION', String, 'specify build configuration (development|release|distribution)'
284
+ c.action do |args, options|
285
+ options.default :config => 'development'
286
+ raise 'specify output path' if options.output.nil?
287
+ raise 'specify target' if options.target.nil?
288
+ output = File.expand_path(options.output)
289
+ target = UniEnv.check_target(options.target)
290
+ config = UniEnv.check_config(options.config)
291
+ raise "could not recognize a target: \"#{options.target}\"" if target.nil?
292
+ begin
293
+ has = UniEnv.has_editor?
294
+ editor_path = UniEnv.editor_path
295
+ src = "#{LIB_PATH}/assets/UniEnvBuild.cs"
296
+ dst = "#{editor_path}/UniEnvBuild.cs"
297
+ FileUtils.mkdir_p editor_path unless has
298
+ noop = false
299
+ if File.exist?(dst)
300
+ noop = true
301
+ raise 'build script has already existed'
302
+ end
303
+ cs = File.read(src)
304
+ csfile = File.open(dst, "w+")
305
+ csfile.write(ERB.new(cs).result binding)
306
+ csfile.flush
307
+ UniEnv.sh "#{$unity_app_path} -batchmode -projectPath #{$project_path} -quit -executeMethod Build.PerformBuild_#{target} -config #{config}"
308
+ ensure
309
+ unless noop
310
+ FileUtils.rm_f "#{editor_path}/UniEnvBuild.cs"
311
+ FileUtils.rm_f "#{editor_path}/UniEnvBuild.cs.meta"
312
+ unless has
313
+ FileUtils.rm_rf editor_path
314
+ FileUtils.rm_f "#{editor_path}.meta"
315
+ end
316
+ end
317
+ end
318
+ end
319
+ end
@@ -0,0 +1,2 @@
1
+ $LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
2
+ require 'unienv'
@@ -0,0 +1,11 @@
1
+ require 'spec_helper'
2
+
3
+ describe UniEnv do
4
+ it 'has a version number' do
5
+ expect(UniEnv::VERSION).not_to be nil
6
+ end
7
+
8
+ it 'does something useful' do
9
+ expect(false).to eq(true)
10
+ end
11
+ end
data/unienv.gemspec ADDED
@@ -0,0 +1,25 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'unienv/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "unienv"
8
+ spec.version = UniEnv::VERSION
9
+ spec.authors = ["fum1h1ro"]
10
+ spec.email = ["fumihiro@gmail.com"]
11
+ spec.summary = %q{UniEnv}
12
+ spec.description = %q{CLI for helping batch building from Unity Editor}
13
+ spec.homepage = "https://github.com/fum1h1ro/unienv"
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files -z`.split("\x0")
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_development_dependency "bundler", "~> 1.7"
22
+ spec.add_development_dependency "rake", "~> 10.0"
23
+ spec.add_development_dependency "rspec"
24
+ spec.add_dependency "commander", "~> 4.3"
25
+ end
metadata ADDED
@@ -0,0 +1,115 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: unienv
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - fum1h1ro
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-09-16 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.7'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.7'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '10.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '10.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: commander
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '4.3'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '4.3'
69
+ description: CLI for helping batch building from Unity Editor
70
+ email:
71
+ - fumihiro@gmail.com
72
+ executables:
73
+ - unienv
74
+ extensions: []
75
+ extra_rdoc_files: []
76
+ files:
77
+ - ".gitignore"
78
+ - Gemfile
79
+ - LICENSE.txt
80
+ - README.md
81
+ - Rakefile
82
+ - bin/unienv
83
+ - lib/assets/unity_versions.yml
84
+ - lib/unienv.rb
85
+ - lib/unienv/version.rb
86
+ - spec/spec_helper.rb
87
+ - spec/unienv_spec.rb
88
+ - unienv.gemspec
89
+ homepage: https://github.com/fum1h1ro/unienv
90
+ licenses:
91
+ - MIT
92
+ metadata: {}
93
+ post_install_message:
94
+ rdoc_options: []
95
+ require_paths:
96
+ - lib
97
+ required_ruby_version: !ruby/object:Gem::Requirement
98
+ requirements:
99
+ - - ">="
100
+ - !ruby/object:Gem::Version
101
+ version: '0'
102
+ required_rubygems_version: !ruby/object:Gem::Requirement
103
+ requirements:
104
+ - - ">="
105
+ - !ruby/object:Gem::Version
106
+ version: '0'
107
+ requirements: []
108
+ rubyforge_project:
109
+ rubygems_version: 2.4.5
110
+ signing_key:
111
+ specification_version: 4
112
+ summary: UniEnv
113
+ test_files:
114
+ - spec/spec_helper.rb
115
+ - spec/unienv_spec.rb