+#!/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)
+ }
+}