avmtrf1-tools 0.31.1 → 0.33.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (75) hide show
  1. checksums.yaml +4 -4
  2. data/lib/avmtrf1/active_directory/user.rb +3 -3
  3. data/lib/avmtrf1/check_point/session.rb +10 -9
  4. data/lib/avmtrf1/core_ext.rb +4 -0
  5. data/lib/avmtrf1/default_jira.rb +2 -2
  6. data/lib/avmtrf1/executables.rb +10 -2
  7. data/lib/avmtrf1/git/cached_repository.rb +2 -2
  8. data/lib/avmtrf1/git/issue_on_repository.rb +2 -2
  9. data/lib/avmtrf1/git/push_large.rb +4 -4
  10. data/lib/avmtrf1/git/push_large/lfs_commit.rb +5 -10
  11. data/lib/avmtrf1/git/push_large/lfs_commit/cache.rb +19 -0
  12. data/lib/avmtrf1/git/push_large/lfs_commit/checkout_previous_revision.rb +35 -0
  13. data/lib/avmtrf1/git/push_large/lfs_commit/commit_changes.rb +48 -0
  14. data/lib/avmtrf1/git/push_large/lfs_commit/helpers.rb +29 -0
  15. data/lib/avmtrf1/git/push_large/lfs_commit/pick_source_revision.rb +103 -0
  16. data/lib/avmtrf1/git/push_large/lfs_commit/push.rb +90 -0
  17. data/lib/avmtrf1/git/push_large/lfs_commit/track_large_files.rb +53 -0
  18. data/lib/avmtrf1/git/push_large/source_commit.rb +4 -7
  19. data/lib/avmtrf1/git/push_large/source_commit/push.rb +42 -0
  20. data/lib/avmtrf1/inventario_sistemas/site_build/html_page_base.rb +1 -1
  21. data/lib/avmtrf1/openvpn/config/builder.rb +59 -0
  22. data/lib/avmtrf1/openvpn/config/parser.rb +20 -0
  23. data/lib/avmtrf1/openvpn/config/parser/builder.rb +62 -0
  24. data/lib/avmtrf1/openvpn/config/parser/line.rb +47 -0
  25. data/lib/avmtrf1/openvpn/config/parser/simple.rb +27 -0
  26. data/lib/avmtrf1/openvpn/config/parser/tag.rb +39 -0
  27. data/lib/avmtrf1/patches.rb +3 -0
  28. data/lib/avmtrf1/patches/avm.rb +4 -0
  29. data/lib/avmtrf1/patches/avm/git.rb +4 -0
  30. data/lib/avmtrf1/patches/avm/git/issue.rb +4 -0
  31. data/lib/avmtrf1/patches/avm/launcher.rb +4 -0
  32. data/lib/avmtrf1/patches/avm/launcher/git.rb +4 -0
  33. data/lib/avmtrf1/patches/avm/launcher/git/base.rb +46 -0
  34. data/lib/avmtrf1/red/helper.rb +2 -2
  35. data/lib/avmtrf1/template.rb +2 -2
  36. data/lib/avmtrf1/tools/application.rb +13 -0
  37. data/lib/avmtrf1/tools/runner.rb +18 -25
  38. data/lib/avmtrf1/tools/runner/check_point.rb +3 -3
  39. data/lib/avmtrf1/tools/runner/check_point/login.rb +6 -6
  40. data/lib/avmtrf1/tools/runner/esosti.rb +4 -4
  41. data/lib/avmtrf1/tools/runner/esosti/changed.rb +5 -5
  42. data/lib/avmtrf1/tools/runner/esosti/fetch.rb +5 -5
  43. data/lib/avmtrf1/tools/runner/esosti/request.rb +5 -5
  44. data/lib/avmtrf1/tools/runner/forponto.rb +7 -7
  45. data/lib/avmtrf1/tools/runner/forponto/espelho.rb +6 -6
  46. data/lib/avmtrf1/tools/runner/forponto/marcacoes.rb +5 -5
  47. data/lib/avmtrf1/tools/runner/forponto/resumos.rb +6 -6
  48. data/lib/avmtrf1/tools/runner/forponto/saldo.rb +6 -6
  49. data/lib/avmtrf1/tools/runner/git.rb +2 -2
  50. data/lib/avmtrf1/tools/runner/git/issues_check.rb +8 -19
  51. data/lib/avmtrf1/tools/runner/git/push_large.rb +28 -19
  52. data/lib/avmtrf1/tools/runner/inventario_sistemas.rb +7 -9
  53. data/lib/avmtrf1/tools/runner/openvpn.rb +91 -0
  54. data/lib/avmtrf1/tools/runner/oracle.rb +16 -23
  55. data/lib/avmtrf1/tools/runner/oracle/query.rb +11 -13
  56. data/lib/avmtrf1/tools/runner/oracle/source_get.rb +18 -19
  57. data/lib/avmtrf1/tools/runner/oracle/user_clear.rb +8 -16
  58. data/lib/avmtrf1/tools/runner/php.rb +8 -15
  59. data/lib/avmtrf1/tools/runner/php/docker.rb +21 -31
  60. data/lib/avmtrf1/tools/runner/red.rb +22 -26
  61. data/lib/avmtrf1/tools/runner/trf1_dspace_base0.rb +10 -19
  62. data/lib/avmtrf1/tools/runner/trf1_dspace_base0/deploy.rb +2 -2
  63. data/lib/avmtrf1/tools/version.rb +1 -1
  64. data/template/avmtrf1/php/docker_image/Dockerfile.template +4 -1
  65. metadata +30 -93
  66. data/lib/avmtrf1/configs.rb +0 -24
  67. data/lib/avmtrf1/git/push_large/lfs_commit/_00_checkout_previous_revision.rb +0 -33
  68. data/lib/avmtrf1/git/push_large/lfs_commit/_01_cherry_pick_source_revision.rb +0 -89
  69. data/lib/avmtrf1/git/push_large/lfs_commit/_02_track_large_files.rb +0 -51
  70. data/lib/avmtrf1/git/push_large/lfs_commit/_03_commit_changes.rb +0 -46
  71. data/lib/avmtrf1/git/push_large/lfs_commit/_04_push.rb +0 -88
  72. data/lib/avmtrf1/git/push_large/lfs_commit/_cache.rb +0 -17
  73. data/lib/avmtrf1/git/push_large/lfs_commit/_helpers.rb +0 -27
  74. data/lib/avmtrf1/git/push_large/source_commit/_push.rb +0 -40
  75. data/lib/avmtrf1/patches/eac_launcher/git/base.rb +0 -43
