@@ -176,14 +176,16 @@ use_github_release <- function(host = deprecated(),
176176 }
177177
178178 dat <- get_release_data(tr )
179- news <- get_release_news(SHA = dat $ SHA , tr = tr )
180-
181179 release_name <- glue(" {dat$Package} {dat$Version}" )
182180 tag_name <- glue(" v{dat$Version}" )
183181 kv_line(" Release name" , release_name )
184182 kv_line(" Tag name" , tag_name )
185183 kv_line(" SHA" , dat $ SHA )
186184
185+ check_github_has_SHA(SHA = dat $ SHA , tr = tr )
186+
187+ news <- get_release_news(SHA = dat $ SHA , tr = tr )
188+
187189 gh <- gh_tr(tr )
188190 release <- gh(
189191 " POST /repos/{owner}/{repo}/releases" ,
@@ -271,6 +273,24 @@ get_release_data <- function(tr = target_repo(github_get = TRUE)) {
271273 out
272274}
273275
276+ check_github_has_SHA <- function (SHA = gert :: git_info(repo = git_repo())$ commit ,
277+ tr = target_repo(github_get = TRUE )) {
278+ safe_gh <- purrr :: safely(gh_tr(tr ))
279+ SHA_GET <- safe_gh(
280+ " /repos/{owner}/{repo}/git/commits/{commit_sha}" ,
281+ commit_sha = SHA
282+ )
283+ if (is.null(SHA_GET $ error )) {
284+ return ()
285+ }
286+ if (inherits(SHA_GET $ error , " http_error_404" )) {
287+ ui_stop("
288+ Can't find SHA {ui_value(substr(SHA, 1, 7))} in {ui_value(tr$repo_spec)}.
289+ Do you need to push?" )
290+ }
291+ ui_stop(" Internal error: Unexpected error when checking for SHA on GitHub" )
292+ }
293+
274294get_release_news <- function (SHA = gert :: git_info(repo = git_repo())$ commit ,
275295 tr = target_repo(github_get = TRUE )) {
276296 package <- package_data()
0 commit comments