From f4107a22ef23c7dedf324589325ba2efd1e04362 Mon Sep 17 00:00:00 2001 From: Tatsuki Sugiura Date: Fri, 25 Mar 2016 14:21:20 +0900 Subject: [PATCH] Add check for remote package and release existance. --- lib/osdn/cli/command/frs_upload.rb | 33 +++++++++++++++++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) diff --git a/lib/osdn/cli/command/frs_upload.rb b/lib/osdn/cli/command/frs_upload.rb index bbe1678..64349c6 100644 --- a/lib/osdn/cli/command/frs_upload.rb +++ b/lib/osdn/cli/command/frs_upload.rb @@ -49,7 +49,23 @@ module OSDN; module CLI; module Command proj_info = api.get_project target_proj # check project existance Pathname.glob(@target_dir+'*').sort.each do |pdir| - unless load_variables(pdir).package_id + if cur_pkgid = load_variables(pdir).package_id + # check package existance on server + begin + api.get_package target_proj, target_package(pdir) + rescue OSDNClient::ApiError => e + begin + err = JSON.parse(e.response_body) + rescue + raise e + end + if err['status'] == 404 + logger.warn "Package ##{cur_pkgid} has been deleted on server and local directory '#{pdir}' remains. You can delete the local directory or delete '#{pdir}/.osdn.vars' file to create a package again with new ID." + next + end + raise e + end + else logger.info "Createing new package '#{pdir.basename}'" if @dry_run pinfo = Hashie::Mash.new id: '(dry-run)', name: pdir.basename, url: '(dry-run)' @@ -69,7 +85,20 @@ module OSDN; module CLI; module Command vars = load_variables(rdir) rinfo = nil if vars.release_id - rinfo = api.get_release target_proj, target_package(rdir), target_release(rdir) + begin + rinfo = api.get_release target_proj, target_package(rdir), target_release(rdir) + rescue OSDNClient::ApiError => e + begin + err = JSON.parse(e.response_body) + rescue + raise e + end + if err['status'] == 404 + logger.warn "Release ##{vars.release_id} has been deleted on server and local directory '#{rdir}' remains. You can delete the local directory or delete '#{rdir}/.osdn.vars' file to create a release again with new ID." + next + end + raise e + end else vars.release_id logger.info "Createing new release '#{rdir.basename}'" if @dry_run -- 2.11.0