@@ -0,0 +1,53 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avmtrf1
4
+ module Git
5
+ class PushLarge
6
+ class LfsCommit
7
+ module TrackLargeFiles
8
+ private
9
+
10
+ EXTENSIONS_REQUIRED_TO_TRACK = %w[
11
+ bak bkp bmp bpm cfm chm dat db doc fla flv gz jar log mp3 mp4 otf pdf ppt psd rar rtf
12
+ swf ttf wav wmf wmv wmz woff woff2 xmind z zip
13
+ ].freeze
14
+
15
+ def track_large_files_uncached
16
+ cherry_pick_source_revision
17
+ if lfs_file_min_size.present?
18
+
19
+ source_commit.files.each do |file|
20
+ next unless track_file_with_lfs?(file)
21
+
22
+ track_file(file)
23
+ end
24
+ raise 'None file was tracked' unless tracked_files.positive?
25
+ end
26
+ infov message('Tracked files'), @tracked_files
27
+ end
28
+
29
+ def track_file(file)
30
+ infov message('Tracking with LFS'), file
31
+ git.execute!('rm', '--cached', file.path)
32
+ git.execute!('lfs', 'track', file.path) unless tracked_file?(file)
33
+ @tracked_files += 1
34
+ end
35
+
36
+ def track_file_with_lfs?(file)
37
+ return false unless file.dst_size.positive?
38
+
39
+ required_extesion_to_track?(file) || (file.dst_size >= lfs_file_min_size)
40
+ end
41
+
42
+ def required_extesion_to_track?(file)
43
+ EXTENSIONS_REQUIRED_TO_TRACK.include?(::File.extname(file.path).gsub(/\A\./, ''))
44
+ end
45
+
46
+ def tracked_file?(file)
47
+ git.execute!('check-attr', '--all', '--', file.path).strip.present?
48
+ end
49
+ end
50
+ end
51
+ end
52
+ end
53
+ end
@@ -1,18 +1,15 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'avm/git/commit'
4
- require 'eac_ruby_utils/console/speaker'
5
- require 'eac_ruby_utils/simple_cache'
6
- require 'eac_ruby_utils/require_sub'
4
+ require 'avmtrf1/core_ext'
7
5
 
