redmine_plugins_helper 0.12.2 → 0.13.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: 0b11be7658944fad863cbae11f781f91add85990656cf9a6b02a269cd2edf75e
4
- data.tar.gz: 4ff94b0da6a7ca8cdb7f25b37da49c5229b853bd0a221ac7315a276404bfac2e
3
+ metadata.gz: fa73ff7cd5b471c099d4e260d1ba1f63b78c499ee57868db67b4d323e906c784
4
+ data.tar.gz: 5b6a7e536e9943aceed8a4e662ba59990020b21ede74976f345922f4a648b3ef
5
5
  SHA512:
6
- metadata.gz: 53951f0c50e341532893f0162bdb4ae885501be99cc7b9684ace05d9e1e4c0a084fd0ef53cca676528b8ba35d94d905db8f6c42b4f67f202c272be1980573073
7
- data.tar.gz: 9e5acf5b10a84f02dab26de5e417c57b1773ed63fc3eaeb8b82ab946884f9ce43c492102a3cebd3e20148ddea2cd157281f1d78ae20122506859a059b3932594
6
+ metadata.gz: 64c685dcc238edd5d61865d24bd19a48a1e202f6fa317f565157d9c675dad44b466e4a3e0e075a9b06297adc96a35a7f0cd7dd260ca9f1d95a03d5bb231be1e1
7
+ data.tar.gz: e43b6bbe100eb0b3475cdca99b6c8d3ba2ed64f8a79f7fb9b450b29f8db00f412998c376d0ee69821e58c7dd5b4d0bcf97477bced69a986e913abb7a64cc1470
data/init.rb CHANGED
@@ -14,6 +14,6 @@ end
14
14
  Rails.configuration.to_prepare do
15
15
  require_dependency 'redmine_plugins_helper/patches/redmine/plugin_patch'
16
16
  require_dependency 'redmine_plugins_helper/patches/redmine/plugin_migration_context'
17
- ::Redmine::Plugin.registered_plugins.values.each(&:add_assets_paths)
18
- ::Redmine::Plugin.registered_plugins.values.each(&:load_initializers)
17
+ ::Redmine::Plugin.all.each(&:add_assets_paths)
18
+ ::Redmine::Plugin.all.each(&:load_initializers)
19
19
  end
