redmine_plugins_helper 0.7.0 → 0.8.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9c5acbf0a858ce536f4b65fd9c319523cedd80aadcd71b6ce68443942c9e7440
4
- data.tar.gz: 55e96888d080f7cfbff7c57232ecd19837e4fd53e1ec7b15bc19277e9d92a869
3
+ metadata.gz: 42a61e097f13a79e25e3342f2d1a22f973fd19503642b652987d881d17257b6d
4
+ data.tar.gz: 42ba8680e2290f75e6eb0199664c2fe379a08ef57089b276cd0e20fafd65a434
5
5
  SHA512:
6
- metadata.gz: 8658e8317504d5b42ff3b8f5800e1aa39869d15b5d57361c0e91b48fad7ce7397e0f7b43f2f58d0fdf73c89542cf9eb16225e77e3113c6939e114fea2fa374bb
7
- data.tar.gz: 87be5244759daea494a385a9cc888d74c8dcf3192d5237713aadf94b7e135509e058b07728b19c7cc2b9008eeaf1d795468caf165b9e8e6dadb9d19237b50113
6
+ metadata.gz: 390655cc975957070353753c0f04bbc24e26ccb96b45ed2a63f15d8b0a9b797085762188906fc8ab406741caf48dfbbab175c123dce4ef06c6547f64770d6d82
7
+ data.tar.gz: 3e5b2506f6f4e39a58f483bf31d81d1f4a101cbc17f7b8bb15a043a6fffa116ebd411c86c187c7a158c52cd29fb5a5c8a837572ad8e459698635342fcc987482
data/init.rb CHANGED
@@ -1,4 +1,4 @@
1
- # coding: utf-8
1
+ # frozen_string_literal: true
2
2
 
3
3
  require 'redmine'
4
4
  require 'redmine_plugins_helper/version'
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'sass-rails'
2
4
 
3
5
  module RedminePluginsHelper
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RedminePluginsHelper
2
4
  class FixMigrations
3
5
  def initialize
@@ -17,6 +19,7 @@ module RedminePluginsHelper
17
19
  def check_database_version(dbv)
18
20
  lv = local_version(dbv[:timestamp])
19
21
  return unless lv && lv.count == 1 && dbv[:plugin] != lv.first[:plugin]
22
+
20
23
  fix_plugin_version(dbv, lv.first[:plugin])
21
24
  end
22
25
 
@@ -41,18 +44,19 @@ module RedminePluginsHelper
41
44
  def move_plugin_version(source_version, target_version)
42
45
  Rails.logger.info("Moving #{source_version} to plugin \"#{target_version}\"")
43
46
  ::ActiveRecord::SchemaMigration.find_by(version: source_version)
44
- .update!(version: target_version)
47
+ .update!(version: target_version)
45
48
  end
46
49
 
47
50
  def local_version(timestamp)
48
51
  return [] unless local_versions.key?(timestamp)
52
+
49
53
  local_versions[timestamp]
50
54
  end
51
55
 
52
56
  def local_versions
53
57
  @local_versions = begin
54
58
  r = {}
55
- Redmine::Plugin.registered_plugins.values.each do |p|
59
+ Redmine::Plugin.registered_plugins.each_value do |p|
56
60
  p.migrations.each do |m|
57
61
  r[m] ||= []
58
62
  r[m] << { plugin: p.id, timestamp: m, version: plugin_version(p.id, m) }
@@ -68,15 +72,16 @@ module RedminePluginsHelper
68
72
  ::RedminePluginsHelper::Migrations.db_all_versions.each do |v|
69
73
  pv = parse_plugin_version(v)
70
74
  next unless pv
75
+
71
76
  r << pv
72
77
  end
73
78
  r
74
79
  end
75
80
  end
76
81
 
77
- def parse_plugin_version(v)
78
- h = ::RedminePluginsHelper::Migrations.parse_plugin_version(v)
79
- h[:version] = v if h.is_a?(Hash)
82
+ def parse_plugin_version(version)
83
+ h = ::RedminePluginsHelper::Migrations.parse_plugin_version(version)
84
+ h[:version] = version if h.is_a?(Hash)
80
85
  h
81
86
  end
82
87
 
@@ -30,10 +30,10 @@ module RedminePluginsHelper
30
30
  ::Redmine::Plugin.migrate(plugin_name, migration_version)
31
31
  end
32
32
 
