avm-tools 0.56.0 → 0.57.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: '085a810ef05afe2de594a7acfc667d6634c431392f2e1d290ee5b9b65151bc56'
4
- data.tar.gz: 0c3a8e05eebbaeb7a6d0dbe2fb97a8864628746e694b12922b5a1db032354577
3
+ metadata.gz: f0b0b4e4d80b6961f0eac94d2698535f0fbf5f4cd09fd15bb2ed5db238cb472b
4
+ data.tar.gz: a359c6044ceefd1c61296bf3a3c6ea32eeeee3c5a79c5a120d4b07306185e1aa
5
5
  SHA512:
6
- metadata.gz: 12cc99637f0413895661d8598b383e446cf9750665ec9ba256152595bf9a2c188b64d420965e0e95b4d887ac50482754256379b169a6f743b393a1a343682a3d
7
- data.tar.gz: 4c477631dcfad184ad24b0458b4da6e41b4a7c2f9a1672aaeea0c36c6145daebf27c7c67720b79e69d9da8def06e5d6deb11575a5b5f6a0c69a95a88b922ee56
6
+ metadata.gz: bd03f841630fa15e5b8b996db616944fc170c32aedcc2a8146e23edc9b709617149bce6c1b795d5253057bc7a029bdc977ce491bfd06d3a9aef1022bdd1a70f5
7
+ data.tar.gz: a2787bc3227940b3c1649883e12ddec48ac76add691f86f33a574168eb5c3b13389941b965e1d02f2984a8965e0df697792b2aa3629668ba5076d68a92c5bd5f
@@ -0,0 +1,64 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_cli/default_runner'
4
+
5
+ module Avm
6
+ module Tools
7
+ class Runner < ::EacRubyUtils::Console::DocoptRunner
8
+ class EacRedmineBase0 < ::EacRubyUtils::Console::DocoptRunner
9
+ class ProjectRename < ::Avm::Rails::Runners::Runner
10
+ include ::EacCli::DefaultRunner
11
+
12
+ runner_definition do
13
+ pos_arg :from
14
+ pos_arg :to
15
+ end
16
+
17
+ def run
18
+ start_banner
19
+ command.system!
20
+ end
21
+
22
+ def start_banner
23
+ infov 'From', from
24
+ infov 'To', to
25
+ end
26
+
27
+ def from
28
+ options.fetch('<from>')
29
+ end
30
+
31
+ def to
32
+ options.fetch('<to>')
33
+ end
34
+
35
+ def command
36
+ context(:instance).bundle('exec', 'rails', 'runner', code)
37
+ end
38
+
39
+ def code
40
+ <<~CODE
41
+ from_arg = '#{from}'
42
+ to_arg = '#{to}'
43
+ project = ::Project.where(identifier: from_arg).first
44
+ if project.present?
45
+ puts "Project found: \#{project}"
46
+ puts "Renaming..."
47
+ project.update_column(:identifier, to_arg)
48
+ puts "Renamed. Testing..."
49
+ project = ::Project.where(identifier: to_arg).first
50
+ if project
51
+ puts "Project found: \#{project}"
52
+ else
53
+ fail "After rename: project not found with identifier \\"\#{to_arg}\\""
54
+ end
55
+ else
56
+ fail "Before rename: project not found with identifier \\"\#{from_arg}\\""
57
+ end
58
+ CODE
59
+ end
60
+ end
61
+ end
62
+ end
63
+ end
64
+ end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Avm
4
4
  module Tools
5
- VERSION = '0.56.0'
5
+ VERSION = '0.57.0'
6
6
  end
7
7
  end
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'eac_ruby_utils/filesystem_cache'
4
+ require 'tmpdir'
4
5
 
5
6
  module EacRubyUtils
