diff options
Diffstat (limited to 'app/services/projects/import_export/export_service.rb')
-rw-r--r-- | app/services/projects/import_export/export_service.rb | 33 |
1 files changed, 27 insertions, 6 deletions
diff --git a/app/services/projects/import_export/export_service.rb b/app/services/projects/import_export/export_service.rb index 8893bf18e1f..86cb4f35206 100644 --- a/app/services/projects/import_export/export_service.rb +++ b/app/services/projects/import_export/export_service.rb @@ -3,19 +3,35 @@ module Projects module ImportExport class ExportService < BaseService - def execute(after_export_strategy = nil, options = {}) + prepend Measurable + + def initialize(*args) + super + + @shared = project.import_export_shared + end + + def execute(after_export_strategy = nil) unless project.template_source? || can?(current_user, :admin_project, project) raise ::Gitlab::ImportExport::Error.permission_error(current_user, project) end - @shared = project.import_export_shared - save_all! execute_after_export_action(after_export_strategy) ensure cleanup end + protected + + def extra_attributes_for_measurement + { + current_user: current_user&.name, + project_full_path: project&.full_path, + file_path: shared.export_path + } + end + private attr_accessor :shared @@ -42,7 +58,10 @@ module Projects end def exporters - [version_saver, avatar_saver, project_tree_saver, uploads_saver, repo_saver, wiki_repo_saver, lfs_saver, snippets_repo_saver] + [ + version_saver, avatar_saver, project_tree_saver, uploads_saver, + repo_saver, wiki_repo_saver, lfs_saver, snippets_repo_saver, design_repo_saver + ] end def version_saver @@ -81,6 +100,10 @@ module Projects Gitlab::ImportExport::SnippetsRepoSaver.new(current_user: current_user, project: project, shared: shared) end + def design_repo_saver + Gitlab::ImportExport::DesignRepoSaver.new(project: project, shared: shared) + end + def cleanup FileUtils.rm_rf(shared.archive_path) if shared&.archive_path end @@ -103,5 +126,3 @@ module Projects end end end - -Projects::ImportExport::ExportService.prepend_if_ee('EE::Projects::ImportExport::ExportService') |