eco-rake 0.1.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 +7 -0
- data/.gitignore +28 -0
- data/.gitlab-ci.yml +13 -0
- data/.rspec +3 -0
- data/.rubocop.yml +90 -0
- data/.yardopts +10 -0
- data/CHANGELOG.md +13 -0
- data/Gemfile +6 -0
- data/LICENSE +21 -0
- data/README.md +28 -0
- data/Rakefile +27 -0
- data/eco-rake.gemspec +34 -0
- data/lib/eco-rake/base/method_helpers.rb +55 -0
- data/lib/eco-rake/base/symbol_resolver.rb +82 -0
- data/lib/eco-rake/base.rb +25 -0
- data/lib/eco-rake/custom.rb +5 -0
- data/lib/eco-rake/default/const.rb +46 -0
- data/lib/eco-rake/default.rb +12 -0
- data/lib/eco-rake/lib/base_task.rb +9 -0
- data/lib/eco-rake/lib/concern/base.rb +21 -0
- data/lib/eco-rake/lib/concern/enviro.rb +23 -0
- data/lib/eco-rake/lib/concern/local_folder.rb +23 -0
- data/lib/eco-rake/lib/concern/person_schema.rb +24 -0
- data/lib/eco-rake/lib/concern.rb +11 -0
- data/lib/eco-rake/lib/export/payload.rb +78 -0
- data/lib/eco-rake/lib/export.rb +8 -0
- data/lib/eco-rake/lib/files/decrypt.rb +48 -0
- data/lib/eco-rake/lib/files/purge.rb +73 -0
- data/lib/eco-rake/lib/files/sftp.rb +49 -0
- data/lib/eco-rake/lib/files.rb +10 -0
- data/lib/eco-rake/lib/notify/mailer.rb +24 -0
- data/lib/eco-rake/lib/notify.rb +8 -0
- data/lib/eco-rake/lib/options.rb +8 -0
- data/lib/eco-rake/lib/people/base_task.rb +16 -0
- data/lib/eco-rake/lib/people/sync_launch.rb +131 -0
- data/lib/eco-rake/lib/people/sync_options.rb +15 -0
- data/lib/eco-rake/lib/people/sync_process.rb +48 -0
- data/lib/eco-rake/lib/people/sync_rely.rb +47 -0
- data/lib/eco-rake/lib/people.rb +12 -0
- data/lib/eco-rake/lib/task/runner_launch.rb +34 -0
- data/lib/eco-rake/lib/task/runner_options.rb +11 -0
- data/lib/eco-rake/lib/task/runner_rely.rb +40 -0
- data/lib/eco-rake/lib/task.rb +10 -0
- data/lib/eco-rake/lib.rb +15 -0
- data/lib/eco-rake/option/default_lookup.rb +39 -0
- data/lib/eco-rake/option/mirror.rb +34 -0
- data/lib/eco-rake/option/parented.rb +12 -0
- data/lib/eco-rake/option.rb +19 -0
- data/lib/eco-rake/options/default_lookup.rb +29 -0
- data/lib/eco-rake/options/forwarding/proxy.rb +125 -0
- data/lib/eco-rake/options/forwarding/rule.rb +82 -0
- data/lib/eco-rake/options/forwarding.rb +45 -0
- data/lib/eco-rake/options/library.rb +81 -0
- data/lib/eco-rake/options/parental.rb +37 -0
- data/lib/eco-rake/options/set.rb +21 -0
- data/lib/eco-rake/options.rb +25 -0
- data/lib/eco-rake/rake_task.rb +10 -0
- data/lib/eco-rake/shell/command.rb +59 -0
- data/lib/eco-rake/shell/eco_helpers.rb +10 -0
- data/lib/eco-rake/shell/files.rb +83 -0
- data/lib/eco-rake/shell/gpg.rb +54 -0
- data/lib/eco-rake/shell.rb +18 -0
- data/lib/eco-rake/tasks.rb +12 -0
- data/lib/eco-rake/utils/mailer.rb +91 -0
- data/lib/eco-rake/utils/mailing.rb +19 -0
- data/lib/eco-rake/utils/timing.rb +9 -0
- data/lib/eco-rake/utils.rb +19 -0
- data/lib/eco-rake/version.rb +5 -0
- data/lib/eco-rake.rb +16 -0
- metadata +271 -0
@@ -0,0 +1,83 @@
|
|
1
|
+
class EcoRake
|
2
|
+
module Shell
|
3
|
+
module Files
|
4
|
+
include Rake::DSL
|
5
|
+
DAY_SECONDS = (60 * 60 * 24)
|
6
|
+
|
7
|
+
# It creates directory `path` constructively.
|
8
|
+
# @note if any parent directory does not exist, it creates it as well.
|
9
|
+
def upsert_local_dir(path)
|
10
|
+
return if path.to_s.strip.empty?
|
11
|
+
return if File.directory?(path)
|
12
|
+
require 'fileutils'
|
13
|
+
puts "Creating directory '#{path}'"
|
14
|
+
FileUtils.mkdir_p(path)
|
15
|
+
end
|
16
|
+
|
17
|
+
# TODO: check delete status
|
18
|
+
def delete_file(*files, message: 'Deleting files:')
|
19
|
+
files = files.select {|file| File.exist?(file)}
|
20
|
+
return if files.empty?
|
21
|
+
puts message if message
|
22
|
+
files.each do |file|
|
23
|
+
File.delete(file)
|
24
|
+
puts " • #{file}" if message
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def move_file(*files, folder:, message: 'Moving files:')
|
29
|
+
puts message if message
|
30
|
+
files.each do |file|
|
31
|
+
new_name = File.join(folder, File.basename(file))
|
32
|
+
File.name(file, new_name)
|
33
|
+
puts " • #{File.basename(file)}" if message
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
# It identifies files in a folder by using different criteria.
|
38
|
+
# @return [Array<String>] files that match the criteria **sorted** by name ascendant (i.e. abc)
|
39
|
+
def folder_files(folder = ".", pattern = "*", regexp: nil, older_than: nil)
|
40
|
+
target = File.join(File.expand_path(folder), pattern)
|
41
|
+
Dir[target].tap do |dir_files|
|
42
|
+
dir_files.select! {|f| File.file?(f)}
|
43
|
+
dir_files.select! {|f| file_older_than?(f, days: older_than)} if older_than
|
44
|
+
dir_files.select! {|f| File.basename(f).match(regexp)} if regexp.is_a?(Regexp)
|
45
|
+
end.sort
|
46
|
+
end
|
47
|
+
|
48
|
+
# @see #folder_files . Same but fixed to `*.csv` **pattern**
|
49
|
+
def csv_files(folder = ".", regexp: nil, older_than: nil)
|
50
|
+
folder_files(folder, "*.csv", regexp: regexp, older_than: older_than)
|
51
|
+
end
|
52
|
+
|
53
|
+
# @see #folder_files . Same but fixed to `*.csv.gpg` **pattern**
|
54
|
+
def gpg_files(folder = ".", regexp: nil, older_than: nil)
|
55
|
+
gpg = folder_files(folder, "*.gpg", regexp: regexp, older_than: older_than)
|
56
|
+
pgp = folder_files(folder, "*.pgp", regexp: regexp, older_than: older_than)
|
57
|
+
gpg.concat(pgp)
|
58
|
+
end
|
59
|
+
|
60
|
+
# Preserves the folder and the base name of `gpg_file` name
|
61
|
+
# and changes its extension to `csv`.
|
62
|
+
# @return [String]
|
63
|
+
def gpg_to_csv_filename(gpg_file)
|
64
|
+
return nil unless gpg_file
|
65
|
+
ext = gpg_file.split('.')[1..-1].join('.')
|
66
|
+
base = File.basename(gpg_file, ".#{ext}")
|
67
|
+
folder = File.dirname(gpg_file)
|
68
|
+
File.join(folder, "#{base}.csv")
|
69
|
+
end
|
70
|
+
|
71
|
+
private
|
72
|
+
|
73
|
+
def file_older_than?(file, days:)
|
74
|
+
File.mtime(file) < Time.now - days_to_seconds(days)
|
75
|
+
end
|
76
|
+
|
77
|
+
def days_to_seconds(days)
|
78
|
+
return nil unless days
|
79
|
+
days * DAY_SECONDS
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
@@ -0,0 +1,54 @@
|
|
1
|
+
class EcoRake
|
2
|
+
module Shell
|
3
|
+
module Gpg
|
4
|
+
include EcoRake::Shell::Command
|
5
|
+
include EcoRake::Shell::Files
|
6
|
+
|
7
|
+
GPG_VERSION_REGEX = /^gpg.*?gnupg.*?(?<maj>\d+)\.(?<min>\d+)\./i.freeze
|
8
|
+
|
9
|
+
# @note
|
10
|
+
# 1. The ENV var `GPG_KEY` specifies the `passphrase` to be able to use the
|
11
|
+
# private gpg key (suppsedly installed in the user's local `gpg keyring`).
|
12
|
+
# 2. Depending on the `gpg` version, the option to prevent the interactive passphrase to prompt
|
13
|
+
# is different. This is the reason why we check what is the option for a `loopback`
|
14
|
+
# @param gpg_file [String] the file meant to be decrypted.
|
15
|
+
# @return [String] the command to decrypt `gpg_file`
|
16
|
+
def decrypt_command(gpg_file, gpg_key: ENV["GPG_KEY"], ignore_mdc_error: false)
|
17
|
+
csv_file = gpg_to_csv_filename(gpg_file)
|
18
|
+
no_error = ignore_mdc_error ? '--ignore-mdc-error' : nil
|
19
|
+
loopback = gpg_version_gte?(major: 2, minor: 1)? "--pinentry-mode=loopback" : "--batch --yes"
|
20
|
+
args = [
|
21
|
+
no_error, loopback,
|
22
|
+
'--passphrase', double_quote(gpg_key),
|
23
|
+
'-o', double_quote(csv_file),
|
24
|
+
'-d', double_quote(gpg_file)
|
25
|
+
]
|
26
|
+
string_cmd('gpg', *args)
|
27
|
+
end
|
28
|
+
|
29
|
+
private
|
30
|
+
|
31
|
+
# TODO: use a common end point from `Command`
|
32
|
+
def shell_gpg_version
|
33
|
+
`gpg --version`
|
34
|
+
end
|
35
|
+
|
36
|
+
# Checks if the host `gpg` version is **greater than or equal** (`gte`) to `major` and `minor`
|
37
|
+
# @note the versioning format is `MAJOR.MINOR.PATCH`
|
38
|
+
# @example if the host has this gpg version: `gpg (GnuPG) 2.1.10`. The following is to be expected:
|
39
|
+
# 1. `gpg_version_gte?(major: 1, minor: 10)` return `true`
|
40
|
+
# 2. `gpg_version_gte?(major: 3, minor: 0)` return `false`
|
41
|
+
# 3. `gpg_version_gte?(major: 2, minor: 0)` return `true`
|
42
|
+
# 4. `gpg_version_gte?(major: 2, minor: 1)` return `true`
|
43
|
+
# 5. `gpg_version_gte?(major: 2, minor: 3)` return `false`
|
44
|
+
# @return [Boolean]
|
45
|
+
def gpg_version_gte?(major:, minor:)
|
46
|
+
result = shell_gpg_version
|
47
|
+
return false unless match = result.match(GPG_VERSION_REGEX)
|
48
|
+
maj = match[:maj].to_i
|
49
|
+
min = match[:min].to_i
|
50
|
+
(maj >= major) && (min >= minor)
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require_relative 'shell/command'
|
2
|
+
require_relative 'shell/files'
|
3
|
+
require_relative 'shell/gpg'
|
4
|
+
require_relative 'shell/eco_helpers'
|
5
|
+
|
6
|
+
class EcoRake
|
7
|
+
module Shell
|
8
|
+
class << self
|
9
|
+
def included(base)
|
10
|
+
super(base)
|
11
|
+
base.send :include, Command
|
12
|
+
base.send :include, Files
|
13
|
+
base.send :include, Gpg
|
14
|
+
base.send :include, EcoHelpers
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
require_relative 'tasks/decrypt'
|
2
|
+
require_relative 'tasks/feed'
|
3
|
+
require_relative 'tasks/hris'
|
4
|
+
require_relative 'tasks/sftp'
|
5
|
+
|
6
|
+
# Offers a set of preconfigured tasks to inherit from
|
7
|
+
# @note that these samples themselves do not get autoloaded,
|
8
|
+
# although their children do.
|
9
|
+
class EcoRake
|
10
|
+
module Tasks
|
11
|
+
end
|
12
|
+
end
|
@@ -0,0 +1,91 @@
|
|
1
|
+
class EcoRake
|
2
|
+
module Utils
|
3
|
+
# Mailer helper that uses `aws-sdk-ses` **gem** (`Aws::SES::Client`)
|
4
|
+
# Several ENV vars should be configured for it to work (i.e. in the `.env` file):
|
5
|
+
# 1. `MAILER_REGION`
|
6
|
+
# 2. `MAILER_KEY_ID`
|
7
|
+
# 3. `MAILER_ACCESS_KEY`
|
8
|
+
# 4. `MAILER_FROM`
|
9
|
+
class Mailer
|
10
|
+
# Sends an email
|
11
|
+
# @param to [String] destination email address
|
12
|
+
# @param subject [String] subject of the email
|
13
|
+
# @param body [String] `html` or plain text message
|
14
|
+
# @param from [String] the email address this is send **from**
|
15
|
+
def mail(to:, subject:, body:, from: nil, cc: nil, bcc: nil)
|
16
|
+
unless configured?
|
17
|
+
puts "Mailer: You are missing configuration parameters. Review your .env file"
|
18
|
+
return false
|
19
|
+
end
|
20
|
+
ses.send_email(
|
21
|
+
destination: fetch_to(to: to, cc: cc, bcc: bcc),
|
22
|
+
source: fetch_from(from),
|
23
|
+
message: {
|
24
|
+
subject: {
|
25
|
+
charset: "UTF-8",
|
26
|
+
data: subject
|
27
|
+
},
|
28
|
+
body: {
|
29
|
+
# NOTEL: `html:` will let you send html instead
|
30
|
+
# you can use both at once if you like
|
31
|
+
text: {
|
32
|
+
charset: "UTF-8",
|
33
|
+
data: body
|
34
|
+
}
|
35
|
+
}
|
36
|
+
}
|
37
|
+
).tap do |response|
|
38
|
+
puts "Sent email to #{to} (MessageId: #{response.message_id})"
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
# @return [Boolean] whether or not the mailer is configured for usage.
|
43
|
+
def configured?
|
44
|
+
fetch_access_key_id && fetch_secret_access_key && fetch_region
|
45
|
+
end
|
46
|
+
|
47
|
+
private
|
48
|
+
|
49
|
+
def ses
|
50
|
+
require 'aws-sdk-ses'
|
51
|
+
begin
|
52
|
+
@ses ||= Aws::SES::Client.new(
|
53
|
+
access_key_id: fetch_access_key_id,
|
54
|
+
secret_access_key: fetch_secret_access_key,
|
55
|
+
region: fetch_region
|
56
|
+
)
|
57
|
+
rescue StandardError => e
|
58
|
+
puts "Trying to send an email with wrong email configuration: #{e}"
|
59
|
+
end
|
60
|
+
@ses
|
61
|
+
end
|
62
|
+
|
63
|
+
def fetch_to(to: nil, cc: nil, bcc: nil)
|
64
|
+
{
|
65
|
+
to_addresses: [to].flatten.compact.uniq
|
66
|
+
}.tap do |dest|
|
67
|
+
cc = [cc].flatten.compact.uniq
|
68
|
+
bcc = [bcc].flatten.compact.uniq
|
69
|
+
dest.merge!(cc_addresses: cc) unless cc.empty?
|
70
|
+
dest.merge!(bcc_addresses: bcc) unless bcc.empty?
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
def fetch_from(value = nil)
|
75
|
+
value || ENV['MAILER_FROM']
|
76
|
+
end
|
77
|
+
|
78
|
+
def fetch_access_key_id
|
79
|
+
ENV['MAILER_KEY_ID']
|
80
|
+
end
|
81
|
+
|
82
|
+
def fetch_secret_access_key
|
83
|
+
ENV['MAILER_ACCESS_KEY']
|
84
|
+
end
|
85
|
+
|
86
|
+
def fetch_region
|
87
|
+
ENV['MAILER_REGION']
|
88
|
+
end
|
89
|
+
end
|
90
|
+
end
|
91
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
class EcoRake
|
2
|
+
module Utils
|
3
|
+
module Mailing
|
4
|
+
# @return [EcoRake::Mailer]
|
5
|
+
def mailer
|
6
|
+
@mailer ||= EcoRake::Utils::Mailer.new
|
7
|
+
end
|
8
|
+
|
9
|
+
# Helper to notify that there are no files to be processed
|
10
|
+
def email_missing_files(enviro:, to:)
|
11
|
+
mailer.mail(**{
|
12
|
+
to: to,
|
13
|
+
subject: "#{enviro.upcase} (No files to be processed)",
|
14
|
+
body: 'No files found to be processed. Aborting...'
|
15
|
+
})
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require_relative 'utils/mailer'
|
2
|
+
require_relative 'utils/mailing'
|
3
|
+
require_relative 'utils/timing'
|
4
|
+
|
5
|
+
class EcoRake
|
6
|
+
module Utils
|
7
|
+
class << self
|
8
|
+
def included(base)
|
9
|
+
super(base)
|
10
|
+
base.extend ClassMethods
|
11
|
+
base.send :include, Mailing
|
12
|
+
base.send :include, Timing
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
module ClassMethods
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
data/lib/eco-rake.rb
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'rake-commander'
|
2
|
+
require 'dotenv'
|
3
|
+
require 'dotenv/load'
|
4
|
+
|
5
|
+
class EcoRake < RakeCommander
|
6
|
+
autoload_namespace_ignore "EcoRake::Tasks"
|
7
|
+
|
8
|
+
require_relative 'eco-rake/version'
|
9
|
+
require_relative 'eco-rake/base'
|
10
|
+
include EcoRake::Base
|
11
|
+
end
|
12
|
+
|
13
|
+
RakeCommander::Patcher.debug = ENV['COMMANDER_DEBUG'] == "true"
|
14
|
+
|
15
|
+
require_relative 'eco-rake/lib'
|
16
|
+
require_relative 'eco-rake/custom'
|
metadata
ADDED
@@ -0,0 +1,271 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: eco-rake
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Oscar Segura Samper
|
8
|
+
autorequire:
|
9
|
+
bindir: exe
|
10
|
+
cert_chain: []
|
11
|
+
date: 2023-06-06 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 2.4.9
|
20
|
+
- - "<"
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: '3'
|
23
|
+
type: :development
|
24
|
+
prerelease: false
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
26
|
+
requirements:
|
27
|
+
- - ">="
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: 2.4.9
|
30
|
+
- - "<"
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '3'
|
33
|
+
- !ruby/object:Gem::Dependency
|
34
|
+
name: rake
|
35
|
+
requirement: !ruby/object:Gem::Requirement
|
36
|
+
requirements:
|
37
|
+
- - ">="
|
38
|
+
- !ruby/object:Gem::Version
|
39
|
+
version: 13.0.6
|
40
|
+
- - "<"
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
version: '14'
|
43
|
+
type: :development
|
44
|
+
prerelease: false
|
45
|
+
version_requirements: !ruby/object:Gem::Requirement
|
46
|
+
requirements:
|
47
|
+
- - ">="
|
48
|
+
- !ruby/object:Gem::Version
|
49
|
+
version: 13.0.6
|
50
|
+
- - "<"
|
51
|
+
- !ruby/object:Gem::Version
|
52
|
+
version: '14'
|
53
|
+
- !ruby/object:Gem::Dependency
|
54
|
+
name: redcarpet
|
55
|
+
requirement: !ruby/object:Gem::Requirement
|
56
|
+
requirements:
|
57
|
+
- - ">="
|
58
|
+
- !ruby/object:Gem::Version
|
59
|
+
version: 3.6.0
|
60
|
+
- - "<"
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: '4'
|
63
|
+
type: :development
|
64
|
+
prerelease: false
|
65
|
+
version_requirements: !ruby/object:Gem::Requirement
|
66
|
+
requirements:
|
67
|
+
- - ">="
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: 3.6.0
|
70
|
+
- - "<"
|
71
|
+
- !ruby/object:Gem::Version
|
72
|
+
version: '4'
|
73
|
+
- !ruby/object:Gem::Dependency
|
74
|
+
name: rspec
|
75
|
+
requirement: !ruby/object:Gem::Requirement
|
76
|
+
requirements:
|
77
|
+
- - ">="
|
78
|
+
- !ruby/object:Gem::Version
|
79
|
+
version: 3.10.0
|
80
|
+
- - "<"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '4'
|
83
|
+
type: :development
|
84
|
+
prerelease: false
|
85
|
+
version_requirements: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: 3.10.0
|
90
|
+
- - "<"
|
91
|
+
- !ruby/object:Gem::Version
|
92
|
+
version: '4'
|
93
|
+
- !ruby/object:Gem::Dependency
|
94
|
+
name: yard
|
95
|
+
requirement: !ruby/object:Gem::Requirement
|
96
|
+
requirements:
|
97
|
+
- - ">="
|
98
|
+
- !ruby/object:Gem::Version
|
99
|
+
version: 0.9.34
|
100
|
+
- - "<"
|
101
|
+
- !ruby/object:Gem::Version
|
102
|
+
version: '1'
|
103
|
+
type: :development
|
104
|
+
prerelease: false
|
105
|
+
version_requirements: !ruby/object:Gem::Requirement
|
106
|
+
requirements:
|
107
|
+
- - ">="
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: 0.9.34
|
110
|
+
- - "<"
|
111
|
+
- !ruby/object:Gem::Version
|
112
|
+
version: '1'
|
113
|
+
- !ruby/object:Gem::Dependency
|
114
|
+
name: aws-sdk-ses
|
115
|
+
requirement: !ruby/object:Gem::Requirement
|
116
|
+
requirements:
|
117
|
+
- - ">="
|
118
|
+
- !ruby/object:Gem::Version
|
119
|
+
version: 1.36.0
|
120
|
+
- - "<"
|
121
|
+
- !ruby/object:Gem::Version
|
122
|
+
version: '2'
|
123
|
+
type: :runtime
|
124
|
+
prerelease: false
|
125
|
+
version_requirements: !ruby/object:Gem::Requirement
|
126
|
+
requirements:
|
127
|
+
- - ">="
|
128
|
+
- !ruby/object:Gem::Version
|
129
|
+
version: 1.36.0
|
130
|
+
- - "<"
|
131
|
+
- !ruby/object:Gem::Version
|
132
|
+
version: '2'
|
133
|
+
- !ruby/object:Gem::Dependency
|
134
|
+
name: dotenv
|
135
|
+
requirement: !ruby/object:Gem::Requirement
|
136
|
+
requirements:
|
137
|
+
- - ">="
|
138
|
+
- !ruby/object:Gem::Version
|
139
|
+
version: 2.7.6
|
140
|
+
- - "<"
|
141
|
+
- !ruby/object:Gem::Version
|
142
|
+
version: '3'
|
143
|
+
type: :runtime
|
144
|
+
prerelease: false
|
145
|
+
version_requirements: !ruby/object:Gem::Requirement
|
146
|
+
requirements:
|
147
|
+
- - ">="
|
148
|
+
- !ruby/object:Gem::Version
|
149
|
+
version: 2.7.6
|
150
|
+
- - "<"
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: '3'
|
153
|
+
- !ruby/object:Gem::Dependency
|
154
|
+
name: rake-commander
|
155
|
+
requirement: !ruby/object:Gem::Requirement
|
156
|
+
requirements:
|
157
|
+
- - ">="
|
158
|
+
- !ruby/object:Gem::Version
|
159
|
+
version: 0.3.6
|
160
|
+
- - "<"
|
161
|
+
- !ruby/object:Gem::Version
|
162
|
+
version: '0.4'
|
163
|
+
type: :runtime
|
164
|
+
prerelease: false
|
165
|
+
version_requirements: !ruby/object:Gem::Requirement
|
166
|
+
requirements:
|
167
|
+
- - ">="
|
168
|
+
- !ruby/object:Gem::Version
|
169
|
+
version: 0.3.6
|
170
|
+
- - "<"
|
171
|
+
- !ruby/object:Gem::Version
|
172
|
+
version: '0.4'
|
173
|
+
description:
|
174
|
+
email:
|
175
|
+
- oscar@ecoportal.co.nz
|
176
|
+
executables: []
|
177
|
+
extensions: []
|
178
|
+
extra_rdoc_files: []
|
179
|
+
files:
|
180
|
+
- ".gitignore"
|
181
|
+
- ".gitlab-ci.yml"
|
182
|
+
- ".rspec"
|
183
|
+
- ".rubocop.yml"
|
184
|
+
- ".yardopts"
|
185
|
+
- CHANGELOG.md
|
186
|
+
- Gemfile
|
187
|
+
- LICENSE
|
188
|
+
- README.md
|
189
|
+
- Rakefile
|
190
|
+
- eco-rake.gemspec
|
191
|
+
- lib/eco-rake.rb
|
192
|
+
- lib/eco-rake/base.rb
|
193
|
+
- lib/eco-rake/base/method_helpers.rb
|
194
|
+
- lib/eco-rake/base/symbol_resolver.rb
|
195
|
+
- lib/eco-rake/custom.rb
|
196
|
+
- lib/eco-rake/default.rb
|
197
|
+
- lib/eco-rake/default/const.rb
|
198
|
+
- lib/eco-rake/lib.rb
|
199
|
+
- lib/eco-rake/lib/base_task.rb
|
200
|
+
- lib/eco-rake/lib/concern.rb
|
201
|
+
- lib/eco-rake/lib/concern/base.rb
|
202
|
+
- lib/eco-rake/lib/concern/enviro.rb
|
203
|
+
- lib/eco-rake/lib/concern/local_folder.rb
|
204
|
+
- lib/eco-rake/lib/concern/person_schema.rb
|
205
|
+
- lib/eco-rake/lib/export.rb
|
206
|
+
- lib/eco-rake/lib/export/payload.rb
|
207
|
+
- lib/eco-rake/lib/files.rb
|
208
|
+
- lib/eco-rake/lib/files/decrypt.rb
|
209
|
+
- lib/eco-rake/lib/files/purge.rb
|
210
|
+
- lib/eco-rake/lib/files/sftp.rb
|
211
|
+
- lib/eco-rake/lib/notify.rb
|
212
|
+
- lib/eco-rake/lib/notify/mailer.rb
|
213
|
+
- lib/eco-rake/lib/options.rb
|
214
|
+
- lib/eco-rake/lib/people.rb
|
215
|
+
- lib/eco-rake/lib/people/base_task.rb
|
216
|
+
- lib/eco-rake/lib/people/sync_launch.rb
|
217
|
+
- lib/eco-rake/lib/people/sync_options.rb
|
218
|
+
- lib/eco-rake/lib/people/sync_process.rb
|
219
|
+
- lib/eco-rake/lib/people/sync_rely.rb
|
220
|
+
- lib/eco-rake/lib/task.rb
|
221
|
+
- lib/eco-rake/lib/task/runner_launch.rb
|
222
|
+
- lib/eco-rake/lib/task/runner_options.rb
|
223
|
+
- lib/eco-rake/lib/task/runner_rely.rb
|
224
|
+
- lib/eco-rake/option.rb
|
225
|
+
- lib/eco-rake/option/default_lookup.rb
|
226
|
+
- lib/eco-rake/option/mirror.rb
|
227
|
+
- lib/eco-rake/option/parented.rb
|
228
|
+
- lib/eco-rake/options.rb
|
229
|
+
- lib/eco-rake/options/default_lookup.rb
|
230
|
+
- lib/eco-rake/options/forwarding.rb
|
231
|
+
- lib/eco-rake/options/forwarding/proxy.rb
|
232
|
+
- lib/eco-rake/options/forwarding/rule.rb
|
233
|
+
- lib/eco-rake/options/library.rb
|
234
|
+
- lib/eco-rake/options/parental.rb
|
235
|
+
- lib/eco-rake/options/set.rb
|
236
|
+
- lib/eco-rake/rake_task.rb
|
237
|
+
- lib/eco-rake/shell.rb
|
238
|
+
- lib/eco-rake/shell/command.rb
|
239
|
+
- lib/eco-rake/shell/eco_helpers.rb
|
240
|
+
- lib/eco-rake/shell/files.rb
|
241
|
+
- lib/eco-rake/shell/gpg.rb
|
242
|
+
- lib/eco-rake/tasks.rb
|
243
|
+
- lib/eco-rake/utils.rb
|
244
|
+
- lib/eco-rake/utils/mailer.rb
|
245
|
+
- lib/eco-rake/utils/mailing.rb
|
246
|
+
- lib/eco-rake/utils/timing.rb
|
247
|
+
- lib/eco-rake/version.rb
|
248
|
+
homepage: https://www.ecoportal.com
|
249
|
+
licenses:
|
250
|
+
- MIT
|
251
|
+
metadata: {}
|
252
|
+
post_install_message:
|
253
|
+
rdoc_options: []
|
254
|
+
require_paths:
|
255
|
+
- lib
|
256
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
257
|
+
requirements:
|
258
|
+
- - ">="
|
259
|
+
- !ruby/object:Gem::Version
|
260
|
+
version: 2.7.2
|
261
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
262
|
+
requirements:
|
263
|
+
- - ">="
|
264
|
+
- !ruby/object:Gem::Version
|
265
|
+
version: '0'
|
266
|
+
requirements: []
|
267
|
+
rubygems_version: 3.4.12
|
268
|
+
signing_key:
|
269
|
+
specification_version: 4
|
270
|
+
summary: A set of helpers to build re-usable `rake` integration helpers.
|
271
|
+
test_files: []
|