@@ -0,0 +1,54 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+
5
+ module RedminePluginsHelper
6
+ module Patches
7
+ module Redmine
8
+ module PluginPatch
9
+ module Assets
10
+ common_concern
11
+
12
+ ASSETS_SUBDIRS = %w[stylesheets javascripts images].freeze
13
+
14
+ ASSETS_SUBDIRS.each do |assert_subdir|
15
+ class_eval <<-RUBY_EVAL, __FILE__, __LINE__ + 1
16
+ def #{assert_subdir}_directory
17
+ ::File.join(directory, 'app', 'assets', '#{assert_subdir}')
18
+ end
19
+ RUBY_EVAL
20
+ end
21
+
22
+ def add_assets_paths
23
+ ASSETS_SUBDIRS.each do |assert_subdir|
24
+ assets_directory = send("#{assert_subdir}_directory")
25
+ next unless ::File.directory?(assets_directory)
26
+
27
+ Rails.application.config.assets.paths << assets_directory
28
+ end
29
+ end
30
+
31
+ def main_javascript_asset_path
32
+ find_asset(javascripts_directory, %w[js coffee js.coffee])
33
+ end
34
+
35
+ def main_stylesheet_asset_path
36
+ find_asset(stylesheets_directory, %w[css scss])
37
+ end
38
+
39
+ private
40
+
41
+ def find_asset(assets_directory, extensions)
42
+ extensions.each do |extension|
43
+ ['', '.erb'].each do |erb_extension|
44
+ path = ::File.join(assets_directory, "#{id}.#{extension}#{erb_extension}")
45
+ return id if ::File.exist?(path)
46
+ end
47
+ end
48
+ nil
49
+ end
50
+ end
51
+ end
52
+ end
53
+ end
54
+ end
@@ -0,0 +1,89 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+
5
+ module RedminePluginsHelper
6
+ module Patches
7
+ module Redmine
8
+ module PluginPatch
9
+ module Dependencies
10
+ common_concern
11
+
12
+ DEPENDENCIES_FILE_BASENAMES = %w[yml yaml].map { |e| "dependencies.#{e}" }
13
+
14
+ # @param other [Redmine::Plugin]
15
+ # @return [Integer]
16
+ def <=>(other)
17
+ so = dependency?(other)
18
+ os = other.dependency?(self)
19
+
20
+ return 1 if so && !os
21
+ return -1 if !so && os
22
+
23
+ super
24
+ end
25
+
26
+ # @return [Array<Symbol>]
27
+ def dependencies_ids
28
+ load_dependencies_from_file
29
+ dependencies_hash.keys
30
+ end
31
+
32
+ # @param other [Redmine::Plugin]
33
+ # @return [Boolean]
34
+ def dependency?(other)
35
+ load_dependencies_from_file
36
+ recursive_dependencies_ids.include?(other.id)
37
+ end
38
+
39
+ # @param plugin_name [Symbol]
40
+ # @param arg [Hash, String]
41
+ # @return [Boolean]
42
+ def requires_redmine_plugin(plugin_name, arg)
43
+ r = super
44
+ dependencies_hash[plugin_name.to_sym] = arg
45
+ r
46
+ end
47
+
48
+ private
49
+
50
+ # @return [Hash<Symbol, Object>]
51
+ def dependencies_hash
52
+ @dependencies_hash ||= {}
53
+ end
54
+
55
+ # @return [Hash<Symbol, Object>]
56
+ def dependencies_from_file
57
+ r = dependencies_file.if_present({}) { |path| ::EacRubyUtils::Yaml.load_file(path) }
58
+ r = r.map do |plugin_name, arg|
59
+ [plugin_name.to_sym, (arg.is_a?(::Hash) ? arg.symbolize_keys : arg)]
60
+ end
61
+ r.to_h
62
+ end
63
+
64
+ # @return [Pathname, nil]
65
+ def dependencies_file
66
+ DEPENDENCIES_FILE_BASENAMES
67
+ .lazy
68
+ .map { |b| directory.to_pathname.join(b) }.select(&:file?).first
69
+ end
70
+
71
+ # @return [void]
72
+ def load_dependencies_from_file
73
+ return if @dependencies_from_file_loaded
74
+
75
+ dependencies_from_file
76
+ .each { |plugin_name, arg| requires_redmine_plugin(plugin_name, arg) }
77
+ @dependencies_from_file_loaded = true
78
+ end
79
+
80
+ # @return [Set<Symbol>]
81
+ def recursive_dependencies_ids
82
+ ::EacRubyUtils::RecursiveBuilder
83
+ .new(id) { |plugin_id| ::Redmine::Plugin.find(plugin_id).dependencies_ids }.result
84
+ end
85
+ end
86
+ end
87
+ end
88
+ end
89
+ end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+
5
+ module RedminePluginsHelper
6
+ module Patches
7
+ module Redmine
8
+ module PluginPatch
9
+ module Initializers
10
+ def load_initializers
11
+ Dir["#{initializers_directory}/*.rb"].sort.each { |f| require f }
12
+ end
13
+
14
+ private
15
+
16
+ def initializers_directory
17
+ File.join(directory, 'config', 'initializers')
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
@@ -11,10 +11,11 @@ module RedminePluginsHelper
11
11
  included do
12
12
  extend ClassMethods
13
13
  include InstanceMethods
14
+ include ::RedminePluginsHelper::Patches::Redmine::PluginPatch::Assets
15
+ prepend ::RedminePluginsHelper::Patches::Redmine::PluginPatch::Dependencies
16
+ include ::RedminePluginsHelper::Patches::Redmine::PluginPatch::Initializers
14
17
  end
15
18
 
16
- ASSETS_SUBDIRS = %w[stylesheets javascripts images].freeze
17
-
18
19
  module ClassMethods
19
20
  def by_path(path)
20
21
  plugin_id_from_path(path).if_present do |v|
@@ -39,53 +40,6 @@ module RedminePluginsHelper
39
40
  plugin.instance_eval(&block)
40
41
  end
41
42
  end
