diff --git a/.Rbuildignore b/.Rbuildignore index 3bbe65a..360a4c3 100644 --- a/.Rbuildignore +++ b/.Rbuildignore @@ -2,3 +2,10 @@ ^\.Rproj\.user$ ^LICENSE\.md$ [.]code-workspace$ +^codecov\.yml$ +^\.github$ +^CODE_OF_CONDUCT\.md$ +^_pkgdown\.yml$ +^docs$ +^pkgdown$ +Dockerfile diff --git a/.github/.gitignore b/.github/.gitignore new file mode 100644 index 0000000..2d19fc7 --- /dev/null +++ b/.github/.gitignore @@ -0,0 +1 @@ +*.html diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md new file mode 100644 index 0000000..f5a8d1a --- /dev/null +++ b/.github/CONTRIBUTING.md @@ -0,0 +1,47 @@ +# Contributing to shinycaas + +This outlines how to propose a change to shinycaas. +For more detailed info about contributing to this, and other tidyverse packages, please see the +[**development contributing guide**](https://rstd.io/tidy-contrib). + +## Fixing typos + +You can fix typos, spelling mistakes, or grammatical errors in the documentation directly using the GitHub web interface, as long as the changes are made in the _source_ file. +This generally means you'll need to edit [roxygen2 comments](https://roxygen2.r-lib.org/articles/roxygen2.html) in an `.R`, not a `.Rd` file. +You can find the `.R` file that generates the `.Rd` by reading the comment in the first line. + +## Bigger changes + +If you want to make a bigger change, it's a good idea to first file an issue and make sure someone from the team agrees that it’s needed. +If you’ve found a bug, please file an issue that illustrates the bug with a minimal +[reprex](https://www.tidyverse.org/help/#reprex) (this will also help you write a unit test, if needed). + +### Pull request process + +* Fork the package and clone onto your computer. If you haven't done this before, we recommend using `usethis::create_from_github("subugoe/shinycaas", fork = TRUE)`. + +* Install all development dependences with `devtools::install_dev_deps()`, and then make sure the package passes R CMD check by running `devtools::check()`. + If R CMD check doesn't pass cleanly, it's a good idea to ask for help before continuing. +* Create a Git branch for your pull request (PR). We recommend using `usethis::pr_init("brief-description-of-change")`. + +* Make your changes, commit to git, and then create a PR by running `usethis::pr_push()`, and following the prompts in your browser. + The title of your PR should briefly describe the change. + The body of your PR should contain `Fixes #issue-number`. + +* For user-facing changes, add a bullet to the top of `NEWS.md` (i.e. just below the first header). Follow the style described in . + +### Code style + +* New code should follow the tidyverse [style guide](https://style.tidyverse.org). + You can use the [styler](https://CRAN.R-project.org/package=styler) package to apply these styles, but please don't restyle code that has nothing to do with your PR. + +* We use [roxygen2](https://cran.r-project.org/package=roxygen2), with [Markdown syntax](https://cran.r-project.org/web/packages/roxygen2/vignettes/rd-formatting.html), for documentation. + +* We use [testthat](https://cran.r-project.org/package=testthat) for unit tests. + Contributions with test cases included are easier to accept. + +## Code of Conduct + +Please note that the shinycaas project is released with a +[Contributor Code of Conduct](CODE_OF_CONDUCT.md). By contributing to this +project you agree to abide by its terms. diff --git a/.github/library/README.md b/.github/library/README.md new file mode 100644 index 0000000..aa9a932 --- /dev/null +++ b/.github/library/README.md @@ -0,0 +1 @@ +See `r help('muggle::lib_cache_path')` diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml new file mode 100644 index 0000000..c7567b4 --- /dev/null +++ b/.github/workflows/main.yaml @@ -0,0 +1,52 @@ +on: push + +jobs: + CICD: + runs-on: ubuntu-20.04 + defaults: + run: + shell: Rscript {0} + container: + # this needs to be the same as in Dockerfile + image: subugoe/muggle-onbuild:f60004c31979947dab53fbf9cfbb0e7f1c4bea55 + steps: + - uses: actions/checkout@v2 + - name: Cache R Packages + uses: actions/cache@v2 + with: + # only cache the user library + path: ".github/library" + key: ${{ job.container.image }}-${{ hashFiles('DESCRIPTION') }} + - name: Install System Dependencies + run: muggle::install_sysdeps() + - name: Install R Dependencies + env: + # see builder.Dockerfile for explanation, this resets after this step + R_LIBS_SITE: $R_LIBS_APP_GH + run: remotes::install_deps(dependencies = TRUE) + - name: Check + run: muggle::rcmdcheck2() + - name: Test Coverage + run: covr::codecov() + - name: Build Package Website + run: pkgdown::build_site(override = list(new_process = FALSE)) + - uses: docker/build-push-action@v1 + name: Build Dev Image + with: + repository: ${{ github.repository }}/shinycaas-dev + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + registry: docker.pkg.github.com + # this will set "latest" if master as per https://github.com/docker/build-push-action + tag_with_ref: true + # we're relying on long shas only to keep things easy + tag_with_sha: false + tags: ${{ github.sha }} + add_git_labels: true + push: ${{ github.event_name != 'pull_request' }} + - name: Deploy to GitHub Pages + if: github.ref == 'refs/heads/master' + uses: maxheld83/ghpages@github-token + env: + BUILD_DIR: docs + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.gitignore b/.gitignore index 807ea25..c2f15ec 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ .Rproj.user .Rhistory .RData +docs diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 0000000..b36903f --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1,128 @@ +# Contributor Covenant Code of Conduct + +## Our Pledge + +We as members, contributors, and leaders pledge to make participation in our +community a harassment-free experience for everyone, regardless of age, body +size, visible or invisible disability, ethnicity, sex characteristics, gender +identity and expression, level of experience, education, socio-economic status, +nationality, personal appearance, race, religion, or sexual identity and +orientation. + +We pledge to act and interact in ways that contribute to an open, welcoming, +diverse, inclusive, and healthy community. + +## Our Standards + +Examples of behavior that contributes to a positive environment for our +community include: + +* Demonstrating empathy and kindness toward other people +* Being respectful of differing opinions, viewpoints, and experiences +* Giving and gracefully accepting constructive feedback +* Accepting responsibility and apologizing to those affected by our mistakes, +and learning from the experience +* Focusing on what is best not just for us as individuals, but for the overall +community + +Examples of unacceptable behavior include: + +* The use of sexualized language or imagery, and sexual attention or +advances of any kind +* Trolling, insulting or derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or email +address, without their explicit permission +* Other conduct which could reasonably be considered inappropriate in a +professional setting + +## Enforcement Responsibilities + +Community leaders are responsible for clarifying and enforcing our standards +of acceptable behavior and will take appropriate and fair corrective action in +response to any behavior that they deem inappropriate, threatening, offensive, +or harmful. + +Community leaders have the right and responsibility to remove, edit, or reject +comments, commits, code, wiki edits, issues, and other contributions that are +not aligned to this Code of Conduct, and will communicate reasons for moderation +decisions when appropriate. + +## Scope + +This Code of Conduct applies within all community spaces, and also applies +when an individual is officially representing the community in public spaces. +Examples of representing our community include using an official e-mail +address, posting via an official social media account, or acting as an appointed +representative at an online or offline event. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported to the community leaders responsible for enforcement at [INSERT CONTACT +METHOD]. All complaints will be reviewed and investigated promptly and fairly. + +All community leaders are obligated to respect the privacy and security of the +reporter of any incident. + +## Enforcement Guidelines + +Community leaders will follow these Community Impact Guidelines in determining +the consequences for any action they deem in violation of this Code of Conduct: + +### 1. Correction + +**Community Impact**: Use of inappropriate language or other behavior deemed +unprofessional or unwelcome in the community. + +**Consequence**: A private, written warning from community leaders, providing +clarity around the nature of the violation and an explanation of why the +behavior was inappropriate. A public apology may be requested. + +### 2. Warning + +**Community Impact**: A violation through a single incident or series of +actions. + +**Consequence**: A warning with consequences for continued behavior. No +interaction with the people involved, including unsolicited interaction with +those enforcing the Code of Conduct, for a specified period of time. This +includes avoiding interactions in community spaces as well as external channels +like social media. Violating these terms may lead to a temporary or permanent +ban. + +### 3. Temporary Ban + +**Community Impact**: A serious violation of community standards, including +sustained inappropriate behavior. + +**Consequence**: A temporary ban from any sort of interaction or public +communication with the community for a specified period of time. No public or +private interaction with the people involved, including unsolicited interaction +with those enforcing the Code of Conduct, is allowed during this period. +Violating these terms may lead to a permanent ban. + +### 4. Permanent Ban + +**Community Impact**: Demonstrating a pattern of violation of community +standards, including sustained inappropriate behavior, harassment of an +individual, or aggression toward or disparagement of classes of individuals. + +**Consequence**: A permanent ban from any sort of public interaction within the +community. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], +version 2.0, +available at https://www.contributor-covenant.org/version/2/0/ +code_of_conduct.html. + +Community Impact Guidelines were inspired by [Mozilla's code of conduct +enforcement ladder](https://github.com/mozilla/diversity). + +[homepage]: https://www.contributor-covenant.org + +For answers to common questions about this code of conduct, see the FAQ at +https://www.contributor-covenant.org/faq. Translations are available at https:// +www.contributor-covenant.org/translations. diff --git a/DESCRIPTION b/DESCRIPTION index 6e71f4c..ed226f9 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,18 +1,22 @@ Package: shinycaas -Title: What the Package Does (One Line, Title Case) +Title: Deploy shiny applications to container as a service (CaaS) Version: 0.0.0.9000 -Authors@R: +Authors@R: c(person(given = "Maximilian", family = "Held", role = c("aut", "cre"), email = "info@maxheld.de", comment = c(ORCID = "0000-0002-4703-5388")), - person(family = c(subugoe = "Göttingen State and University Library"))) -Description: What the package does (one paragraph). + person(given = c(subugoe = "Göttingen State and University Library"), + role = c("cph", "fnd")) + ) +Description: Deploying shiny apps to container as a service (CaaS) products on public cloud vendors. License: MIT + file LICENSE Encoding: UTF-8 LazyData: true Roxygen: list(markdown = TRUE) RoxygenNote: 7.1.1 -URL: https://github.com/subugoe/shinycaas +URL: https://subugoe.github.io/shinycaas, https://github.com/subugoe/shinycaas BugReports: https://github.com/subugoe/shinycaas/issues +Suggests: + testthat diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..5ea4d89 --- /dev/null +++ b/Dockerfile @@ -0,0 +1 @@ +FROM subugoe/muggle-onbuild:f60004c31979947dab53fbf9cfbb0e7f1c4bea55 diff --git a/R/shinycaas-package.R b/R/shinycaas-package.R new file mode 100644 index 0000000..b30bbda --- /dev/null +++ b/R/shinycaas-package.R @@ -0,0 +1,8 @@ +#' @keywords internal +"_PACKAGE" + +# The following block is used by usethis to automatically manage +# roxygen namespace tags. Modify with care! +## usethis namespace: start +## usethis namespace: end +NULL diff --git a/README.md b/README.md new file mode 100644 index 0000000..019024f --- /dev/null +++ b/README.md @@ -0,0 +1,28 @@ + +# shinycaas + + +[![Main](https://github.com/subugoe/shinycaas/workflows/.github/workflows/main.yaml/badge.svg)](https://github.com/subugoe/shinycaas/actions) +[![Codecov test coverage](https://codecov.io/gh/subugoe/shinycaas/branch/master/graph/badge.svg)](https://codecov.io/gh/subugoe/shinycaas?branch=master) +[![R build status](https://github.com/subugoe/shinycaas/workflows/R-CMD-check/badge.svg)](https://github.com/subugoe/shinycaas/actions) +[![Lifecycle: experimental](https://img.shields.io/badge/lifecycle-experimental-orange.svg)](https://www.tidyverse.org/lifecycle/#experimental) + + +The goal of shinycaas is to ... + +## Installation + +You can install the released version of shinycaas from [CRAN](https://CRAN.R-project.org) with: + +``` r +install.packages("shinycaas") +``` + +## Example + +This is a basic example which shows you how to solve a common problem: + +``` r +library(shinycaas) +## basic example code +``` diff --git a/codecov.yml b/codecov.yml new file mode 100644 index 0000000..04c5585 --- /dev/null +++ b/codecov.yml @@ -0,0 +1,14 @@ +comment: false + +coverage: + status: + project: + default: + target: auto + threshold: 1% + informational: true + patch: + default: + target: auto + threshold: 1% + informational: true diff --git a/man/shinycaas-package.Rd b/man/shinycaas-package.Rd new file mode 100644 index 0000000..7890510 --- /dev/null +++ b/man/shinycaas-package.Rd @@ -0,0 +1,29 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/shinycaas-package.R +\docType{package} +\name{shinycaas-package} +\alias{shinycaas} +\alias{shinycaas-package} +\title{shinycaas: Deploy shiny applications to container as a service (CaaS)} +\description{ +Deploying shiny apps to container as a service (CaaS) products on public cloud vendors. +} +\seealso{ +Useful links: +\itemize{ + \item \url{https://subugoe.github.io/shinycaas} + \item \url{https://github.com/subugoe/shinycaas} + \item Report bugs at \url{https://github.com/subugoe/shinycaas/issues} +} + +} +\author{ +\strong{Maintainer}: Maximilian Held \email{info@maxheld.de} (\href{https://orcid.org/0000-0002-4703-5388}{ORCID}) + +Other contributors: +\itemize{ + \item Göttingen State and University Library [copyright holder, funder] +} + +} +\keyword{internal} diff --git a/pkgdown/_pkgdown.yml b/pkgdown/_pkgdown.yml new file mode 100644 index 0000000..cf9160e --- /dev/null +++ b/pkgdown/_pkgdown.yml @@ -0,0 +1,7 @@ +authors: + Maximilian Held: + href: https://www.maxheld.de + Göttingen State and University Library: + href: https://www.sub.uni-goettingen.de/ +template: + package: metar diff --git a/shinycaas.code-workspace b/shinycaas.code-workspace new file mode 100644 index 0000000..5709732 --- /dev/null +++ b/shinycaas.code-workspace @@ -0,0 +1,8 @@ +{ + "folders": [ + { + "path": "." + } + ], + "settings": {} +} diff --git a/tests/testthat.R b/tests/testthat.R new file mode 100644 index 0000000..5685fa7 --- /dev/null +++ b/tests/testthat.R @@ -0,0 +1,4 @@ +library(testthat) +library(shinycaas) + +test_check("shinycaas") diff --git a/tests/testthat/test-foo.R b/tests/testthat/test-foo.R new file mode 100644 index 0000000..8849056 --- /dev/null +++ b/tests/testthat/test-foo.R @@ -0,0 +1,3 @@ +test_that("multiplication works", { + expect_equal(2 * 2, 4) +})