33
- def migrate_plugin_version(v)
34
- return if migrated?(v)
33
+ def migrate_plugin_version(version)
34
+ return if migrated?(version)
35
35
 
36
- ::Redmine::Plugin.registered_plugins[v[:plugin]].migrate(v[:timestamp])
36
+ ::Redmine::Plugin.registered_plugins[version[:plugin]].migrate(version[:timestamp])
37
37
  end
38
38
 
39
39
  def versions_sorted
@@ -48,9 +48,10 @@ module RedminePluginsHelper
48
48
  r
49
49
  end
50
50
 
51
- def migrated?(v)
52
- return false unless db_versions.key?(v[:plugin])
53
- db_versions[v[:plugin]].include?(v[:timestamp])
51
+ def migrated?(version)
52
+ return false unless db_versions.key?(version[:plugin])
53
+
54
+ db_versions[version[:plugin]].include?(version[:timestamp])
54
55
  end
55
56
 
56
57
  def db_versions
@@ -1,9 +1,11 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RedminePluginsHelper
2
4
  class Migrations
3
5
  class << self
4
6
  def local_versions
5
7
  r = {}
6
- Redmine::Plugin.registered_plugins.values.each do |p|
8
+ Redmine::Plugin.registered_plugins.each_value do |p|
7
9
  p.migrations.each do |ts|
8
10
  r[p.id] ||= []
9
11
  r[p.id] << ts
@@ -17,6 +19,7 @@ module RedminePluginsHelper
17
19
  db_all_versions.each do |v|
18
20
  pv = parse_plugin_version(v)
19
21
  next unless pv
22
+
20
23
  r[pv[:plugin]] ||= []
21
24
  r[pv[:plugin]] << pv[:timestamp]
22
25
  end
@@ -28,9 +31,10 @@ module RedminePluginsHelper
28
31
  ::ActiveRecord::SchemaMigration.all.pluck(:version)
29
32
  end
30
33
 
31
- def parse_plugin_version(v)
32
- m = v.match(/^(\d+)\-(\S+)$/)
34
+ def parse_plugin_version(version)
35
+ m = version.match(/^(\d+)\-(\S+)$/)
33
36
  return nil unless m
37
+
34
38
  { plugin: m[2].to_sym, timestamp: m[1].to_i }
35
39
  end
36
40
  end
@@ -8,7 +8,7 @@ module RedminePluginsHelper
8
8
  module PluginMigrationContextPatch
9
9
  extend ActiveSupport::Concern
10
10
 
11
- def get_all_versions
11
+ def get_all_versions # rubocop:disable Naming/AccessorMethodName
12
12
  plugin.present? ? plugin.migrations : super
13
13
  end
14
14
 
@@ -1,3 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+
1
5
  module RedminePluginsHelper
2
6
  module Patches
3
7
  module Redmine
@@ -12,6 +16,22 @@ module RedminePluginsHelper
12
16
  ASSETS_SUBDIRS = %w[stylesheets javascripts images].freeze
13
17
 
14
18
  module ClassMethods
19
+ def by_path(path)
20
+ plugin_id_from_path(path).if_present do |v|
21
+ registered_plugins[v]
22
+ end
23
+ end
24
+
25
+ def plugin_id_from_path(path)
26
+ path = path.to_pathname.expand_path
27
+ return nil unless path.to_path.start_with?(::Rails.root.to_path)
28
+
29
+ parts = path.relative_path_from(::Rails.root).each_filename.to_a
30
+ return nil unless parts.first == 'plugins' && parts.count >= 2
31
+
32
+ parts[1].to_sym
33
+ end
34
+
15
35
  def post_register(plugin_name, &block)
16
36
  plugin = registered_plugins[plugin_name]
17
37
  raise "Plugin not registered: #{plugin_name}" unless plugin
@@ -22,7 +42,7 @@ module RedminePluginsHelper
22
42
 
23
43
  module InstanceMethods
24
44
  def load_initializers
25
- Dir["#{initializers_directory}/*.rb"].each { |f| require f }
45
+ Dir["#{initializers_directory}/*.rb"].sort.each { |f| require f }
26
46
  end
27
47
 
28
48
  ASSETS_SUBDIRS.each do |assert_subdir|
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'active_support'
2
4
 
3
5
  module RedminePluginsHelper
@@ -35,5 +37,5 @@ end
35
37
  unless ActiveSupport::TestCase.included_modules.include?(
36
38
  RedminePluginsHelper::Patches::TestCasePatch
37
39
  )
