df0ddc950f84ab229f10745ef2268facd0f4143e
[pharext/replicator.pharext.org] / bin / gpg-sign
1 #!/usr/bin/env php
2 <?php
3 $log = __DIR__."/../build/gpg-sign-error.log";
4
5 ini_set("error_reporting", E_ALL);
6 ini_set("display_errors", true);
7 ini_set("log_errors", true);
8 ini_set("error_log", $log);
9
10 if ($argc != 3) {
11 fprintf(STDERR, "Usage: %s <pkg name> <phar path>\n\n", basename($argv[0]));
12 exit(1);
13 }
14
15 list(, $pkg, $src) = $argv;
16 $basename = basename($src);
17 $dir = __DIR__."/../public/sigs/$pkg";
18
19 if (!is_dir($dir) && !mkdir($dir, 0755, true)) {
20 exit(2);
21 }
22
23 if (($pwd = getenv("REPLICATOR_PWD"))) {
24 if (!($stream = fopen("php://temp", "r+"))) {
25 exit(4);
26 }
27 fwrite($stream, $pwd);
28 rewind($stream);
29 } else {
30 $stream = STDIN;
31 }
32
33 $proc = proc_open("gpg --batch --no-tty -a --detach-sign --passphrase-fd 3 --output $dir/$basename.asc $src", [
34 ["pipe", "r"],
35 ["pipe", "w"],
36 ["file", $log, "a"],
37 $stream
38 ], $fds);
39
40 if (!is_resource($proc)) {
41 exit(3);
42 }
43
44 fclose($fds[0]);
45
46 fpassthru($fds[1]);
47 fclose($fds[1]);
48
49 exit(proc_close($proc));