mr-shipper 0.0.4 → 0.0.5

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,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1d8bafba34011cd5cae3f192c1295fe9000a7e7fef372e87dff5d5aa9ddc3e87
4
- data.tar.gz: 037550c907e063a829f97b66a039a1fda746c500572c07728c6e2c8c7ebe156c
3
+ metadata.gz: 31a86d4c088e0331f1ee1a54b56bec7ad625064c32da630c0c2e1d18089df45d
4
+ data.tar.gz: bc8d182606080ab3be29c8761d6d38b7416ff5b349cc5213a07b4ff3f14261ec
5
5
  SHA512:
6
- metadata.gz: 905efb0a06fb836bbee45683da2a0c7c5d13a3f21b48ff9b1036865201536548b10f95c5615f6091e95c552e8fb4f0b5aac3d0f456c27eb05210b1b593cee526
7
- data.tar.gz: c84bbf53143af3e6272e1e10f4f047ce3c92e9c37d7d4cd00f91e9c471acf39551ca77f1fa194405ed0f5afaf7e34f95aa654a89631bbe6594d772566cff7b65
6
+ metadata.gz: 2f110e2d4973736e313503c6d5a032cd33ddda218eaa43f662accabd970cdf33ca36cd0c9baa5a14f40381524eab9410e781b633cd4385ae0efa6e4fe4bb2118
7
+ data.tar.gz: c8dbaeea4aa1deeaec1b7c4ad9a10a6e9c60dee949d5914f93177bb8747f845f05e09fe8d7615c11db35259189f31371ae198abb9c4ade9e2d09a0b6e839f2a1
@@ -6,11 +6,35 @@ require 'yaml'
6
6
 
7
7
  module Shipper
8
8
  class Config < ::OpenStruct
9
- include Singleton
9
+ def initialize(config_path: nil, env: nil)
10
+ config_path ||= "#{Dir.pwd}/shipper.yml"
11
+ env ||= 'production'
10
12
 
11
- def initialize
12
- config = ::YAML::load_file("#{Dir.pwd}/shipper.yml")
13
+ config = load_env_config(config_path, env)
13
14
  super(config)
14
15
  end
16
+
17
+ private
18
+
19
+ def load_env_config(config_path, env)
20
+ full_config = ::YAML.load_file(config_path)
21
+ check_env_available!(full_config, env)
22
+
23
+ hosts = full_config.delete('hosts')
24
+ services = full_config.delete('services')
25
+
26
+ full_config['host'] = hosts[env]
27
+ full_config['services'] = services[env]
28
+ full_config
29
+ end
30
+
31
+ def check_env_available!(config, env)
32
+ services = !config.dig('services', env).nil?
33
+ hosts = !config.dig('hosts', env).nil?
34
+
35
+ puts "Error: No host available for env '#{env}'" unless hosts
36
+ puts "Error: No services available for env '#{env}'" unless services
37
+ exit(0) if !hosts || !services
38
+ end
15
39
  end
16
40
  end
@@ -32,7 +32,7 @@ module Shipper
32
32
 
33
33
  def load_services
34
34
  config.services
35
- .select { |name, _| !service_ignored?(name) }
35
+ .reject { |name, _| service_ignored?(name) }
36
36
  .map { |name, config| ::Shipper::Service.new(name, config) }
37
37
  end
38
38
 
@@ -25,7 +25,7 @@ module Shipper
25
25
  def exec_host(cmd)
26
26
  logger.bold("Exec host '#{cmd}'")
27
27
 
28
- host_bash.exec!("cd #{path}; #{cmd}") do |channel, stream, data|
28
+ host_bash.exec!("cd #{path}; #{cmd}") do |_channel, _stream, data|
29
29
  logger.puts(data)
30
30
  end
31
31
  end
@@ -34,11 +34,11 @@ module Shipper
34
34
  logger.bold("Exec local '#{cmd}'")
35
35
 
36
36
  Dir.chdir(path) do
37
- Open3.popen3(cmd) do |stdin, stdout, stderr, wait_thr|
37
+ Open3.popen3(cmd) do |_stdin, stdout, stderr, wait_thread|
38
38
  logger.puts(stdout.gets)
39
- logger.puts(stderr.gets)
39
+ logger.puts(stderr.gets)
40
40
 
41
- wait_thr.value
41
+ wait_thread.value
42
42
  end
43
43
  end
44
44
  end
data/lib/shipper/run.rb CHANGED
@@ -5,8 +5,9 @@ module Shipper
5
5
  attr_reader :config, :options
6
6
 
7
7
  def initialize(options)
8
+ @config = ::Shipper::Config.new(env: options[0] || 'production')
8
9
  @options = options.empty? ? nil : options
9
- @config = ::Shipper::Config.instance
10
+ @options&.delete(0) # remove env
10
11
  end
11
12
 
12
13
  def perform
@@ -13,7 +13,7 @@ module Shipper
13
13
 
14
14
  def ship!
15
15
  executor.cd(path)
16
- before_build.each { |cmd| exec(cmd) } if before_build
16
+ before_build&.each { |cmd| exec(cmd) }
17
17
  exec "docker build . -t #{repo}"
18
18
  exec "docker push #{repo}"
19
19
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mr-shipper
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rostyslav Safonov
@@ -11,33 +11,33 @@ cert_chain: []
11
11
  date: 2019-06-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: net-ssh
14
+ name: colorize
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - '='
18
18
  - !ruby/object:Gem::Version
19
- version: '5.1'
19
+ version: 0.8.1
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - '='
25
25
  - !ruby/object:Gem::Version
26
- version: '5.1'
26
+ version: 0.8.1
27
27
  - !ruby/object:Gem::Dependency
28
- name: colorize
28
+ name: net-ssh
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - '='
32
32
  - !ruby/object:Gem::Version
33
- version: 0.8.1
33
+ version: '5.1'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - '='
39
39
  - !ruby/object:Gem::Version
40
- version: 0.8.1
40
+ version: '5.1'
41
41
  description: The simple way to deploy docker-compose based apps
42
42
  email: elhowm@gmail.com
43
43
  executables:
@@ -75,7 +75,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
75
75
  - !ruby/object:Gem::Version
76
76
  version: '0'
77
77
  requirements: []
78
- rubygems_version: 3.0.3
78
+ rubygems_version: 3.0.6
79
79
  signing_key:
80
80
  specification_version: 4
81
81
  summary: Docker shipping