Skip to content

Commit

Permalink
Merge pull request #9 from yannfeat/main
Browse files Browse the repository at this point in the history
merge local changes
  • Loading branch information
yannfeat authored Jun 22, 2024
2 parents f2e7b43 + 90d3d10 commit 9a92106
Showing 1 changed file with 109 additions and 4 deletions.
113 changes: 109 additions & 4 deletions index.qmd
Original file line number Diff line number Diff line change
Expand Up @@ -152,7 +152,7 @@ Yann

## Repository forked from `r-hub/repos`

Canonical fields in a package repository
Canonical fields in a package repository (DCF file)
```{.yaml}
Package: bslib
Version: 0.6.1
Expand Down Expand Up @@ -184,7 +184,7 @@ has_maintainer: 1
Yann
:::

## Packages cohort validation
## Packages cohort validation workflow

```{dot}
digraph D {
Expand Down Expand Up @@ -246,7 +246,7 @@ digraph D {
Yann
:::

## Packages cohort validation
## Packages cohort validation workflow

```{dot}
digraph D {
Expand Down Expand Up @@ -308,7 +308,7 @@ digraph D {
Yann
:::

## Packages cohort validation
## Packages cohort validation workflow

```{dot}
digraph D {
Expand Down Expand Up @@ -370,6 +370,111 @@ digraph D {
Yann
:::

## Implementation: get new releases from Github

```{.r echo=TRUE eval=FALSE code-line-numbers="2,4-6,8,12-14,25"}
i <- 1
df_releases <- dplyr::tibble()
for (i in seq_along(gh_repos)) {
user_repo_i <- gh_repos[i]
url_old_i <- packages_old[i, "DownloadURL"]
name_old_i <- packages_old[i, "File"]

# fetch release assets from the Github API
j <- 1
ls_releases_i <- list()
repeat {
ls_releases_ij <- gh(sprintf("GET /repos/%s/releases", user_repo_i),
per_page = 100, page = j
)
if (length(ls_releases_ij) == 0) {
break
}
ls_releases_i <- c(ls_releases_i, ls_releases_ij)
if (length(ls_releases_ij) < 100) {
break
}
j <- j + 1
}

# add the list of release assets to a data frame
df_releases <- ls_releases_i %>%
lapply(function(ls_releases_ij) {
lapply(ls_releases_ij[["assets"]], function(asset) {
asset["uploader"] <- NULL
asset
}) %>%
dplyr::bind_rows()
}) %>%
dplyr::bind_rows() %>%
dplyr::mutate(
user_repo = user_repo_i,
url_old = url_old_i,
name_old = name_old_i
) %>%
rbind(df_releases)
}
```

## Implementation: post-process the results

```{.r echo=TRUE eval=FALSE code-line-numbers="1,7-9,14-16,23"}
df_cmp_releases <- df_releases %>%
dplyr::select(
user_repo, name, created_at, browser_download_url, url_old,
name_old
) %>%
dplyr::rename(url = browser_download_url) %>%
dplyr::filter(stringr::str_detect(
.$name, stringr::coll("R4.4_x86_64-pc-linux-gnu-ubuntu-22.04")
)) %>%
dplyr::mutate(
created_at = lubridate::as_datetime(created_at, format = "%Y-%Om-%dT%H:%M:%SZ"),
libc = stringr::str_detect(url, "\\-libc")
) %>%
dplyr::arrange(user_repo, libc, dplyr::desc(created_at)) %>%
dplyr::group_by(user_repo) %>%
dplyr::slice_head(n = 1) %>%
dplyr::ungroup() %>%
dplyr::mutate(
pkg = stringr::str_split_i(user_repo, "/", 2),
ver = stringr::str_split_i(name, "_", 2),
ver_old = stringr::str_extract(url_old, "download/(.+)/", group = 1)
) %>%
dplyr::select(pkg, name, name_old, ver, ver_old, url)
```

## Implementation: update metrics

```{.r echo=TRUE eval=FALSE code-line-numbers="1-2,10-13,19"}
df_pkg_diff <- df_cmp_releases %>%
dplyr::filter(ver != ver_old)

if (nrow(df_pkg_diff)) {
# calculate risk metrics

opt_repos_init <- getOption("repos")
options(repos = c("CRAN" = "https://cran.rstudio.com"))

df_pkg_metrics <- df_pkg_diff$pkg %>%
riskmetric::pkg_ref(source = "pkg_cran_remote") %>%
riskmetric::pkg_assess() %>%
riskmetric::pkg_score() %>%
cbind(df_pkg_diff) %>%
dplyr::select(-c(pkg, ver, pkg_ref))

options(repos = opt_repos_init)

# replace PACKAGES file

# ...
}
```

::: {.notes}
Yann
:::

# Our roadmap

## Reference container image(s)
Expand Down

0 comments on commit 9a92106

Please sign in to comment.