avm 0.2.0 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (77) hide show
  1. checksums.yaml +4 -4
  2. data/lib/avm/app_src/base.rb +45 -0
  3. data/lib/avm/app_src/configuration/_locale.rb +16 -0
  4. data/lib/avm/app_src/configuration/_rubocop.rb +24 -0
  5. data/lib/avm/app_src/configuration/_tests.rb +27 -0
  6. data/lib/avm/app_src/configuration.rb +55 -0
  7. data/lib/avm/app_src.rb +9 -0
  8. data/lib/avm/executables.rb +24 -0
  9. data/lib/avm/files/appendable/file_content.rb +24 -0
  10. data/lib/avm/files/appendable/plain_directory.rb +25 -0
  11. data/lib/avm/files/appendable/resource_base.rb +13 -0
  12. data/lib/avm/files/appendable/tar_output_command.rb +26 -0
  13. data/lib/avm/files/appendable/templatized_directory.rb +29 -0
  14. data/lib/avm/files/appendable.rb +55 -0
  15. data/lib/avm/files/appender.rb +11 -0
  16. data/lib/avm/files/deploy.rb +71 -0
  17. data/lib/avm/files/formatter/formats/base.rb +62 -0
  18. data/lib/avm/files/formatter/formats/generic_plain.rb +34 -0
  19. data/lib/avm/files/formatter/formats/html.rb +45 -0
  20. data/lib/avm/files/formatter/formats/javascript.rb +24 -0
  21. data/lib/avm/files/formatter/formats/json.rb +27 -0
  22. data/lib/avm/files/formatter/formats/php.rb +22 -0
  23. data/lib/avm/files/formatter/formats/python.rb +22 -0
  24. data/lib/avm/files/formatter/formats/ruby.rb +22 -0
  25. data/lib/avm/files/formatter/formats/xml.rb +28 -0
  26. data/lib/avm/files/formatter/formats.rb +13 -0
  27. data/lib/avm/files/formatter/utf8_assert.rb +74 -0
  28. data/lib/avm/files/formatter.rb +90 -0
  29. data/lib/avm/files/rotate.rb +107 -0
  30. data/lib/avm/files.rb +9 -0
  31. data/lib/avm/git/auto_commit/commit_info.rb +23 -0
  32. data/lib/avm/git/auto_commit/rules/base.rb +39 -0
  33. data/lib/avm/git/auto_commit/rules/last.rb +19 -0
  34. data/lib/avm/git/auto_commit/rules/manual.rb +45 -0
  35. data/lib/avm/git/auto_commit/rules/new.rb +24 -0
  36. data/lib/avm/git/auto_commit/rules/nth.rb +31 -0
  37. data/lib/avm/git/auto_commit/rules/unique.rb +21 -0
  38. data/lib/avm/git/auto_commit/rules.rb +31 -0
  39. data/lib/avm/git/auto_commit_path/ruby.rb +20 -0
  40. data/lib/avm/git/auto_commit_path.rb +28 -0
  41. data/lib/avm/git/commit/class_methods.rb +31 -0
  42. data/lib/avm/git/commit/deploy.rb +38 -0
  43. data/lib/avm/git/commit/deploy_methods.rb +19 -0
  44. data/lib/avm/git/commit/diff_tree_line.rb +32 -0
  45. data/lib/avm/git/commit/file.rb +46 -0
  46. data/lib/avm/git/commit.rb +59 -0
  47. data/lib/avm/git/file_auto_fixup.rb +83 -0
  48. data/lib/avm/git/issue/complete/commits.rb +42 -0
  49. data/lib/avm/git/issue/complete/git_subrepos.rb +23 -0
  50. data/lib/avm/git/issue/complete/local_branch.rb +54 -0
  51. data/lib/avm/git/issue/complete/local_tag.rb +39 -0
  52. data/lib/avm/git/issue/complete/push.rb +54 -0
  53. data/lib/avm/git/issue/complete/remote.rb +33 -0
  54. data/lib/avm/git/issue/complete/test.rb +45 -0
  55. data/lib/avm/git/issue/complete/tracker.rb +28 -0
  56. data/lib/avm/git/issue/complete/validation.rb +31 -0
  57. data/lib/avm/git/issue/complete/validations.rb +53 -0
  58. data/lib/avm/git/issue/complete/working_tree.rb +19 -0
  59. data/lib/avm/git/issue/complete.rb +51 -0
  60. data/lib/avm/git/issue/deliver.rb +56 -0
  61. data/lib/avm/git/issue.rb +11 -0
  62. data/lib/avm/git/organize/reference_update.rb +34 -0
  63. data/lib/avm/git/organize/repository.rb +76 -0
  64. data/lib/avm/git/organize.rb +11 -0
  65. data/lib/avm/git/revision_test.rb +105 -0
  66. data/lib/avm/git/subrepo_check/parent.rb +51 -0
  67. data/lib/avm/git/subrepo_check/remote.rb +89 -0
  68. data/lib/avm/git/subrepo_check/show_result.rb +32 -0
  69. data/lib/avm/git/subrepo_check.rb +38 -0
  70. data/lib/avm/git/subrepo_checks.rb +59 -0
  71. data/lib/avm/git.rb +10 -0
  72. data/lib/avm/jobs/base.rb +62 -0
  73. data/lib/avm/jobs/variables_source.rb +22 -0
  74. data/lib/avm/jobs.rb +9 -0
  75. data/lib/avm/result.rb +86 -0
  76. data/lib/avm/version.rb +1 -1
  77. metadata +179 -3
