rake_fly 0.1.0 → 0.2.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3cf613111f2c5e1d2c0205b5c23c126585c89019
4
- data.tar.gz: 033cf0f005c46a3da63fcc1725939a21fce7f6ba
3
+ metadata.gz: e4bf1bbc17b24980ccc471561a0a0cdbaf673f16
4
+ data.tar.gz: c1e12d933c348eb99d6b9d1be6cedaa40cb6d31c
5
5
  SHA512:
6
- metadata.gz: 5f11c461c42e55b67299e0ffcc05dde3b174f8cba1409f8138aac560201909656e9ad8fdf178b96735528e048cdb32544d96268692d3461de38c24a01107d83e
7
- data.tar.gz: 40db1dd2c3ddbf63f81a13376018344387bd80c181fdb7f359227f16823ad8eccb5340e156bc80c8bffbc67a1716e307eb5766fd10bb4575bcc83bc8b12a682a
6
+ metadata.gz: 2139a4ac56dd00a912f727812d55c6ec8575d51f0b394d4786deadc32896d4f13d62736d57d7da7da4b85e6f0f0df3052f9ce6914bcc2d41615ba573c8826cfb
7
+ data.tar.gz: 5105099b44f29d541e35986eb9e790aad54d13333a307e9d1a8345e8473e7c697c0c159e3c76ecda908efa0d09850771a0014859f3da440614347a951c6a47bb
data/Gemfile.lock CHANGED
@@ -1,14 +1,39 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- rake_fly (0.1.0)
4
+ rake_fly (0.2.0)
5
+ rake_dependencies (~> 0.15)
6
+ ruby_fly (~> 0.4)
5
7
 
6
8
  GEM
7
9
  remote: https://rubygems.org/
8
10
  specs:
11
+ activesupport (4.2.7.1)
12
+ i18n (~> 0.7)
13
+ json (~> 1.7, >= 1.7.7)
14
+ minitest (~> 5.1)
15
+ thread_safe (~> 0.3, >= 0.3.4)
16
+ tzinfo (~> 1.1)
17
+ concurrent-ruby (1.0.5)
9
18
  diff-lcs (1.3)
19
+ docile (1.1.5)
20
+ fakefs (0.10.2)
10
21
  gem-release (0.7.4)
11
- rake (10.5.0)
22
+ hamster (3.0.0)
23
+ concurrent-ruby (~> 1.0)
24
+ i18n (0.8.0)
25
+ json (1.8.6)
26
+ lino (1.1.0)
27
+ hamster (~> 3.0)
28
+ open4 (~> 1.3)
29
+ minitar (0.6.1)
30
+ minitest (5.10.1)
31
+ open4 (1.3.4)
32
+ rake (11.2.2)
33
+ rake_dependencies (0.15.1)
34
+ hamster (~> 3.0)
35
+ minitar (~> 0.6)
36
+ rubyzip (~> 1.1)
12
37
  rspec (3.5.0)
13
38
  rspec-core (~> 3.5.0)
14
39
  rspec-expectations (~> 3.5.0)
@@ -22,16 +47,30 @@ GEM
22
47
  diff-lcs (>= 1.2.0, < 2.0)
23
48
  rspec-support (~> 3.5.0)
24
49
  rspec-support (3.5.0)
50
+ ruby_fly (0.4.1)
51
+ lino (~> 1.1)
52
+ rubyzip (1.2.1)
53
+ simplecov (0.13.0)
54
+ docile (~> 1.1.0)
55
+ json (>= 1.8, < 3)
56
+ simplecov-html (~> 0.10.0)
57
+ simplecov-html (0.10.0)
58
+ thread_safe (0.3.5)
59
+ tzinfo (1.2.2)
60
+ thread_safe (~> 0.1)
25
61
 
26
62
  PLATFORMS
27
63
  ruby
28
64
 
29
65
  DEPENDENCIES
66
+ activesupport (~> 4.2)
30
67
  bundler (~> 1.14)
68
+ fakefs (~> 0.10)
31
69
  gem-release (~> 0.7)
32
- rake (~> 10.0)
70
+ rake (~> 11.0)
33
71
  rake_fly!
34
72
  rspec (~> 3.0)
73
+ simplecov (~> 0.13)
35
74
 
36
75
  BUNDLED WITH
37
76
  1.14.5
