suitepro/plugins/redmine_git_hosting/lib/tasks/redmine_git_hosting.rake

98 lines
3.4 KiB
Ruby

namespace :redmine_git_hosting do
desc 'Update plugin settings in database (This will read settings from `<redmine_root>/redmine_git_hosting.yml` and `<plugin_root>/settings.yml`)'
task update_settings: [:environment] do
RedmineGitHosting::ConsoleLogger.title('Reloading settings from command line') do
RedmineGitHosting::Config.reload_from_file!
end
end
desc 'Dump plugin settings in console'
task dump_settings: [:environment] do
RedmineGitHosting::Config.dump_settings
end
desc 'Purge expired repositories from Recycle Bin'
task purge_recycle_bin: [:environment] do
RedmineGitHosting::ConsoleLogger.title('Purging Recycle Bin from command line') do
RedmineGitHosting::GitoliteAccessor.purge_recycle_bin
end
end
desc 'Update/repair Gitolite configuration'
task update_repositories: [:environment] do
RedmineGitHosting::ConsoleLogger.title('Performing manual update_repositories operation from command line') do
RedmineGitHosting::GitoliteAccessor.update_projects('all', { message: "Resync all projects (#{Project.all.length})..." })
end
end
desc 'Fetch commits from gitolite repositories/update gitolite configuration'
task fetch_changesets: [:environment] do
RedmineGitHosting::ConsoleLogger.title('Performing manual fetch_changesets operation from command line') do
RedmineGitHosting::GitoliteAccessor.flush_git_cache
Repository.fetch_changesets
end
end
desc 'Check repositories identifier uniqueness'
task check_repository_uniqueness: [:environment] do
RedmineGitHosting::ConsoleLogger.title('Checking repositories identifier uniqueness...') do
if Repository::Xitolite.have_duplicated_identifier?
RedmineGitHosting::ConsoleLogger.warn('Detected non-unique repository identifiers!')
puts YAML::dump(Repository::Xitolite.identifiers_to_hash.reject! { |k, v| v == 1 })
else
RedmineGitHosting::ConsoleLogger.info('No duplication detected, good !')
end
end
end
desc 'Resync ssh_keys'
task resync_ssh_keys: [:environment] do
RedmineGitHosting::ConsoleLogger.title('Performing manual resync_ssh_keys operation from command line') do
RedmineGitHosting::GitoliteAccessor.resync_ssh_keys(bypass_sidekiq: true)
end
end
desc 'Regenerate ssh_keys'
task regenerate_ssh_keys: [:environment] do
RedmineGitHosting::ConsoleLogger.title('Performing manual regenerate_ssh_keys operation from command line') do
RedmineGitHosting::GitoliteAccessor.regenerate_ssh_keys(bypass_sidekiq: true)
end
end
desc 'Install/update Gitolite hooks'
task install_hook_files: [:environment] do
RedmineGitHosting::ConsoleLogger.title('Installing/updating Gitolite hooks') do
puts YAML::dump(RedmineGitHosting::Config.install_hooks!)
end
end
desc 'Install/update Gitolite hook parameters'
task install_hook_parameters: [:environment] do
RedmineGitHosting::ConsoleLogger.title('Installing/updating Gitolite hook parameters') do
puts YAML::dump(RedmineGitHosting::Config.update_hook_params!)
end
end
task install_gitolite_hooks: [:install_hook_files, :install_hook_parameters]
desc 'Show library version'
task :version do
puts "Redmine Git Hosting #{version("plugins/redmine_git_hosting/init.rb")}"
end
def version(path)
line = File.read(Rails.root.join(path))[/^\s*version\s*.*/]
line.match(/.*version\s*['"](.*)['"]/)[1]
end
end