rake_fly 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
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