~hrbrmstr/vershist

e9f606f918a537dbfb1dafc9f9fef93d20958e60 — hrbrmstr 2 years ago f55ab4f
fixups for scrapers; added cache/refresh for mysql and etcd
96 files changed, 183 insertions(+), 137 deletions(-)

M DESCRIPTION
M NAMESPACE
M NEWS.md
M R/chrome.R
M R/etcd.R
M R/lighttpd.R
M R/memcached.R
M R/mongodb.R
M R/mysql.R
M R/openssh.R
M R/php.R
M R/tomcat.R
M R/vershist-package.R
M README.md
M README_cache/gfm/__packages
A README_cache/gfm/apple_ios_29072f8b4daa2c2bea46e7ff543239a0.RData
R README_cache/gfm/{apple_ios_c87a0ba8187fd58c6318fd9ff44ca2a6.rdb => apple_ios_29072f8b4daa2c2bea46e7ff543239a0.rdb}
A README_cache/gfm/apple_ios_29072f8b4daa2c2bea46e7ff543239a0.rdx
D README_cache/gfm/apple_ios_c87a0ba8187fd58c6318fd9ff44ca2a6.RData
D README_cache/gfm/apple_ios_c87a0ba8187fd58c6318fd9ff44ca2a6.rdx
D README_cache/gfm/chrome_684fdbca374fdb61c560f50083ae4aab.RData
D README_cache/gfm/chrome_684fdbca374fdb61c560f50083ae4aab.rdx
A README_cache/gfm/chrome_c26d2a6d2cacb252084f3bd7c4849f99.RData
R README_cache/gfm/{chrome_684fdbca374fdb61c560f50083ae4aab.rdb => chrome_c26d2a6d2cacb252084f3bd7c4849f99.rdb}
A README_cache/gfm/chrome_c26d2a6d2cacb252084f3bd7c4849f99.rdx
A README_cache/gfm/etcd_89088fa0fb9e659c6fbb485ef3f2ac49.RData
R README_cache/gfm/{etcd_d62ecf38e5c2f6bab5a807abae636373.rdb => etcd_89088fa0fb9e659c6fbb485ef3f2ac49.rdb}
A README_cache/gfm/etcd_89088fa0fb9e659c6fbb485ef3f2ac49.rdx
D README_cache/gfm/etcd_d62ecf38e5c2f6bab5a807abae636373.RData
D README_cache/gfm/etcd_d62ecf38e5c2f6bab5a807abae636373.rdx
D README_cache/gfm/isc-bind_bbbd7faa203789aad5251a1ae4a5b97c.RData
D README_cache/gfm/isc-bind_bbbd7faa203789aad5251a1ae4a5b97c.rdx
A README_cache/gfm/isc-bind_d1c53132265fff2be0e80dcd192f8348.RData
R README_cache/gfm/{isc-bind_bbbd7faa203789aad5251a1ae4a5b97c.rdb => isc-bind_d1c53132265fff2be0e80dcd192f8348.rdb}
A README_cache/gfm/isc-bind_d1c53132265fff2be0e80dcd192f8348.rdx
D README_cache/gfm/lighttpd_58e541a40f4a190c4f820a1324a0cf7e.RData
D README_cache/gfm/lighttpd_58e541a40f4a190c4f820a1324a0cf7e.rdx
A README_cache/gfm/lighttpd_670a08fef5f69078806176edfb66bb59.RData
R README_cache/gfm/{lighttpd_58e541a40f4a190c4f820a1324a0cf7e.rdb => lighttpd_670a08fef5f69078806176edfb66bb59.rdb}
A README_cache/gfm/lighttpd_670a08fef5f69078806176edfb66bb59.rdx
D README_cache/gfm/memcached_7ee3ec5e28bd4701eb680eba6fa9a05b.RData
D README_cache/gfm/memcached_7ee3ec5e28bd4701eb680eba6fa9a05b.rdx
A README_cache/gfm/memcached_cc4055b2d9231759b2795a5bf6a33d69.RData
R README_cache/gfm/{memcached_7ee3ec5e28bd4701eb680eba6fa9a05b.rdb => memcached_cc4055b2d9231759b2795a5bf6a33d69.rdb}
A README_cache/gfm/memcached_cc4055b2d9231759b2795a5bf6a33d69.rdx
A README_cache/gfm/mongodb_707e53f07d599fef2a0f9a5dc02f298a.RData
R README_cache/gfm/{mongodb_fb06a5aafa251908caeb222e29f1043a.rdb => mongodb_707e53f07d599fef2a0f9a5dc02f298a.rdb}
A README_cache/gfm/mongodb_707e53f07d599fef2a0f9a5dc02f298a.rdx
D README_cache/gfm/mongodb_fb06a5aafa251908caeb222e29f1043a.RData
D README_cache/gfm/mongodb_fb06a5aafa251908caeb222e29f1043a.rdx
D README_cache/gfm/mysql_1412a1814e7127876d30c1e602611806.RData
D README_cache/gfm/mysql_1412a1814e7127876d30c1e602611806.rdx
A README_cache/gfm/mysql_38b4c49f19f40e9f2e6665b14dbd0af2.RData
R README_cache/gfm/{mysql_1412a1814e7127876d30c1e602611806.rdb => mysql_38b4c49f19f40e9f2e6665b14dbd0af2.rdb}
A README_cache/gfm/mysql_38b4c49f19f40e9f2e6665b14dbd0af2.rdx
A README_cache/gfm/nginx_1d90d567e0a4457e8f9aeca7cd881b5c.RData
R README_cache/gfm/{nginx_85a001886458aa7c23e95b712c4c7c13.rdb => nginx_1d90d567e0a4457e8f9aeca7cd881b5c.rdb}
A README_cache/gfm/nginx_1d90d567e0a4457e8f9aeca7cd881b5c.rdx
D README_cache/gfm/nginx_85a001886458aa7c23e95b712c4c7c13.RData
D README_cache/gfm/nginx_85a001886458aa7c23e95b712c4c7c13.rdx
A README_cache/gfm/openresty_b2f5e7ec3d16c78ae542dd8fd71ea966.RData
R README_cache/gfm/{openresty_df4309ea5aba89af3860f6bd44b525be.rdb => openresty_b2f5e7ec3d16c78ae542dd8fd71ea966.rdb}
A README_cache/gfm/openresty_b2f5e7ec3d16c78ae542dd8fd71ea966.rdx
D README_cache/gfm/openresty_df4309ea5aba89af3860f6bd44b525be.RData
D README_cache/gfm/openresty_df4309ea5aba89af3860f6bd44b525be.rdx
D README_cache/gfm/openssh_9fa675ad5752675b7c64af74834210e0.RData
D README_cache/gfm/openssh_9fa675ad5752675b7c64af74834210e0.rdx
A README_cache/gfm/openssh_af5a894117e40c3564057c69db66d0d2.RData
R README_cache/gfm/{openssh_9fa675ad5752675b7c64af74834210e0.rdb => openssh_af5a894117e40c3564057c69db66d0d2.rdb}
A README_cache/gfm/openssh_af5a894117e40c3564057c69db66d0d2.rdx
D README_cache/gfm/php_7238bf9d28779ec7d787ab4b553f0094.RData
D README_cache/gfm/php_7238bf9d28779ec7d787ab4b553f0094.rdx
A README_cache/gfm/php_f2318efe9feb6e5c6bcfdb0c5ea0a6a4.RData
R README_cache/gfm/{php_7238bf9d28779ec7d787ab4b553f0094.rdb => php_f2318efe9feb6e5c6bcfdb0c5ea0a6a4.rdb}
A README_cache/gfm/php_f2318efe9feb6e5c6bcfdb0c5ea0a6a4.rdx
D README_cache/gfm/sendmail_e84c95f4b2ac14a0543208fba290b19c.RData
D README_cache/gfm/sendmail_e84c95f4b2ac14a0543208fba290b19c.rdx
A README_cache/gfm/sendmail_e98f87f1f9bcb79fc3442e3a389d2016.RData
R README_cache/gfm/{sendmail_e84c95f4b2ac14a0543208fba290b19c.rdb => sendmail_e98f87f1f9bcb79fc3442e3a389d2016.rdb}
A README_cache/gfm/sendmail_e98f87f1f9bcb79fc3442e3a389d2016.rdx
A README_cache/gfm/sqlite_8c1b3f50f34cddce1c43f2fbf388c403.RData
R README_cache/gfm/{sqlite_b7ba318efe28153955358de930d759bf.rdb => sqlite_8c1b3f50f34cddce1c43f2fbf388c403.rdb}
A README_cache/gfm/sqlite_8c1b3f50f34cddce1c43f2fbf388c403.rdx
D README_cache/gfm/sqlite_b7ba318efe28153955358de930d759bf.RData
D README_cache/gfm/sqlite_b7ba318efe28153955358de930d759bf.rdx
D README_cache/gfm/tomcat_75e4b61804ba8a86f5d5cd4140d40324.RData
D README_cache/gfm/tomcat_75e4b61804ba8a86f5d5cd4140d40324.rdx
A README_cache/gfm/tomcat_ad9c2cfe61e0c55a17f055c07ca24658.RData
R README_cache/gfm/{tomcat_75e4b61804ba8a86f5d5cd4140d40324.rdb => tomcat_ad9c2cfe61e0c55a17f055c07ca24658.rdb}
A README_cache/gfm/tomcat_ad9c2cfe61e0c55a17f055c07ca24658.rdx
M man/apache_httpd_version_history.Rd
M man/etcd_version_history.Rd
M man/exim_version_history.Rd
M man/google_chrome_version_history.Rd
M man/mysql_version_history.Rd
M man/nginx_version_history.Rd
M DESCRIPTION => DESCRIPTION +3 -3
@@ 1,8 1,8 @@
Package: vershist
Type: Package
Title: Collect Version Histories For Vendor Products
Version: 0.4.1
Date: 2019-09-30
Version: 0.4.2
Date: 2020-01-13
Authors@R: c(
    person("Bob", "Rudis", email = "bob@rud.is", role = c("aut", "cre"), 
           comment = c(ORCID = "0000-0001-5670-2640"))


@@ 37,5 37,5 @@ Imports:
    tidyr,
    gh,
    Rcpp
RoxygenNote: 6.1.1
RoxygenNote: 7.0.2
LinkingTo: Rcpp

M NAMESPACE => NAMESPACE +1 -0
@@ 34,6 34,7 @@ importFrom(dplyr,mutate_at)
importFrom(dplyr,progress_estimated)
importFrom(dplyr,rename)
importFrom(dplyr,select)
importFrom(dplyr,tibble)
importFrom(gh,gh)
importFrom(gh,gh_next)
importFrom(git2r,clone)

M NEWS.md => NEWS.md +4 -0
@@ 1,3 1,7 @@
0.4.2
* Fixed a cpl functions that use scraping (sites changed HTML)
* Added caching/refresh capability to mysql and etcd given how expensive they are to compute

0.4.1
* Improved Exim version history retriever 


M R/chrome.R => R/chrome.R +2 -2
@@ 20,8 20,8 @@ google_chrome_version_history <- function(refresh = FALSE) {

  pg <- xml2::read_html("https://en.wikipedia.org/wiki/Google_Chrome_version_history")

  dplyr::data_frame(
    vers = rvest::html_nodes(pg, xpath=".//tr/td[1]") %>% rvest::html_text(),
  dplyr::tibble(
    vers = rvest::html_nodes(pg, xpath=".//tr/td[1]") %>% rvest::html_text(trim = TRUE),
    rls_date = rvest::html_nodes(pg, xpath=".//tr/td[2]") %>%
      rvest::html_text() %>%
      stri_extract_first_regex("[[:digit:]]{4}-[[:digit:]]{2}-[[:digit:]]{2}")

M R/etcd.R => R/etcd.R +12 -2
@@ 7,9 7,15 @@
#' ordered factor.
#'
#' @md
#' @param refresh if `TRUE` and there `~/.vershist` cache dir exists, will
#'        cause the version history database for apache to be rebuilt. Defaults
#'        to `FALSE` and has no effect if `~/.vershist` cache dir does not exist.
#' @note This function requires a valid GitHub API key stored in `GITHUB_PAT`
#' @export
etcd_version_history <- function() {
etcd_version_history <- function(refresh = FALSE) {

  tech <- "etcd"
  if (use_cache() && (!refresh) && is_cached(tech)) return(read_from_cache(tech))

  page <- gh::gh("/repos/etcd-io/etcd/tags")



@@ 55,7 61,11 @@ etcd_version_history <- function() {
        dplyr::arrange(major, minor, patch) %>%
        dplyr::mutate(vers = factor(vers, levels=vers)) %>%
        dplyr::select(vers, rls_date, rls_year, major, minor, patch, prerelease, build)
    )
    ) -> out
  )

  if (use_cache() && (refresh || (!is_cached(tech)))) write_to_cache(out, tech)

  out

}
\ No newline at end of file

M R/lighttpd.R => R/lighttpd.R +1 -1
@@ 17,7 17,7 @@ lighttpd_version_history <- function() {
  ) %>%
    purrr::map_df(~{
      pg <- read_html(.x)
      dplyr::data_frame(
      dplyr::tibble(
        vers = rvest::html_nodes(pg, xpath=".//tr/td[1]") %>%
          rvest::html_text(),
        ts = rvest::html_nodes(pg, xpath=".//tr/td[2]") %>%

M R/memcached.R => R/memcached.R +6 -2
@@ 22,12 22,14 @@ fix_memcached_dates <- function(x) {
#' @export
memcached_version_history <- function() {

  td <- tempfile("wiki", fileext="git")
  td <- tempfile(pattern = "wiki", fileext="git")

  dir.create(td)

  git2r::clone(
    url = "git@github.com:memcached/memcached.wiki.git",
    bare = FALSE,
    checkout = TRUE,
    local_path = td,
    credentials = git2r::cred_ssh_key(),
    progress = FALSE


@@ 35,10 37,11 @@ memcached_version_history <- function() {

  on.exit(unlink(td, recursive = TRUE), add = TRUE)

  readr::read_lines(file.path(repo@path, "ReleaseNotes.md")) %>%
  readr::read_lines(file.path(sub("/\\.git$", "", repo$path), "ReleaseNotes.md")) %>%
    purrr::keep(stri_detect_fixed, "[[ReleaseNotes") %>%
    stri_replace_first_regex(" \\* \\[\\[.*]] ", "") %>%
    stri_split_fixed(" ", 2, simplify = TRUE) %>%
    as.data.frame(stringsAsFactors = FALSE) %>%
    dplyr::as_tibble() %>%
    purrr::set_names(c("vers", "rls_date")) %>%
    dplyr::mutate(string = stri_trim_both(vers)) %>%


@@ 49,6 52,7 @@ memcached_version_history <- function() {
        dplyr::as_tibble()
    ) %>%
    dplyr::arrange(major, minor, patch) %>%
    dplyr::distinct() %>%
    dplyr::mutate(vers = factor(vers, levels = vers))

}

M R/mongodb.R => R/mongodb.R +1 -1
@@ 14,7 14,7 @@ mongodb_version_history <- function() {

  pg <- xml2::read_html("https://www.mongodb.org/dl/linux")

  dplyr::data_frame(
  dplyr::tibble(
    vers = rvest::html_nodes(pg, xpath=".//tr/td[1]") %>%
      rvest::html_text(),
    ts = rvest::html_nodes(pg, xpath=".//tr/td[2]") %>%

M R/mysql.R => R/mysql.R +14 -3
@@ 11,11 11,17 @@
#' alternate behaviour is required.
#'
#' @md
#' @param refresh if `TRUE` and there `~/.vershist` cache dir exists, will
#'        cause the version history database for apache to be rebuilt. Defaults
#'        to `FALSE` and has no effect if `~/.vershist` cache dir does not exist.
#' @note This is an *expensive* function as it does quite a bit of scraping.
#'       Please consider using some sort of cache for the results unless
#'       Please consider using the cache option for the results unless
#'       absolutely necessary.
#' @export
mysql_version_history <- function() {
mysql_version_history <- function(refresh = FALSE) {

  tech <- "mysql"
  if (use_cache() && (!refresh) && is_cached(tech)) return(read_from_cache(tech))

  pg <- xml2::read_html("https://downloads.mysql.com/archives/community/")



@@ 65,6 71,11 @@ mysql_version_history <- function() {
    dplyr::mutate(prerelease = "") %>%
    dplyr::arrange(major, minor, patch) %>%
    dplyr::mutate(vers = factor(vers, levels=vers)) %>%
    dplyr::select(vers, rls_date, rls_year, major, minor, patch, prerelease, build)
    dplyr::select(vers, rls_date, rls_year, major, minor, patch, prerelease, build) -> out


  if (use_cache() && (refresh || (!is_cached(tech)))) write_to_cache(out, tech)

  out

}
\ No newline at end of file

M R/openssh.R => R/openssh.R +4 -4
@@ 13,15 13,15 @@ openssh_version_history <- function() {

  pg <- xml2::read_html("https://www.openssh.com/releasenotes.html")

  dplyr::data_frame(
  dplyr::tibble(

    vers = rvest::html_nodes(
      pg, xpath=".//h3/a[contains(@href, 'release') and not(contains(@name, 'p'))]"
      pg, xpath=".//h3/a[contains(@href, 'release') and not(contains(@id, 'p'))]"
    ) %>%
      rvest::html_attr("name"),
      rvest::html_attr("id"),

    rls_date = rvest::html_nodes(
      pg, xpath=".//h3/a[contains(@href, 'release') and not(contains(@name, 'p'))]/.."
      pg, xpath=".//h3/a[contains(@href, 'release') and not(contains(@id, 'p'))]/.."
    ) %>%
      rvest::html_text() %>%
      stri_extract_first_regex("[[:digit:]]{4}-[[:digit:]]{2}-[[:digit:]]{2}")

M R/php.R => R/php.R +1 -1
@@ 15,7 15,7 @@ php_version_history <- function() {

  rls <- html_nodes(doc, xpath = ".//h2/following-sibling::ul")

  dplyr::data_frame(
  dplyr::tibble(
    vers = rvest::html_nodes(rls, xpath=".//preceding-sibling::h2") %>%
      rvest::html_text(trim=TRUE) %>%
      stringi::stri_replace_all_fixed("x", 0),

M R/tomcat.R => R/tomcat.R +1 -1
@@ 19,7 19,7 @@ tomcat_version_history <- function() {
    purrr::map_df(~{
      pg <- .x
      rls <- rvest::html_nodes(pg, "h3[id*='Tomcat'][id*='Released']:not([id*='Conn']):not([id*='Native']):not([id*='Maven']):not([id*='alpha']):not([id*='beta'])")
      dplyr::data_frame(
      dplyr::tibble(
        vers = rvest::html_attr(rls, "id") %>%
          stri_replace_all_regex("^Tomcat_|_Released$", ""),
        rls_date = as.Date(rvest::html_nodes(rls, "span") %>%

M R/vershist-package.R => R/vershist-package.R +1 -1
@@ 10,7 10,7 @@
#' @import semver
#' @importFrom purrr keep discard map map_df %>% safely set_names
#' @importFrom dplyr mutate rename select as_tibble left_join bind_cols arrange
#' @importFrom dplyr rename progress_estimated mutate_at distinct data_frame everything
#' @importFrom dplyr rename progress_estimated mutate_at distinct data_frame everything tibble
#' @importFrom stringi stri_match_first_regex stri_detect_fixed stri_detect_regex
#' @importFrom stringi stri_replace_all_regex stri_replace_first_fixed stri_trans_tolower
#' @importFrom stringi stri_extract_first_regex stri_sub stri_replace_first_regex stri_split_lines

M README.md => README.md +108 -104
@@ 49,6 49,10 @@ Utility:
## Installation

``` r
devtools::install_git("https://git.sr.ht/~hrbrmstr/vershist")
# OR
devtools::install_gitlab("hrbrmstr/vershist")
# OR
devtools::install_github("hrbrmstr/vershist")
```



@@ 61,7 65,7 @@ library(vershist)
packageVersion("vershist")
```

    ## [1] '0.3.0'
    ## [1] '0.4.2'

Utility



@@ 92,7 96,7 @@ Apache
apache_httpd_version_history()
```

    ## # A tibble: 29 x 8
    ## # A tibble: 109 x 8
    ##    vers   rls_date   rls_year major minor patch prerelease build
    ##    <fct>  <date>        <dbl> <int> <int> <int> <chr>      <chr>
    ##  1 1.3.0  1998-06-05     1998     1     3     0 ""         ""   


@@ 105,7 109,7 @@ apache_httpd_version_history()
    ##  8 1.3.11 2000-01-22     2000     1     3    11 ""         ""   
    ##  9 1.3.12 2000-02-25     2000     1     3    12 ""         ""   
    ## 10 1.3.14 2000-10-10     2000     1     3    14 ""         ""   
    ## # ... with 19 more rows
    ## # … with 99 more rows

Apple iOS



@@ 113,7 117,7 @@ Apple iOS
apple_ios_version_history()
```

    ## # A tibble: 112 x 7
    ## # A tibble: 144 x 7
    ##    vers  rls_date   major minor patch prerelease build
    ##    <fct> <date>     <int> <int> <int> <chr>      <chr>
    ##  1 1.0.0 2007-06-29     1     0     0 ""         ""   


@@ 126,7 130,7 @@ apple_ios_version_history()
    ##  8 1.1.4 2008-02-26     1     1     4 ""         ""   
    ##  9 1.1.5 2008-07-15     1     1     5 ""         ""   
    ## 10 2.0.0 2008-07-11     2     0     0 ""         ""   
    ## # ... with 102 more rows
    ## # … with 134 more rows

etcd iOS



@@ 134,7 138,7 @@ etcd iOS
etcd_version_history()
```

    ## # A tibble: 159 x 8
    ## # A tibble: 179 x 8
    ##    vers      rls_date   rls_year major minor patch prerelease build
    ##    <fct>     <date>        <dbl> <int> <int> <int> <chr>      <int>
    ##  1 0.1.0     2013-08-11     2013     0     1     0 <NA>          NA


@@ 147,7 151,7 @@ etcd_version_history()
    ##  8 0.2.0-rc1 2013-11-14     2013     0     2     0 rc1           NA
    ##  9 0.2.0-rc0 2013-10-17     2013     0     2     0 rc0           NA
    ## 10 0.3.0     2014-02-07     2014     0     3     0 <NA>          NA
    ## # … with 149 more rows
    ## # … with 169 more rows

Google Chrome



@@ 155,20 159,20 @@ Google Chrome
google_chrome_version_history()
```

    ## # A tibble: 71 x 8
    ## # A tibble: 85 x 8
    ##    vers    rls_date   rls_year major minor patch prerelease build
    ##    <fct>   <date>        <dbl> <int> <int> <int> <chr>      <chr>
    ##  1 0.2.149 2008-09-02    2008.     0     2   149 ""         ""   
    ##  2 0.3.154 2008-10-29    2008.     0     3   154 ""         ""   
    ##  3 0.4.154 2008-11-24    2008.     0     4   154 ""         ""   
    ##  4 1.0.154 2008-12-11    2008.     1     0   154 ""         ""   
    ##  5 2.0.172 2009-05-24    2009.     2     0   172 ""         ""   
    ##  6 3.0.195 2009-10-12    2009.     3     0   195 ""         ""   
    ##  7 4.0.249 2010-01-25    2010.     4     0   249 ""         ""   
    ##  8 4.1.249 2010-03-17    2010.     4     1   249 ""         ""   
    ##  9 5.0.375 2010-05-21    2010.     5     0   375 ""         ""   
    ## 10 6.0.472 2010-09-02    2010.     6     0   472 ""         ""   
    ## # ... with 61 more rows
    ##  1 0.2.149 2008-09-02     2008     0     2   149 ""         ""   
    ##  2 0.3.154 2008-10-29     2008     0     3   154 ""         ""   
    ##  3 0.4.154 2008-11-24     2008     0     4   154 ""         ""   
    ##  4 1.0.154 2008-12-11     2008     1     0   154 ""         ""   
    ##  5 2.0.172 2009-05-24     2009     2     0   172 ""         ""   
    ##  6 3.0.195 2009-10-12     2009     3     0   195 ""         ""   
    ##  7 4.0.249 2010-01-25     2010     4     0   249 ""         ""   
    ##  8 4.1.249 2010-03-17     2010     4     1   249 ""         ""   
    ##  9 5.0.375 2010-05-21     2010     5     0   375 ""         ""   
    ## 10 6.0.472 2010-09-02     2010     6     0   472 ""         ""   
    ## # … with 75 more rows

ISC BIND



@@ 176,7 180,7 @@ ISC BIND
isc_bind_version_history()
```

    ## # A tibble: 567 x 3
    ## # A tibble: 607 x 3
    ##    vers     rls_date   rls_year
    ##    <fct>    <date>        <dbl>
    ##  1 9.0.0    2004-01-28     2004


@@ 189,7 193,7 @@ isc_bind_version_history()
    ##  8 9.0.0rc2 2004-01-28     2004
    ##  9 9.0.0rc3 2004-01-28     2004
    ## 10 9.0.0rc4 2004-01-28     2004
    ## # … with 557 more rows
    ## # … with 597 more rows

lighttpd



@@ 197,20 201,20 @@ lighttpd
lighttpd_version_history()
```

    ## # A tibble: 97 x 3
    ##    vers         rls_date            rls_year
    ##    <chr>        <dttm>                 <dbl>
    ##  1 1.4.20       2008-09-29 23:27:45     2008
    ##  2 1.4.21-r2389 2009-02-05 12:43:18     2009
    ##  3 1.4.13       2007-01-29 00:07:24     2007
    ##  4 1.4.41       2016-07-31 12:51:39     2016
    ##  5 1.4.27       2010-08-13 09:32:03     2010
    ##  6 1.4.46       2017-10-21 19:54:46     2017
    ##  7 1.4.39       2016-01-02 12:57:37     2016
    ##  8 1.4.40       2016-07-16 10:28:52     2016
    ##  9 1.4.32       2012-11-21 09:26:14     2012
    ## 10 1.4.30       2011-12-18 15:23:06     2011
    ## # ... with 87 more rows
    ## # A tibble: 102 x 3
    ##    vers   rls_date            rls_year
    ##    <chr>  <dttm>                 <dbl>
    ##  1 1.4.36 2015-07-26 10:39:36     2015
    ##  2 1.4.20 2008-09-29 23:27:45     2008
    ##  3 1.4.17 2007-08-29 00:44:32     2007
    ##  4 1.4.41 2016-07-31 12:51:39     2016
    ##  5 1.4.34 2014-01-20 12:31:42     2014
    ##  6 1.4.39 2016-01-02 12:57:37     2016
    ##  7 1.4.22 2009-03-07 14:51:14     2009
    ##  8 1.4.15 2007-04-13 21:00:18     2007
    ##  9 1.4.18 2007-09-09 20:11:09     2007
    ## 10 1.4.43 2016-10-31 13:18:33     2016
    ## # … with 92 more rows

memcached



@@ 218,20 222,20 @@ memcached
memcached_version_history()
```

    ## # A tibble: 49 x 9
    ## # A tibble: 63 x 9
    ##    vers  rls_date   string rls_year major minor patch prerelease build
    ##    <fct> <date>     <chr>     <dbl> <int> <int> <int> <chr>      <chr>
    ##  1 1.2.7 2009-04-03 1.2.7     2009.     1     2     7 ""         ""   
    ##  2 1.2.8 2009-04-11 1.2.8     2009.     1     2     8 ""         ""   
    ##  3 1.4.0 2009-07-09 1.4.0     2009.     1     4     0 ""         ""   
    ##  4 1.4.1 2009-08-29 1.4.1     2009.     1     4     1 ""         ""   
    ##  5 1.4.2 2009-10-11 1.4.2     2009.     1     4     2 ""         ""   
    ##  6 1.4.3 2009-11-07 1.4.3     2009.     1     4     3 ""         ""   
    ##  7 1.4.4 2009-11-26 1.4.4     2009.     1     4     4 ""         ""   
    ##  8 1.4.5 2010-04-03 1.4.5     2010.     1     4     5 ""         ""   
    ##  9 1.4.6 2011-07-15 1.4.6     2011.     1     4     6 ""         ""   
    ## 10 1.4.7 2011-08-16 1.4.7     2011.     1     4     7 ""         ""   
    ## # ... with 39 more rows
    ##  1 1.2.7 2009-04-03 1.2.7      2009     1     2     7 ""         ""   
    ##  2 1.2.8 2009-04-11 1.2.8      2009     1     2     8 ""         ""   
    ##  3 1.4.0 2009-07-09 1.4.0      2009     1     4     0 ""         ""   
    ##  4 1.4.1 2009-08-29 1.4.1      2009     1     4     1 ""         ""   
    ##  5 1.4.2 2009-10-11 1.4.2      2009     1     4     2 ""         ""   
    ##  6 1.4.3 2009-11-07 1.4.3      2009     1     4     3 ""         ""   
    ##  7 1.4.4 2009-11-26 1.4.4      2009     1     4     4 ""         ""   
    ##  8 1.4.5 2010-04-03 1.4.5      2010     1     4     5 ""         ""   
    ##  9 1.4.6 2011-07-15 1.4.6      2011     1     4     6 ""         ""   
    ## 10 1.4.7 2011-08-16 1.4.7      2011     1     4     7 ""         ""   
    ## # … with 53 more rows

mongodb



@@ 239,7 243,7 @@ mongodb
mongodb_version_history()
```

    ## # A tibble: 194 x 8
    ## # A tibble: 222 x 8
    ##    vers  rls_date   rls_year major minor patch prerelease build
    ##    <fct> <chr>         <dbl> <int> <int> <int> <chr>      <chr>
    ##  1 0.8.0 2009-02-11     2009     0     8     0 ""         ""   


@@ 252,7 256,7 @@ mongodb_version_history()
    ##  8 0.9.6 2009-07-08     2009     0     9     6 ""         ""   
    ##  9 0.9.7 2009-07-29     2009     0     9     7 ""         ""   
    ## 10 0.9.8 2009-08-14     2009     0     9     8 ""         ""   
    ## # ... with 184 more rows
    ## # … with 212 more rows

MySQL



@@ 260,7 264,7 @@ MySQL
mysql_version_history()
```

    ## # A tibble: 201 x 8
    ## # A tibble: 230 x 8
    ##    vers    rls_date   rls_year major minor patch prerelease build
    ##    <fct>   <date>        <dbl> <int> <int> <int> <chr>      <chr>
    ##  1 5.0.15a 2005-10-25     2005     5     0    15 ""         a    


@@ 273,7 277,7 @@ mysql_version_history()
    ##  8 5.0.19  2006-03-07     2006     5     0    19 ""         ""   
    ##  9 5.0.20a 2006-04-20     2006     5     0    20 ""         a    
    ## 10 5.0.20  2006-04-10     2006     5     0    20 ""         ""   
    ## # ... with 191 more rows
    ## # … with 220 more rows

nginx



@@ 281,20 285,20 @@ nginx
nginx_version_history()
```

    ## # A tibble: 423 x 8
    ## # A tibble: 523 x 8
    ##    vers  rls_date   rls_year major minor patch prerelease build
    ##    <fct> <date>        <dbl> <int> <int> <int> <chr>      <chr>
    ##  1 0.1.0 2004-10-04     2004     0     1     0 ""         ""   
    ##  2 0.1.1 2004-10-11     2004     0     1     1 ""         ""   
    ##  3 0.1.2 2004-10-21     2004     0     1     2 ""         ""   
    ##  4 0.1.3 2004-10-25     2004     0     1     3 ""         ""   
    ##  5 0.1.4 2004-10-26     2004     0     1     4 ""         ""   
    ##  6 0.1.5 2004-11-11     2004     0     1     5 ""         ""   
    ##  7 0.1.6 2004-11-11     2004     0     1     6 ""         ""   
    ##  8 0.1.7 2004-11-12     2004     0     1     7 ""         ""   
    ##  9 0.1.8 2004-11-20     2004     0     1     8 ""         ""   
    ## 10 0.1.9 2004-11-25     2004     0     1     9 ""         ""   
    ## # ... with 413 more rows
    ##    <fct> <date>        <dbl> <int> <int> <int> <lgl>      <int>
    ##  1 0.1.0 2004-10-04     2004     0     1     0 NA            NA
    ##  2 0.1.1 2004-10-11     2004     0     1     1 NA            NA
    ##  3 0.1.2 2004-10-21     2004     0     1     2 NA            NA
    ##  4 0.1.3 2004-10-25     2004     0     1     3 NA            NA
    ##  5 0.1.4 2004-10-26     2004     0     1     4 NA            NA
    ##  6 0.1.5 2004-11-11     2004     0     1     5 NA            NA
    ##  7 0.1.6 2004-11-11     2004     0     1     6 NA            NA
    ##  8 0.1.7 2004-11-12     2004     0     1     7 NA            NA
    ##  9 0.1.8 2004-11-20     2004     0     1     8 NA            NA
    ## 10 0.1.9 2004-11-25     2004     0     1     9 NA            NA
    ## # … with 513 more rows

openresty



@@ 302,7 306,7 @@ openresty
openresty_version_history()
```

    ## # A tibble: 153 x 8
    ## # A tibble: 157 x 8
    ##    vers     rls_date   rls_year major minor patch prerelease build
    ##    <fct>    <date>        <dbl> <int> <int> <int> <chr>      <int>
    ##  1 0.8.54.9 2011-07-08     2011     0     8    54 ""             9


@@ 315,7 319,7 @@ openresty_version_history()
    ##  8 1.0.4.1  2011-07-30     2011     1     0     4 ""             1
    ##  9 1.0.4.0  2011-07-12     2011     1     0     4 ""             0
    ## 10 1.0.5.1  2011-09-04     2011     1     0     5 ""             1
    ## # ... with 143 more rows
    ## # … with 147 more rows

OpenSSH



@@ 323,20 327,20 @@ OpenSSH
openssh_version_history()
```

    ## # A tibble: 54 x 8
    ## # A tibble: 59 x 8
    ##    vers  rls_date   rls_year major minor patch prerelease build
    ##    <fct> <date>        <dbl> <int> <int> <int> <chr>      <chr>
    ##  1 2.9.0 2001-04-29    2001.     2     9     0 ""         ""   
    ##  2 2.9.9 2001-09-25    2001.     2     9     9 ""         ""   
    ##  3 3.0.0 2001-11-06    2001.     3     0     0 ""         ""   
    ##  4 3.0.1 2001-11-19    2001.     3     0     1 ""         ""   
    ##  5 3.0.2 2002-12-04    2002.     3     0     2 ""         ""   
    ##  6 3.1.0 2004-04-09    2004.     3     1     0 ""         ""   
    ##  7 3.2.2 2002-05-16    2002.     3     2     2 ""         ""   
    ##  8 3.2.3 2002-05-23    2002.     3     2     3 ""         ""   
    ##  9 3.3.0 2002-06-21    2002.     3     3     0 ""         ""   
    ## 10 3.4.0 2002-06-26    2002.     3     4     0 ""         ""   
    ## # ... with 44 more rows
    ##  1 2.9.0 2001-04-29     2001     2     9     0 ""         ""   
    ##  2 2.9.9 2001-09-25     2001     2     9     9 ""         ""   
    ##  3 3.0.0 2001-11-06     2001     3     0     0 ""         ""   
    ##  4 3.0.1 2001-11-19     2001     3     0     1 ""         ""   
    ##  5 3.0.2 2002-12-04     2002     3     0     2 ""         ""   
    ##  6 3.1.0 2004-04-09     2004     3     1     0 ""         ""   
    ##  7 3.2.2 2002-05-16     2002     3     2     2 ""         ""   
    ##  8 3.2.3 2002-05-23     2002     3     2     3 ""         ""   
    ##  9 3.3.0 2002-06-21     2002     3     3     0 ""         ""   
    ## 10 3.4.0 2002-06-26     2002     3     4     0 ""         ""   
    ## # … with 49 more rows

PHP



@@ 344,7 348,7 @@ PHP
php_version_history()
```

    ## # A tibble: 292 x 8
    ## # A tibble: 331 x 8
    ##    vers  rls_date   rls_year major minor patch prerelease build
    ##    <fct> <date>        <dbl> <int> <int> <int> <chr>      <chr>
    ##  1 3.0.0 2000-10-20     2000     3     0     0 ""         ""   


@@ 357,7 361,7 @@ php_version_history()
    ##  8 4.0.6 2001-06-23     2001     4     0     6 ""         ""   
    ##  9 4.1.0 2001-12-10     2001     4     1     0 ""         ""   
    ## 10 4.1.1 2001-12-26     2001     4     1     1 ""         ""   
    ## # ... with 282 more rows
    ## # … with 321 more rows

SQLite



@@ 365,20 369,20 @@ SQLite
sqlite_version_history()
```

    ## # A tibble: 285 x 8
    ## # A tibble: 300 x 8
    ##    vers   rls_date   rls_year major minor patch prerelease build
    ##    <fct>  <date>        <dbl> <int> <int> <int> <chr>      <chr>
    ##  1 1.0    2000-08-17    2000.     1     0     0 ""         ""   
    ##  2 1.0.1  2000-08-18    2000.     1     0     1 ""         ""   
    ##  3 1.0.3  2000-08-22    2000.     1     0     3 ""         ""   
    ##  4 1.0.4  2000-08-28    2000.     1     0     4 ""         ""   
    ##  5 1.0.5  2000-09-14    2000.     1     0     5 ""         ""   
    ##  6 1.0.8  2000-09-30    2000.     1     0     8 ""         ""   
    ##  7 1.0.9  2000-10-09    2000.     1     0     9 ""         ""   
    ##  8 1.0.10 2000-10-11    2000.     1     0    10 ""         ""   
    ##  9 1.0.12 2000-10-17    2000.     1     0    12 ""         ""   
    ## 10 1.0.13 2000-10-19    2000.     1     0    13 ""         ""   
    ## # ... with 275 more rows
    ##  1 1.0    2000-08-17     2000     1     0     0 ""         ""   
    ##  2 1.0.1  2000-08-18     2000     1     0     1 ""         ""   
    ##  3 1.0.3  2000-08-22     2000     1     0     3 ""         ""   
    ##  4 1.0.4  2000-08-28     2000     1     0     4 ""         ""   
    ##  5 1.0.5  2000-09-14     2000     1     0     5 ""         ""   
    ##  6 1.0.8  2000-09-30     2000     1     0     8 ""         ""   
    ##  7 1.0.9  2000-10-09     2000     1     0     9 ""         ""   
    ##  8 1.0.10 2000-10-11     2000     1     0    10 ""         ""   
    ##  9 1.0.12 2000-10-17     2000     1     0    12 ""         ""   
    ## 10 1.0.13 2000-10-19     2000     1     0    13 ""         ""   
    ## # … with 290 more rows

sendmail



@@ 412,17 416,17 @@ Tomcat
tomcat_version_history()
```

    ## # A tibble: 131 x 8
    ## # A tibble: 176 x 8
    ##    vers   rls_date   rls_year major minor patch prerelease build
    ##    <fct>  <date>        <dbl> <int> <int> <int> <chr>      <chr>
    ##  1 5.5.32 2011-02-01    2011.     5     5    32 ""         ""   
    ##  2 5.5.33 2011-02-10    2011.     5     5    33 ""         ""   
    ##  3 5.5.34 2011-09-22    2011.     5     5    34 ""         ""   
    ##  4 5.5.35 2012-01-16    2012.     5     5    35 ""         ""   
    ##  5 5.5.36 2012-10-10    2012.     5     5    36 ""         ""   
    ##  6 6.0.30 2011-01-13    2011.     6     0    30 ""         ""   
    ##  7 6.0.32 2011-02-04    2011.     6     0    32 ""         ""   
    ##  8 6.0.33 2011-08-18    2011.     6     0    33 ""         ""   
    ##  9 6.0.35 2011-12-05    2011.     6     0    35 ""         ""   
    ## 10 6.0.36 2012-10-19    2012.     6     0    36 ""         ""   
    ## # ... with 121 more rows
    ##  1 5.5.32 2011-02-01     2011     5     5    32 ""         ""   
    ##  2 5.5.33 2011-02-10     2011     5     5    33 ""         ""   
    ##  3 5.5.34 2011-09-22     2011     5     5    34 ""         ""   
    ##  4 5.5.35 2012-01-16     2012     5     5    35 ""         ""   
    ##  5 5.5.36 2012-10-10     2012     5     5    36 ""         ""   
    ##  6 6.0.30 2011-01-13     2011     6     0    30 ""         ""   
    ##  7 6.0.32 2011-02-04     2011     6     0    32 ""         ""   
    ##  8 6.0.33 2011-08-18     2011     6     0    33 ""         ""   
    ##  9 6.0.35 2011-12-05     2011     6     0    35 ""         ""   
    ## 10 6.0.36 2012-10-19     2012     6     0    36 ""         ""   
    ## # … with 166 more rows

M README_cache/gfm/__packages => README_cache/gfm/__packages +2 -0
@@ 1,3 1,5 @@
base
vershist
bindrcpp
bit
bit64

A README_cache/gfm/apple_ios_29072f8b4daa2c2bea46e7ff543239a0.RData => README_cache/gfm/apple_ios_29072f8b4daa2c2bea46e7ff543239a0.RData +0 -0
R README_cache/gfm/apple_ios_c87a0ba8187fd58c6318fd9ff44ca2a6.rdb => README_cache/gfm/apple_ios_29072f8b4daa2c2bea46e7ff543239a0.rdb +0 -0
A README_cache/gfm/apple_ios_29072f8b4daa2c2bea46e7ff543239a0.rdx => README_cache/gfm/apple_ios_29072f8b4daa2c2bea46e7ff543239a0.rdx +0 -0
D README_cache/gfm/apple_ios_c87a0ba8187fd58c6318fd9ff44ca2a6.RData => README_cache/gfm/apple_ios_c87a0ba8187fd58c6318fd9ff44ca2a6.RData +0 -0
D README_cache/gfm/apple_ios_c87a0ba8187fd58c6318fd9ff44ca2a6.rdx => README_cache/gfm/apple_ios_c87a0ba8187fd58c6318fd9ff44ca2a6.rdx +0 -0
D README_cache/gfm/chrome_684fdbca374fdb61c560f50083ae4aab.RData => README_cache/gfm/chrome_684fdbca374fdb61c560f50083ae4aab.RData +0 -0
D README_cache/gfm/chrome_684fdbca374fdb61c560f50083ae4aab.rdx => README_cache/gfm/chrome_684fdbca374fdb61c560f50083ae4aab.rdx +0 -0
A README_cache/gfm/chrome_c26d2a6d2cacb252084f3bd7c4849f99.RData => README_cache/gfm/chrome_c26d2a6d2cacb252084f3bd7c4849f99.RData +0 -0
R README_cache/gfm/chrome_684fdbca374fdb61c560f50083ae4aab.rdb => README_cache/gfm/chrome_c26d2a6d2cacb252084f3bd7c4849f99.rdb +0 -0
A README_cache/gfm/chrome_c26d2a6d2cacb252084f3bd7c4849f99.rdx => README_cache/gfm/chrome_c26d2a6d2cacb252084f3bd7c4849f99.rdx +0 -0
A README_cache/gfm/etcd_89088fa0fb9e659c6fbb485ef3f2ac49.RData => README_cache/gfm/etcd_89088fa0fb9e659c6fbb485ef3f2ac49.RData +0 -0
R README_cache/gfm/etcd_d62ecf38e5c2f6bab5a807abae636373.rdb => README_cache/gfm/etcd_89088fa0fb9e659c6fbb485ef3f2ac49.rdb +0 -0
A README_cache/gfm/etcd_89088fa0fb9e659c6fbb485ef3f2ac49.rdx => README_cache/gfm/etcd_89088fa0fb9e659c6fbb485ef3f2ac49.rdx +0 -0
D README_cache/gfm/etcd_d62ecf38e5c2f6bab5a807abae636373.RData => README_cache/gfm/etcd_d62ecf38e5c2f6bab5a807abae636373.RData +0 -0
D README_cache/gfm/etcd_d62ecf38e5c2f6bab5a807abae636373.rdx => README_cache/gfm/etcd_d62ecf38e5c2f6bab5a807abae636373.rdx +0 -0
D README_cache/gfm/isc-bind_bbbd7faa203789aad5251a1ae4a5b97c.RData => README_cache/gfm/isc-bind_bbbd7faa203789aad5251a1ae4a5b97c.RData +0 -0
D README_cache/gfm/isc-bind_bbbd7faa203789aad5251a1ae4a5b97c.rdx => README_cache/gfm/isc-bind_bbbd7faa203789aad5251a1ae4a5b97c.rdx +0 -0
A README_cache/gfm/isc-bind_d1c53132265fff2be0e80dcd192f8348.RData => README_cache/gfm/isc-bind_d1c53132265fff2be0e80dcd192f8348.RData +0 -0
R README_cache/gfm/isc-bind_bbbd7faa203789aad5251a1ae4a5b97c.rdb => README_cache/gfm/isc-bind_d1c53132265fff2be0e80dcd192f8348.rdb +0 -0
A README_cache/gfm/isc-bind_d1c53132265fff2be0e80dcd192f8348.rdx => README_cache/gfm/isc-bind_d1c53132265fff2be0e80dcd192f8348.rdx +0 -0
D README_cache/gfm/lighttpd_58e541a40f4a190c4f820a1324a0cf7e.RData => README_cache/gfm/lighttpd_58e541a40f4a190c4f820a1324a0cf7e.RData +0 -0
D README_cache/gfm/lighttpd_58e541a40f4a190c4f820a1324a0cf7e.rdx => README_cache/gfm/lighttpd_58e541a40f4a190c4f820a1324a0cf7e.rdx +0 -0
A README_cache/gfm/lighttpd_670a08fef5f69078806176edfb66bb59.RData => README_cache/gfm/lighttpd_670a08fef5f69078806176edfb66bb59.RData +0 -0
R README_cache/gfm/lighttpd_58e541a40f4a190c4f820a1324a0cf7e.rdb => README_cache/gfm/lighttpd_670a08fef5f69078806176edfb66bb59.rdb +0 -0
A README_cache/gfm/lighttpd_670a08fef5f69078806176edfb66bb59.rdx => README_cache/gfm/lighttpd_670a08fef5f69078806176edfb66bb59.rdx +0 -0
D README_cache/gfm/memcached_7ee3ec5e28bd4701eb680eba6fa9a05b.RData => README_cache/gfm/memcached_7ee3ec5e28bd4701eb680eba6fa9a05b.RData +0 -0
D README_cache/gfm/memcached_7ee3ec5e28bd4701eb680eba6fa9a05b.rdx => README_cache/gfm/memcached_7ee3ec5e28bd4701eb680eba6fa9a05b.rdx +0 -0
A README_cache/gfm/memcached_cc4055b2d9231759b2795a5bf6a33d69.RData => README_cache/gfm/memcached_cc4055b2d9231759b2795a5bf6a33d69.RData +0 -0
R README_cache/gfm/memcached_7ee3ec5e28bd4701eb680eba6fa9a05b.rdb => README_cache/gfm/memcached_cc4055b2d9231759b2795a5bf6a33d69.rdb +0 -0
A README_cache/gfm/memcached_cc4055b2d9231759b2795a5bf6a33d69.rdx => README_cache/gfm/memcached_cc4055b2d9231759b2795a5bf6a33d69.rdx +0 -0
A README_cache/gfm/mongodb_707e53f07d599fef2a0f9a5dc02f298a.RData => README_cache/gfm/mongodb_707e53f07d599fef2a0f9a5dc02f298a.RData +0 -0
R README_cache/gfm/mongodb_fb06a5aafa251908caeb222e29f1043a.rdb => README_cache/gfm/mongodb_707e53f07d599fef2a0f9a5dc02f298a.rdb +0 -0
A README_cache/gfm/mongodb_707e53f07d599fef2a0f9a5dc02f298a.rdx => README_cache/gfm/mongodb_707e53f07d599fef2a0f9a5dc02f298a.rdx +0 -0
D README_cache/gfm/mongodb_fb06a5aafa251908caeb222e29f1043a.RData => README_cache/gfm/mongodb_fb06a5aafa251908caeb222e29f1043a.RData +0 -0
D README_cache/gfm/mongodb_fb06a5aafa251908caeb222e29f1043a.rdx => README_cache/gfm/mongodb_fb06a5aafa251908caeb222e29f1043a.rdx +0 -0
D README_cache/gfm/mysql_1412a1814e7127876d30c1e602611806.RData => README_cache/gfm/mysql_1412a1814e7127876d30c1e602611806.RData +0 -0
D README_cache/gfm/mysql_1412a1814e7127876d30c1e602611806.rdx => README_cache/gfm/mysql_1412a1814e7127876d30c1e602611806.rdx +0 -0
A README_cache/gfm/mysql_38b4c49f19f40e9f2e6665b14dbd0af2.RData => README_cache/gfm/mysql_38b4c49f19f40e9f2e6665b14dbd0af2.RData +0 -0
R README_cache/gfm/mysql_1412a1814e7127876d30c1e602611806.rdb => README_cache/gfm/mysql_38b4c49f19f40e9f2e6665b14dbd0af2.rdb +0 -0
A README_cache/gfm/mysql_38b4c49f19f40e9f2e6665b14dbd0af2.rdx => README_cache/gfm/mysql_38b4c49f19f40e9f2e6665b14dbd0af2.rdx +0 -0
A README_cache/gfm/nginx_1d90d567e0a4457e8f9aeca7cd881b5c.RData => README_cache/gfm/nginx_1d90d567e0a4457e8f9aeca7cd881b5c.RData +0 -0
R README_cache/gfm/nginx_85a001886458aa7c23e95b712c4c7c13.rdb => README_cache/gfm/nginx_1d90d567e0a4457e8f9aeca7cd881b5c.rdb +0 -0
A README_cache/gfm/nginx_1d90d567e0a4457e8f9aeca7cd881b5c.rdx => README_cache/gfm/nginx_1d90d567e0a4457e8f9aeca7cd881b5c.rdx +0 -0
D README_cache/gfm/nginx_85a001886458aa7c23e95b712c4c7c13.RData => README_cache/gfm/nginx_85a001886458aa7c23e95b712c4c7c13.RData +0 -0
D README_cache/gfm/nginx_85a001886458aa7c23e95b712c4c7c13.rdx => README_cache/gfm/nginx_85a001886458aa7c23e95b712c4c7c13.rdx +0 -0
A README_cache/gfm/openresty_b2f5e7ec3d16c78ae542dd8fd71ea966.RData => README_cache/gfm/openresty_b2f5e7ec3d16c78ae542dd8fd71ea966.RData +0 -0
R README_cache/gfm/openresty_df4309ea5aba89af3860f6bd44b525be.rdb => README_cache/gfm/openresty_b2f5e7ec3d16c78ae542dd8fd71ea966.rdb +0 -0
A README_cache/gfm/openresty_b2f5e7ec3d16c78ae542dd8fd71ea966.rdx => README_cache/gfm/openresty_b2f5e7ec3d16c78ae542dd8fd71ea966.rdx +0 -0
D README_cache/gfm/openresty_df4309ea5aba89af3860f6bd44b525be.RData => README_cache/gfm/openresty_df4309ea5aba89af3860f6bd44b525be.RData +0 -0
D README_cache/gfm/openresty_df4309ea5aba89af3860f6bd44b525be.rdx => README_cache/gfm/openresty_df4309ea5aba89af3860f6bd44b525be.rdx +0 -0
D README_cache/gfm/openssh_9fa675ad5752675b7c64af74834210e0.RData => README_cache/gfm/openssh_9fa675ad5752675b7c64af74834210e0.RData +0 -0
D README_cache/gfm/openssh_9fa675ad5752675b7c64af74834210e0.rdx => README_cache/gfm/openssh_9fa675ad5752675b7c64af74834210e0.rdx +0 -0
A README_cache/gfm/openssh_af5a894117e40c3564057c69db66d0d2.RData => README_cache/gfm/openssh_af5a894117e40c3564057c69db66d0d2.RData +0 -0
R README_cache/gfm/openssh_9fa675ad5752675b7c64af74834210e0.rdb => README_cache/gfm/openssh_af5a894117e40c3564057c69db66d0d2.rdb +0 -0
A README_cache/gfm/openssh_af5a894117e40c3564057c69db66d0d2.rdx => README_cache/gfm/openssh_af5a894117e40c3564057c69db66d0d2.rdx +0 -0
D README_cache/gfm/php_7238bf9d28779ec7d787ab4b553f0094.RData => README_cache/gfm/php_7238bf9d28779ec7d787ab4b553f0094.RData +0 -0
D README_cache/gfm/php_7238bf9d28779ec7d787ab4b553f0094.rdx => README_cache/gfm/php_7238bf9d28779ec7d787ab4b553f0094.rdx +0 -0
A README_cache/gfm/php_f2318efe9feb6e5c6bcfdb0c5ea0a6a4.RData => README_cache/gfm/php_f2318efe9feb6e5c6bcfdb0c5ea0a6a4.RData +0 -0
R README_cache/gfm/php_7238bf9d28779ec7d787ab4b553f0094.rdb => README_cache/gfm/php_f2318efe9feb6e5c6bcfdb0c5ea0a6a4.rdb +0 -0
A README_cache/gfm/php_f2318efe9feb6e5c6bcfdb0c5ea0a6a4.rdx => README_cache/gfm/php_f2318efe9feb6e5c6bcfdb0c5ea0a6a4.rdx +0 -0
D README_cache/gfm/sendmail_e84c95f4b2ac14a0543208fba290b19c.RData => README_cache/gfm/sendmail_e84c95f4b2ac14a0543208fba290b19c.RData +0 -0
D README_cache/gfm/sendmail_e84c95f4b2ac14a0543208fba290b19c.rdx => README_cache/gfm/sendmail_e84c95f4b2ac14a0543208fba290b19c.rdx +0 -0
A README_cache/gfm/sendmail_e98f87f1f9bcb79fc3442e3a389d2016.RData => README_cache/gfm/sendmail_e98f87f1f9bcb79fc3442e3a389d2016.RData +0 -0
R README_cache/gfm/sendmail_e84c95f4b2ac14a0543208fba290b19c.rdb => README_cache/gfm/sendmail_e98f87f1f9bcb79fc3442e3a389d2016.rdb +0 -0
A README_cache/gfm/sendmail_e98f87f1f9bcb79fc3442e3a389d2016.rdx => README_cache/gfm/sendmail_e98f87f1f9bcb79fc3442e3a389d2016.rdx +0 -0
A README_cache/gfm/sqlite_8c1b3f50f34cddce1c43f2fbf388c403.RData => README_cache/gfm/sqlite_8c1b3f50f34cddce1c43f2fbf388c403.RData +0 -0
R README_cache/gfm/sqlite_b7ba318efe28153955358de930d759bf.rdb => README_cache/gfm/sqlite_8c1b3f50f34cddce1c43f2fbf388c403.rdb +0 -0
A README_cache/gfm/sqlite_8c1b3f50f34cddce1c43f2fbf388c403.rdx => README_cache/gfm/sqlite_8c1b3f50f34cddce1c43f2fbf388c403.rdx +0 -0
D README_cache/gfm/sqlite_b7ba318efe28153955358de930d759bf.RData => README_cache/gfm/sqlite_b7ba318efe28153955358de930d759bf.RData +0 -0
D README_cache/gfm/sqlite_b7ba318efe28153955358de930d759bf.rdx => README_cache/gfm/sqlite_b7ba318efe28153955358de930d759bf.rdx +0 -0
D README_cache/gfm/tomcat_75e4b61804ba8a86f5d5cd4140d40324.RData => README_cache/gfm/tomcat_75e4b61804ba8a86f5d5cd4140d40324.RData +0 -0
D README_cache/gfm/tomcat_75e4b61804ba8a86f5d5cd4140d40324.rdx => README_cache/gfm/tomcat_75e4b61804ba8a86f5d5cd4140d40324.rdx +0 -0
A README_cache/gfm/tomcat_ad9c2cfe61e0c55a17f055c07ca24658.RData => README_cache/gfm/tomcat_ad9c2cfe61e0c55a17f055c07ca24658.RData +0 -0
R README_cache/gfm/tomcat_75e4b61804ba8a86f5d5cd4140d40324.rdb => README_cache/gfm/tomcat_ad9c2cfe61e0c55a17f055c07ca24658.rdb +0 -0
A README_cache/gfm/tomcat_ad9c2cfe61e0c55a17f055c07ca24658.rdx => README_cache/gfm/tomcat_ad9c2cfe61e0c55a17f055c07ca24658.rdx +0 -0
M man/apache_httpd_version_history.Rd => man/apache_httpd_version_history.Rd +2 -2
@@ 7,9 7,9 @@
apache_httpd_version_history(refresh = FALSE)
}
\arguments{
\item{refresh}{if \code{TRUE} and there \code{~/.vershist} cache dir exists, will
\item{refresh}{if \code{TRUE} and there \verb{~/.vershist} cache dir exists, will
cause the version history database for apache to be rebuilt. Defaults
to \code{FALSE} and has no effect if \code{~/.vershist} cache dir does not exist.}
to \code{FALSE} and has no effect if \verb{~/.vershist} cache dir does not exist.}
}
\description{
Reads \url{https://github.com/apache/httpd} releases to build a data frame of

M man/etcd_version_history.Rd => man/etcd_version_history.Rd +6 -1
@@ 4,7 4,12 @@
\alias{etcd_version_history}
\title{Retrieve etcd Version Release History}
\usage{
etcd_version_history()
etcd_version_history(refresh = FALSE)
}
\arguments{
\item{refresh}{if \code{TRUE} and there \verb{~/.vershist} cache dir exists, will
cause the version history database for apache to be rebuilt. Defaults
to \code{FALSE} and has no effect if \verb{~/.vershist} cache dir does not exist.}
}
\description{
Reads \url{https://github.com/etcd-io/etcd/releases} to build a data frame of

M man/exim_version_history.Rd => man/exim_version_history.Rd +2 -2
@@ 7,9 7,9 @@
exim_version_history(refresh = FALSE)
}
\arguments{
\item{refresh}{if \code{TRUE} and there \code{~/.vershist} cache dir exists, will
\item{refresh}{if \code{TRUE} and there \verb{~/.vershist} cache dir exists, will
cause the version history database for apache to be rebuilt. Defaults
to \code{FALSE} and has no effect if \code{~/.vershist} cache dir does not exist.}
to \code{FALSE} and has no effect if \verb{~/.vershist} cache dir does not exist.}
}
\description{
Reads \url{https://marc.info/?l=exim-announce&r=1&w=2}

M man/google_chrome_version_history.Rd => man/google_chrome_version_history.Rd +2 -2
@@ 7,9 7,9 @@
google_chrome_version_history(refresh = FALSE)
}
\arguments{
\item{refresh}{if \code{TRUE} and there \code{~/.vershist} cache dir exists, will
\item{refresh}{if \code{TRUE} and there \verb{~/.vershist} cache dir exists, will
cause the version history database for apache to be rebuilt. Defaults
to \code{FALSE} and has no effect if \code{~/.vershist} cache dir does not exist.}
to \code{FALSE} and has no effect if \verb{~/.vershist} cache dir does not exist.}
}
\description{
Reads \url{https://en.wikipedia.org/wiki/Google_Chrome_version_history"} to build a data

M man/mysql_version_history.Rd => man/mysql_version_history.Rd +8 -3
@@ 4,7 4,12 @@
\alias{mysql_version_history}
\title{Retrieve MySQL Version Release History}
\usage{
mysql_version_history()
mysql_version_history(refresh = FALSE)
}
\arguments{
\item{refresh}{if \code{TRUE} and there \verb{~/.vershist} cache dir exists, will
cause the version history database for apache to be rebuilt. Defaults
to \code{FALSE} and has no effect if \verb{~/.vershist} cache dir does not exist.}
}
\description{
Scrapes \url{https://downloads.mysql.com/archives/community/} to build a data frame of


@@ 14,12 19,12 @@ order from lowest version to latest version and the \code{vers} column is an
ordered factor.
}
\details{
The selector for versioning is "\code{Generic Linux (Architecture Independent)}" and
The selector for versioning is "\verb{Generic Linux (Architecture Independent)}" and
the first found date is used for the \code{rls_date}. File an issue or PR if
alternate behaviour is required.
}
\note{
This is an \emph{expensive} function as it does quite a bit of scraping.
Please consider using some sort of cache for the results unless
Please consider using the cache option for the results unless
absolutely necessary.
}

M man/nginx_version_history.Rd => man/nginx_version_history.Rd +2 -2
@@ 7,9 7,9 @@
nginx_version_history(refresh = FALSE)
}
\arguments{
\item{refresh}{if \code{TRUE} and there \code{~/.vershist} cache dir exists, will
\item{refresh}{if \code{TRUE} and there \verb{~/.vershist} cache dir exists, will
cause the version history database for apache to be rebuilt. Defaults
to \code{FALSE} and has no effect if \code{~/.vershist} cache dir does not exist.}
to \code{FALSE} and has no effect if \verb{~/.vershist} cache dir does not exist.}
}
\description{
Reads \url{https://raw.githubusercontent.com/nginx/nginx/master/docs/xml/nginx/changes.xml}