]> git.donarmstrong.com Git - cran2deb.git/blob - pkg/trunk/exec/license
db+license+sysreq: frontend for sysreq and license updates. backend for sysreq.
[cran2deb.git] / pkg / trunk / exec / license
1 #!/usr/bin/env r
2
3 suppressPackageStartupMessages(library(cran2deb))
4 suppressPackageStartupMessages(library(digest))
5
6 exec_cmd <- function(argc, argv) {
7     usage <- function()
8         message('usage: add <license> [deny]|file <license> <path>|ls|quit|help')
9
10     cmd = argv[1]
11     if (argc < 1) {
12         exit()
13     }
14
15     if (cmd == 'add') {
16         if (argc != 2 && (argc != 3 || argv[3] != 'deny')) {
17             usage()
18             return()
19         }
20         accept = (argc != 3)
21         db.add.license.override(argv[2],accept)
22     } else if (cmd == 'file') {
23         if (argc != 3) {
24             usage()
25             return()
26         }
27         license = argv[2]
28         path = argv[3]
29         if (is.null(db.license.override.name(license))) {
30             message(paste('license',license,'is not known'))
31             return()
32         }
33         if (file.exists(path)) {
34             file_sha1 = digest(readChar(path,file.info(path)$size)
35                               ,algo='sha1', serialize=FALSE)
36         } else if (length(grep('^[0-9a-f]{40}$',path))) {
37             file_sha1 = path
38         } else {
39             stop(paste(path,'does not exist and does not look like an SHA1 hash'))
40         }
41         db.add.license.file(license,file_sha1)
42     } else if (cmd == 'ls') {
43         for (x in db.license.overrides()) print(x)
44     } else if (cmd == 'help') {
45         usage()
46         return()
47     } else if (cmd == 'quit') {
48         exit()
49     }
50 }
51
52 argc <- length(argv)
53 if (argc > 1) {
54     exec_cmd(argc-1,argv[c(2:argc)])
55 } else {
56     while(T) {
57         argv <- strsplit(readline('license> '),'[[:space:]]+')[[1]]
58         exec_cmd(length(argv),argv)
59     }
60 }