38
- ActiveSupport::TestCase.send(:include, RedminePluginsHelper::Patches::TestCasePatch)
40
+ ActiveSupport::TestCase.include RedminePluginsHelper::Patches::TestCasePatch
39
41
  end
@@ -0,0 +1,35 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+ require 'shellwords'
5
+
6
+ module RedminePluginsHelper
7
+ class PluginRakeTask
8
+ DEFAULT_TASK_NAME_LAST_PART = 'rspec'
9
+
10
+ class << self
11
+ def register(plugin_id, task_name_last_part = DEFAULT_TASK_NAME_LAST_PART)
12
+ new(plugin_id, task_name_last_part).register
13
+ end
14
+ end
15
+
16
+ common_constructor :plugin_id, :task_name_last_part
17
+
18
+ def register
19
+ ::RSpec::Core::RakeTask.new(task_full_name) do |t|
20
+ t.rspec_opts = ::Shellwords.join(rspec_opts)
21
+ end
22
+ Rake::Task[task_full_name].enhance ['db:test:prepare']
23
+ end
24
+
25
+ def task_full_name
26
+ "#{plugin_id}:#{task_name_last_part}"
27
+ end
28
+
29
+ def rspec_opts
30
+ ['--pattern', "plugins/#{plugin_id}/spec/**/*_spec.rb",
31
+ '--default-path', 'plugins/redmine_plugins_helper/spec',
32
+ '--require', 'spec_helper']
33
+ end
34
+ end
35
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_dependency 'redmine_plugins_helper'
2
4
 
3
5
  module RedminePluginsHelper
@@ -5,6 +7,7 @@ module RedminePluginsHelper
5
7
  class << self
6
8
  def default(plugin, default)
7
9
  return unless ::RedminePluginsHelper.settings_table_exist?
10
+
8
11
  p = plugin_current_setting_value(plugin)
9
12
  default.each do |k, v|
10
13
  p[k.to_s] = v unless p.key?(k)
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RedminePluginsHelper
2
4
  class StatusMigrations
3
5
  def initialize
@@ -10,7 +12,7 @@ module RedminePluginsHelper
10
12
  local_versions.each do |plugin, timestamps|
11
13
  timestamps.each do |timestamp|
12
14
  m = migrated_version?(plugin, timestamp) ? 'up' : 'down'
13
- puts "#{m}\t#{plugin}\t#{timestamp}"
15
+ ::Rails.logger.info "#{m}\t#{plugin}\t#{timestamp}"
14
16
  end
15
17
  end
16
18
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RedminePluginsHelper
2
4
  class TestConfig
3
5
  def before_each
@@ -3,5 +3,5 @@
3
3
  module RedminePluginsHelper
4
4
  AUTHOR = 'Eduardo Henrique Bogoni'
5
5
  SUMMARY = 'Helper for Redmine plugins'
6
- VERSION = '0.7.0'
6
+ VERSION = '0.8.0'
7
7
  end
@@ -0,0 +1,54 @@
1
+ # frozen_string_literal: true
2
+
3
+ Rake::Task['redmine:plugins:migrate'].clear
4
+
5
+ namespace :redmine do
6
+ desc 'Run migrations of core Redmine and installed plugins.'
7
+ task migrate: ['db:migrate', 'redmine:plugins:migrate:fix', 'redmine:plugins:migrate'] do
8
+ end
9
+
10
+ namespace :version do
11
+ desc 'Shows Redmine\'s version.'
12
+ task show: :environment do
13
+ puts ::Redmine::VERSION::STRING
14
+ end
15
+ end
16
+
17
+ task version: 'version:show'
18
+
19
+ namespace :plugins do
20
+ desc 'Migrates installed plugins.'
21
+ task migrate: :environment do
22
+ name = ENV['NAME']
23
+ version = nil
24
+ version_string = ENV['VERSION']
25
+ if version_string
26
+ if version_string =~ /^\d+$/
27
+ version = version_string.to_i
28
+ abort 'The VERSION argument requires a plugin NAME.' if name.nil?
29
+ else
30
+ abort "Invalid VERSION #{version_string} given."
31
+ end
32
+ end
33
+
34
+ begin
35
+ RedminePluginsHelper::Migrate.new(name, version)
36
+ Rake::Task['db:schema:dump'].invoke
37
+ rescue Redmine::PluginNotFound
38
+ abort "Plugin #{name} was not found."
39
+ end
40
+ end
41
+
42
+ namespace :migrate do
43
+ desc 'Fix migrations moved from a plugin to another'
44
+ task fix: :environment do
45
+ RedminePluginsHelper::FixMigrations.new
46
+ end
47
+
48
+ desc 'Show migrations status of all plugins'
49
+ task status: :environment do
50
+ RedminePluginsHelper::StatusMigrations.new
51
+ end
52
+ end
53
+ end
54
+ end
@@ -1,52 +1,4 @@
1
- Rake::Task['redmine:plugins:migrate'].clear
1
+ # frozen_string_literal: true
2
2
 