@@ -0,0 +1,4 @@
1
+ module RakeFly
2
+ class RequiredParameterUnset < ::StandardError
3
+ end
4
+ end
@@ -0,0 +1,98 @@
1
+ require 'rake/tasklib'
2
+ require_relative 'exceptions'
3
+
4
+ module RakeFly
5
+ class TaskLib < ::Rake::TaskLib
6
+ class << self
7
+ def parameter_definitions
8
+ @parameter_definitions ||= {}
9
+ end
10
+
11
+ def parameter(name, options = {})
12
+ parameter_definition = ParameterDefinition.new(
13
+ name, options[:default], options[:required])
14
+ name = parameter_definition.name
15
+
16
+ attr_accessor(name)
17
+
18
+ parameter_definitions[name] = parameter_definition
19
+ end
20
+
21
+ def setup_defaults_for(instance)
22
+ parameter_definitions.values.each do |parameter_definition|
23
+ parameter_definition.apply_default_to(instance)
24
+ end
25
+ end
26
+
27
+ def check_required_for(instance)
28
+ dissatisfied = parameter_definitions.values.reject do |definition|
29
+ definition.satisfied_by?(instance)
30
+ end
31
+ unless dissatisfied.empty?
32
+ names = dissatisfied.map(&:name)
33
+ raise RequiredParameterUnset,
34
+ "Required parameter#{names.length > 1 ? 's' : ''} #{names.join(',')} unset."
35
+ end
36
+ end
37
+ end
38
+
39
+ def initialize(*args, &block)
40
+ setup_defaults
41
+ process_arguments(args)
42
+ process_block(block)
43
+ check_required
44
+ define
45
+ end
46
+
47
+ def setup_defaults
48
+ self.class.setup_defaults_for(self)
49
+ end
50
+
51
+ def process_arguments(_)
52
+ end
53
+
54
+ def process_block(block)
55
+ block.call(self) if block
56
+ end
57
+
58
+ def check_required
59
+ self.class.check_required_for(self)
60
+ end
61
+
62
+ def define
63
+ end
64
+
65
+ private
66
+
67
+ class ParameterDefinition
68
+ attr_reader :name
69
+
70
+ def initialize(name, default = nil, required = false)
71
+ @name = name.to_sym
72
+ @default = default
73
+ @required = required
74
+ end
75
+
76
+ def writer_method
77
+ "#{name}="
78
+ end
79
+
80
+ def reader_method
81
+ name
82
+ end
83
+
84
+ def apply_default_to(instance)
85
+ instance.__send__(writer_method, @default) unless @default.nil?
86
+ end
87
+
88
+ def dissatisfied_by?(instance)
89
+ value = instance.__send__(reader_method)
90
+ @required && value.nil?
91
+ end
92
+
93
+ def satisfied_by?(instance)
94
+ !dissatisfied_by?(instance)
95
+ end
96
+ end
97
+ end
98
+ end
@@ -0,0 +1,28 @@
1
+ require 'ruby_fly'
2
+ require_relative '../tasklib'
3
+
4
+ module RakeFly
5
+ module Tasks
6
+ class GetPipeline < TaskLib
7
+ parameter :name, :default => :get_pipeline
8
+
9
+ parameter :target, :required => true
10
+ parameter :pipeline, :required => true
11
+
12
+ parameter :ensure_task, :default => :'fly:ensure'
13
+
14
+ def process_arguments(args)
15
+ self.name = args[0] if args[0]
16
+ end
17
+
18
+ def define
19
+ desc "Get pipeline #{pipeline} for target #{target}"
20
+ task name => [ensure_task] do
21
+ RubyFly.get_pipeline(
22
+ target: target,
23
+ pipeline: pipeline)
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,28 @@
1
+ require 'ruby_fly'
2
+ require_relative '../tasklib'
3
+
4
+ module RakeFly
5
+ module Tasks
6
+ class UnpausePipeline < TaskLib
7
+ parameter :name, :default => :unpause_pipeline
8
+
9
+ parameter :target, :required => true
10
+ parameter :pipeline, :required => true
11
+
12
+ parameter :ensure_task, :default => :'fly:ensure'
13
+
14
+ def process_arguments(args)
15
+ self.name = args[0] if args[0]
16
+ end
17
+
18
+ def define
19
+ desc "Unpause pipeline #{pipeline} for target #{target}"
20
+ task name => [ensure_task] do
21
+ RubyFly.unpause_pipeline(
22
+ target: target,
23
+ pipeline: pipeline)
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,2 @@
1
+ require_relative 'tasks/get_pipeline'
2
+ require_relative 'tasks/unpause_pipeline'
@@ -1,3 +1,3 @@
1
1
  module RakeFly
2
- VERSION = '0.1.0'
2
+ VERSION = '0.2.0'
3
3
  end
data/lib/rake_fly.rb CHANGED
@@ -1,4 +1,40 @@
1
+ require 'rake_dependencies'
2
+ require 'ruby_fly'
1
3
  require 'rake_fly/version'
4
+ require 'rake_fly/tasklib'
5
+ require 'rake_fly/tasks'
2
6
 
3
7
  module RakeFly