6
7
  class << self
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/patches/module/common_concern'
4
+ require 'eac_ruby_utils/require_sub'
5
+
6
+ module EacRubyUtils
7
+ module Immutable
8
+ ::EacRubyUtils.require_sub __FILE__
9
+
10
+ common_concern do
11
+ include ::EacRubyUtils::Listable
12
+ lists.add_symbol :type, :array, :boolean, :common, :hash
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,28 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'active_support/inflector'
4
+ require 'eac_ruby_utils/immutable/base_accessor'
5
+ require 'eac_ruby_utils/patches/class/common_constructor'
6
+
7
+ module EacRubyUtils
8
+ module Immutable
9
+ class ArrayAccessor < ::EacRubyUtils::Immutable::BaseAccessor
10
+ def apply(klass)
11
+ accessor = self
12
+ klass.send(:define_method, name) do |value|
13
+ accessor.immutable_value_set(self, value)
14
+ end
15
+
16
+ klass.send(:define_method, ::ActiveSupport::Inflector.pluralize(name)) do
17
+ accessor.immutable_value_get(self)
18
+ end
19
+ end
20
+
21
+ def immutable_value_set(object, value)
22
+ duplicate_object(object) do |old_value|
23
+ (old_value || []) + [value]
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ module EacRubyUtils
4
+ module Immutable
5
+ class BaseAccessor
6
+ common_constructor :name do
7
+ self.name = name.to_sym
8
+ end
9
+
10
+ def duplicate_object(object)
11
+ accessor_new_value = yield(immutable_value_get(object))
12
+ new_values = object.send(:immutable_values_get).merge(name => accessor_new_value)
13
+ r = object.class.new(*object.immutable_constructor_args)
14
+ r.send(:immutable_values_set, new_values)
15
+ r
16
+ end
17
+
18
+ def immutable_value_get(object)
19
+ object.send(:immutable_values_get)[name]
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/immutable/common_accessor'
4
+ require 'eac_ruby_utils/patches/class/common_constructor'
5
+
6
+ module EacRubyUtils
7
+ module Immutable
8
+ class BooleanAccessor < ::EacRubyUtils::Immutable::CommonAccessor
9
+ def apply(klass)
10
+ super
11
+ accessor = self
12
+ klass.send(:define_method, "#{name}?") { send(accessor.name) }
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ module EacRubyUtils
4
+ module Immutable
5
+ module ClassMethods
6
+ def immutable_accessor(*accessors)
7
+ options = accessors.extract_options!
8
+ options[:type] ||= const_get('TYPE_COMMON')
9
+ accessors.each do |name|
10
+ class_name = options.fetch(:type).to_s.camelize + 'Accessor'
11
+ ::EacRubyUtils::Immutable.const_get(class_name).new(name).apply(self)
12
+ end
13
+ end
14
+
15
+ private
16
+
17
+ def imutable_single_accessor(name, options); end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,30 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/immutable/base_accessor'
4
+ require 'eac_ruby_utils/patches/class/common_constructor'
5
+
6
+ module EacRubyUtils
7
+ module Immutable
8
+ class CommonAccessor < ::EacRubyUtils::Immutable::BaseAccessor
9
+ def apply(klass)
10
+ accessor = self
11
+ klass.send(:define_method, name) do |*args|
12
+ case args.count
13
+ when 0 then next accessor.immutable_value_get(self)
14
+ when 1 then next accessor.immutable_value_set(self, args.first)
15
+ else
16
+ raise ::ArgumentError, "wrong number of arguments (given #{args.count}, expected 0..1)"
17
+ end
18
+ end
19
+ end
20
+
21
+ def immutable_value_get(object)
22
+ object.send(:immutable_values_get)[name]
23
+ end
24
+
25
+ def immutable_value_set(object, value)
26
+ duplicate_object(object) { |_old_value| value }
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,42 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/immutable/base_accessor'
4
+ require 'eac_ruby_utils/patches/class/common_constructor'
5
+
6
+ module EacRubyUtils
7
+ module Immutable
8
+ class HashAccessor < ::EacRubyUtils::Immutable::BaseAccessor
9
+ def apply(klass)
10
+ apply_get(klass)
11
+ apply_set(klass)
12
+ end
13
+
14
+ def immutable_value_set(object, key, value)
15
+ duplicate_object(object) do |old_value|
16
+ (old_value || {}).merge(key => value)
17
+ end
18
+ end
19
+
20
+ private
21
+
22
+ def apply_get(klass)
23
+ accessor = self
24
+ klass.send(:define_method, ::ActiveSupport::Inflector.pluralize(name)) do
25
+ accessor.immutable_value_get(self)
26
+ end
27
+ end
28
+
29
+ def apply_set(klass)
30
+ accessor = self
31
+ klass.send(:define_method, name) do |*args|
32
+ case args.count
33
+ when 1 then next accessor.immutable_value_get(self, args[0])
34
+ when 2 then next accessor.immutable_value_set(self, *args[0..1])
35
+ else
36
+ raise ::ArgumentError, "wrong number of arguments (given #{args.count}, expected 1..2)"
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ module EacRubyUtils
4
+ module Immutable
5
+ module InstanceMethods
6
+ def immutable_constructor_args
7
+ []
8
+ end
9
+
10
+ private
11
+
12
+ def immutable_values_get
13
+ @immutable_values || {}
14
+ end
15
+
16
+ def immutable_values_set(new_values)
17
+ @immutable_values = new_values
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/patch'
4
+ require 'eac_ruby_utils/immutable'
5
+
6
+ class Module
7
+ def enable_immutable
8
+ ::EacRubyUtils.patch(self, ::EacRubyUtils::Immutable)
9
+ end
10
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module EacRubyUtils
4
- VERSION = '0.39.0'
4
+ VERSION = '0.40.0'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: avm-tools
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.56.0
4
+ version: 0.57.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Esquilo Azul Company
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-07-07 00:00:00.000000000 Z
11
+ date: 2020-07-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aranha-parsers
@@ -405,6 +405,7 @@ files:
405
405
  - lib/avm/tools/runner/eac_redmine_base0/data/dump.rb
