]> git.donarmstrong.com Git - cran2deb.git/blobdiff - tags/pre-dual/exec/build
reprepro version before the massacre
[cran2deb.git] / tags / pre-dual / exec / build
diff --git a/tags/pre-dual/exec/build b/tags/pre-dual/exec/build
new file mode 100755 (executable)
index 0000000..6feaf5d
--- /dev/null
@@ -0,0 +1,48 @@
+#!/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)
+    }
+}