minos 0.2.1 → 0.3.1

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: 6e990511ea43438c9374a1205d0a15417da89a57ed4c57c190e1bfa36b72946d
4
- data.tar.gz: 1e7d4a3d6acbcbac2eab3705eb197fa9712e6bda4fe44f8c627801498483846f
3
+ metadata.gz: f3edf8ef19ced58587308297037a6e8b97f52bc7c8ac7b3860103f75590ce1ee
4
+ data.tar.gz: 0eae29c964734492960f12f895bcd6427a682bf7072bbffc19c40af64ae1dd02
5
5
  SHA512:
6
- metadata.gz: 4e810c0cef87e648d29673b417461cf2e8b1a4dd4481372baa00eeccfafdc2fe63824b4b7165158f49d013bf8acfec6d70897626b3e8607fd8dc7068131337d1
7
- data.tar.gz: 4561bf59c5110afd9e6f87ac21d0b16e481a5d6a334ca68d14c02f12b70d49ad7895813f5d24d19d2283929264acb1d3e6b18749bced538c05e5f8dc46a9e5c2
6
+ metadata.gz: 80205457db0bd8e437564c0327bcea5ce5f1c103e2366d51169256068579326c92899291a13e4d2f4dc2f97d57a6799fd6dab2936f15b269c2117cf2e086f454
7
+ data.tar.gz: ed251dbd5fbf9e06495afe41d16127b7115f0ea5474f8d45ea8f9c963f015b80ab7fb8ef2b3c69f39bf3b84783cb1dfe6b4ccbc03e89ae8dc17b142319db8506
@@ -1,10 +1,11 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- minos (0.2.1)
4
+ minos (0.3.1)
5
5
  activesupport (~> 5.2)
6
+ dry-matcher (~> 0.7)
7
+ dry-monads (~> 1.2)
6
8
  thor (~> 0.20)
7
- wisper (~> 2.0)
8
9
 
9
10
  GEM
10
11
  remote: https://rubygems.org/
@@ -15,6 +16,14 @@ GEM
15
16
  minitest (~> 5.1)
16
17
  tzinfo (~> 1.1)
17
18
  concurrent-ruby (1.1.4)
19
+ dry-core (0.4.7)
20
+ concurrent-ruby (~> 1.0)
21
+ dry-equalizer (0.2.1)
22
+ dry-matcher (0.7.0)
23
+ dry-monads (1.2.0)
24
+ concurrent-ruby (~> 1.0)
25
+ dry-core (~> 0.4, >= 0.4.4)
26
+ dry-equalizer
18
27
  i18n (1.5.3)
19
28
  concurrent-ruby (~> 1.0)
20
29
  minitest (5.11.3)
@@ -23,7 +32,6 @@ GEM
23
32
  thread_safe (0.3.6)
24
33
  tzinfo (1.2.5)
25
34
  thread_safe (~> 0.1)
26
- wisper (2.0.0)
27
35
 
28
36
  PLATFORMS
29
37
  ruby
@@ -1,6 +1,7 @@
1
1
  require 'yaml'
2
2
  require 'thor'
3
- require 'wisper'
3
+ require "dry/monads/result"
4
+ require "dry/matcher/result_matcher"
4
5
 
5
6
  require 'minos/artifact'
6
7
  require 'minos/docker'
@@ -2,7 +2,7 @@ require 'active_support/core_ext/string/inflections'
2
2
 
3
3
  module Minos
4
4
  class Artifact
5
- include Wisper::Publisher
5
+ include Dry::Monads::Result::Mixin
6
6
 
7
7
  attr_reader :artifact, :options
8
8
 
@@ -16,8 +16,8 @@ module Minos
16
16
  end
17
17
 
18
18
  def pull
19
- caches.each do |name|
20
- docker_pull(name)
19
+ caches.map do |cache|
20
+ docker_pull(cache)
21
21
  end
22
22
  end
23
23
 
@@ -31,23 +31,29 @@ module Minos
31
31
 
32
32
  private
33
33
 
34
- def docker_pull(name)
35
- broadcast(:pulling_cache_artifact, name)
36
- run "docker inspect #{name} -f '{{json .ID}}' > /dev/null 2>&1 || docker pull #{name} 2> /dev/null"
34
+ def docker_pull(cache)
35
+ if run "docker inspect #{cache} -f '{{json .ID}}' > /dev/null 2>&1 || docker pull #{cache} 2> /dev/null"
36
+ Success(cache)
37
+ else
38
+ Failure(cache)
39
+ end
37
40
  end
38
41
 
39
42
  def docker_build
