minke 0.16.0 → 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.
- checksums.yaml +8 -8
- data/.codeclimate.yml +7 -0
- data/.gitignore +1 -0
- data/.ruby-version +1 -1
- data/.travis.yml +4 -1
- data/Gemfile +5 -0
- data/Guardfile +70 -0
- data/README.md +12 -9
- data/bin/minke +48 -0
- data/examples/config_go.yml +44 -25
- data/lib/minke/config/config.rb +326 -0
- data/lib/minke/config/reader.rb +94 -0
- data/lib/minke/docker/docker_compose.rb +53 -0
- data/lib/minke/docker/docker_runner.rb +123 -0
- data/lib/minke/docker/service_discovery.rb +24 -0
- data/lib/minke/docker/system_runner.rb +16 -0
- data/lib/minke/generators/config.rb +106 -0
- data/lib/minke/generators/config_processor.rb +47 -0
- data/lib/minke/generators/config_variables.rb +23 -0
- data/lib/minke/generators/processor.rb +131 -0
- data/lib/minke/generators/register.rb +19 -0
- data/lib/minke/helpers/helper.rb +68 -0
- data/lib/minke/rake/app.rake +50 -198
- data/lib/minke/rake/config.rake +1 -5
- data/lib/minke/rake/docker.rake +7 -5
- data/lib/minke/tasks/build.rb +17 -0
- data/lib/minke/tasks/build_image.rb +13 -0
- data/lib/minke/tasks/cucumber.rb +34 -0
- data/lib/minke/tasks/fetch.rb +16 -0
- data/lib/minke/tasks/push.rb +22 -0
- data/lib/minke/tasks/run.rb +23 -0
- data/lib/minke/tasks/task.rb +107 -0
- data/lib/minke/tasks/test.rb +17 -0
- data/lib/minke/version.rb +1 -1
- data/lib/minke.rb +33 -9
- data/minke.gemspec +16 -11
- metadata +84 -9
- data/lib/minke/commands/go.rb +0 -27
- data/lib/minke/commands/swift.rb +0 -32
- data/lib/minke/docker.rb +0 -122
- data/lib/minke/docker_compose.rb +0 -31
- data/lib/minke/helpers.rb +0 -56
data/lib/minke.rb
CHANGED
@@ -1,15 +1,39 @@
|
|
1
|
-
require 'docker'
|
2
|
-
require 'yaml'
|
3
|
-
require 'rest-client'
|
4
1
|
require 'consul_loader'
|
5
|
-
require '
|
2
|
+
require 'docker'
|
6
3
|
require 'erb'
|
4
|
+
require 'fileutils'
|
5
|
+
require 'logger'
|
6
|
+
require 'rake'
|
7
7
|
require 'resolv'
|
8
|
+
require 'rest-client'
|
9
|
+
require 'rubygems'
|
10
|
+
require 'yaml'
|
11
|
+
require 'colorize'
|
12
|
+
require 'multi_json'
|
8
13
|
|
9
14
|
require 'minke/version'
|
10
|
-
require 'minke/docker'
|
11
|
-
require 'minke/docker_compose'
|
12
|
-
require 'minke/helpers'
|
13
15
|
|
14
|
-
require 'minke/
|
15
|
-
|
16
|
+
require 'minke/helpers/helper'
|
17
|
+
|
18
|
+
require 'minke/docker/docker_compose'
|
19
|
+
require 'minke/docker/docker_runner'
|
20
|
+
require 'minke/docker/system_runner'
|
21
|
+
require 'minke/docker/service_discovery'
|
22
|
+
|
23
|
+
require 'minke/config/config'
|
24
|
+
require 'minke/config/reader'
|
25
|
+
|
26
|
+
require 'minke/tasks/task'
|
27
|
+
require 'minke/tasks/build'
|
28
|
+
require 'minke/tasks/cucumber'
|
29
|
+
require 'minke/tasks/fetch'
|
30
|
+
require 'minke/tasks/push'
|
31
|
+
require 'minke/tasks/run'
|
32
|
+
require 'minke/tasks/test'
|
33
|
+
require 'minke/tasks/build_image'
|
34
|
+
|
35
|
+
require 'minke/generators/config'
|
36
|
+
require 'minke/generators/config_processor'
|
37
|
+
require 'minke/generators/config_variables'
|
38
|
+
require 'minke/generators/processor'
|
39
|
+
require 'minke/generators/register'
|
data/minke.gemspec
CHANGED
@@ -4,26 +4,31 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
4
|
require 'minke/version'
|
5
5
|
|
6
6
|
Gem::Specification.new do |spec|
|
7
|
-
spec.name =
|
7
|
+
spec.name = 'minke'
|
8
8
|
spec.version = Minke::VERSION
|
9
|
-
spec.authors = [
|
10
|
-
spec.email = [
|
9
|
+
spec.authors = ['Nic Jackson']
|
10
|
+
spec.email = ['jackson.nic@gmail.com']
|
11
11
|
|
12
|
-
spec.summary =
|
13
|
-
spec.homepage =
|
14
|
-
spec.license =
|
12
|
+
spec.summary = 'Minke is a suite of rake tasks for building and testing microservices with Docker. Currently supporting Google Go, Node.js services are coming soon.'
|
13
|
+
spec.homepage = 'https://github.com/nicholasjackson/minke'
|
14
|
+
spec.license = 'MIT'
|
15
15
|
|
16
16
|
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
17
|
-
spec.bindir =
|
17
|
+
spec.bindir = 'bin'
|
18
18
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
19
|
-
spec.
|
19
|
+
spec.executables << 'minke'
|
20
|
+
spec.require_paths = ['lib']
|
20
21
|
|
21
|
-
spec.add_development_dependency
|
22
|
-
spec.add_development_dependency
|
22
|
+
spec.add_development_dependency 'bundler', '~> 1.10'
|
23
|
+
spec.add_development_dependency 'rspec'
|
24
|
+
spec.add_development_dependency 'guard'
|
25
|
+
spec.add_development_dependency 'guard-rspec'
|
23
26
|
|
27
|
+
spec.add_runtime_dependency 'colorize'
|
24
28
|
spec.add_runtime_dependency 'cucumber'
|
25
|
-
spec.add_runtime_dependency 'rake',
|
29
|
+
spec.add_runtime_dependency 'rake', '~> 10.0'
|
26
30
|
spec.add_runtime_dependency 'docker-api'
|
27
31
|
spec.add_runtime_dependency 'rest-client', '~> 1.8'
|
28
32
|
spec.add_runtime_dependency 'consul_loader', '~> 1.0'
|
33
|
+
spec.add_runtime_dependency 'multi_json'
|
29
34
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: minke
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nic Jackson
|
8
8
|
autorequire:
|
9
|
-
bindir:
|
9
|
+
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-05-
|
11
|
+
date: 2016-05-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -38,6 +38,48 @@ dependencies:
|
|
38
38
|
- - ! '>='
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: guard
|
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: guard-rspec
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ! '>='
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: colorize
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ! '>='
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :runtime
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ! '>='
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
41
83
|
- !ruby/object:Gem::Dependency
|
42
84
|
name: cucumber
|
43
85
|
requirement: !ruby/object:Gem::Requirement
|
@@ -108,13 +150,29 @@ dependencies:
|
|
108
150
|
- - ~>
|
109
151
|
- !ruby/object:Gem::Version
|
110
152
|
version: '1.0'
|
153
|
+
- !ruby/object:Gem::Dependency
|
154
|
+
name: multi_json
|
155
|
+
requirement: !ruby/object:Gem::Requirement
|
156
|
+
requirements:
|
157
|
+
- - ! '>='
|
158
|
+
- !ruby/object:Gem::Version
|
159
|
+
version: '0'
|
160
|
+
type: :runtime
|
161
|
+
prerelease: false
|
162
|
+
version_requirements: !ruby/object:Gem::Requirement
|
163
|
+
requirements:
|
164
|
+
- - ! '>='
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: '0'
|
111
167
|
description:
|
112
168
|
email:
|
113
169
|
- jackson.nic@gmail.com
|
114
|
-
executables:
|
170
|
+
executables:
|
171
|
+
- minke
|
115
172
|
extensions: []
|
116
173
|
extra_rdoc_files: []
|
117
174
|
files:
|
175
|
+
- .codeclimate.yml
|
118
176
|
- .gitignore
|
119
177
|
- .rspec
|
120
178
|
- .ruby-gemset
|
@@ -122,22 +180,39 @@ files:
|
|
122
180
|
- .travis.yml
|
123
181
|
- CODE_OF_CONDUCT.md
|
124
182
|
- Gemfile
|
183
|
+
- Guardfile
|
125
184
|
- LICENSE.txt
|
126
185
|
- README.md
|
127
186
|
- Rakefile
|
128
187
|
- bin/console
|
188
|
+
- bin/minke
|
129
189
|
- bin/setup
|
130
190
|
- examples/config_go.yml
|
131
191
|
- examples/config_swift.yml
|
132
192
|
- lib/minke.rb
|
133
|
-
- lib/minke/
|
134
|
-
- lib/minke/
|
135
|
-
- lib/minke/docker.rb
|
136
|
-
- lib/minke/
|
137
|
-
- lib/minke/
|
193
|
+
- lib/minke/config/config.rb
|
194
|
+
- lib/minke/config/reader.rb
|
195
|
+
- lib/minke/docker/docker_compose.rb
|
196
|
+
- lib/minke/docker/docker_runner.rb
|
197
|
+
- lib/minke/docker/service_discovery.rb
|
198
|
+
- lib/minke/docker/system_runner.rb
|
199
|
+
- lib/minke/generators/config.rb
|
200
|
+
- lib/minke/generators/config_processor.rb
|
201
|
+
- lib/minke/generators/config_variables.rb
|
202
|
+
- lib/minke/generators/processor.rb
|
203
|
+
- lib/minke/generators/register.rb
|
204
|
+
- lib/minke/helpers/helper.rb
|
138
205
|
- lib/minke/rake/app.rake
|
139
206
|
- lib/minke/rake/config.rake
|
140
207
|
- lib/minke/rake/docker.rake
|
208
|
+
- lib/minke/tasks/build.rb
|
209
|
+
- lib/minke/tasks/build_image.rb
|
210
|
+
- lib/minke/tasks/cucumber.rb
|
211
|
+
- lib/minke/tasks/fetch.rb
|
212
|
+
- lib/minke/tasks/push.rb
|
213
|
+
- lib/minke/tasks/run.rb
|
214
|
+
- lib/minke/tasks/task.rb
|
215
|
+
- lib/minke/tasks/test.rb
|
141
216
|
- lib/minke/version.rb
|
142
217
|
- minke.gemspec
|
143
218
|
homepage: https://github.com/nicholasjackson/minke
|
data/lib/minke/commands/go.rb
DELETED
@@ -1,27 +0,0 @@
|
|
1
|
-
module Minke
|
2
|
-
module Commands
|
3
|
-
class Go
|
4
|
-
def commands config
|
5
|
-
{
|
6
|
-
:build => {
|
7
|
-
:get => [['go','get','-t','-v','-d','./...']],
|
8
|
-
:build => [['go','build','-a','-installsuffix','cgo','-ldflags','\'-s\'','-o', "#{config['application_name']}"]],
|
9
|
-
:test => [['go','test','./...']]
|
10
|
-
},
|
11
|
-
:docker => {
|
12
|
-
:image => 'golang:latest',
|
13
|
-
:env => ['CGO_ENABLED=0'],
|
14
|
-
:binds => ["#{ENV['GOPATH']}/src:/go/src"],
|
15
|
-
:working_directory => "#{working_directory}"
|
16
|
-
}
|
17
|
-
}
|
18
|
-
end
|
19
|
-
|
20
|
-
def working_directory
|
21
|
-
dir = File.expand_path('../.')
|
22
|
-
gopath = "#{ENV['GOPATH']}"
|
23
|
-
new_dir = "/go" + dir.gsub(gopath,'')
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
data/lib/minke/commands/swift.rb
DELETED
@@ -1,32 +0,0 @@
|
|
1
|
-
module Minke
|
2
|
-
module Commands
|
3
|
-
class Swift
|
4
|
-
def commands config
|
5
|
-
{
|
6
|
-
:build => {
|
7
|
-
:get => [
|
8
|
-
['swift', 'build', '--fetch'],
|
9
|
-
# ['bash','-c', "find /src/Packages/ -type d -name Tests -exec echo {} && rm -rf {} \\;"]
|
10
|
-
['bash','-c', "find /src/Packages/ -type d -name Tests | xargs rm -rf"]
|
11
|
-
],
|
12
|
-
:build => [
|
13
|
-
['rm', '-rf', '.build'],
|
14
|
-
['swift', 'build', '-Xcc', '-fblocks','-Xlinker', '-rpath', '-Xlinker', '.build/debug']
|
15
|
-
],
|
16
|
-
:test => [['swift', 'test']],
|
17
|
-
},
|
18
|
-
:docker => {
|
19
|
-
:image => 'ibmcom/kitura-ubuntu:latest',
|
20
|
-
:binds => ["#{source_directory}:/src"],
|
21
|
-
:working_directory => "/src"
|
22
|
-
}
|
23
|
-
}
|
24
|
-
end
|
25
|
-
|
26
|
-
def source_directory
|
27
|
-
Dir.pwd if File.exists?('Package.swift')
|
28
|
-
File.expand_path('../.') if File.exists?('../Package.swift')
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
data/lib/minke/docker.rb
DELETED
@@ -1,122 +0,0 @@
|
|
1
|
-
module Minke
|
2
|
-
class Docker
|
3
|
-
def self.get_docker_ip_address
|
4
|
-
if ENV['DOCKER_HOST']
|
5
|
-
# dockerhost set
|
6
|
-
host = ENV['DOCKER_HOST'].dup
|
7
|
-
host.gsub!(/tcp:\/\//, '')
|
8
|
-
host.gsub!(/:\d+/,'')
|
9
|
-
|
10
|
-
return host
|
11
|
-
elsif ENV['DOCKER_IP']
|
12
|
-
return ENV['DOCKER_IP']
|
13
|
-
else
|
14
|
-
throw "Please set the environment variable DOCKER_HOST or DOCKER_IP with the ip address of your docker instance."
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
def self.find_image image_name
|
19
|
-
found = nil
|
20
|
-
::Docker::Image.all.each do | image |
|
21
|
-
found = image if image.info["RepoTags"].include? image_name
|
22
|
-
end
|
23
|
-
|
24
|
-
return found
|
25
|
-
end
|
26
|
-
|
27
|
-
def self.pull_image image_name
|
28
|
-
puts "Pulling Image: #{image_name}"
|
29
|
-
puts `docker pull #{image_name}`
|
30
|
-
end
|
31
|
-
|
32
|
-
def self.get_container args
|
33
|
-
container = self.find_running_container
|
34
|
-
if container != nil
|
35
|
-
return container
|
36
|
-
else
|
37
|
-
return self.create_and_start_container(args)
|
38
|
-
end
|
39
|
-
end
|
40
|
-
|
41
|
-
def self.find_running_container
|
42
|
-
containers = ::Docker::Container.all(:all => true)
|
43
|
-
found = nil
|
44
|
-
|
45
|
-
containers.each do | container |
|
46
|
-
if container.info["Image"] == "golang" && container.info["Status"].start_with?("Up")
|
47
|
-
return container
|
48
|
-
end
|
49
|
-
end
|
50
|
-
|
51
|
-
return nil
|
52
|
-
end
|
53
|
-
|
54
|
-
def self.create_and_start_container args
|
55
|
-
# update the timeout for the Excon Http Client
|
56
|
-
# set the chunk size to enable streaming of log files
|
57
|
-
::Docker.options = {:chunk_size => 1, :read_timeout => 3600}
|
58
|
-
|
59
|
-
container = ::Docker::Container.create(
|
60
|
-
'Image' => args['build_args']['image'],
|
61
|
-
'Cmd' => ['/bin/bash'],
|
62
|
-
'Tty' => true,
|
63
|
-
"Binds" => ["#{ENV['GOPATH']}/src:/go/src"],
|
64
|
-
"Env" => args['build_args']['env'],
|
65
|
-
'WorkingDir' => args['build_args']['working_directory'])
|
66
|
-
container.start
|
67
|
-
|
68
|
-
return container
|
69
|
-
end
|
70
|
-
|
71
|
-
def self.create_and_run_container args, cmd
|
72
|
-
# update the timeout for the Excon Http Client
|
73
|
-
# set the chunk size to enable streaming of log files
|
74
|
-
::Docker.options = {:chunk_size => 1, :read_timeout => 3600}
|
75
|
-
container = ::Docker::Container.create(
|
76
|
-
'Image' => args[:build_config][:docker][:image],
|
77
|
-
'Cmd' => cmd,
|
78
|
-
"Binds" => args[:build_config][:docker][:binds],
|
79
|
-
"Env" => args[:build_config][:docker][:env],
|
80
|
-
'WorkingDir' => args[:build_config][:docker][:working_directory])
|
81
|
-
|
82
|
-
return_code = 0
|
83
|
-
|
84
|
-
thread = Thread.new {
|
85
|
-
container.attach { |stream, chunk|
|
86
|
-
puts "#{chunk}"
|
87
|
-
|
88
|
-
if stream.to_s == "stdout"
|
89
|
-
return_code = 0
|
90
|
-
else
|
91
|
-
return_code = 1
|
92
|
-
end
|
93
|
-
}
|
94
|
-
}
|
95
|
-
container.start
|
96
|
-
thread.join
|
97
|
-
|
98
|
-
return container, return_code
|
99
|
-
end
|
100
|
-
|
101
|
-
def self.delete_container container
|
102
|
-
if container != nil
|
103
|
-
begin
|
104
|
-
container.delete()
|
105
|
-
rescue => e
|
106
|
-
puts "Error: Unable to delete container"
|
107
|
-
end
|
108
|
-
end
|
109
|
-
end
|
110
|
-
|
111
|
-
def self.tag_and_push args
|
112
|
-
image = self.find_image "#{args['go']['application_name']}:latest"
|
113
|
-
image.tag('repo' => "#{args['docker_registry']['namespace']}/#{args['go']['application_name']}", 'force' => true) unless image.info["RepoTags"].include? "#{args['docker_registry']['namespace']}/#{args['go']['application_name']}:latest"
|
114
|
-
|
115
|
-
system("docker login -u #{args['docker_registry']['user']} -p #{args['docker_registry']['password']} -e #{args['docker_registry']['email']} #{args['docker_registry']['url']}")
|
116
|
-
abort "Unable to login" unless $?.exitstatus == 0
|
117
|
-
|
118
|
-
system("docker push #{args['docker_registry']['namespace']}/#{args['go']['application_name']}:latest")
|
119
|
-
abort "Unable to push to registry" unless $?.exitstatus == 0
|
120
|
-
end
|
121
|
-
end
|
122
|
-
end
|
data/lib/minke/docker_compose.rb
DELETED
@@ -1,31 +0,0 @@
|
|
1
|
-
module Minke
|
2
|
-
class DockerCompose
|
3
|
-
@compose_file = nil
|
4
|
-
|
5
|
-
def initialize compose_file
|
6
|
-
@compose_file = compose_file
|
7
|
-
end
|
8
|
-
|
9
|
-
def up
|
10
|
-
execute "docker-compose -f #{@compose_file} up -d"
|
11
|
-
sleep 2
|
12
|
-
end
|
13
|
-
|
14
|
-
def stop
|
15
|
-
execute "docker-compose -f #{@compose_file} stop"
|
16
|
-
end
|
17
|
-
|
18
|
-
def rm
|
19
|
-
execute "echo y | docker-compose -f #{@compose_file} rm -v"
|
20
|
-
end
|
21
|
-
|
22
|
-
def logs
|
23
|
-
execute "docker-compose -f #{@compose_file} logs -f"
|
24
|
-
end
|
25
|
-
|
26
|
-
private
|
27
|
-
def execute command
|
28
|
-
system("#{command}")
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
data/lib/minke/helpers.rb
DELETED
@@ -1,56 +0,0 @@
|
|
1
|
-
module Minke
|
2
|
-
class Helpers
|
3
|
-
|
4
|
-
class << self
|
5
|
-
attr_accessor :config
|
6
|
-
end
|
7
|
-
|
8
|
-
@config = nil
|
9
|
-
|
10
|
-
def self.wait_until_server_running server, count, successes = 0
|
11
|
-
begin
|
12
|
-
response = RestClient.send("get", server)
|
13
|
-
rescue
|
14
|
-
|
15
|
-
end
|
16
|
-
|
17
|
-
if response == nil || !response.code.to_i == 200
|
18
|
-
puts "Waiting for server #{server} to start"
|
19
|
-
sleep 1
|
20
|
-
if count < 20
|
21
|
-
self.wait_until_server_running server, count + 1
|
22
|
-
else
|
23
|
-
raise 'Server failed to start'
|
24
|
-
end
|
25
|
-
else
|
26
|
-
if successes > 0
|
27
|
-
puts "Server: #{server} passed health check, #{successes} checks to go..."
|
28
|
-
sleep 1
|
29
|
-
self.wait_until_server_running server, count + 1, successes - 1
|
30
|
-
else
|
31
|
-
puts "Server: #{server} healthy"
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
def self.load_config config_file
|
37
|
-
@config = YAML.parse(ERB.new(File.read(config_file)).result).transform
|
38
|
-
|
39
|
-
@config[:build_config] = Minke::Commands::Go.new.commands(@config) unless @config['language'] != 'go'
|
40
|
-
@config[:build_config] = Minke::Commands::Swift.new.commands(@config) unless @config['language'] != 'swift'
|
41
|
-
end
|
42
|
-
|
43
|
-
def self.copy_files assets
|
44
|
-
assets.each do |a|
|
45
|
-
directory = a['to']
|
46
|
-
if File.directory?(a['to'])
|
47
|
-
directory = File.dirname(a['to'])
|
48
|
-
end
|
49
|
-
|
50
|
-
Dir.mkdir directory unless Dir.exist? a['to']
|
51
|
-
FileUtils.cp a['from'], a['to']
|
52
|
-
end
|
53
|
-
end
|
54
|
-
|
55
|
-
end
|
56
|
-
end
|