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)'
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