rake-dependencies 0.3.0 → 0.4.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: 9152da4ea5be88e6a3c8133c459b84e28a882999
4
- data.tar.gz: 89438dee32487d5c7367f828e17b323dece0a358
3
+ metadata.gz: e1af33ae845b043ed3ed1f9dbf190d8bd05593de
4
+ data.tar.gz: efe3a4d0ca603ea54370cfb3085a6cb928014d4b
5
5
  SHA512:
6
- metadata.gz: 120bd0ebb52be42f89fab5bbc3418c4d70a28862398a688ea58b9b635c8d5f6ee579c490eb1d4e2de602db28f71c062bca3c9900f44fbf77861ee7abe255f3f7
7
- data.tar.gz: 94b1cf91a311d75d7c90944fb72332a6c095ca700dc5e5179c689f23ba666edbe26bf945d22cadfe649aad37e7f87d6f9e9f0e40ec62ae0beceb144ed0458532
6
+ metadata.gz: a72ff1dcc89a61cd4b0531cb2e00d8d236b7aca038273a5a1cbfae3714cb45a92fb6b28f8c06402a7b3467d13873fe674ec2176537e2dcdd366c264543c71401
7
+ data.tar.gz: 154e4193a9521571993d935b31d1be7491c4274321a696942cfc90c0c5eba8752abf2ef8b765995500d65f94152173ffbb3590383953240be468f18cfeb399fc
data/Gemfile.lock CHANGED
@@ -1,9 +1,8 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- rake-dependencies (0.3.0)
4
+ rake-dependencies (0.4.0)
5
5
  hamster (~> 3.0)
6
- mattock (~> 0.10)
7
6
 
8
7
  GEM
9
8
  remote: https://rubygems.org/
@@ -14,8 +13,6 @@ GEM
14
13
  minitest (~> 5.1)
15
14
  thread_safe (~> 0.3, >= 0.3.4)
16
15
  tzinfo (~> 1.1)
17
- calibrate (0.0.1)
18
- caliph (0.3.1)
19
16
  concurrent-ruby (1.0.2)
20
17
  diff-lcs (1.3)
21
18
  fakefs (0.10.2)
@@ -24,12 +21,6 @@ GEM
24
21
  concurrent-ruby (~> 1.0)
25
22
  i18n (0.8.0)
26
23
  json (1.8.6)
27
- mattock (0.10.1)
28
- calibrate (~> 0.0.1)
29
- caliph (~> 0.3)
30
- rake (~> 10.0)
31
- tilt (> 0)
32
- valise (~> 1.1)
33
24
  minitest (5.10.1)
34
25
  rake (10.5.0)
35
26
  rspec (3.5.0)
@@ -46,10 +37,8 @@ GEM
46
37
  rspec-support (~> 3.5.0)
47
38
  rspec-support (3.5.0)
48
39
  thread_safe (0.3.5)
49
- tilt (2.0.6)
50
40
  tzinfo (1.2.2)
51
41
  thread_safe (~> 0.1)
52
- valise (1.2.1)
53
42
 
54
43
  PLATFORMS
55
44
  ruby
@@ -0,0 +1,4 @@
1
+ module RakeDependencies
2
+ class RequiredParameterUnset < ::StandardError
3
+ end
4
+ end
@@ -0,0 +1,98 @@
1
+ require 'rake/tasklib'
2
+ require_relative 'exceptions'
3
+
4
+ module RakeDependencies
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) if @default
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
@@ -1,14 +1,13 @@
1
- require 'mattock'
1
+ require_relative '../tasklib'
2
2
 
3
3
  module RakeDependencies
4
4
  module Tasks
5
- class Clean < Mattock::Tasklib
6
- setting :name, :clean
7
- required_fields :path
8
- required_fields :dependency
5
+ class Clean < TaskLib
6
+ parameter :name, :default => :clean
7
+ parameter :path, :required => true
8
+ parameter :dependency, :required => true
9
9
 
10
- def default_configuration(*args)
11
- super(args)
10
+ def process_arguments(args)
12
11
  self.name = args[0] if args[0]
13
12
  end
14
13
 
@@ -1,22 +1,22 @@
1
- require 'mattock'
2
1
  require 'open-uri'
2
+ require_relative '../tasklib'
3
3
  require_relative '../template'
4
4
 
5
5
  module RakeDependencies
6
6
  module Tasks
7
- class Download < Mattock::Tasklib
7
+ class Download < TaskLib
8
8
  extend FileUtils
9
9
 
10
- setting :name, :download
11
- setting :type, :zip
12
- setting :directory, 'dist'
13
- required_fields :path
14
- required_fields :dependency
15
- required_fields :version
16
- required_fields :uri_template
17
- required_fields :file_name_template
10
+ parameter :name, default: :download
11
+ parameter :type, default: :zip
12
+ parameter :directory, default: 'dist'
13
+ parameter :path, required: true
14
+ parameter :dependency, required: true
15
+ parameter :version, required: true
16
+ parameter :uri_template, required: true
17
+ parameter :file_name_template, required: true
18
18
 
19
- def default_configuration(*args)
19
+ def process_arguments(args)
20
20
  super(args)
21
21
  self.name = args[0] if args[0]
22
22
  end
@@ -1,3 +1,3 @@
1
1
  module RakeDependencies
2
- VERSION = "0.3.0"
2
+ VERSION = "0.4.0"
3
3
  end
@@ -25,7 +25,6 @@ Gem::Specification.new do |spec|
25
25
  spec.required_ruby_version = '>= 2.0'
26
26
 
27
27
  spec.add_dependency 'hamster', '~> 3.0'
28
- spec.add_dependency 'mattock', '~> 0.10'
29
28
 
30
29
  spec.add_development_dependency 'bundler', '~> 1.14'
31
30
  spec.add_development_dependency 'rake', '~> 10.0'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rake-dependencies
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Toby Clemson
@@ -24,20 +24,6 @@ dependencies:
24
24
  - - ~>
25
25
  - !ruby/object:Gem::Version
26
26
  version: '3.0'
27
- - !ruby/object:Gem::Dependency
28
- name: mattock
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - ~>
32
- - !ruby/object:Gem::Version
33
- version: '0.10'
34
- type: :runtime
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - ~>
39
- - !ruby/object:Gem::Version
40
- version: '0.10'
41
27
  - !ruby/object:Gem::Dependency
42
28
  name: bundler
43
29
  requirement: !ruby/object:Gem::Requirement
@@ -142,6 +128,8 @@ files:
142
128
  - bin/console
143
129
  - bin/setup
144
130
  - lib/rake_dependencies.rb
131
+ - lib/rake_dependencies/exceptions.rb
132
+ - lib/rake_dependencies/tasklib.rb
145
133
  - lib/rake_dependencies/tasks.rb
146
134
  - lib/rake_dependencies/tasks/clean.rb
147
135
  - lib/rake_dependencies/tasks/download.rb