8
6
  module Avmtrf1
9
7
  module Git
10
8
  class PushLarge
11
9
  class SourceCommit < ::Avm::Git::Commit
12
- include ::EacRubyUtils::SimpleCache
13
- include ::EacRubyUtils::Console::Speaker
14
-
15
- ::EacRubyUtils.require_sub(__FILE__)
10
+ require_sub __FILE__, include_modules: true
11
+ enable_simple_cache
12
+ enable_speaker
16
13
 
17
14
  attr_reader :push_large, :sha1, :no_lfs_max_size
18
15
 
@@ -0,0 +1,42 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'filesize'
4
+
5
+ module Avmtrf1
6
+ module Git
7
+ class PushLarge
8
+ class SourceCommit
9
+ module Push
10
+ private
11
+
12
+ LFS_FILE_MIN_SIZES = [nil, 1_048_576, 524_288, 131_072].freeze
13
+
14
+ def pushed_revision_uncached
15
+ fs_cache.child('pushed_revision')
16
+ end
17
+
18
+ def run_pushs
19
+ return if LFS_FILE_MIN_SIZES.any? do |lfs_file_min_size|
20
+ lfs_commit = ::Avmtrf1::Git::PushLarge::LfsCommit.new(self, lfs_file_min_size)
21
+ lfs_commit.start_banner
22
+ push_with_lfs(lfs_commit)
23
+ end
24
+
25
+ raise 'Push de todos os commits falharam'
26
+ end
27
+
28
+ def push_with_lfs(lfs_commit)
29
+ if lfs_commit.push_ok?
30
+ pushed_revision.write(lfs_commit.commit.sha1)
31
+ success " * Pushed: #{pushed_revision.read}"
32
+ true
33
+ else
34
+ warn ' * Push failed'
35
+ false
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
42
+ end
@@ -7,7 +7,7 @@ module Avmtrf1
7
7
  class SiteBuild
8
8
  class HtmlPageBase
9
9
  require_sub __FILE__, include_modules: true
10
- enable_console_speaker
10
+ enable_speaker
11
11
  common_constructor :site, :parent
12
12
 
13
13
  SITE_TITLE = 'Inventário de Sistemas'