@@ -0,0 +1,62 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'avm/jobs/variables_source'
4
+ require 'eac_cli/core_ext'
5
+
6
+ module Avm
7
+ module Jobs
8
+ module Base
9
+ common_concern do
10
+ include ::ActiveSupport::Callbacks
11
+
12
+ enable_speaker
13
+ enable_simple_cache
14
+ enable_listable
15
+ common_constructor :instance, :options, default: [{}] do
16
+ if option_list.present?
17
+ self.options = option_list.hash_keys_validate!(options.symbolize_keys)
18
+ end
19
+ end
20
+ define_callbacks(*jobs)
21
+ end
22
+
23
+ module ClassMethods
24
+ def jobs
25
+ const_get('JOBS').dup
26
+ end
27
+ end
28
+
29
+ module InstanceMethods
30
+ def option_list
31
+ nil
32
+ end
33
+
34
+ def run
35
+ start_banner if respond_to?(:start_banner)
36
+ run_jobs
37
+ ::Avm::Result.success('Done!')
38
+ rescue ::Avm::Result::Error => e
39
+ e.to_result
40
+ end
41
+
42
+ def variables_source
43
+ ::Avm::Jobs::VariablesSource.new(self, instance)
44
+ end
45
+
46
+ protected
47
+
48
+ def run_jobs
49
+ jobs.each do |job|
50
+ run_callbacks job do
51
+ send(job)
52
+ end
53
+ end
54
+ end
55
+
56
+ def jobs
57
+ self.class.jobs
58
+ end
59
+ end
60
+ end
61
+ end
62
+ end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+
5
+ module Avm
6
+ module Jobs
7
+ class VariablesSource
8
+ common_constructor :job, :instance
9
+
10
+ def read_entry(path, options = {})
11
+ entry_from_job(path) || instance.read_entry(path, options)
12
+ end
13
+
14
+ private
15
+
16
+ def entry_from_job(path)
17
+ method = path.gsub('.', '_').underscore
18
+ return job.send(method) if job.respond_to?(method, true)
19
+ end
20
+ end
21
+ end
22
+ end
data/lib/avm/jobs.rb ADDED
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+
5
+ module Avm
6
+ module Jobs
7
+ require_sub __FILE__
8
+ end
9
+ end
data/lib/avm/result.rb ADDED
@@ -0,0 +1,86 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'colorized_string'
4
+ require 'eac_ruby_utils/listable'
5
+ require 'eac_ruby_utils/core_ext'
6
+
7
+ module Avm
8
+ class Result < ::SimpleDelegator
9
+ include ::EacRubyUtils::Listable
10
+
11
+ lists.add_string :type, :success, :error, :neutral, :pending, :outdated
12
+
13
+ lists.type.values.each do |type| # rubocop:disable Style/HashEachMethods
14
+ class_eval <<-RUBY_EVAL, __FILE__, __LINE__ + 1
15
+ def self.#{type}(value)
16
+ new(value, TYPE_#{type.upcase})
17
+ end
18
+ RUBY_EVAL
19
+ end
20
+
21
+ TYPE_SUCCESS_COLOR = 'green'
22
+ TYPE_ERROR_COLOR = 'red'
23
+ TYPE_NEUTRAL_COLOR = 'light_black'
24
+ TYPE_PENDING_COLOR = 'yellow'
25
+ TYPE_OUTDATED_COLOR = 'blue'
26
+
27
+ class << self
28
+ # Return Avm::Result.success(success_value) if +success+ is truthy.
29
+ # Return Avm::Result.error(error_value || success_value) if +success+ is falsely.
30
+ # @return [Avm::Result]
31
+ def success_or_error(success, success_value, error_value = nil)
32
+ if success
33
+ self.success(success_value)
34
+ else
35
+ error(error_value.presence || success_value)
36
+ end
37
+ end
38
+ end
39
+
40
+ attr_reader :type
41
+
42
+ def initialize(value, type)
43
+ super(value)
44
+ validate_type(type)
45
+ @type = type
46
+ end
47
+
48
+ def label
49
+ label_fg
50
+ end
51
+
52
+ def label_fg
53
+ ColorizedString.new(to_s).send(type_color)
54
+ end
55
+
56
+ def label_bg
57
+ ColorizedString.new(to_s).light_white.send("on_#{type_color}")
58
+ end
59
+
60
+ def type_color
61
+ self.class.const_get("type_#{type}_color".upcase)
62
+ end
63
+
64
+ lists.type.values.each do |type| # rubocop:disable Style/HashEachMethods
65
+ class_eval <<-RUBY_EVAL, __FILE__, __LINE__ + 1
66
+ def #{type}?
67
+ @type == '#{type}'
68
+ end
69
+ RUBY_EVAL
70
+ end
71
+
72
+ private
73
+
74
+ def validate_type(type)
75
+ return if self.class.lists.type.values.include?(type)
76
+
77
+ raise "Tipo desconhecido: \"#{type}\" (Válido: #{self.class.lists.type.values.join(', ')})"
78
+ end
79
+
80
+ class Error < StandardError
81
+ def to_result
82
+ ::Avm::Result.error(message)
83
+ end
84
+ end
85
+ end
86
+ end
data/lib/avm/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Avm
4
- VERSION = '0.2.0'
4
+ VERSION = '0.4.0'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: avm
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eduardo H. Bogoni
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-07-07 00:00:00.000000000 Z
11
+ date: 2021-09-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: eac_docker
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0.3'
27
+ - !ruby/object:Gem::Dependency
28
+ name: eac_git
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '0.6'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '0.6'
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: eac_ruby_utils
29
43
  requirement: !ruby/object:Gem::Requirement
@@ -38,6 +52,94 @@ dependencies:
38
52
  - - "~>"
39
53
  - !ruby/object:Gem::Version
40
54
  version: '0.68'
55
+ - !ruby/object:Gem::Dependency
56
+ name: eac_templates
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '0.1'
62
+ - - ">="
63
+ - !ruby/object:Gem::Version
64
+ version: 0.1.1
65
+ type: :runtime
66
+ prerelease: false
67
+ version_requirements: !ruby/object:Gem::Requirement
68
+ requirements:
69
+ - - "~>"
70
+ - !ruby/object:Gem::Version
71
+ version: '0.1'
72
+ - - ">="
73
+ - !ruby/object:Gem::Version
74
+ version: 0.1.1
75
+ - !ruby/object:Gem::Dependency
76
+ name: filesize
77
+ requirement: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - "~>"
80
+ - !ruby/object:Gem::Version
81
+ version: '0.2'
82
+ type: :runtime
83
+ prerelease: false
84
+ version_requirements: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - "~>"
87
+ - !ruby/object:Gem::Version
88
+ version: '0.2'
89
+ - !ruby/object:Gem::Dependency
90
+ name: htmlbeautifier
91
+ requirement: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - "~>"
94
+ - !ruby/object:Gem::Version
95
+ version: '1.3'
96
+ - - ">="
97
+ - !ruby/object:Gem::Version
98
+ version: 1.3.1
99
+ type: :runtime
100
+ prerelease: false
101
+ version_requirements: !ruby/object:Gem::Requirement
102
+ requirements:
103
+ - - "~>"
104
+ - !ruby/object:Gem::Version
105
+ version: '1.3'
106
+ - - ">="
107
+ - !ruby/object:Gem::Version
108
+ version: 1.3.1
109
+ - !ruby/object:Gem::Dependency
110
+ name: minitar
111
+ requirement: !ruby/object:Gem::Requirement
112
+ requirements:
113
+ - - "~>"
114
+ - !ruby/object:Gem::Version
115
+ version: '0.9'
116
+ type: :runtime
117
+ prerelease: false
118
+ version_requirements: !ruby/object:Gem::Requirement
119
+ requirements:
120
+ - - "~>"
121
+ - !ruby/object:Gem::Version
122
+ version: '0.9'
123
+ - !ruby/object:Gem::Dependency
124
+ name: aranha-parsers
125
+ requirement: !ruby/object:Gem::Requirement
126
+ requirements:
127
+ - - "~>"
128
+ - !ruby/object:Gem::Version
129
+ version: '0.7'
130
+ - - ">="
131
+ - !ruby/object:Gem::Version
132
+ version: 0.7.2
133
+ type: :development
134
+ prerelease: false
135
+ version_requirements: !ruby/object:Gem::Requirement
136
+ requirements:
137
+ - - "~>"
138
+ - !ruby/object:Gem::Version
139
+ version: '0.7'
140
+ - - ">="
141
+ - !ruby/object:Gem::Version
142
+ version: 0.7.2
41
143
  - !ruby/object:Gem::Dependency
42
144
  name: eac_ruby_gem_support
43
145
  requirement: !ruby/object:Gem::Requirement
@@ -59,11 +161,85 @@ extensions: []
59
161
  extra_rdoc_files: []
60
162
  files:
61
163
  - lib/avm.rb
164
+ - lib/avm/app_src.rb
165
+ - lib/avm/app_src/base.rb
166
+ - lib/avm/app_src/configuration.rb
167
+ - lib/avm/app_src/configuration/_locale.rb
168
+ - lib/avm/app_src/configuration/_rubocop.rb
169
+ - lib/avm/app_src/configuration/_tests.rb
62
170
  - lib/avm/docker.rb
63
171
  - lib/avm/docker/container.rb
64
172
  - lib/avm/docker/image.rb
65
173
  - lib/avm/docker/runner.rb
174
+ - lib/avm/executables.rb
175
+ - lib/avm/files.rb
176
+ - lib/avm/files/appendable.rb
177
+ - lib/avm/files/appendable/file_content.rb
178
+ - lib/avm/files/appendable/plain_directory.rb
179
+ - lib/avm/files/appendable/resource_base.rb
180
+ - lib/avm/files/appendable/tar_output_command.rb
181
+ - lib/avm/files/appendable/templatized_directory.rb
182
+ - lib/avm/files/appender.rb
183
+ - lib/avm/files/deploy.rb
184
+ - lib/avm/files/formatter.rb
185
+ - lib/avm/files/formatter/formats.rb
186
+ - lib/avm/files/formatter/formats/base.rb
187
+ - lib/avm/files/formatter/formats/generic_plain.rb
188
+ - lib/avm/files/formatter/formats/html.rb
189
+ - lib/avm/files/formatter/formats/javascript.rb
190
+ - lib/avm/files/formatter/formats/json.rb
191
+ - lib/avm/files/formatter/formats/php.rb
192
+ - lib/avm/files/formatter/formats/python.rb
193
+ - lib/avm/files/formatter/formats/ruby.rb
194
+ - lib/avm/files/formatter/formats/xml.rb
195
+ - lib/avm/files/formatter/utf8_assert.rb
196
+ - lib/avm/files/rotate.rb
197
+ - lib/avm/git.rb
198
+ - lib/avm/git/auto_commit/commit_info.rb
199
+ - lib/avm/git/auto_commit/rules.rb
200
+ - lib/avm/git/auto_commit/rules/base.rb
201
+ - lib/avm/git/auto_commit/rules/last.rb
202
+ - lib/avm/git/auto_commit/rules/manual.rb
203
+ - lib/avm/git/auto_commit/rules/new.rb
204
+ - lib/avm/git/auto_commit/rules/nth.rb
205
+ - lib/avm/git/auto_commit/rules/unique.rb
206
+ - lib/avm/git/auto_commit_path.rb
207
+ - lib/avm/git/auto_commit_path/ruby.rb
208
+ - lib/avm/git/commit.rb
209
+ - lib/avm/git/commit/class_methods.rb
210
+ - lib/avm/git/commit/deploy.rb
211
+ - lib/avm/git/commit/deploy_methods.rb
212
+ - lib/avm/git/commit/diff_tree_line.rb
213
+ - lib/avm/git/commit/file.rb
214
+ - lib/avm/git/file_auto_fixup.rb
215
+ - lib/avm/git/issue.rb
216
+ - lib/avm/git/issue/complete.rb
217
+ - lib/avm/git/issue/complete/commits.rb
218
+ - lib/avm/git/issue/complete/git_subrepos.rb
219
+ - lib/avm/git/issue/complete/local_branch.rb
220
+ - lib/avm/git/issue/complete/local_tag.rb
221
+ - lib/avm/git/issue/complete/push.rb
222
+ - lib/avm/git/issue/complete/remote.rb
223
+ - lib/avm/git/issue/complete/test.rb
224
+ - lib/avm/git/issue/complete/tracker.rb
225
+ - lib/avm/git/issue/complete/validation.rb
226
+ - lib/avm/git/issue/complete/validations.rb
227
+ - lib/avm/git/issue/complete/working_tree.rb
228
+ - lib/avm/git/issue/deliver.rb
229
+ - lib/avm/git/organize.rb
230
+ - lib/avm/git/organize/reference_update.rb
231
+ - lib/avm/git/organize/repository.rb
232
+ - lib/avm/git/revision_test.rb
233
+ - lib/avm/git/subrepo_check.rb
234
+ - lib/avm/git/subrepo_check/parent.rb
235
+ - lib/avm/git/subrepo_check/remote.rb
236
+ - lib/avm/git/subrepo_check/show_result.rb
237
+ - lib/avm/git/subrepo_checks.rb
66
238
  - lib/avm/instances/docker_image.rb
239
+ - lib/avm/jobs.rb
240
+ - lib/avm/jobs/base.rb
241
+ - lib/avm/jobs/variables_source.rb
242
+ - lib/avm/result.rb
67
243
  - lib/avm/version.rb
68
244
  - lib/avm/version_number.rb
69
245
  homepage:
@@ -84,7 +260,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
84
260
  - !ruby/object:Gem::Version
85
261
  version: '0'
86
262
  requirements: []
87
- rubygems_version: 3.0.9
263
+ rubygems_version: 3.1.6
88
264
  signing_key:
89
265
  specification_version: 4
90
266
  summary: Ruby base library for Agora Vai! Methodology (https://avm.esquiloazul.tech).