42
-
43
- module InstanceMethods
44
- def load_initializers
45
- Dir["#{initializers_directory}/*.rb"].sort.each { |f| require f }
46
- end
47
-
48
- ASSETS_SUBDIRS.each do |assert_subdir|
49
- class_eval <<-RUBY_EVAL, __FILE__, __LINE__ + 1
50
- def #{assert_subdir}_directory
51
- ::File.join(directory, 'app', 'assets', '#{assert_subdir}')
52
- end
53
- RUBY_EVAL
54
- end
55
-
56
- def add_assets_paths
57
- ASSETS_SUBDIRS.each do |assert_subdir|
58
- assets_directory = send("#{assert_subdir}_directory")
59
- next unless ::File.directory?(assets_directory)
60
-
61
- Rails.application.config.assets.paths << assets_directory
62
- end
63
- end
64
-
65
- def main_javascript_asset_path
66
- find_asset(javascripts_directory, %w[js coffee js.coffee])
67
- end
68
-
69
- def main_stylesheet_asset_path
70
- find_asset(stylesheets_directory, %w[css scss])
71
- end
72
-
73
- private
74
-
75
- def initializers_directory
76
- File.join(directory, 'config', 'initializers')
77
- end
78
-
79
- def find_asset(assets_directory, extensions)
80
- extensions.each do |extension|
81
- ['', '.erb'].each do |erb_extension|
82
- path = ::File.join(assets_directory, "#{id}.#{extension}#{erb_extension}")
83
- return id if ::File.exist?(path)
84
- end
85
- end
86
- nil
87
- end
88
- end
89
43
  end
90
44
  end
91
45
  end
@@ -0,0 +1,36 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+
5
+ module RedminePluginsHelper
6
+ module TestTasks
7
+ class Base
8
+ acts_as_abstract :register
9
+ DEFAULT_TASK_NAME_LAST_PART = 'test'
10
+ PREPARE_TASK_NAME = 'db:test:prepare'
11
+
12
+ class << self
13
+ def register(plugin_id, task_name_last_part = DEFAULT_TASK_NAME_LAST_PART)
14
+ new(plugin_id, task_name_last_part).register
15
+ end
16
+ end
17
+
18
+ common_constructor :plugin_id, :task_name_last_part
19
+
20
+ # @return [Pathname]
21
+ def plugin_root
22
+ ::Rails.root.join('plugins', plugin_id.to_s)
23
+ end
24
+
25
+ # @return [String]
26
+ def prepare_task_name
27
+ PREPARE_TASK_NAME
28
+ end
29
+
30
+ # @return [String]
31
+ def task_full_name
32
+ "#{plugin_id}:#{task_name_last_part}"
33
+ end
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+ require 'redmine_plugins_helper/test_tasks/base'
5
+ require 'rake/testtask'
6
+
7
+ module RedminePluginsHelper
8
+ module TestTasks
9
+ class Minitest < ::RedminePluginsHelper::TestTasks::Base
10
+ def register
11
+ ::Rake::TestTask.new(task_full_name => 'db:test:prepare') do |t|
12
+ t.description = "Run plugin #{plugin_id}\'s tests."
13
+ t.libs << 'test'
14
+ t.test_files = ::FileList["#{plugin_root}/test/**/*_test.rb"]
15
+ t.verbose = false
16
+ t.warning = false
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+ require 'redmine_plugins_helper/test_tasks/base'
5
+ require 'rspec/core/rake_task'
6
+
7
+ module RedminePluginsHelper
8
+ module TestTasks
9
+ class Rspec < ::RedminePluginsHelper::TestTasks::Base
10
+ def register
11
+ ::RSpec::Core::RakeTask.new(task_full_name) do |t|
12
+ t.rspec_opts = ::Shellwords.join(rspec_opts)
13
+ end
14
+ ::Rake::Task[task_full_name].enhance [prepare_task_name]
15
+ end
16
+
17
+ def rspec_opts
18
+ ['--pattern', plugin_root.join('spec/**/*_spec.rb'),
19
+ '--default-path', 'plugins/redmine_plugins_helper/spec',
20
+ '--require', 'spec_helper']
21
+ end
22
+ end
23
+ end
24
+ end
@@ -3,5 +3,5 @@
3
3
  module RedminePluginsHelper
4
4
  AUTHOR = 'Eduardo Henrique Bogoni'