@@ -0,0 +1,59 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'avmtrf1/openvpn/config/parser'
4
+ require 'eac_ruby_utils/core_ext'
5
+ require 'eac_ruby_utils/fs/temp'
6
+
7
+ module Avmtrf1
8
+ module Openvpn
9
+ module Config
10
+ class Builder
11
+ common_constructor :source_data do
12
+ unless source_data.is_a?(::Hash)
13
+ self.source_data = ::Avmtrf1::Openvpn::Config::Parser.new(source_data.to_s).data
14
+ end
15
+ end
16
+
17
+ def data
18
+ [simple, tags].reject(&:blank?).join("\n")
19
+ end
20
+
21
+ def on_data_file
22
+ ::EacRubyUtils::Fs::Temp.on_file do |file|
23
+ file.write(data)
24
+ yield(file)
25
+ end
26
+ end
27
+
28
+ def simple
29
+ source_data.fetch(:simple)
30
+ .map { |s| ::Shellwords.join([s.fetch(:attribute)] + s.fetch(:args)) }
31
+ .map { |s| "#{s}\n" }.join
32
+ end
33
+
34
+ def simple_add_or_update(name, args)
35
+ new_data = { attribute: name, args: args }
36
+ s = simple_find(name)
37
+ if s
38
+ s.merge!(new_data)
39
+ else
40
+ source_data.fetch(:simple) << new_data
41
+ end
42
+ end
43
+
44
+ def tags
45
+ source_data.fetch(:tags).map { |t| tag_to_data(t) }
46
+ end
47
+
48
+ def tag_to_data(tag)
49
+ ["<#{tag.fetch(:name)}>", tag.fetch(:content), "</#{tag.fetch(:name)}>"]
50
+ .map { |v| "#{v}\n" }.join
51
+ end
52
+
53
+ def simple_find(name)
54
+ source_data.fetch(:simple).find { |s| s.fetch(:attribute) == name }
55
+ end
56
+ end
57
+ end
58
+ end
59
+ end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'aranha/parsers/base'
4
+ require 'eac_ruby_utils/core_ext'
5
+
6
+ module Avmtrf1
7
+ module Openvpn
8
+ module Config
9
+ class Parser < ::Aranha::Parsers::Base
10
+ require_sub __FILE__
11
+
12
+ def data
13
+ builder = ::Avmtrf1::Openvpn::Config::Parser::Builder.new
14
+ content.each_line { |line| builder.add_line(line) }
15
+ { simple: builder.simple.map(&:data), tags: builder.tags.map(&:data) }
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,62 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'avmtrf1/openvpn/config/parser/line'
4
+ require 'avmtrf1/openvpn/config/parser/simple'
5
+ require 'avmtrf1/openvpn/config/parser/tag'
6
+
7
+ module Avmtrf1
8
+ module Openvpn
9
+ module Config
10
+ class Parser < ::Aranha::Parsers::Base
11
+ class Builder
12
+ attr_reader :simple, :tags
13
+
14
+ def initialize
15
+ @simple = []
16
+ @tags = []
17
+ end
18
+
19
+ def add_line(line_text)
20
+ line = ::Avmtrf1::Openvpn::Config::Parser::Line.new(line_text)
21
+ if on_tag?
22
+ add_line_on_tag(line)
23
+ else
24
+ add_line_not_on_tag(line)
25
+ end
26
+ end
27
+
28
+ def add_line_on_tag(line)
29
+ if line.close_tag?
30
+ if line.tag_name != current_tag.name
31
+ raise("Closing tag \"#{line.tag_name}\" does not match current tag " \
32
+ "\"#{current_tag}\"")
33
+ end
34
+
35
+ current_tag.close
36
+ else
37
+ current_tag.add_line(line.text)
38
+ end
39
+ end
40
+
41
+ def add_line_not_on_tag(line)
42
+ return if line.blank_text?
43
+
44
+ if line.open_tag?
45
+ tags << ::Avmtrf1::Openvpn::Config::Parser::Tag.new(line.tag_name)
46
+ else
47
+ simple << ::Avmtrf1::Openvpn::Config::Parser::Simple.new(line.simple_parts)
48
+ end
49
+ end
50
+
51
+ def current_tag
52
+ tags.last
53
+ end
54
+
55
+ def on_tag?
56
+ tags.last.if_present(false, &:open?)
57
+ end
58
+ end
59
+ end
60
+ end
61
+ end
62
+ end
@@ -0,0 +1,47 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+
5
+ module Avmtrf1
6
+ module Openvpn
7
+ module Config
8
+ class Parser < ::Aranha::Parsers::Base
9
+ class Line
10
+ OPEN_TAG_PATTERN = /\A<(.+)>\z/.freeze
11
+ CLOSE_TAG_PATTERN = %r{\A</(.+)>\z}.freeze
12
+ SIMPLE_PATTERN = /\A(\S+)(?:\s+(\S.*))\z/.freeze
13
+
14
+ common_constructor :text do
15
+ self.text = text.rstrip
16
+ end
17
+
18
+ def simple_parts
19
+ ::Shellwords.split(text)
20
+ end
21
+
22
+ def blank_text?
23
+ text.blank?
24
+ end
25
+
26
+ def open_tag?
27
+ OPEN_TAG_PATTERN.match?(text)
28
+ end
29
+
30
+ def close_tag?
31
+ CLOSE_TAG_PATTERN.match?(text)
32
+ end
33
+
34
+ def tag_name
35
+ if close_tag?
36
+ CLOSE_TAG_PATTERN.if_match(text) { |m| m[1] }
37
+ elsif open_tag?
38
+ OPEN_TAG_PATTERN.if_match(text) { |m| m[1] }
39
+ else
40
+ raise "Unmapped branch in #{__method__}"
41
+ end
42
+ end
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+
5
+ module Avmtrf1
6
+ module Openvpn
7
+ module Config
8
+ class Parser < ::Aranha::Parsers::Base
9
+ class Simple
10
+ common_constructor :parts
11
+
12
+ def data
13
+ { attribute: attribute, args: args }
14
+ end
15
+
16
+ def attribute
17
+ parts.first
18
+ end
19
+
20
+ def args
21
+ parts[1..-1]
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,39 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+
5
+ module Avmtrf1
6
+ module Openvpn
7
+ module Config
8
+ class Parser < ::Aranha::Parsers::Base
9
+ class Tag
10
+ common_constructor :name do
11
+ @open = true
12
+ end
13
+
14
+ def add_line(text)
15
+ lines << text
16
+ end
17
+
18
+ def data
19
+ { name: name, content: lines.join("\n") }
20
+ end
21
+
22
+ def open?
23
+ @open
24
+ end
25
+
26
+ def close
27
+ @open = false
28
+ end
29
+
30
+ private
31
+
32
+ def lines
33
+ @lines ||= []
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
@@ -1 +1,4 @@
1
+ # frozen_string_literal: true
1
2
 
