eco-rake 0.2.7 → 0.2.9

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: eb719b1d4007c97f0d94b045c9fdb61573feec430243333a324e078445e519d9
4
- data.tar.gz: 1349f5045662ea64d24a8a60ee4d972b25c9086698eb1711896937a729091e2b
3
+ metadata.gz: c004dd6f96343a455cce5a5a0939345996995999760df5d3b33db9e7227f2881
4
+ data.tar.gz: 5e0203f40d13999298c397701ab2e9c28e06fe5512ccd94cafaf007fbf91bc9d
5
5
  SHA512:
6
- metadata.gz: '0969c6c5dd289cd62aad753ae0349b4fb7c00fd412c77e9e0c49da6a79def74dd06fed98ff5d2f48077defbaaccbde645a50f83e92fde542d85958b89d093186'
7
- data.tar.gz: b1d8a5183b981a97e7a1f1c1ec3c42fd65c1d0f83e0bbe31cc76db7245a702ff1eb3703ba49d0ff49e89d75a079e16aeaafc21b7289a03df27ae3fd7998cdce0
6
+ metadata.gz: 17e3c7a7303fb4f9751b0d70c012cccbfb9d19f9ac81726c6f3621254dc166a11f8c1421f3f6e8dee11dd6ef975d6cfebe866945cf6386ca992c60c2284df778
7
+ data.tar.gz: e93498897b7c7d82a4739acf95f31c595ebdac7a653b230bf037b58b470645e83a56de1a4939509ef7be05531abe1fc3f620d7390b411fed3ae7738e2a628af5
data/CHANGELOG.md CHANGED
@@ -2,6 +2,37 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file.
4
4
 
5
+ ## [0.2.9] - 2025-02-xx
6
+
7
+ ### Added
8
+
9
+ ### Changed
10
+
11
+ ### Fixed
12
+
13
+ ## [0.2.9] - 2025-02-20
14
+
15
+ ### Fixed
16
+
17
+ - `EcoRake::Lib::People::SyncLaunch` should forward `space`
18
+
19
+ ## [0.2.8] - 2025-02-20
20
+
21
+ ### Added
22
+
23
+ - `REMOTE_ARCHIVE` [Boolean] whether or not should archive remote files.
24
+ - Integration option for target `space`
25
+ - (sub)tasks declarion and invokation as `Enum`
26
+
27
+ ### Changed
28
+
29
+ - code tidy up
30
+ - upgrade core gem dependency
31
+
32
+ ### Fixed
33
+
34
+ - typo on `Options::Library#names`
35
+
5
36
  ## [0.2.7] - 2024-12-16
6
37
 
7
38
  ### Added
@@ -9,8 +40,6 @@ All notable changes to this project will be documented in this file.
9
40
  - `EcoRake::Lib::People::SyncLaunch`
10
41
  - New constant `TARGET_NAMESPACE`: to build up the target task based on a different namespace (i.e. not nested).
11
42
 
12
- ### Fixed
13
-
14
43
  ### Changed
15
44
 
16
45
  - code tidy up
data/eco-rake.gemspec CHANGED
@@ -24,14 +24,13 @@ Gem::Specification.new do |spec|
24
24
  spec.required_ruby_version = '>= 3.2.2'
25
25
 
26
26
  spec.add_development_dependency "rake", ">= 13.0.6", "< 14"
27
+ spec.add_development_dependency "redcarpet", ">= 3.6.0", "< 4"
27
28
  spec.add_development_dependency "rspec", ">= 3.10.0", "< 4"
28
29
  spec.add_development_dependency "yard", ">= 0.9.34", "< 1"
29
- spec.add_development_dependency "redcarpet", ">= 3.6.0", "< 4"
30
30
 
31
- #spec.add_dependency 'aws-sdk-s3', '>= 1.142.0', '< 2'
32
31
  spec.add_dependency 'aws-sdk-ses', '~> 1', '>= 1.58.0'
