#!/usr/bin/env r ## DOC: cran2deb build [-d] [-D extra_dep1,extra_dep2,...] package1 package2 ... ## DOC: builds a particular package. ## DOC: -d leave the staging directory around for debugging. ## DOC: suppressPackageStartupMessages(library(cran2deb)) if (exists('argv')) { # check for littler argc <- length(argv) extra_deps = list() extra_deps$deb = c() extra_deps$r = c() do_cleanup = T opts = c('-D','-R','-d') # first argument is the root --- this is dealt with elsewhere. for (i in 2:argc) { if (!(argv[i] %in% opts)) { if (argc >= i) { argv <- argv[i:argc] } else { argv <- list() } argc = argc - i + 1 break } if (i == argc) { err('missing argument') } if (argv[i] == '-D') { extra_deps$deb = c(extra_deps$deb,strsplit(chomp(argv[i+1]),',')[[1]]) } if (argv[i] == '-R') { extra_deps$r = c(extra_deps$r,strsplit(chomp(argv[i+1]),',')[[1]]) extra_deps$deb = c(extra_deps$deb,lapply(extra_deps$r,pkgname_as_debian)) } if (argv[i] == '-d') { #debug do_cleanup = F } } if (argc == 0) { err('usage: cran2deb build [-d] [-D extra_dep1,extra_dep2,...] package package ...') } build_order <- r_dependency_closure(c(extra_deps$r,argv)) notice('build order',paste(build_order,collapse=', ')) for (pkg in build_order) { build(pkg,extra_deps,force=pkg %in% argv, do_cleanup) } }