5
5
  SUMMARY = 'Helper for Redmine plugins'
6
- VERSION = '0.12.2'
6
+ VERSION = '0.13.0'
7
7
  end
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'redmine_plugins_helper/plugin_rake_task'
4
- ::RedminePluginsHelper::PluginRakeTask.register(:redmine_plugins_helper, :test)
3
+ require 'redmine_plugins_helper/test_tasks/rspec'
4
+ ::RedminePluginsHelper::TestTasks::Rspec.register(:redmine_plugins_helper, :test)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: redmine_plugins_helper
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.12.2
4
+ version: 0.13.0
5
5
  platform: ruby
6
6
  authors:
7
- - 0.12.2
7
+ - 0.13.0
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-03-21 00:00:00.000000000 Z
11
+ date: 2023-09-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bigdecimal
@@ -30,20 +30,20 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '0.95'
33
+ version: '0.119'
34
34
  - - ">="
35
35
  - !ruby/object:Gem::Version
36
- version: 0.95.1
36
+ version: 0.119.2
37
37
  type: :runtime
38
38
  prerelease: false
39
39
  version_requirements: !ruby/object:Gem::Requirement
40
40
  requirements:
41
41
  - - "~>"
42
42
  - !ruby/object:Gem::Version
43
- version: '0.95'
43
+ version: '0.119'
44
44
  - - ">="
45
45
  - !ruby/object:Gem::Version
46
- version: 0.95.1
46
+ version: 0.119.2
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: launchy
49
49
  requirement: !ruby/object:Gem::Requirement
@@ -124,12 +124,17 @@ files:
124
124
  - lib/redmine_plugins_helper/migrations.rb
125
125
  - lib/redmine_plugins_helper/patches/redmine/plugin_migration_context.rb
126
126
  - lib/redmine_plugins_helper/patches/redmine/plugin_patch.rb
127
+ - lib/redmine_plugins_helper/patches/redmine/plugin_patch/assets.rb
128
+ - lib/redmine_plugins_helper/patches/redmine/plugin_patch/dependencies.rb
129
+ - lib/redmine_plugins_helper/patches/redmine/plugin_patch/initializers.rb
127
130
  - lib/redmine_plugins_helper/patches/test_case_patch.rb
128
- - lib/redmine_plugins_helper/plugin_rake_task.rb
129
131
  - lib/redmine_plugins_helper/settings.rb
130
132
  - lib/redmine_plugins_helper/status_migrations.rb
131
133
  - lib/redmine_plugins_helper/test_config.rb
132
134
  - lib/redmine_plugins_helper/test_helper.rb
135
+ - lib/redmine_plugins_helper/test_tasks/base.rb
136
+ - lib/redmine_plugins_helper/test_tasks/minitest.rb
137
+ - lib/redmine_plugins_helper/test_tasks/rspec.rb
133
138
  - lib/redmine_plugins_helper/version.rb
134
139
  - lib/tasks/redmine.rake
135
140
  - lib/tasks/redmine_plugins_helper.rake
@@ -1,36 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'eac_ruby_utils/core_ext'
4
- require 'rspec/core/rake_task'
5
- require 'shellwords'
6
-
7
- module RedminePluginsHelper
8
- class PluginRakeTask
9
- DEFAULT_TASK_NAME_LAST_PART = 'rspec'
10
-
11
- class << self
12
- def register(plugin_id, task_name_last_part = DEFAULT_TASK_NAME_LAST_PART)
13
- new(plugin_id, task_name_last_part).register
14
- end
15
- end
16
-
17
- common_constructor :plugin_id, :task_name_last_part
18
-
19
- def register
20
- ::RSpec::Core::RakeTask.new(task_full_name) do |t|
21
- t.rspec_opts = ::Shellwords.join(rspec_opts)
22
- end
23
- Rake::Task[task_full_name].enhance ['db:test:prepare']
24
- end
25
-
26
- def task_full_name
27
- "#{plugin_id}:#{task_name_last_part}"
28
- end
29
-
30
- def rspec_opts
31
- ['--pattern', "plugins/#{plugin_id}/spec/**/*_spec.rb",
32
- '--default-path', 'plugins/redmine_plugins_helper/spec',
33
- '--require', 'spec_helper']
34
- end
35
- end
36
- end