40
- broadcast(:building_artifact, name)
41
- run "docker build #{to_args(docker)} ."
42
- broadcast(:artifact_built, name)
43
+ if run "docker build #{to_args(docker)} ."
44
+ Success(name)
45
+ else
46
+ Failure(name)
47
+ end
43
48
  end
44
49
 
45
50
  def docker_push
46
- tags.each do |tag|
47
- broadcast(:tagging_artifact, "#{image}:#{target}", "#{image}:#{tag}")
48
- run "docker tag #{image}:#{target} #{image}:#{tag}"
49
- broadcast(:pushing_artifact, "#{image}:#{tag}")
50
- run "docker push #{image}:#{tag}"
51
+ tags.map do |tag|
52
+ if run "docker tag #{image}:#{target} #{image}:#{tag} && docker push #{image}:#{tag}"
53
+ Success("#{image}:#{tag}")
54
+ else
55
+ Failure("#{image}:#{tag}")
56
+ end
51
57
  end
52
58
  end
53
59
 
@@ -10,19 +10,30 @@ module Minos
10
10
  def build
11
11
  artifacts.each do |a|
12
12
  artifact = Artifact.new(a, options: options)
13
- artifact
14
- .on(:pulling_cache_artifact) do |name|
15
- say_status artifact.name, "Pulling #{name}"
16
- end
17
- .on(:building_artifact) do |name|
18
- say_status artifact.name, "Building #{name}"
19
- end
20
- .on(:artifact_built) do |name|
21
- say_status artifact.name, "Successfully built #{name}"
13
+
14
+ # Pull
15
+ artifact.pull.each do |result|
16
+ Dry::Matcher::ResultMatcher.(result) do |m|
17
+ m.success do |name|
18
+ say_status artifact.name, "Using #{name}"
19
+ end
20
+ m.failure do |name|
21
+ # noop
22
+ # failure here means we don't have docker image locally
23
+ end
24
+ end
22
25
  end
23
26
 
24
- artifact.pull
25
- artifact.build
27
+ # Build
28
+ Dry::Matcher::ResultMatcher.(artifact.build) do |m|
29
+ m.success do |name|
30
+ say_status artifact.name, "Successfully built #{name}"
31
+ end
32
+ m.failure do |name|
33
+ say_status artifact.name, "Failed building #{name}", :red
34
+ exit 1
35
+ end
36
+ end
26
37
  end
27
38
  end
28
39
 
@@ -30,15 +41,17 @@ module Minos
30
41
  def push
31
42
  artifacts.each do |a|
32
43
  artifact = Artifact.new(a, options: options)
33
- artifact
34
- .on(:tagging_artifact) do |source, target|
35
- say_status artifact.name, "Successfully tagged #{source} as #{target}"
36
- end
37
- .on(:pushing_artifact) do |name|
38
- say_status artifact.name, "Pushing #{name}"
44
+ artifact.push.each do |result|
45
+ Dry::Matcher::ResultMatcher.(result) do |m|
46
+ m.success do |name|
47
+ say_status artifact.name, "Successfully pushed #{name}"
48
+ end
49
+ m.failure do |name|
50
+ say_status artifact.name, "Failed pushing #{name}", :red
51
+ exit 1
52
+ end
53
+ end
39
54
  end
40
-
41
- artifact.push
42
55
  end
43
56
  end
44
57
 
@@ -1,3 +1,3 @@
1
1
  module Minos
2
- VERSION = '0.2.1'
2
+ VERSION = '0.3.1'
3
3
  end
@@ -25,7 +25,8 @@ Gem::Specification.new do |spec|
25
25
 
26
26
  spec.add_dependency "activesupport", "~> 5.2"
27
27
  spec.add_dependency "thor", "~> 0.20"
28
- spec.add_dependency "wisper", "~> 2.0"
28
+ spec.add_dependency "dry-matcher", "~> 0.7"
29
+ spec.add_dependency "dry-monads", "~> 1.2"
29
30
 
30
31
  spec.add_development_dependency "bundler", "~> 1.17"
31
32
  spec.add_development_dependency "rake", "~> 10.0"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: minos
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pierre-Louis Gottfrois
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-02-11 00:00:00.000000000 Z
11
+ date: 2019-02-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -39,19 +39,33 @@ dependencies:
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0.20'
41
41
  - !ruby/object:Gem::Dependency
42
- name: wisper
42
+ name: dry-matcher
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '2.0'
47
+ version: '0.7'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '2.0'
54
+ version: '0.7'
55
+ - !ruby/object:Gem::Dependency
56
+ name: dry-monads
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '1.2'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '1.2'
55
69
  - !ruby/object:Gem::Dependency
56
70
  name: bundler
57
71
  requirement: !ruby/object:Gem::Requirement