|
| 1 | +library(fs) |
| 2 | +library(stringr) |
| 3 | +library(glue) |
| 4 | +library(jsonlite) |
| 5 | +library(gh) |
| 6 | + |
| 7 | +downloads <- path("docs", "download") |
| 8 | + |
| 9 | +# Current versions ------------------------------------------------------- |
| 10 | + |
| 11 | +# Based on updated download files |
| 12 | +new_release <- read_json(path(downloads, "_download.json"))$version |
| 13 | +new_prerelease <- read_json(path(downloads, "_prerelease.json"))$version |
| 14 | + |
| 15 | +# Old version from Git history ------------------------------------------- |
| 16 | + |
| 17 | +# Need version at two commits ago |
| 18 | +previous_commit <- gh("https://api.github.com/repos/:owner/:repo/commits", |
| 19 | + owner = "quarto-dev", repo = "quarto-web", |
| 20 | + path = "docs/download/_download.json", |
| 21 | + per_page = 2) |
| 22 | + |
| 23 | +previous_commit_ref <- previous_commit[[2]]$sha |
| 24 | + |
| 25 | +previous_contents <- gh("/repos/{owner}/{repo}/contents/{path}", |
| 26 | + owner = "quarto-dev", repo = "quarto-web", |
| 27 | + path = "docs/download/_download.json", |
| 28 | + ref = previous_commit_ref, |
| 29 | + .accept = "application/vnd.github.raw+json") |
| 30 | +previous_contents_json <- parse_json(previous_contents$message) |
| 31 | + |
| 32 | +old_release <- previous_contents_json$version |
| 33 | +old_release_date <- previous_contents_json$created |
| 34 | + |
| 35 | +# Version numbers |
| 36 | +extract_major <- function(x){ |
| 37 | + str_extract(x, "(\\d+)\\.(\\d+)") |
| 38 | +} |
| 39 | + |
| 40 | +new_release_major <- extract_major(new_release) |
| 41 | +new_prerelease_major <- extract_major(new_prerelease) |
| 42 | +major_version <- extract_major(old_release) |
| 43 | + |
| 44 | +cat("Release:", old_release, "->", new_release, "\n") |
| 45 | +cat("Prerelease:", major_version, "->", new_prerelease_major, "\n") |
| 46 | + |
| 47 | +# Create new changelog content ------------------------------------------- |
| 48 | + |
| 49 | +changelog_url <- paste0("https://github.com/quarto-dev/quarto-cli/releases/download/v", |
| 50 | + old_release, "/changelog.md") |
| 51 | +changelog_dir <- dir_create(path(downloads, "changelog", major_version)) |
| 52 | + |
| 53 | +download_status <- download.file(changelog_url, path(changelog_dir, |
| 54 | + "_changelog", ext = "md")) |
| 55 | +stopifnot(!download_status) |
| 56 | + |
| 57 | +glue(" |
| 58 | +--- |
| 59 | +title: {major_version} Release Notes |
| 60 | +format: html |
| 61 | +--- |
| 62 | +
|
| 63 | +{{{{< include _changelog.md >}}}} |
| 64 | +") |> |
| 65 | + writeLines(path(changelog_dir, "index", ext = "qmd")) |
| 66 | + |
| 67 | +# Increment versions of aliases ------------------------------------------ |
| 68 | + |
| 69 | +release_page <- path(downloads, "release", ext = "qmd") |
| 70 | +prerelease_page <- path(downloads, "prerelease", ext = "qmd") |
| 71 | + |
| 72 | +aliases <- paste0("changelog/", |
| 73 | + c(major_version, new_release_major, new_prerelease_major), |
| 74 | + "/") |
| 75 | + |
| 76 | +readLines(release_page) |> |
| 77 | + str_replace(aliases[1], aliases[2]) |> |
| 78 | + writeLines(release_page) |
| 79 | + |
| 80 | +readLines(prerelease_page) |> |
| 81 | + str_replace(aliases[2], aliases[3]) |> |
| 82 | + writeLines(prerelease_page) |
| 83 | + |
| 84 | +# Update listing ------------------------------------------------ |
| 85 | + |
| 86 | +old_abbr <- str_split(major_version, "\\.")[[1]] |> paste0(collapse = "") |
| 87 | + |
| 88 | +# Add new item to download-older listing in docs/download/index.qmd |
| 89 | + |
| 90 | +glue(' |
| 91 | +\n- id: version{ old_abbr } |
| 92 | + title: { old_release } |
| 93 | + date: { format(as.Date(old_release_date), "%Y/%m/%d") } |
| 94 | + path: https://github.com/quarto-dev/quarto-cli/releases/tag/v{ old_release } |
| 95 | + changelog: "[Release Notes](changelog/{ major_version }/)" |
| 96 | +') |> |
| 97 | + cat(file = path(downloads, "_download-older.yml"), append = TRUE) |
| 98 | + |
0 commit comments