## run_all.R — regenerate all LinkedIn deck PNGs in one command
##
## Usage (from any directory):
##   Rscript path/to/analysis/linkedin/run_all.R
##
## Output: $LAHMANS_DBDIR/charts/  (default ~/Documents/Data/baseball/charts/)
##   Standalone charts: talent_allocation.png, dead_money.png,
##                      trade_scores.png, mva_quadrant.png,
##                      payroll_vs_achievement.png, stage1_getting_there.png,
##                      stage2_going_deep.png, synthesis_scorecard.png,
##                      rookie_dev_chart.png
##   LinkedIn slides:   linkedin_01.png ... linkedin_10.png

.linkedin_dir <- tryCatch(
  dirname(normalizePath(sub("--file=", "", grep("--file=", commandArgs(FALSE), value = TRUE)[1]))),
  error = function(e) getwd()
)

## Each script must run in its own Rscript subprocess: scripts use
## on.exit(dbDisconnect(con, shutdown = TRUE)) which shuts down the DuckDB
## engine for the whole process -- running sequentially in one process would
## invalidate connections for later scripts.
.run <- function(script) {
  path <- file.path(.linkedin_dir, script)
  message("\n── ", script, " ", strrep("-", max(0, 50 - nchar(script))))
  ret <- system2("Rscript", args = path)
  if (ret != 0L) stop("Script failed with exit code ", ret, ": ", script)
  invisible(ret)
}

## Step 1: Act charts (produce PNGs consumed by playoff_efficiency.R)
.run("talent_allocation.R")
.run("dead_money.R")
.run("trade_scores.R")
.run("gen_mva_full.R")   # also sources mva_quadrant.R internally

## Step 2: Main deck (standalone charts + all 10 LinkedIn slides)
.run("playoff_efficiency.R")

message("\n✓ All slides saved to ",
        file.path(path.expand(Sys.getenv("LAHMANS_DBDIR", "~/Documents/Data/baseball")), "charts"))