3
+ require 'eac_ruby_utils/require_sub'
4
+ ::EacRubyUtils.require_sub(__FILE__)
@@ -0,0 +1,4 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/require_sub'
4
+ ::EacRubyUtils.require_sub(__FILE__)
@@ -0,0 +1,4 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/require_sub'
4
+ ::EacRubyUtils.require_sub(__FILE__)
@@ -0,0 +1,4 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/require_sub'
4
+ ::EacRubyUtils.require_sub(__FILE__)
@@ -0,0 +1,4 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/require_sub'
4
+ ::EacRubyUtils.require_sub(__FILE__)
@@ -0,0 +1,4 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/require_sub'
4
+ ::EacRubyUtils.require_sub(__FILE__)
@@ -0,0 +1,46 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'avm/launcher/git/base'
4
+ require 'eac_ruby_utils/patch'
5
+ require 'active_support/concern'
6
+
7
+ module Avmtrf1
8
+ module Patches
9
+ module Avm
10
+ module Launcher
11
+ module Git
12
+ module Base
13
+ extend ActiveSupport::Concern
14
+
15
+ included do
16
+ include InstanceMethods
17
+ end
18
+
19
+ module InstanceMethods
20
+ def status_files
21
+ execute!('-c', 'core.quotepath=off', 'status', '--porcelain')
22
+ .each_line.map do |line|
23
+ parse_status_file(line)
24
+ end
25
+ end
26
+
27
+ private
28
+
29
+ def parse_status_file(line)
30
+ m = /\A(.)(.)\s*(\S.*)\z/.match(line.strip)
31
+ return ::OpenStruct.new(stage: m[1], dirty: m[2], path: m[3]) if m
32
+
33
+ raise "\"#{line.strip}\" did not match pattern"
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
42
+
43
+ ::EacRubyUtils.patch(
44
+ ::Avm::Launcher::Git::Base,
45
+ ::Avmtrf1::Patches::Avm::Launcher::Git::Base
46
+ )