bigbang bigbang logo

Create custom R metapackages from local packages.

R-CMD-check CRAN status License: GPL v3 Lifecycle: experimental docs: español

bigbang builds tidyverse-style metapackages from local package archives. Every metapackage ends in -versetidyverse, teamverse, yours. This package creates them: one function call, and a new -verse exists.

✨ At a glance

The generated package has two separate jobs:

🚀 Installation

Once on CRAN, the stable version will install with:

install.packages("bigbang")

The development version is on GitHub:

# install.packages("pak")
pak::pak("sebollin/bigbang")

# or
remotes::install_github("sebollin/bigbang")

And true to the package’s offline spirit, a local source checkout installs without any network at all:

install.packages("path/to/bigbang", repos = NULL, type = "source")

⚡ Quick start

Suppose archives/ contains:

archives/
├── datahelpers_1.2.0.tar.gz
└── reports_0.9.1.tar.gz

Create the metapackage in a new directory:

library(bigbang)

result <- create_metapackage(
  name = "teamverse",
  packages = c("datahelpers_1.2.0", "reports_0.9.1"),
  pkg_dir = "archives",
  dest_dir = tempdir(),
  document = TRUE
)
result

Build and install teamverse by the usual R package workflow. Component installation remains explicit:

library(teamverse)                 # attaches what is already installed
teamverse_install(cran_deps = "skip")

cran_deps = "skip" is the default and never accesses the network. Use "error" to fail immediately when a non-local dependency is missing, or "install" with an explicitly configured repos value to allow repository installation.

See vignette("getting-started", package = "bigbang") for a reproducible toy project created entirely under tempdir().

🧰 Main API

The former Spanish function names remain as deprecated transition aliases.

🗜️ ZIP files and portability

ZIP archives are classified by content. A ZIP containing Meta/package.rds is a Windows binary and is installed with type = "win.binary" on Windows only. Other ZIPs containing DESCRIPTION are unpacked into an owned temporary directory and installed as source packages.

All generated text is written explicitly as UTF-8. CI is prepared for R release on Windows and macOS and for release, devel, and oldrel on Ubuntu. The declared minimum is R 3.6.0, following the minimum of the imported brio release.

🌎 English and Spanish

English is the source language for code, help, and runtime messages. A complete Spanish runtime catalog is included through R’s gettext mechanism:

Sys.setLanguage("es")  # R >= 4.2

On earlier R versions, set LANGUAGE=es before starting R. A complete Spanish guide is available in vignette("bigbang-es", package = "bigbang") and as README.es.md. Rd help remains English because R has no stable native mechanism for translated help; a separate bigbang.es module can be considered if rhelpi18n becomes production-ready and reaches CRAN.

🧭 Choosing the right tool

Need Best fit
One metapackage over a fixed set of local archives, with explicit offline installation bigbang
A conventional local repository with indexes, multiple packages, and repository semantics miniCRAN or drat
A small metapackage around packages already available from repositories pkgverse

bigbang deliberately does not replace a repository manager. If a team needs version retention, repository indexes, or dependency distribution to many projects, miniCRAN/drat is the stronger abstraction. bigbang is useful when the distributed unit is a curated metapackage plus a directory of archives.

🛡️ Data-safety history and old artifacts

An unreleased predecessor generated cleanup code that could remove directories named after components from the user’s working directory. The startup installer and all cwd-relative cleanup paths were removed before this CRAN submission and are covered by destructive regression tests that run only in disposable trees.

Do not load or document an old generated artifact before classifying it:

scan <- scan_bigbang_artifact("path/to/artifact", dry_run = TRUE)
scan

If scan$vulnerable is true, quarantine the artifact and generate a new version in a new, empty destination. Never regenerate an unclassified source tree in place. The full remediation procedure is documented in the Spanish guide and in RELEASE.md.

🙏 Acknowledgments

bigbang started from a suggestion by Richard Detomasi, who proposed building a metapackage tool and pointed to pegeler/metapackage as an antecedent. The design and implementation—including the graph-based dependency resolution—are by Sebastián Lucas. The hex logo was created with hexSticker.

🤝 Contributing

Contributions are welcome: bug reports and feature ideas through issues, and pull requests following CONTRIBUTING.md (spelling, lint, and test expectations are documented there). The package aims to stay small and focused — see Choosing the right tool above for what deliberately stays out of scope.

📖 Citation

citation("bigbang")
@Manual{bigbang2026,
  title  = {bigbang: Build 'Tidyverse'-Style Meta-Packages from Local Package Files},
  author = {Sebastian Lucas},
  note   = {R package version 0.1.0},
  year   = {2026},
  url    = {https://github.com/sebollin/bigbang},
}

🔬 Development status

The complete test suite includes unit, portability, i18n, scanner, installation, and data-loss regression tests. R CMD check --as-cran runs with the PDF manual enabled for both bigbang and a generated metapackage, on every push, across Ubuntu (release, devel, oldrel), Windows, and macOS. win-builder and rhub::rhub_check() results are reviewed before each CRAN submission.