avm 0.2.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.
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).