8
+ include RubyFly
9
+
10
+ def self.define_installation_tasks(opts = {})
11
+ namespace = opts[:namespace] || :fly
12
+ version = opts[:version] || '2.7.0'
13
+ path = opts[:path] || File.join('vendor', 'fly')
14
+
15
+ RubyFly.configure do |c|
16
+ c.binary = File.join(path, 'bin', 'fly')
17
+ end
18
+ RakeDependencies::Tasks::All.new do |t|
19
+ t.namespace = namespace
20
+ t.dependency = 'fly'
21
+ t.version = version
22
+ t.path = path
23
+ t.type = :uncompressed
24
+
25
+ t.os_ids = {mac: 'darwin', linux: 'linux'}
26
+
27
+ t.uri_template = "https://github.com/concourse/concourse/releases/" +
28
+ "download/v<%= @version %>/fly_<%= @os_id %>_amd64"
29
+ t.file_name_template = "fly_<%= @os_id %>_amd64"
30
+ t.target_name_template = 'fly'
31
+
32
+ t.needs_fetch = lambda do |parameters|
33
+ fly_binary = File.join(
34
+ parameters[:path], parameters[:binary_directory], 'fly')
35
+
36
+ !(File.exist?(fly_binary) && RubyFly.version == version)
37
+ end
38
+ end
39
+ end
4
40
  end
data/rake_fly.gemspec CHANGED
@@ -23,8 +23,14 @@ Gem::Specification.new do |spec|
23
23
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
24
24
  spec.require_paths = ['lib']
25
25
 
26
+ spec.add_dependency 'rake_dependencies', '~> 0.15'
27
+ spec.add_dependency 'ruby_fly', '~> 0.4'
28
+
26
29
  spec.add_development_dependency 'bundler', '~> 1.14'
27
- spec.add_development_dependency 'rake', '~> 10.0'
30
+ spec.add_development_dependency 'rake', '~> 11.0'
28
31
  spec.add_development_dependency 'rspec', '~> 3.0'
29
32
  spec.add_development_dependency 'gem-release', '~> 0.7'
33
+ spec.add_development_dependency 'activesupport', '~> 4.2'
34
+ spec.add_development_dependency 'fakefs', '~> 0.10'
35
+ spec.add_development_dependency 'simplecov', '~> 0.13'
30
36
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rake_fly
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Toby Clemson
@@ -10,6 +10,34 @@ bindir: exe
10
10
  cert_chain: []
11
11
  date: 2017-04-02 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rake_dependencies
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: '0.15'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: '0.15'
27
+ - !ruby/object:Gem::Dependency
28
+ name: ruby_fly
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ~>
32
+ - !ruby/object:Gem::Version
33
+ version: '0.4'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ~>
39
+ - !ruby/object:Gem::Version
40
+ version: '0.4'
13
41
  - !ruby/object:Gem::Dependency
14
42
  name: bundler
15
43
  requirement: !ruby/object:Gem::Requirement
@@ -30,14 +58,14 @@ dependencies:
30
58
  requirements:
31
59
  - - ~>
32
60
  - !ruby/object:Gem::Version
33
- version: '10.0'
61
+ version: '11.0'
34
62
  type: :development
35
63
  prerelease: false
36
64
  version_requirements: !ruby/object:Gem::Requirement
37
65
  requirements:
38
66
  - - ~>
39
67
  - !ruby/object:Gem::Version
40
- version: '10.0'
68
+ version: '11.0'
41
69
  - !ruby/object:Gem::Dependency
42
70
  name: rspec
43
71
  requirement: !ruby/object:Gem::Requirement
@@ -66,6 +94,48 @@ dependencies:
66
94
  - - ~>
67
95
  - !ruby/object:Gem::Version
68
96
  version: '0.7'
97
+ - !ruby/object:Gem::Dependency
98
+ name: activesupport
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ~>
102
+ - !ruby/object:Gem::Version
103
+ version: '4.2'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ~>
109
+ - !ruby/object:Gem::Version
110
+ version: '4.2'
111
+ - !ruby/object:Gem::Dependency
112
+ name: fakefs
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ~>
116
+ - !ruby/object:Gem::Version
117
+ version: '0.10'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ~>
123
+ - !ruby/object:Gem::Version
124
+ version: '0.10'
125
+ - !ruby/object:Gem::Dependency
126
+ name: simplecov
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ~>
130
+ - !ruby/object:Gem::Version
131
+ version: '0.13'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ~>
137
+ - !ruby/object:Gem::Version
138
+ version: '0.13'
69
139
  description: Rake tasks for common fly interactions allowing Concourse pipelines to
70
140
  be managed as part of a build.
71
141
  email:
@@ -86,6 +156,11 @@ files:
86
156
  - bin/console
87
157
  - bin/setup
88
158
  - lib/rake_fly.rb
159
+ - lib/rake_fly/exceptions.rb
160
+ - lib/rake_fly/tasklib.rb
161
+ - lib/rake_fly/tasks.rb
162
+ - lib/rake_fly/tasks/get_pipeline.rb
163
+ - lib/rake_fly/tasks/unpause_pipeline.rb
89
164
  - lib/rake_fly/version.rb
90
165
  - rake_fly.gemspec
91
166
  homepage: https://github.com/tobyclemson/rake_fly