Add subscribe/unsubscribe to blergtool
[blerg.git] / tools / blergtool.c
index b0e7368..35af915 100644 (file)
@@ -7,7 +7,18 @@
 #include "tags.h"
 
 void help() {
-       printf("Usage: blergtool <store|fetch> <storename> [record]\n");
+       printf(
+         "Usage: blergtool <command> [args]\n"
+         "\n"
+         "Where command is one of:\n"
+         "\n"
+         "  blergtool store <storename>\n"
+         "  blergtool fetch <storename> [record]\n"
+         "  blergtool mute <storename>\n"
+         "  blergtool unmute <storename>\n"
+         "  blergtool subscribe <storename> <target>\n"
+         "  blergtool unsubscribe <storename> <target>\n"
+       );
 }
 
 int main(int argc, char *argv[]) {
@@ -50,10 +61,11 @@ int main(int argc, char *argv[]) {
 
                char *data;
                int size;
-               blerg_fetch(f, record, &data, &size);
+               if (blerg_fetch(f, record, &data, &size)) {
+                       fwrite(data, 1, size, stdout);
+                       free(data);
+               }
                blerg_close(f);
-               fwrite(data, 1, size, stdout);
-               free(data);
        } else if (strncmp(argv[1], "list", 4) == 0) {
                char *tag = argv[2];
                int count = 50;
@@ -67,6 +79,46 @@ int main(int argc, char *argv[]) {
                        }
                        free(list);
                }
+       } else if (strncmp(argv[1], "mute", 4) == 0) {
+               char *store = argv[2];
+               struct blerg *f = blerg_open(store);
+               if (!f) {
+                       printf("Blerg open failed\n");
+                       exit(1);
+               }
+
+               blerg_set_mute(f, 1);
+               blerg_close(f);
+       } else if (strncmp(argv[1], "unmute", 6) == 0) {
+               char *store = argv[2];
+               struct blerg *f = blerg_open(store);
+               if (!f) {
+                       printf("Blerg open failed\n");
+                       exit(1);
+               }
+
+               blerg_set_mute(f, 0);
+               blerg_close(f);
+       } else if (strncmp(argv[1], "subscribe", 9) == 0) {
+               if (argc < 4) {
+                       printf("Not enough arguments for subscribe\n");
+                       help();
+                       exit(1);
+               }
+               if (!subscription_add(argv[2], argv[3])) {
+                       printf("Could not subscribe %s to %s\n", argv[2], argv[3]);
+                       exit(1);
+               }
+       } else if (strncmp(argv[1], "unsubscribe", 11) == 0) {
+               if (argc < 4) {
+                       printf("Not enough arguments for unsubscribe\n");
+                       help();
+                       exit(1);
+               }
+               if (!subscription_remove(argv[2], argv[3])) {
+                       printf("Could not subscribe %s to %s\n", argv[2], argv[3]);
+                       exit(1);
+               }
        } else {
                help();
        }