lib/nexus_cli/remote.rb in nexus_cli-0.0.5 vs lib/nexus_cli/remote.rb in nexus_cli-0.1.0
- old
+ new
@@ -14,11 +14,11 @@
def configuration
return @configuration if @configuration
begin
config = YAML::load_file(File.expand_path("~/.nexus_cli"))
rescue Errno::ENOENT
- raise MissingSettingsFile
+ raise MissingSettingsFileException
end
validate_config(config)
@configuration = config
end
@@ -42,27 +42,35 @@
artifact.write(fileData)
artifact.close()
File.expand_path(artifact.path)
end
- def push_artifact(artifact, file, insecure)
+ def push_artifact(artifact, file, insecure, override_repository)
#Build up the pieces that will make up the PUT request
split_artifact = artifact.split(":")
if(split_artifact.size < 4)
raise ArtifactMalformedException
end
artifact_id = split_artifact[0].gsub(".", "/")
group_id = split_artifact[1].gsub(".", "/")
version = split_artifact[2]
file_name = "#{split_artifact[1]}-#{version}.#{split_artifact[3]}"
-
- put_string = "content/repositories/releases/#{artifact_id}/#{group_id}/#{version}/#{file_name}"
- Open3.popen3("curl #{insecure ? "-k" : ""} -T #{file} #{configuration['url']}#{put_string} -u #{configuration['username']}:#{configuration['password']}") do |stdin, stdout, stderr, wait_thr|
+ repository = override_repository.nil? ? configuration['repository'] : override_repository
+ put_string = "content/repositories/#{repository}/#{artifact_id}/#{group_id}/#{version}/#{file_name}"
+ Open3.popen3("curl -I #{insecure ? "-k" : ""} -T #{file} #{File.join(configuration['url'], put_string)} -u #{configuration['username']}:#{configuration['password']}") do |stdin, stdout, stderr, wait_thr|
exit_code = wait_thr.value.exitstatus
+ standard_out = stdout.read
+ if (standard_out.match('403 Forbidden') || standard_out.match('401 Unauthorized'))
+ raise PermissionsException
+ elsif standard_out.match('400 Bad Request')
+ raise BadUploadRequestException
+ end
case exit_code
when 60
raise NonSecureConnectionException
+ when 7
+ raise CouldNotConnectToNexusException
end
end
end
def delete_artifact(artifact)
@@ -73,10 +81,10 @@
artifact_id = split_artifact[0].gsub(".", "/")
group_id = split_artifact[1].gsub(".", "/")
version = split_artifact[2]
delete_string = "content/repositories/releases/#{artifact_id}/#{group_id}/#{version}"
- Kernel.quietly {`curl --request DELETE #{configuration['url']}#{delete_string} -u #{configuration['username']}:#{configuration['password']}`}
+ Kernel.quietly {`curl --request DELETE #{File.join(configuration['url'], delete_string)} -u #{configuration['username']}:#{configuration['password']}`}
end
def get_artifact_info(artifact)
split_artifact = artifact.split(":")
if(split_artifact.size < 4)
\ No newline at end of file