vagrant-openshift 2.0.10 → 3.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.
- checksums.yaml +4 -4
- data/README.asciidoc +9 -10
- data/lib/vagrant-openshift/action.rb +43 -31
- data/lib/vagrant-openshift/action/{build_openshift.rb → build_origin.rb} +4 -4
- data/lib/vagrant-openshift/action/{build_openshift_base_images.rb → build_origin_base_images.rb} +1 -1
- data/lib/vagrant-openshift/action/clone_upstream_repositories.rb +5 -5
- data/lib/vagrant-openshift/action/create_bare_repo_placeholders.rb +4 -4
- data/lib/vagrant-openshift/action/create_yum_repositories.rb +3 -1
- data/lib/vagrant-openshift/action/{download_artifacts_openshift.rb → download_artifacts_origin.rb} +3 -4
- data/lib/vagrant-openshift/action/download_artifacts_sti.rb +1 -1
- data/lib/vagrant-openshift/action/generate_template.rb +3 -5
- data/lib/vagrant-openshift/action/{install_openshift.rb → install_origin.rb} +1 -1
- data/lib/vagrant-openshift/action/{install_openshift_asset_dependencies.rb → install_origin_asset_dependencies.rb} +2 -2
- data/lib/vagrant-openshift/action/{install_openshift_base_dependencies.rb → install_origin_base_dependencies.rb} +15 -13
- data/lib/vagrant-openshift/action/{install_openshift_rhel7.rb → install_origin_rhel7.rb} +3 -4
- data/lib/vagrant-openshift/action/{local_openshift_checkout.rb → local_origin_checkout.rb} +2 -2
- data/lib/vagrant-openshift/action/{run_openshift_tests.rb → run_origin_tests.rb} +27 -3
- data/lib/vagrant-openshift/action/sync_local_repository.rb +8 -3
- data/lib/vagrant-openshift/command/{build_openshift.rb → build_origin.rb} +4 -4
- data/lib/vagrant-openshift/command/{build_openshift_base.rb → build_origin_base.rb} +4 -4
- data/lib/vagrant-openshift/command/{build_openshift_base_images.rb → build_origin_base_images.rb} +4 -4
- data/lib/vagrant-openshift/command/{install_openshift_assets_base.rb → download_artifacts_origin.rb} +4 -4
- data/lib/vagrant-openshift/command/download_artifacts_sti.rb +49 -0
- data/lib/vagrant-openshift/command/{install_openshift.rb → install_origin.rb} +4 -4
- data/lib/vagrant-openshift/command/install_origin_assets_base.rb +49 -0
- data/lib/vagrant-openshift/command/{local_openshift_setup.rb → local_origin_setup.rb} +5 -5
- data/lib/vagrant-openshift/command/origin_init.rb +4 -4
- data/lib/vagrant-openshift/command/{repo_sync_openshift.rb → repo_sync_origin.rb} +3 -3
- data/lib/vagrant-openshift/command/{test_openshift.rb → test_origin.rb} +12 -4
- data/lib/vagrant-openshift/command/{test_openshift_image.rb → test_origin_image.rb} +2 -2
- data/lib/vagrant-openshift/command/{try_restart_openshift.rb → try_restart_origin.rb} +4 -4
- data/lib/vagrant-openshift/plugin.rb +40 -35
- data/lib/vagrant-openshift/templates/command/init-openshift/box_info.yaml +25 -42
- data/lib/vagrant-openshift/version.rb +1 -1
- metadata +23 -22
- data/lib/vagrant-openshift/command/bootstrap_openshift.rb +0 -50
@@ -17,7 +17,7 @@
|
|
17
17
|
module Vagrant
|
18
18
|
module Openshift
|
19
19
|
module Action
|
20
|
-
class
|
20
|
+
class InstallOriginRhel7
|
21
21
|
include CommandHelper
|
22
22
|
def initialize(app, env)
|
23
23
|
@app = app
|
@@ -47,7 +47,7 @@ rm -rf $contextdir/repos/*chrome*.repo
|
|
47
47
|
|
48
48
|
# create Dockerfile
|
49
49
|
cat <<EOF > $contextdir/Dockerfile
|
50
|
-
FROM registry.access.redhat.com/rhel7:latest
|
50
|
+
FROM registry.access.redhat.com/rhel7.1:latest
|
51
51
|
|
52
52
|
RUN yum remove -y subscription-manager
|
53
53
|
|
@@ -59,9 +59,8 @@ RUN yum update -y && yum clean all
|
|
59
59
|
|
60
60
|
EOF
|
61
61
|
|
62
|
-
# make old official image backup and build the new "official"
|
63
|
-
docker tag rhel7:latest rhel7:latest_official
|
64
62
|
docker build --rm -t rhel7:latest $contextdir
|
63
|
+
docker tag rhel7:latest rhel7.1
|
65
64
|
|
66
65
|
# cleaning
|
67
66
|
rm -rf $contextdir
|
@@ -17,7 +17,7 @@
|
|
17
17
|
module Vagrant
|
18
18
|
module Openshift
|
19
19
|
module Action
|
20
|
-
class
|
20
|
+
class LocalOriginCheckout
|
21
21
|
include CommandHelper
|
22
22
|
|
23
23
|
def initialize(app, env, options)
|
@@ -43,7 +43,7 @@ module Vagrant
|
|
43
43
|
end
|
44
44
|
|
45
45
|
system(commands)
|
46
|
-
puts "
|
46
|
+
puts "Origin repositories cloned into #{Dir.pwd}"
|
47
47
|
end
|
48
48
|
|
49
49
|
@app.call(env)
|
@@ -17,7 +17,7 @@
|
|
17
17
|
module Vagrant
|
18
18
|
module Openshift
|
19
19
|
module Action
|
20
|
-
class
|
20
|
+
class RunOriginTests
|
21
21
|
include CommandHelper
|
22
22
|
|
23
23
|
@@SSH_TIMEOUT = 4800
|
@@ -68,6 +68,10 @@ popd >/dev/null
|
|
68
68
|
|
69
69
|
cmd_env = []
|
70
70
|
build_targets = ["make"]
|
71
|
+
if @options[:parallel]
|
72
|
+
build_targets << '-j'
|
73
|
+
build_targets << '--output-sync=recurse'
|
74
|
+
end
|
71
75
|
|
72
76
|
if @options[:all]
|
73
77
|
cmd_env << 'ARTIFACT_DIR=/tmp/origin/e2e/artifacts'
|
@@ -83,7 +87,7 @@ popd >/dev/null
|
|
83
87
|
cmd_env << 'SKIP_IMAGE_CLEANUP=1'
|
84
88
|
end
|
85
89
|
else
|
86
|
-
build_targets << "check"
|
90
|
+
build_targets << "check" if !@options[:skip_check]
|
87
91
|
end
|
88
92
|
|
89
93
|
if @options[:report_coverage]
|
@@ -96,7 +100,7 @@ popd >/dev/null
|
|
96
100
|
if env[:test_exit_code] == 0 && @options[:extended_test_packages].length > 0
|
97
101
|
# for extended tests we need a ginkgo binary
|
98
102
|
do_execute(env[:machine], "go get github.com/onsi/ginkgo/ginkgo", {:timeout => 60*60*2, :fail_on_error => true, :verbose => false})
|
99
|
-
cmds = @options[:extended_test_packages]
|
103
|
+
cmds = parse_extended(@options[:extended_test_packages])
|
100
104
|
env[:test_exit_code] = run_tests(env, cmds, true)
|
101
105
|
end
|
102
106
|
|
@@ -109,6 +113,26 @@ popd >/dev/null
|
|
109
113
|
|
110
114
|
@app.call(env)
|
111
115
|
end
|
116
|
+
|
117
|
+
# parse_extended parses the extended test tag
|
118
|
+
# The valid syntax is:
|
119
|
+
# [test][extended:core] will run **all** test cases in 'core' bucket
|
120
|
+
# [test][extended:core(focus)] will run just test cases that matches 'focus' string in core bucket
|
121
|
+
def parse_extended(tag)
|
122
|
+
buckets = tag.split(",")
|
123
|
+
cmds = []
|
124
|
+
buckets.each do |bucket|
|
125
|
+
if bucket.include?('(')
|
126
|
+
focus = bucket.slice(bucket.index("(")+1..-2).split(" ").map { |i| Shellwords.escape(i.strip) }.join(" ")
|
127
|
+
name = Shellwords.escape(bucket.slice(0..bucket.index("(")-1))
|
128
|
+
cmds << "test/extended/#{name.strip}.sh -focus=\"#{focus}\""
|
129
|
+
else
|
130
|
+
cmds << "test/extended/#{Shellwords.escape(bucket.strip)}.sh"
|
131
|
+
end
|
132
|
+
end
|
133
|
+
return cmds
|
134
|
+
end
|
135
|
+
|
112
136
|
end
|
113
137
|
end
|
114
138
|
end
|
@@ -63,9 +63,14 @@ module Vagrant
|
|
63
63
|
command += "git push -q verifier:#{Constants.build_dir + repo_name}-bare master:master --tags --force;\n"
|
64
64
|
end
|
65
65
|
command += "git push -q verifier:#{Constants.build_dir + repo_name }-bare #{branch}:master --tags --force"
|
66
|
-
|
67
|
-
|
68
|
-
|
66
|
+
|
67
|
+
exit_status = 1
|
68
|
+
retries = 0
|
69
|
+
while exit_status != 0
|
70
|
+
system(command)
|
71
|
+
exit_status = $?.exitstatus
|
72
|
+
exit exit_status if exit_status != 0 && retries >= 2
|
73
|
+
retries += 1
|
69
74
|
end
|
70
75
|
ensure
|
71
76
|
reset_temp_commit
|
@@ -18,11 +18,11 @@ require_relative "../action"
|
|
18
18
|
module Vagrant
|
19
19
|
module Openshift
|
20
20
|
module Commands
|
21
|
-
class
|
21
|
+
class BuildOrigin < Vagrant.plugin(2, :command)
|
22
22
|
include CommandHelper
|
23
23
|
|
24
24
|
def self.synopsis
|
25
|
-
"builds
|
25
|
+
"builds origin"
|
26
26
|
end
|
27
27
|
|
28
28
|
def execute
|
@@ -32,7 +32,7 @@ module Vagrant
|
|
32
32
|
options[:force] = false
|
33
33
|
|
34
34
|
opts = OptionParser.new do |o|
|
35
|
-
o.banner = "Usage: vagrant build-
|
35
|
+
o.banner = "Usage: vagrant build-origin [vm-name]"
|
36
36
|
o.separator ""
|
37
37
|
|
38
38
|
o.on("--images", "Build the images as well as core content.") do |c|
|
@@ -48,7 +48,7 @@ module Vagrant
|
|
48
48
|
return if !argv
|
49
49
|
|
50
50
|
with_target_vms(argv, :reverse => true) do |machine|
|
51
|
-
actions = Vagrant::Openshift::Action.
|
51
|
+
actions = Vagrant::Openshift::Action.build_origin(options)
|
52
52
|
@env.action_runner.run actions, {:machine => machine}
|
53
53
|
0
|
54
54
|
end
|
@@ -18,11 +18,11 @@ require_relative "../action"
|
|
18
18
|
module Vagrant
|
19
19
|
module Openshift
|
20
20
|
module Commands
|
21
|
-
class
|
21
|
+
class BuildOriginBase < Vagrant.plugin(2, :command)
|
22
22
|
include CommandHelper
|
23
23
|
|
24
24
|
def self.synopsis
|
25
|
-
"install the prereqs for
|
25
|
+
"install the prereqs for origin"
|
26
26
|
end
|
27
27
|
|
28
28
|
def execute
|
@@ -30,7 +30,7 @@ module Vagrant
|
|
30
30
|
options[:clean] = false
|
31
31
|
|
32
32
|
opts = OptionParser.new do |o|
|
33
|
-
o.banner = "Usage: vagrant build-
|
33
|
+
o.banner = "Usage: vagrant build-origin-base [vm-name]"
|
34
34
|
o.separator ""
|
35
35
|
end
|
36
36
|
|
@@ -39,7 +39,7 @@ module Vagrant
|
|
39
39
|
return if !argv
|
40
40
|
|
41
41
|
with_target_vms(argv, :reverse => true) do |machine|
|
42
|
-
actions = Vagrant::Openshift::Action.
|
42
|
+
actions = Vagrant::Openshift::Action.build_origin_base(options)
|
43
43
|
@env.action_runner.run actions, {:machine => machine}
|
44
44
|
0
|
45
45
|
end
|
data/lib/vagrant-openshift/command/{build_openshift_base_images.rb → build_origin_base_images.rb}
RENAMED
@@ -18,11 +18,11 @@ require_relative "../action"
|
|
18
18
|
module Vagrant
|
19
19
|
module Openshift
|
20
20
|
module Commands
|
21
|
-
class
|
21
|
+
class BuildOriginBaseImages < Vagrant.plugin(2, :command)
|
22
22
|
include CommandHelper
|
23
23
|
|
24
24
|
def self.synopsis
|
25
|
-
"builds
|
25
|
+
"builds origin infrastructure images"
|
26
26
|
end
|
27
27
|
|
28
28
|
def execute
|
@@ -30,7 +30,7 @@ module Vagrant
|
|
30
30
|
options[:clean] = false
|
31
31
|
|
32
32
|
opts = OptionParser.new do |o|
|
33
|
-
o.banner = "Usage: vagrant build-
|
33
|
+
o.banner = "Usage: vagrant build-origin-base-images"
|
34
34
|
o.separator ""
|
35
35
|
end
|
36
36
|
|
@@ -39,7 +39,7 @@ module Vagrant
|
|
39
39
|
return if !argv
|
40
40
|
|
41
41
|
with_target_vms(argv, :reverse => true) do |machine|
|
42
|
-
actions = Vagrant::Openshift::Action.
|
42
|
+
actions = Vagrant::Openshift::Action.build_origin_base_images(options)
|
43
43
|
@env.action_runner.run actions, {:machine => machine}
|
44
44
|
0
|
45
45
|
end
|
data/lib/vagrant-openshift/command/{install_openshift_assets_base.rb → download_artifacts_origin.rb}
RENAMED
@@ -18,18 +18,18 @@ require_relative "../action"
|
|
18
18
|
module Vagrant
|
19
19
|
module Openshift
|
20
20
|
module Commands
|
21
|
-
class
|
21
|
+
class DownloadArtifactsOrigin < Vagrant.plugin(2, :command)
|
22
22
|
include CommandHelper
|
23
23
|
|
24
24
|
def self.synopsis
|
25
|
-
"
|
25
|
+
"download the origin test artifacts"
|
26
26
|
end
|
27
27
|
|
28
28
|
def execute
|
29
29
|
options = {}
|
30
30
|
|
31
31
|
opts = OptionParser.new do |o|
|
32
|
-
o.banner = "Usage: vagrant
|
32
|
+
o.banner = "Usage: vagrant download-artifacts-origin [machine-name]"
|
33
33
|
o.separator ""
|
34
34
|
end
|
35
35
|
|
@@ -38,7 +38,7 @@ module Vagrant
|
|
38
38
|
return if !argv
|
39
39
|
|
40
40
|
with_target_vms(argv, :reverse => true) do |machine|
|
41
|
-
actions = Vagrant::Openshift::Action.
|
41
|
+
actions = Vagrant::Openshift::Action.download_origin_artifacts(options)
|
42
42
|
@env.action_runner.run actions, {:machine => machine}
|
43
43
|
0
|
44
44
|
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
#--
|
2
|
+
# Copyright 2013 Red Hat, Inc.
|
3
|
+
#
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
# you may not use this file except in compliance with the License.
|
6
|
+
# You may obtain a copy of the License at
|
7
|
+
#
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
#
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
# See the License for the specific language governing permissions and
|
14
|
+
# limitations under the License.
|
15
|
+
#++
|
16
|
+
require_relative "../action"
|
17
|
+
|
18
|
+
module Vagrant
|
19
|
+
module Openshift
|
20
|
+
module Commands
|
21
|
+
class DownloadArtifactsSti < Vagrant.plugin(2, :command)
|
22
|
+
include CommandHelper
|
23
|
+
|
24
|
+
def self.synopsis
|
25
|
+
"download the origin test artifacts"
|
26
|
+
end
|
27
|
+
|
28
|
+
def execute
|
29
|
+
options = {}
|
30
|
+
|
31
|
+
opts = OptionParser.new do |o|
|
32
|
+
o.banner = "Usage: vagrant download-artifacts-sti [machine-name]"
|
33
|
+
o.separator ""
|
34
|
+
end
|
35
|
+
|
36
|
+
# Parse the options
|
37
|
+
argv = parse_options(opts)
|
38
|
+
return if !argv
|
39
|
+
|
40
|
+
with_target_vms(argv, :reverse => true) do |machine|
|
41
|
+
actions = Vagrant::Openshift::Action.download_sti_artifacts(options)
|
42
|
+
@env.action_runner.run actions, {:machine => machine}
|
43
|
+
0
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
@@ -18,11 +18,11 @@ require_relative "../action"
|
|
18
18
|
module Vagrant
|
19
19
|
module Openshift
|
20
20
|
module Commands
|
21
|
-
class
|
21
|
+
class InstallOrigin < Vagrant.plugin(2, :command)
|
22
22
|
include CommandHelper
|
23
23
|
|
24
24
|
def self.synopsis
|
25
|
-
"installs
|
25
|
+
"installs origin"
|
26
26
|
end
|
27
27
|
|
28
28
|
def execute
|
@@ -30,7 +30,7 @@ module Vagrant
|
|
30
30
|
options[:clean] = false
|
31
31
|
|
32
32
|
opts = OptionParser.new do |o|
|
33
|
-
o.banner = "Usage: vagrant install-
|
33
|
+
o.banner = "Usage: vagrant install-origin [vm-name]"
|
34
34
|
o.separator ""
|
35
35
|
end
|
36
36
|
|
@@ -39,7 +39,7 @@ module Vagrant
|
|
39
39
|
return if !argv
|
40
40
|
|
41
41
|
with_target_vms(argv, :reverse => true) do |machine|
|
42
|
-
actions = Vagrant::Openshift::Action.
|
42
|
+
actions = Vagrant::Openshift::Action.install_origin(options)
|
43
43
|
@env.action_runner.run actions, {:machine => machine}
|
44
44
|
0
|
45
45
|
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
#--
|
2
|
+
# Copyright 2013 Red Hat, Inc.
|
3
|
+
#
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
# you may not use this file except in compliance with the License.
|
6
|
+
# You may obtain a copy of the License at
|
7
|
+
#
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
#
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
# See the License for the specific language governing permissions and
|
14
|
+
# limitations under the License.
|
15
|
+
#++
|
16
|
+
require_relative "../action"
|
17
|
+
|
18
|
+
module Vagrant
|
19
|
+
module Openshift
|
20
|
+
module Commands
|
21
|
+
class InstallOriginAssetsBase < Vagrant.plugin(2, :command)
|
22
|
+
include CommandHelper
|
23
|
+
|
24
|
+
def self.synopsis
|
25
|
+
"installs origin asset dependencies"
|
26
|
+
end
|
27
|
+
|
28
|
+
def execute
|
29
|
+
options = {}
|
30
|
+
|
31
|
+
opts = OptionParser.new do |o|
|
32
|
+
o.banner = "Usage: vagrant install-origin-assets-base [vm-name]"
|
33
|
+
o.separator ""
|
34
|
+
end
|
35
|
+
|
36
|
+
# Parse the options
|
37
|
+
argv = parse_options(opts)
|
38
|
+
return if !argv
|
39
|
+
|
40
|
+
with_target_vms(argv, :reverse => true) do |machine|
|
41
|
+
actions = Vagrant::Openshift::Action.install_origin_assets_base(options)
|
42
|
+
@env.action_runner.run actions, {:machine => machine}
|
43
|
+
0
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
@@ -18,11 +18,11 @@ require_relative "../action"
|
|
18
18
|
module Vagrant
|
19
19
|
module Openshift
|
20
20
|
module Commands
|
21
|
-
class
|
21
|
+
class LocalOriginSetup < Vagrant.plugin(2, :command)
|
22
22
|
include CommandHelper
|
23
23
|
|
24
24
|
def self.synopsis
|
25
|
-
"clones the
|
25
|
+
"clones the origin repos into the current directory"
|
26
26
|
end
|
27
27
|
|
28
28
|
def execute
|
@@ -32,14 +32,14 @@ module Vagrant
|
|
32
32
|
}
|
33
33
|
|
34
34
|
opts = OptionParser.new do |o|
|
35
|
-
o.banner = "Usage: vagrant
|
35
|
+
o.banner = "Usage: vagrant origin-local-checkout [options]"
|
36
36
|
o.separator ""
|
37
37
|
|
38
38
|
o.on("-b [branch-name]", "--branch [branch-name]", String, "Check out the specified branch. Default is 'master'.") do |f|
|
39
39
|
options[:branch] = f
|
40
40
|
end
|
41
41
|
|
42
|
-
o.on("-u [username]", "--user [username]", String, "Your GitHub username. If provided, Vagrant will attempt to clone your forks of the Origin repos. If not provided, or if the forks cannot be found, Vagrant will clone read-only copies of the
|
42
|
+
o.on("-u [username]", "--user [username]", String, "Your GitHub username. If provided, Vagrant will attempt to clone your forks of the Origin repos. If not provided, or if the forks cannot be found, Vagrant will clone read-only copies of the Origin repos.") do |f|
|
43
43
|
options[:user] = f
|
44
44
|
end
|
45
45
|
|
@@ -52,7 +52,7 @@ module Vagrant
|
|
52
52
|
argv = parse_options(opts)
|
53
53
|
return if !argv
|
54
54
|
|
55
|
-
actions = Vagrant::Openshift::Action.
|
55
|
+
actions = Vagrant::Openshift::Action.local_origin_checkout(options)
|
56
56
|
@env.action_runner.run actions
|
57
57
|
0
|
58
58
|
end
|
@@ -37,18 +37,18 @@ module Vagrant
|
|
37
37
|
:no_insert_key => false
|
38
38
|
}
|
39
39
|
|
40
|
-
valid_stage = ['os','deps','inst'
|
41
|
-
valid_os = ['centos7','fedora','rhel7','rhelatomic7']
|
40
|
+
valid_stage = ['os','deps','inst']
|
41
|
+
valid_os = ['centos7','fedora','rhel7','rhel7next','rhelatomic7']
|
42
42
|
|
43
43
|
opts = OptionParser.new do |o|
|
44
44
|
o.banner = "Usage: vagrant origin-init [vm or instance name]"
|
45
45
|
o.separator ""
|
46
46
|
|
47
|
-
o.on("-s [stage]", "--stage [stage]", String, "Specify what build state to start from:\n\tos = base operating system\n\tdeps = only dependencies installed\n\tinst = dev environment [default]
|
47
|
+
o.on("-s [stage]", "--stage [stage]", String, "Specify what build state to start from:\n\tos = base operating system\n\tdeps = only dependencies installed\n\tinst = dev environment [default]") do |f|
|
48
48
|
options[:stage] = f
|
49
49
|
end
|
50
50
|
|
51
|
-
o.on("-o [name]", "--os [name]", String, "Operating system:\n\tcentos7 [default]\n\tfedora\n\trhel7\n\trhelatomic7") do |f|
|
51
|
+
o.on("-o [name]", "--os [name]", String, "Operating system:\n\tcentos7 [default]\n\tfedora\n\trhel7\n\trhel7next\n\trhelatomic7") do |f|
|
52
52
|
options[:os] = f
|
53
53
|
end
|
54
54
|
|