## ----setup, include = FALSE---------------------------------------------------
knitr::opts_chunk$set(
  collapse  = TRUE,
  comment   = "#>",
  eval      = TRUE
)
library(reproducr)

## ----audit--------------------------------------------------------------------
# Create a small example script
script <- tempfile(fileext = ".R")
writeLines(c(
  "# Example analysis",
  "set.seed(237)",
  "x   <- dplyr::filter(mtcars, cyl == 4)",
  "y   <- dplyr::summarise(x, mean_mpg = mean(mpg), n = dplyr::n())",
  "fit <- lm(mpg ~ wt, data = x)",
  "z   <- stats::rnorm(nrow(y))",
  "out <- base::sort(unique(x$gear))"
), script)

report <- audit_script(script, renv = FALSE, verbose = FALSE)
print(report)

## ----calls--------------------------------------------------------------------
report$calls

## ----risk---------------------------------------------------------------------
risks <- risk_score(report)
print(risks)

## ----risk-filtered------------------------------------------------------------
# High-severity only
high_risks <- risk_score(report, min_risk = "high")

# Just the seed check
seed_issues <- risk_score(report, methods = "seed_check")

## ----risk-df------------------------------------------------------------------
# As a plain data frame for downstream use
as.data.frame(risks)

## ----certify------------------------------------------------------------------
cert_file <- tempfile()

model <- lm(mpg ~ wt, data = mtcars)

certify(
  outputs = list(
    coefs     = coef(model),
    r_squared = summary(model)$r.squared,
    n_obs     = nrow(mtcars)
  ),
  tag = "baseline-v1",
  script = script,
  file = cert_file
)

## ----list-certs---------------------------------------------------------------
list_certs(file = cert_file)

## ----drift-ok-----------------------------------------------------------------
result <- check_drift(
  outputs = list(
    coefs     = coef(model),
    r_squared = summary(model)$r.squared,
    n_obs     = nrow(mtcars)
  ),
  against = "baseline-v1",
  file = cert_file
)

## ----drift-detect-------------------------------------------------------------
# Different model — shows drift
model2 <- lm(mpg ~ hp, data = mtcars)

check_drift(
  outputs = list(coefs = coef(model2)),
  against = "baseline-v1",
  file    = cert_file
)

## ----report-minimal, results='hide'-------------------------------------------
repro_report(report, risks, format = "text", style = "minimal")

## ----report-academic----------------------------------------------------------
cat(repro_report(report, risks, format = "text", style = "academic"))

## ----badge--------------------------------------------------------------------
badge <- repro_badge(report, risks, output = "markdown")
cat(badge)

## ----cleanup, include = FALSE-------------------------------------------------
unlink(script)
unlink(paste0(cert_file, ".rds"))

