debian-mirror-gitlab/app/services/packages/maven/find_or_create_package_service.rb
2020-08-09 17:44:08 +05:30

41 lines
1.3 KiB
Ruby

# frozen_string_literal: true
module Packages
module Maven
class FindOrCreatePackageService < BaseService
MAVEN_METADATA_FILE = 'maven-metadata.xml'.freeze
def execute
package = ::Packages::Maven::PackageFinder
.new(params[:path], current_user, project: project).execute
unless package
if params[:file_name] == MAVEN_METADATA_FILE
# Maven uploads several files during `mvn deploy` in next order:
# - my-company/my-app/1.0-SNAPSHOT/my-app.jar
# - my-company/my-app/1.0-SNAPSHOT/my-app.pom
# - my-company/my-app/1.0-SNAPSHOT/maven-metadata.xml
# - my-company/my-app/maven-metadata.xml
#
# The last xml file does not have VERSION in URL because it contains
# information about all versions.
package_name, version = params[:path], nil
else
package_name, _, version = params[:path].rpartition('/')
end
package_params = {
name: package_name,
path: params[:path],
version: version,
build: params[:build]
}
package = ::Packages::Maven::CreatePackageService
.new(project, current_user, package_params).execute
end
package
end
end
end
end