Set up, or migrate to a muggle project. Wraps the following steps, if the respective files or configuration do not already exist:

  1. Package Structure: Sets up scaffolding via usethis::create_package() and asks the user to complete the DESCRIPTION.

  2. Editors/IDEs: Sets up vscode and RStudio as editors.

  3. Git/GitHub: Initialises a git repo via usethis::use_git(), creates a repo on GitHub and sets it as an origin remote.

  4. README: Adds a README.md via usethis::use_readme_md() and asks the user to complete it.

  5. Quality Control: Sets up the project for unit tests via usethis::use_testthat() and test coverage via usethis::use_coverage().

  6. Documentation: Sets up markdown support in roxygen via usethis::use_roxygen_md(), package documentation via usethis::use_package_doc() and adds a pkgdown website via usethis::use_pkgdown().

  7. Workflow Automation: sets up caching at lib_cache_path and tba.

  8. Compute Environment: tba.

create_muggle_package(
  path,
  fields = list(),
  license = usethis::use_mit_license,
  license_holder = character(),
  organisation = NULL,
  private = FALSE
)

Arguments

path

A path. If it exists, it is used. If it does not exist, it is created, provided that the parent path exists.

fields

A named list of fields to add to DESCRIPTION, potentially overriding default values. See use_description() for how you can set personalized defaults using package options.

license

one of the license functions in usethis

license_holder

giving the license holder, used as cph and fnd role in DESCRIPTION

organisation

If supplied, the repo will be created under this organisation, instead of the login associated with the GitHub token discovered for this host. The user's role and the token's scopes must be such that you have permission to create repositories in this organisation.

private

If TRUE, creates a private repository.

Warning

  • Must not be run inside a package, but at the root of all packages

  • If run on an existing project, the project should be under version control, with a clean working tree. The user should check all changes.