406
406
  - lib/avm/tools/runner/eac_redmine_base0/deploy.rb
407
407
  - lib/avm/tools/runner/eac_redmine_base0/docker.rb
408
+ - lib/avm/tools/runner/eac_redmine_base0/project_rename.rb
408
409
  - lib/avm/tools/runner/eac_redmine_base0/runner.rb
409
410
  - lib/avm/tools/runner/eac_wordpress_base0.rb
410
411
  - lib/avm/tools/runner/eac_wordpress_base0/apache_host.rb
@@ -778,6 +779,14 @@ files:
778
779
  - vendor/eac_ruby_utils/lib/eac_ruby_utils/fs/traversable.rb
779
780
  - vendor/eac_ruby_utils/lib/eac_ruby_utils/fs/traverser.rb
780
781
  - vendor/eac_ruby_utils/lib/eac_ruby_utils/fs_cache.rb
782
+ - vendor/eac_ruby_utils/lib/eac_ruby_utils/immutable.rb
783
+ - vendor/eac_ruby_utils/lib/eac_ruby_utils/immutable/array_accessor.rb
784
+ - vendor/eac_ruby_utils/lib/eac_ruby_utils/immutable/base_accessor.rb
785
+ - vendor/eac_ruby_utils/lib/eac_ruby_utils/immutable/boolean_accessor.rb
786
+ - vendor/eac_ruby_utils/lib/eac_ruby_utils/immutable/class_methods.rb
787
+ - vendor/eac_ruby_utils/lib/eac_ruby_utils/immutable/common_accessor.rb
788
+ - vendor/eac_ruby_utils/lib/eac_ruby_utils/immutable/hash_accessor.rb
789
+ - vendor/eac_ruby_utils/lib/eac_ruby_utils/immutable/instance_methods.rb
781
790
  - vendor/eac_ruby_utils/lib/eac_ruby_utils/listable.rb
782
791
  - vendor/eac_ruby_utils/lib/eac_ruby_utils/listable/class_methods.rb
783
792
  - vendor/eac_ruby_utils/lib/eac_ruby_utils/listable/instance_methods.rb
@@ -801,6 +810,7 @@ files:
801
810
  - vendor/eac_ruby_utils/lib/eac_ruby_utils/patches/module.rb
802
811
  - vendor/eac_ruby_utils/lib/eac_ruby_utils/patches/module/common_concern.rb
803
812
  - vendor/eac_ruby_utils/lib/eac_ruby_utils/patches/module/console_speaker.rb
813
+ - vendor/eac_ruby_utils/lib/eac_ruby_utils/patches/module/immutable.rb
804
814
  - vendor/eac_ruby_utils/lib/eac_ruby_utils/patches/module/listable.rb
805
815
  - vendor/eac_ruby_utils/lib/eac_ruby_utils/patches/module/patch.rb
806
816
  - vendor/eac_ruby_utils/lib/eac_ruby_utils/patches/module/require_sub.rb