]> git.donarmstrong.com Git - cran2deb.git/blob - tags/pre-dual/exec/depend
reprepro version before the massacre
[cran2deb.git] / tags / pre-dual / exec / depend
1 #!/usr/bin/env r
2 ## DOC: cran2deb depend
3 ## DOC:     add dependency aliases, system requirements and forced dependencies
4 ## DOC:
5
6 suppressPackageStartupMessages(library(cran2deb))
7 suppressPackageStartupMessages(library(digest))
8
9 exec_cmd <- function(argc, argv) {
10     usage <- function()
11         message(paste('usage: alias <alias> <debian_pkg>'
12                      ,'       alias_run <alias> <debian_pkg>'
13                      ,'       alias_build <alias> <debian_pkg>'
14                      ,'       sysreq <alias> <sysreq sql pattern>'
15                      ,'       force <alias> <r_pkg>'
16                      ,'       ls [aliases|force|sysreq]'
17                      ,'       quit'
18                      ,sep='\n'))
19
20     if (argc < 1) {
21         return()
22     }
23     cmd = argv[1]
24
25     if (cmd == 'alias') {
26         if (argc < 3) {
27             usage()
28             return()
29         }
30         alias = argv[2]
31         pkg = argv[3]
32         db_add_depends(alias, pkg, build=T)
33         pkg = gsub('-dev$','',pkg)
34         db_add_depends(alias, pkg, build=F)
35     } else if (cmd == 'alias_run' || cmd == 'alias_build') {
36         if (argc < 3) {
37             usage()
38             return()
39         }
40         db_add_depends(argv[2], argv[3], cmd == 'alias_build')
41     } else if (cmd == 'sysreq') {
42         if (argc < 3) {
43             usage()
44             return()
45         }
46         sysreq = paste(argv[3:argc],collapse=' ')
47         db_add_sysreq_override(sysreq,argv[2])
48     } else if (cmd == 'force') {
49         if (argc < 3) {
50             usage()
51             return()
52         }
53         db_add_forced_depends(argv[3],argv[2])
54     } else if (cmd == 'ls') {
55         if (argc < 2 || argv[2] == 'aliases') {
56             aliases <- db_depends()
57             for (i in rownames(aliases)) {
58                 type = 'alias_run'
59                 if (as.logical(aliases[i,'build'])) {
60                     type = 'alias_build'
61                 }
62                 cat(paste(type,aliases[i,'alias'],aliases[i,'debian_pkg'],'\n'))
63             }
64         } else if (argv[2] == 'sysreq') {
65             sysreqs <- db_sysreq_overrides()
66             for (i in rownames(sysreqs)) {
67                 cat(paste('sysreq',sysreqs[i,'depend_alias'],sysreqs[i,'r_pattern'],'\n'))
68             }
69         } else if (argv[2] == 'force') {
70             forced <- db_forced_depends()
71             for (i in rownames(forced)) {
72                 cat(paste('force',forced[i,'depend_alias'],forced[i,'r_name'],'\n'))
73             }
74         } else {
75             usage()
76             return()
77         }
78     } else if (cmd == 'quit') {
79         exit()
80     } else if (cmd == '#') {
81     } else {
82         usage()
83         return()
84     }
85 }
86
87 argc <- length(argv)
88 if (argc > 1) {
89     exec_cmd(argc-1,argv[c(2:argc)])
90 } else {
91     while(T) {
92         argv <- strsplit(readline('depend> '),'[[:space:]]+')[[1]]
93         exec_cmd(length(argv),argv)
94     }
95 }