#' Set up the repo for the project
#' @param git_service git platform to use
#' @param login login for the git platform
#' @param protocol protocol to use
#' @param ci_activation how to activate CI stuff
#' @param project project name (repo name)
#' @param title project title (repo description)
#' @param project_type what kind of project it is
#' @param coverage coverage service
#' @noRd
setup_repo <- function(git_service, login,
private, protocol,
ci_activation,
name, title,
project_type,
coverage = NULL) {
if (tolower(git_service) != "github") {
stop(glue::glue(
"Only GitHub is supported at the moment, not {git_service}."
),
call. = FALSE
)
}
setup_gh_repo(
username = login, private = private,
protocol = protocol,
name = name, title = title
)
# coverage
if(!is.null(coverage)){
add_coverage_badge(login, name, coverage)
}
if (!is.null(ci_activation)) {
if (ci_activation != "travis") {
stop(glue::glue(
"Only travis is supported at the moment, not {ci_activation}."
),
call. = FALSE
)
}
if (ci_activation == "travis") {
usethis::use_template("dot-travis.yml",
save_as = ".travis.yml",
package = "travis")
usethis::use_build_ignore(".travis.yml")
travis::travis_enable(repo = travis::github_repo(path = usethis::proj_get()))
# copy custom tic depending on proj
usethis::use_template(file.path("tic", project_type,
"tic.R"),
save_as = "tic.R",
package = "starters",
data = list(coverage_service = coverage))
usethis::use_build_ignore("tic.R")
if (project_type != "basic"){
travis::use_travis_deploy(path = usethis::proj_get())
}
# in all cases
travis::travis_set_pat(repo = travis::github_repo(path = usethis::proj_get()))
add_travis_badge(login, name)
repo <- git2r::init(usethis::proj_get())
git2r::add(repo, path = ".travis.yml")
}
}
}
#' Add Travis badge to the README
#' @param login login (assumed to be the same for the git
#' platform and Travis)
#' @param name project name (repo name)
#' @noRd
add_travis_badge <- function(login, name) {
# from https://github.com/r-lib/usethis/blob/02fc4b20f022b0b98afcb323ef770fd78c00ae5a/R/ci.R#L39
url <- glue::glue("https://travis-ci.org/{login}/{name}")
img <- glue::glue("{url}.svg?branch=master")
usethis::use_badge("Travis build status", url, img)
}
#' Add coverage badge to the README
#' @param login login (assumed to be the same as for the git
#' platform)
#' @param name project name (repo name)
#' @param coverage coverage service
#' @noRd
add_coverage_badge <- function(login, name, coverage) {
github_repo_spec <- paste(login, name, sep ="/")
if(coverage == "codecov"){
# from https://github.com/r-lib/usethis/blob/85bf30af12dc5a99faf20115a0396add72aa6d12/R/coverage.R#L47
url <- glue::glue("https://codecov.io/gh/{github_repo_spec}?branch=master")
img <- glue::glue(
"https://codecov.io/gh/{github_repo_spec}/branch/master/graph/badge.svg"
)
usethis::use_badge("Codecov test coverage", url, img)
}else{
if(coverage == "coveralls"){
# from https://github.com/r-lib/usethis/blob/85bf30af12dc5a99faf20115a0396add72aa6d12/R/coverage.R#L56
url <- glue::glue("https://coveralls.io/r/{github_repo_spec}?branch=master")
img <- glue::glue(
"https://coveralls.io/repos/github/{github_repo_spec}/badge.svg"
)
usethis::use_badge("Coveralls test coverage", url, img)
}
}
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.