33
32
  spec.add_dependency 'dotenv', '~> 3'
34
33
  spec.add_dependency 'nokogiri', '>= 1.13', '< 1.17'
35
- spec.add_dependency 'rake-commander', '~> 0.4'
34
+ spec.add_dependency 'rake-commander', '~> 0.4.1'
36
35
  spec.add_dependency 'sendgrid-ruby', '~> 6.7.0'
37
36
  end
data/lib/eco-rake/base.rb CHANGED
@@ -6,12 +6,14 @@ require_relative 'shell'
6
6
  require_relative 'rake_task'
7
7
  require_relative 'option'
8
8
  require_relative 'options'
9
+ require_relative 'subtask'
9
10
 
10
11
  class EcoRake
11
12
  module Base
12
13
  class << self
13
14
  def included(base)
14
15
  super
16
+
15
17
  base.autoloads_children_of RakeCommander
16
18
  base.extend ClassMethods
17
19
  base.send :include, RakeTask
@@ -6,7 +6,8 @@ class EcoRake
6
6
 
7
7
  class << self
8
8
  def included(base)
9
- super(base)
9
+ super
10
+
10
11
  base.option '-e', '--enviro ENVIRO', default_lookup: :default_enviro
11
12
  end
12
13
  end
@@ -11,6 +11,7 @@ class EcoRake
11
11
  INCLUDED_OPTIONS = %i[csv simulate].freeze
