History

experiment

Sigrid Haflínudóttir committed 6 years ago

Commit 2ddbb0bNo parent (first commit)9 files · +264 −0Browse files

Unified · Split

9 files
  1. devs.c +8 −0
  2. devs.h +1 −0
  3. mkfile +23 −0
  4. p_graphics.c +20 −0
  5. p_music.c +41 −0
  6. p_network.c +20 −0
  7. pkg.c +103 −0
  8. pkg.h +48 −0
  9. pkg.man +0 −0
devs.c+8−0
@@ -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+};
devs.h+1−0
@@ -0,0 +1 @@
1+extern Dev ftrvxmtrx;
mkfile+23−0
@@ -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
p_graphics.c+20−0
@@ -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+};
p_music.c+41−0
@@ -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+};
p_network.c+20−0
@@ -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+};
pkg.c+103−0
@@ -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+}
pkg.h+48−0
@@ -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;
pkg.man+0−0

Empty file added.

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t