Unified · Split
| @@ -0,0 +1,8 @@ | |||
| 1 | #include <u.h> | ||
| 2 | #include "pkg.h" | ||
| 3 | |||
| 4 | Dev ftrvxmtrx = { | ||
| 5 | .nick = "sigrid", | ||
| 6 | .name = "Sigrid Solveig Haflínudóttir", | ||
| 7 | .email = "ftrvxmtrx@gmail.com", | ||
| 8 | }; | ||
| @@ -0,0 +1 @@ | |||
| 1 | extern Dev ftrvxmtrx; | ||
| @@ -0,0 +1,23 @@ | |||
| 1 | </$objtype/mkfile | ||
| 2 | |||
| 3 | TARG=pkg | ||
| 4 | BIN=/$objtype/bin | ||
| 5 | MAN=/sys/man/1 | ||
| 6 | |||
| 7 | HFILES=\ | ||
| 8 | |||
| 9 | PKGS=\ | ||
| 10 | p_graphics.$O\ | ||
| 11 | p_music.$O\ | ||
| 12 | p_network.$O\ | ||
| 13 | |||
| 14 | OFILES=\ | ||
| 15 | devs.$O\ | ||
| 16 | pkg.$O\ | ||
| 17 | $PKGS\ | ||
| 18 | |||
| 19 | default:V: all | ||
| 20 | |||
| 21 | </sys/src/cmd/mkone | ||
| 22 | |||
| 23 | install:V: $MAN/$TARG | ||
| @@ -0,0 +1,20 @@ | |||
| 1 | #include <u.h> | ||
| 2 | #include "pkg.h" | ||
| 3 | #include "devs.h" | ||
| 4 | |||
| 5 | Pkg fontsel = { | ||
| 6 | .name = "fontsel", | ||
| 7 | .ver = "20200420", | ||
| 8 | .src = { | ||
| 9 | .url = "github://ftrvxmtrx/fontsel", | ||
| 10 | .rev = "1648e4b", | ||
| 11 | .hash = "base58 here", | ||
| 12 | }, | ||
| 13 | .meta = { | ||
| 14 | .descr = "Font selector", | ||
| 15 | .web = "http://ftrv.se/_/9", | ||
| 16 | .license = "public domain", | ||
| 17 | .devs = {&ftrvxmtrx}, | ||
| 18 | .cat = {Cgraphics}, | ||
| 19 | }, | ||
| 20 | }; | ||
| @@ -0,0 +1,41 @@ | |||
| 1 | #include <u.h> | ||
| 2 | #include "pkg.h" | ||
| 3 | #include "devs.h" | ||
| 4 | |||
| 5 | Pkg libtags = { | ||
| 6 | .name = "libtags", | ||
| 7 | .ver = "20191219", | ||
| 8 | .src = { | ||
| 9 | .url = "github://ftrvxmtrx/libtags", | ||
| 10 | .rev = "63b1d8e", | ||
| 11 | .hash = "base58 here", | ||
| 12 | }, | ||
| 13 | .meta = { | ||
| 14 | .descr = "A cross-platform library for reading tags", | ||
| 15 | .web = "http://ftrv.se/_/9", | ||
| 16 | .license = "MIT", | ||
| 17 | .devs = {&ftrvxmtrx}, | ||
| 18 | .flags = Flib, | ||
| 19 | .cat = {Clib, Caudio}, | ||
| 20 | }, | ||
| 21 | }; | ||
| 22 | |||
| 23 | Pkg zuke = { | ||
| 24 | .name = "zuke", | ||
| 25 | .ver = "20200328", | ||
| 26 | .src = { | ||
| 27 | .url = "github://ftrvxmtrx/zuke", | ||
| 28 | .rev = "334efc1", | ||
| 29 | .hash = "base58 here", | ||
| 30 | }, | ||
| 31 | .inputs = { | ||
| 32 | .build = {&libtags}, | ||
| 33 | }, | ||
| 34 | .meta = { | ||
| 35 | .descr = "Music player", | ||
| 36 | .web = "http://ftrv.se/_/9", | ||
| 37 | .license = "public domain", | ||
| 38 | .devs = {&ftrvxmtrx}, | ||
| 39 | .cat = {Caudio}, | ||
| 40 | }, | ||
| 41 | }; | ||
| @@ -0,0 +1,20 @@ | |||
| 1 | #include <u.h> | ||
| 2 | #include "pkg.h" | ||
| 3 | #include "devs.h" | ||
| 4 | |||
| 5 | Pkg xmpp = { | ||
| 6 | .name = "xmpp", | ||
| 7 | .ver = "20200316", | ||
| 8 | .src = { | ||
| 9 | .url = "github://ftrvxmtrx/xmpp", | ||
| 10 | .rev = "cb2c30b", | ||
| 11 | .hash = "base58 here", | ||
| 12 | }, | ||
| 13 | .meta = { | ||
| 14 | .descr = "XMPP client", | ||
| 15 | .web = "http://ftrv.se/_/9", | ||
| 16 | .license = "public domain", | ||
| 17 | .devs = {&ftrvxmtrx}, | ||
| 18 | .cat = {Cnetwork}, | ||
| 19 | }, | ||
| 20 | }; | ||
| @@ -0,0 +1,103 @@ | |||
| 1 | #include <u.h> | ||
| 2 | #include <libc.h> | ||
| 3 | #include <thread.h> | ||
| 4 | #include <libsec.h> | ||
| 5 | #include "pkg.h" | ||
| 6 | |||
| 7 | #define MAX(a,b) ((a)>=(b)?(a):(b)) | ||
| 8 | |||
| 9 | static int maxname; | ||
| 10 | |||
| 11 | Pkg *pkgs[] = { | ||
| 12 | &fontsel, | ||
| 13 | &libtags, | ||
| 14 | &xmpp, | ||
| 15 | &zuke, | ||
| 16 | }; | ||
| 17 | |||
| 18 | static void | ||
| 19 | usage(void) | ||
| 20 | { | ||
| 21 | print("usage: %s ...\n", argv0); | ||
| 22 | threadexitsall("usage"); | ||
| 23 | } | ||
| 24 | |||
| 25 | static int | ||
| 26 | pkgcmp(void *a_, void *b_) | ||
| 27 | { | ||
| 28 | Pkg **a, **b; | ||
| 29 | |||
| 30 | a = a_; | ||
| 31 | b = b_; | ||
| 32 | maxname = MAX(maxname, MAX(strlen((*a)->name), strlen((*b)->name))); | ||
| 33 | return strcmp((*a)->name, (*b)->name); | ||
| 34 | } | ||
| 35 | |||
| 36 | static void | ||
| 37 | pkginfo(Pkg *p, int v) | ||
| 38 | { | ||
| 39 | int i; | ||
| 40 | |||
| 41 | if(p == nil) | ||
| 42 | return; | ||
| 43 | |||
| 44 | if(v){ | ||
| 45 | print("name %s\n", p->name); | ||
| 46 | print("version %s\n", p->ver); | ||
| 47 | print("description %s\n", p->meta.descr); | ||
| 48 | print("web %s\n", p->meta.web); | ||
| 49 | print("license %s\n", p->meta.license); | ||
| 50 | if(p->meta.devs[0] != nil){ | ||
| 51 | print("maintainers "); | ||
| 52 | for(i = 0; i < nelem(p->meta.devs) && p->meta.devs[i] != nil; i++) | ||
| 53 | print(" %s", p->meta.devs[i]->nick); | ||
| 54 | print("\n"); | ||
| 55 | } | ||
| 56 | if(p->inputs.build[0] != nil || p->inputs.runtime[0] != nil){ | ||
| 57 | print("dependencies "); | ||
| 58 | for(i = 0; i < nelem(p->inputs.build) && p->inputs.build[i] != nil; i++) | ||
| 59 | print(" %s", p->inputs.build[i]->name); | ||
| 60 | for(i = 0; i < nelem(p->inputs.build) && p->inputs.runtime[i] != nil; i++) | ||
| 61 | print(" %s", p->inputs.runtime[i]->name); | ||
| 62 | print("\n"); | ||
| 63 | } | ||
| 64 | }else{ | ||
| 65 | print("%-*s\t%s\n", maxname, p->name, p->meta.descr); | ||
| 66 | } | ||
| 67 | } | ||
| 68 | |||
| 69 | static Pkg * | ||
| 70 | pkgfind(char *name) | ||
| 71 | { | ||
| 72 | int i; | ||
| 73 | |||
| 74 | for(i = 0; i < nelem(pkgs); i++) | ||
| 75 | if(strcmp(pkgs[i]->name, name) == 0) | ||
| 76 | return pkgs[i]; | ||
| 77 | |||
| 78 | return nil; | ||
| 79 | } | ||
| 80 | |||
| 81 | void | ||
| 82 | threadmain(int argc, char **argv) | ||
| 83 | { | ||
| 84 | int i; | ||
| 85 | |||
| 86 | ARGBEGIN{ | ||
| 87 | }ARGEND | ||
| 88 | |||
| 89 | qsort(pkgs, nelem(pkgs), sizeof(*pkgs), pkgcmp); | ||
| 90 | |||
| 91 | if(argc < 1){ | ||
| 92 | for(i = 0; i < nelem(pkgs); i++) | ||
| 93 | pkginfo(pkgs[i], 0); | ||
| 94 | goto done; | ||
| 95 | }else if(argc == 2 && strcmp(argv[0], "info") == 0){ | ||
| 96 | pkginfo(pkgfind(argv[1]), 1); | ||
| 97 | }else{ | ||
| 98 | usage(); | ||
| 99 | } | ||
| 100 | |||
| 101 | done: | ||
| 102 | threadexitsall(nil); | ||
| 103 | } | ||
| @@ -0,0 +1,48 @@ | |||
| 1 | enum { | ||
| 2 | Flib = 1<<0, | ||
| 3 | |||
| 4 | Clib = 1, | ||
| 5 | Caudio, | ||
| 6 | Cgraphics, | ||
| 7 | Cnetwork, | ||
| 8 | Cnum, | ||
| 9 | }; | ||
| 10 | |||
| 11 | typedef struct Dev Dev; | ||
| 12 | typedef struct Meta Meta; | ||
| 13 | typedef struct Pkg Pkg; | ||
| 14 | |||
| 15 | struct Dev { | ||
| 16 | char *nick; | ||
| 17 | char *name; | ||
| 18 | char *email; | ||
| 19 | }; | ||
| 20 | |||
| 21 | struct Meta { | ||
| 22 | char *descr; | ||
| 23 | char *web; | ||
| 24 | char *license; | ||
| 25 | Dev *devs[4]; | ||
| 26 | int flags; | ||
| 27 | int cat[Cnum]; | ||
| 28 | }; | ||
| 29 | |||
| 30 | struct Pkg { | ||
| 31 | char *name; | ||
| 32 | char *ver; | ||
| 33 | struct { | ||
| 34 | char *url; | ||
| 35 | char *rev; | ||
| 36 | char *hash; | ||
| 37 | }src; | ||
| 38 | struct { | ||
| 39 | Pkg *build[4]; | ||
| 40 | Pkg *runtime[4]; | ||
| 41 | }inputs; | ||
| 42 | Meta meta; | ||
| 43 | }; | ||
| 44 | |||
| 45 | extern Pkg fontsel; | ||
| 46 | extern Pkg libtags; | ||
| 47 | extern Pkg xmpp; | ||
| 48 | extern Pkg zuke; | ||
Empty file added.