12
12
  FORWARD_RULES = {
13
13
  enviro: ->(enviro) { "-#{enviro}" },
14
+ space: :mirror,
14
15
  simulate: '-simulate',
15
16
  csv: '-csv',
16
17
  full: ->(full) { full ? nil : '-delta' },
@@ -20,6 +21,7 @@ class EcoRake
20
21
  options_with_defaults true
21
22
  option '-s', '--simulate', TrueClass, 'Do a dry-run (with no changes)'
22
23
  option '-e', '--enviro ENVIRO', String, desc: 'Target environment to run against (i.e. org, live)', required: true # , default_lookup: :default_enviro
24
+ option '-w', '--space SPACE', String, desc: 'Target space of the envionment (i.e. uat)'
23
25
  option '-f', '--[no-]full', TrueClass, default: false, desc: 'If the PAYLOAD file is a full file (false: means delta)'
24
26
  option '-c', '--csv', TrueClass, default: true, desc: 'Generate files in csv format?'
25
27
  option '-a', '--asat [DATE]', Time, default: Time.now.iso8601, desc: 'Specifies the date when the export was done (default: now).' do |value|
@@ -63,14 +65,21 @@ class EcoRake
63
65
 
64
66
  def forward_command(use, *opts)
65
67
  raise "Expecting String with usecase. Given: #{use.class}" unless use.is_a?(String)
68
+
66
69
  cmd = [base_command(use)]
67
70
  cmd.push(*forward_options(*self.class::INCLUDED_OPTIONS, *opts))
71
+
68
72
  cmd = yield(cmd) if block_given?
73
+
69
74
  string_cmd(*cmd)
70
75
  end
71
76
 
72
77
  def base_command(use = nil)
73
- string_cmd(ruby_runner, forward_option(:enviro), use)
78
+ string_cmd(
79
+ ruby_runner,
80
+ forward_option(:enviro),
81
+ use
82
+ )
74
83
  end
75
84
  end
76
85
  end
@@ -5,12 +5,13 @@ class EcoRake
5
5
  options_with_defaults true
6
6
 
7
7
  option '-e', '--enviro ENVIRO', String, desc: 'Target environment to run against (i.e. org, live)', required: true
8
+ option '-w', '--space SPACE', String, desc: 'Target space of the envionment (i.e. uat)'
8
9
  option '-d', '--folder NAME', desc: 'Source local folder'
9
10
  option '-l', '--list', TrueClass, desc: 'Lists files that will be deleted'
10
11
  option '-o', '--older-than [DAYS]', Integer, desc: 'Number of days files to archive should be older than'
11
12
  option '-r', '--remove', TrueClass, desc: "It deletes those files"
12
13
 
13
- def task(*_args)
14
+ def task(*_args) # rubocop:disable Metrics/AbcSize
14
15
  if target_files.empty?
15
16
  puts "There were no files in folder '#{source_folder}' to be #{str_op}"
16
17
  elsif options[:list]
@@ -4,6 +4,7 @@ class EcoRake
4
4
  class Sftp < EcoRake::Lib::BaseTask
5
5
  FORWARD_RULES = {
6
6
  enviro: ->(enviro) { "-#{enviro}" },
7
+ space: :mirror,
7
8
  folder: ->(folder) { "-local-folder #{folder}"},
8
9
  list: '-list',
9
10
  get_last: '-get-last',
@@ -16,6 +17,7 @@ class EcoRake
16
17
  options_with_defaults true
17
18
 
18
19
  option '-e', '--enviro ENVIRO', String, desc: 'Target environment to run against (i.e. org, live)', required: true
20
+ option '-w', '--space SPACE', String, desc: 'Target space of the envionment (i.e. uat)'
19
21
  option '-d', '--folder NAME', default: '.', desc: 'Source local folder'
20
22
  option '-l', '--list', TrueClass, desc: 'Lists available CSV feed files'
21
23
  option '-g', '--get', TrueClass, desc: 'Gets all available CSV feed files'
@@ -49,7 +51,12 @@ class EcoRake
49
51
  end
50
52
 
51
53
  def base_command
52
- string_cmd(ruby_runner, forward_option(:enviro), '-sftp')
54
+ string_cmd(
55
+ ruby_runner,
56
+ forward_option(:enviro),
57
+ forward_option(:space),
58
+ '-sftp'
59
+ )
53
60
  end
54
61
  end
55
62
  end
@@ -3,7 +3,8 @@ class EcoRake
3
3
  module People
4
4
  class BaseTask < EcoRake::Lib::BaseTask
5
5
  FORWARD_RULES = {
6
- enviro: ->(enviro) { "-#{enviro}" }
6
+ enviro: ->(enviro) { "-#{enviro}" },
7
+ space: :mirror
7
8
  }.freeze
8
9
 
9
10
  options_with_defaults true
@@ -4,9 +4,11 @@ class EcoRake
4
4
  # @todo on_error_email to ensure always notified
5
5
  # @todo ping some back-end that it was run
6
6
  # - Should be able to log at debug level.
7
+ # @note in integration repos this is used to be called `run:hris`
7
8
  class SyncLaunch < EcoRake::Lib::People::BaseTask
8
9
  ADDITIONAL_OPTIONS = %i[only_stats no_policy simulate no_email].freeze
9
10
  FORWARD_RULES = {
11
+ space: :mirror,
10
12
  schema: ->(schema) { "-schema-id \"#{schema}\"" },
11
13
  only_stats: '-feed-only-stats',
12
14
  no_policy: '-skip-batch-policy',
@@ -73,6 +75,7 @@ class EcoRake
73
75
  cmd = []
74
76
  cmd << ruby_runner
75
77
  cmd << forward_option(:enviro)
78
+ cmd << forward_option(:space)
76
79
  cmd << forward_option(:schema)
77
80
  cmd << '-get-partial' if delta? || delta_last?
78
81
  cmd << base_command(file)
@@ -83,7 +86,12 @@ class EcoRake
83
86
 
84
87
  # Generate command string to get people
85
88
  def people_get_command
86
- string_cmd(ruby_runner, forward_option(:enviro), '-get-people')
89
+ string_cmd(
90
+ ruby_runner,
91
+ forward_option(:enviro),
92
+ forward_option(:space),
93
+ '-get-people'
94
+ )
87
95
  end
88
96
 
89
97
  # Base command scoping.
@@ -120,7 +128,7 @@ class EcoRake
120
128
  snapshot_mode.to_s.downcase.to_sym == :delta_last
121
129
  end
122
130
 
123
- # Amont the `target_files` the last in alphabetic order.
131
+ # Among the `target_files`, the last in alphabetic order.
124
132
  def latest_file
125
133
  @latest_file ||= ''.then do
126
134
  next options[:folder] if join_files
@@ -4,6 +4,7 @@ class EcoRake
4
4
  class SyncOptions < EcoRake::Options::Set
5
5
  option '-s', '--simulate', TrueClass, 'Do a dry-run (with no changes)'
6
6
  option '-e', '--enviro ENVIRO', String, desc: 'Target environment to run against (i.e. org, live)', required: true
7
+ option '-w', '--space SPACE', String, desc: 'Target space of the envionment (i.e. uat)'
7
8
  option '-c', '--schema NAME', "Target person schema."
8
9
  option '-d', '--folder NAME', desc: 'Source local folder'
9
10
  option '-o', '--only-stats', TrueClass, desc: 'To display only stats in the feedback'
@@ -2,6 +2,7 @@ class EcoRake
2
2
  module Lib
3
3
  module People
4
4
  # The top level task that organizes all the people sync
5
+ # @note in integration repos this is used to be called `run:feed`
5
6
  class SyncProcess < EcoRake::Lib::People::SyncRely
6
7
  attr_const :do_decrypt, default: false
7
8
  attr_const :pull_driver, default: 'sftp'
@@ -11,10 +12,11 @@ class EcoRake
11
12
  option_reopen :enviro, default_lookup: :target_enviro
12
13
 
13
14
  attr_const :local_folder, default: '.'
14
- attr_const :mail_to
15
-
16
15
  option_reopen :folder, default_lookup: :local_folder
17
16
 
17
+ attr_const :mail_to
18
+ attr_const :remote_archive, default: true
19
+
18
20
  def task(*_args)
19
21
  upsert_local_dir(options[:folder])
20
22
  sh_continue pull_file
@@ -23,7 +25,7 @@ class EcoRake
23
25
  sh_continue rake_sync_command
24
26
  return if options[:simulate]
25
27
 
26
- sh_continue rake_sftp_archive if pull_driver == 'sftp'
28
+ sh_continue rake_sftp_archive if remote_archive && pull_driver == 'sftp'
27
29
  sh_continue rake_files_purge('cache')
28
30
  sh_continue rake_files_purge('requests')
29
31
  end
@@ -40,15 +42,15 @@ class EcoRake
40
42
  end
41
43
 
42
44
  def rake_sftp_get
43
- rake_command('csv:sftp', *forward_options(:enviro, :folder), '-t')
45
+ rake_command('csv:sftp', *forward_options(:enviro, :space, :folder), '-t')
44
46
  end
45
47
 
46
48
  def rake_url_get
47
- rake_command("csv:#{options[:enviro]}:url", *forward_options(:folder))
49
+ rake_command("csv:#{options[:enviro]}:url", *forward_options(:space, :folder))
48
50
  end
49
51
 
50
52
  def rake_sftp_archive
51
- rake_command('csv:sftp', *forward_options(:enviro, :folder), '-a')
53
+ rake_command('csv:sftp', *forward_options(:enviro, :space, :folder), '-a')
52
54
  end
53
55
 
54
56
  def rake_decrypt
@@ -56,7 +58,7 @@ class EcoRake
56
58
  end
57
59
 
58
60
  def rake_files_purge(folder, operation: '--remove')
59
- rake_command('logs:purge', *forward_options(:enviro), "-d #{folder}", operation)
61
+ rake_command('logs:purge', *forward_options(:enviro, :space), "-d #{folder}", operation)
60
62
  end
61
63
 
62
64
  def failed_decryption_notify
@@ -64,7 +66,7 @@ class EcoRake
64
66
  puts msg
65
67
  exit 1 if options[:simulate]
66
68
  exit 1 if options[:no_email]
67
- exit 1 unless inbox = mail_to
69
+ exit 1 unless (inbox = mail_to)
68
70
 
69
71
  email(enviro: target_enviro, to: inbox, subject: msg, body: msg)
70
72
  exit 1
@@ -5,6 +5,7 @@ class EcoRake
5
5
  class SyncRely < EcoRake::Lib::People::BaseTask
6
6
  FORWARD_RULES = {
7
7
  enviro: :mirror,
8
+ space: :mirror,
8
9
  schema: :mirror,
9
10
  folder: :mirror,
10
11
  only_stats: :mirror,
@@ -4,6 +4,7 @@ class EcoRake
4
4
  class RunnerLaunch < EcoRake::Lib::BaseTask
5
5
  FORWARD_RULES = {
6
6
  enviro: ->(enviro) { "-#{enviro}"},
7
+ space: :mirror,
7
8
  simulate: '-simulate'
8
9
  }.freeze
9
10
 
@@ -13,20 +14,62 @@ class EcoRake
13
14
  attr_const :target_enviro, required: true
14
15
  option_reopen :enviro, default_lookup: :target_enviro
15
16
 
17
+ option_reopen :task, type: [], desc: 'Target task to run', required: true
18
+
19
+ # Offer native way to declare tasks
20
+ class << self
21
+ def subtask(name, desc = nil, **kargs, &block)
22
+ EcoRake::Subtask.new(name, desc, **kargs, &block).tap do |subtask|
23
+ raise "Task '#{name}' is already defined" if subtasks.key?(subtask.name)
24
+
25
+ option_get(:task).tap do |option|
26
+ option.enum_options.push(subtask.name)
27
+ subtasks[subtask.name] = subtask
28
+ end
29
+ end
30
+ end
31
+
32
+ def subtasks
33
+ @subtasks ||= {}
34
+ end
35
+ end
36
+
16
37
  option_forwarding(**FORWARD_RULES)
17
38
 
39
+ def task(*args)
40
+ if (callback = target_subtask.callback)
41
+ instance_exec(*args, &callback)
42
+ elsif respond_to?(target_subtask.name, true)
43
+ send(target_subtask.name)
44
+ else
45
+ msg = "Undefined method to perform '#{target_subtask.name}'"
46
+ raise msg
47
+ end
48
+ end
49
+
50
+ protected
51
+
52
+ def target_subtask
53
+ subtask_name = options[:task].to_sym
54
+ self.class.subtasks[subtask_name].tap do |ts|
55
+ next if ts
56
+
57
+ raise "Couldn't find any (sub)task named '#{subtask_name}'"
58
+ end
59
+ end
60
+
18
61
  private
19
62
 
20
63
  def command(*args)
21
64
  cmd = [ruby_runner]
22
- cmd.push(*forward_options(:enviro, :simulate))
65
+ cmd.push(*forward_options(:enviro, :space, :simulate))
23
66
  cmd.push(*args)
24
67
  cmd = yield(cmd) if block_given?
25
68
  string_cmd(*cmd)
26
69
  end
27
70
 
28
71
  def people_get_command
29
- string_cmd(ruby_runner, forward_option(:enviro), '-get-people')
72
+ string_cmd(ruby_runner, *forward_options(:enviro, :space), '-get-people')
30
73
  end
31
74
  end
32
75
  end
@@ -4,6 +4,7 @@ class EcoRake
4
4
  class RunnerOptions < EcoRake::Options::Set
5
5
  option '-s', '--simulate', TrueClass, 'Do a dry-run (with no changes)'
6
6
  option '-e', '--enviro ENVIRO', String, desc: 'Target environment to run against (i.e. org, live)', required: true
7
+ option '-w', '--space SPACE', String, desc: 'Target space of the envionment (i.e. uat)'
7
8
  option '-t', '--task NAME', String, desc: 'Target task to run', required: true
8
9
  end
9
10
  end
@@ -4,7 +4,8 @@ class EcoRake
4
4
  class RunnerRely < EcoRake::Lib::BaseTask
5
5
  FORWARD_RULES = {
6
6
  simulate: :mirror,
7
- task: :mirror
7
+ task: :mirror,
8
+ space: :mirror
8
9
  }.freeze
9
10
 
10
11
  options_with_defaults true
@@ -6,7 +6,8 @@ class EcoRake
6
6
  module DefaultLookup
7
7
  class << self
8
8
  def included(base)
9
- super(base)
9
+ super
10
+
10
11
  base.extend EcoRake::Base::SymbolResolver
11
12
  end
12
13
  end
@@ -14,6 +15,7 @@ class EcoRake
14
15
  # Default may be a lookup
15
16
  def default(&block)
16
17
  return @default unless default_lookup?
18
+
17
19
  result = self.class.safe_call(@default, parent, &block)
18
20
  result = self.class.safe_call(result, &block) if [Proc, Method].any? {|k| result.is_a?(k)}
19
21
  result
@@ -23,9 +25,11 @@ class EcoRake
23
25
  # @return [Class, NilClass]
24
26
  def type_coercion
25
27
  return @type_coercion if @type_coercion
26
- return nil unless default?
28
+ return unless default?
29
+
27
30
  value = default
28
- return nil if value.nil?
31
+ return if value.nil?
32
+
29
33
  value.class
30
34
  end
31
35
 
@@ -24,7 +24,7 @@ class EcoRake
24
24
  opt = name_hyphened
25
25
  # puts "boolean_mirror (#{value}): #{opt}" if name == :no_get
26
26
 
27
- return nil unless [TrueClass, NilClass, FalseClass].any? {|klass| type_coercion == klass}
27
+ return unless [TrueClass, NilClass, FalseClass].any? {|klass| type_coercion == klass}
28
28
 
29
29
  enabled_value = !boolean_name? || [TrueClass, NilClass].any? {|klass| type_coercion == klass}
30
30
  return opt if value == enabled_value
@@ -3,7 +3,7 @@ class EcoRake
3
3
  module Parented
4
4
  attr_accessor :parent
5
5
 
6
- def initialize(*args, _parent: nil, **kargs, &block)
6
+ def initialize(*args, _parent: nil, **kargs, &block) # rubocop:disable Lint/UnderscorePrefixedVariableName
7
7
  self.parent = _parent
8
8
  super(*args, **kargs, &block)
9
9
  end
@@ -17,6 +17,7 @@ class EcoRake
17
17
  # Iterator
18
18
  def each(&block)
19
19
  return to_enum(:each) unless block_given?
20
+
20
21
  sets.values.each(&block)
21
22
  end
22
23
 
@@ -29,12 +30,13 @@ class EcoRake
29
30
  # @return [Boolean]
30
31
  def set?(name)
31
32
  raise "Expected String or Symbol. Given: #{name.class}" unless name.respond_to?(:to_sym)
33
+
32
34
  sets.key?(name.to_sym)
33
35
  end
34
36
 
35
37
  # @return [Array<Symbol>] names list of all available option sets.
36
38
  def names
37
- setes.keys
39
+ sets.keys
38
40
  end
39
41
 
40
42
  # Add a new options set.
@@ -0,0 +1,12 @@
1
+ class EcoRake
2
+ class Subtask
3
+ attr_reader :name, :desc, :params, :callback
4
+
5
+ def initialize(name, desc = nil, **kargs, &callback)
6
+ @name = name.to_sym
7
+ @desc = desc || kargs.delete(:desc)
8
+ @params = kargs
9
+ @callback = callback
10
+ end
11
+ end
12
+ end
@@ -1,5 +1,5 @@
1
1
  require 'rake-commander'
2
2
 
3
3
  class EcoRake < RakeCommander
4
- VERSION = '0.2.7'.freeze
4
+ VERSION = '0.2.9'.freeze
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: eco-rake
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.7
4
+ version: 0.2.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Oscar Segura Samper
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-12-16 00:00:00.000000000 Z
11
+ date: 2025-02-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -31,12 +31,12 @@ dependencies:
31
31
  - !ruby/object:Gem::Version
32
32
  version: '14'
33
33
  - !ruby/object:Gem::Dependency
34
- name: rspec
34
+ name: redcarpet
35
35
  requirement: !ruby/object:Gem::Requirement
36
36
  requirements:
37
37
  - - ">="
38
38
  - !ruby/object:Gem::Version
39
- version: 3.10.0
39
+ version: 3.6.0
40
40
  - - "<"
41
41
  - !ruby/object:Gem::Version
42
42
  version: '4'
@@ -46,50 +46,50 @@ dependencies:
46
46
  requirements:
47
47
  - - ">="
48
48
  - !ruby/object:Gem::Version
49
- version: 3.10.0
49
+ version: 3.6.0
50
50
  - - "<"
51
51
  - !ruby/object:Gem::Version
52
52
  version: '4'
53
53
  - !ruby/object:Gem::Dependency
54
- name: yard
54
+ name: rspec
55
55
  requirement: !ruby/object:Gem::Requirement
56
56
  requirements:
57
57
  - - ">="
58
58
  - !ruby/object:Gem::Version
59
- version: 0.9.34
59
+ version: 3.10.0
60
60
  - - "<"
61
61
  - !ruby/object:Gem::Version
62
- version: '1'
62
+ version: '4'
63
63
  type: :development
64
64
  prerelease: false
65
65
  version_requirements: !ruby/object:Gem::Requirement
66
66
  requirements:
67
67
  - - ">="
68
68
  - !ruby/object:Gem::Version
69
- version: 0.9.34
69
+ version: 3.10.0
70
70
  - - "<"
71
71
  - !ruby/object:Gem::Version
72
- version: '1'
72
+ version: '4'
73
73
  - !ruby/object:Gem::Dependency
74
- name: redcarpet
74
+ name: yard
75
75
  requirement: !ruby/object:Gem::Requirement
76
76
  requirements:
77
77
  - - ">="
78
78
  - !ruby/object:Gem::Version
79
- version: 3.6.0
79
+ version: 0.9.34
80
80
  - - "<"
81
81
  - !ruby/object:Gem::Version
82
- version: '4'
82
+ version: '1'
83
83
  type: :development
84
84
  prerelease: false
85
85
  version_requirements: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - ">="
88
88
  - !ruby/object:Gem::Version
89
- version: 3.6.0
89
+ version: 0.9.34
90
90
  - - "<"
91
91
  - !ruby/object:Gem::Version
92
- version: '4'
92
+ version: '1'
93
93
  - !ruby/object:Gem::Dependency
94
94
  name: aws-sdk-ses
95
95
  requirement: !ruby/object:Gem::Requirement
@@ -150,14 +150,14 @@ dependencies:
150
150
  requirements:
151
151
  - - "~>"
152
152
  - !ruby/object:Gem::Version
153
- version: '0.4'
153
+ version: 0.4.1
154
154
  type: :runtime
155
155
  prerelease: false
156
156
  version_requirements: !ruby/object:Gem::Requirement
157
157
  requirements:
158
158
  - - "~>"
159
159
  - !ruby/object:Gem::Version
160
- version: '0.4'
160
+ version: 0.4.1
161
161
  - !ruby/object:Gem::Dependency
162
162
  name: sendgrid-ruby
163
163
  requirement: !ruby/object:Gem::Requirement
@@ -245,6 +245,7 @@ files:
245
245
  - lib/eco-rake/shell/eco_helpers.rb
246
246
  - lib/eco-rake/shell/files.rb
247
247
  - lib/eco-rake/shell/gpg.rb
248
+ - lib/eco-rake/subtask.rb
248
249
  - lib/eco-rake/utils.rb
249
250
  - lib/eco-rake/utils/mailer.rb
250
251
  - lib/eco-rake/utils/mailer/aws_provider.rb