3
- namespace :redmine do
4
- desc 'Run migrations of core Redmine and installed plugins.'
5
- task migrate: ['db:migrate', 'redmine:plugins:migrate:fix', 'redmine:plugins:migrate'] do
6
- end
7
-
8
- namespace :version do
9
- desc 'Shows Redmine\'s version.'
10
- task show: :environment do
11
- puts ::Redmine::VERSION::STRING
12
- end
13
- end
14
-
15
- task version: 'version:show'
16
-
17
- namespace :plugins do
18
- desc 'Migrates installed plugins.'
19
- task migrate: :environment do
20
- name = ENV['NAME']
21
- version = nil
22
- version_string = ENV['VERSION']
23
- if version_string
24
- if version_string =~ /^\d+$/
25
- version = version_string.to_i
26
- abort 'The VERSION argument requires a plugin NAME.' if name.nil?
27
- else
28
- abort "Invalid VERSION #{version_string} given."
29
- end
30
- end
31
-
32
- begin
33
- RedminePluginsHelper::Migrate.new(name, version)
34
- Rake::Task['db:schema:dump'].invoke
35
- rescue Redmine::PluginNotFound
36
- abort "Plugin #{name} was not found."
37
- end
38
- end
39
-
40
- namespace :migrate do
41
- desc 'Fix migrations moved from a plugin to another'
42
- task fix: :environment do
43
- RedminePluginsHelper::FixMigrations.new
44
- end
45
-
46
- desc 'Show migrations status of all plugins'
47
- task status: :environment do
48
- RedminePluginsHelper::StatusMigrations.new
49
- end
50
- end
51
- end
52
- end
3
+ require 'redmine_plugins_helper/plugin_rake_task'
4
+ ::RedminePluginsHelper::PluginRakeTask.register(:redmine_plugins_helper, :test)
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: redmine_plugins_helper
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.0
4
+ version: 0.8.0
5
5
  platform: ruby
6
6
  authors:
7
- - 0.7.0
7
+ - 0.8.0
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-08-08 00:00:00.000000000 Z
11
+ date: 2020-08-12 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: eac_ruby_utils
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '0.43'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '0.43'
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: sass-rails
15
29
  requirement: !ruby/object:Gem::Requirement
@@ -24,6 +38,26 @@ dependencies:
24
38
  - - "~>"
25
39
  - !ruby/object:Gem::Version
26
40
  version: '5.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: eac_ruby_gem_support
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '0.1'
48
+ - - ">="
49
+ - !ruby/object:Gem::Version
50
+ version: 0.1.2
51
+ type: :development
52
+ prerelease: false
53
+ version_requirements: !ruby/object:Gem::Requirement
54
+ requirements:
55
+ - - "~>"
56
+ - !ruby/object:Gem::Version
57
+ version: '0.1'
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: 0.1.2
27
61
  description:
28
62
  email:
29
63
  executables: []
@@ -43,10 +77,12 @@ files:
43
77
  - lib/redmine_plugins_helper/patches/redmine/plugin_migration_context.rb
44
78
  - lib/redmine_plugins_helper/patches/redmine/plugin_patch.rb
45
79
  - lib/redmine_plugins_helper/patches/test_case_patch.rb
80
+ - lib/redmine_plugins_helper/plugin_rake_task.rb
46
81
  - lib/redmine_plugins_helper/settings.rb
47
82
  - lib/redmine_plugins_helper/status_migrations.rb
48
83
  - lib/redmine_plugins_helper/test_config.rb
49
84
  - lib/redmine_plugins_helper/version.rb
85
+ - lib/tasks/redmine.rake
50
86
  - lib/tasks/redmine_plugins_helper.rake
51
87
  homepage:
52
88
  licenses: []