Mercurial > hg > toybox
annotate scripts/mkstatus.py @ 1525:95cb37adb024 draft
Factor out printf-style escape parsing logic from echo.c.
author | Rob Landley <rob@landley.net> |
---|---|
date | Sat, 18 Oct 2014 17:14:12 -0500 |
parents | bd745ae2b115 |
children | 382d5b9ff2d5 |
rev | line source |
---|---|
635
cffb9b7f1c60
Add status.html and script to calculate it from roadmap info.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
1 #!/usr/bin/python |
cffb9b7f1c60
Add status.html and script to calculate it from roadmap info.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
2 |
805
0db28494d17d
Accumulated web page changes. (Release announcement for previous release, roadmap updates, etc.)
Rob Landley <rob@landley.net>
parents:
757
diff
changeset
|
3 # Create status.html |
0db28494d17d
Accumulated web page changes. (Release announcement for previous release, roadmap updates, etc.)
Rob Landley <rob@landley.net>
parents:
757
diff
changeset
|
4 |
635
cffb9b7f1c60
Add status.html and script to calculate it from roadmap info.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
5 import subprocess,sys |
cffb9b7f1c60
Add status.html and script to calculate it from roadmap info.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
6 |
757
4094f14c47a2
Update mkstatus.py, roadmap.html, and status.html.
Rob Landley <rob@landley.net>
parents:
731
diff
changeset
|
7 def readit(args): |
4094f14c47a2
Update mkstatus.py, roadmap.html, and status.html.
Rob Landley <rob@landley.net>
parents:
731
diff
changeset
|
8 ret={} |
4094f14c47a2
Update mkstatus.py, roadmap.html, and status.html.
Rob Landley <rob@landley.net>
parents:
731
diff
changeset
|
9 arr=[] |
4094f14c47a2
Update mkstatus.py, roadmap.html, and status.html.
Rob Landley <rob@landley.net>
parents:
731
diff
changeset
|
10 blob=subprocess.Popen(args, stdout=subprocess.PIPE, shell=False) |
4094f14c47a2
Update mkstatus.py, roadmap.html, and status.html.
Rob Landley <rob@landley.net>
parents:
731
diff
changeset
|
11 for i in blob.stdout.read().split("\n"): |
4094f14c47a2
Update mkstatus.py, roadmap.html, and status.html.
Rob Landley <rob@landley.net>
parents:
731
diff
changeset
|
12 if not i: continue |
4094f14c47a2
Update mkstatus.py, roadmap.html, and status.html.
Rob Landley <rob@landley.net>
parents:
731
diff
changeset
|
13 i=i.split() |
4094f14c47a2
Update mkstatus.py, roadmap.html, and status.html.
Rob Landley <rob@landley.net>
parents:
731
diff
changeset
|
14 ret[i[0]]=i[1:] |
4094f14c47a2
Update mkstatus.py, roadmap.html, and status.html.
Rob Landley <rob@landley.net>
parents:
731
diff
changeset
|
15 arr.extend(i) |
4094f14c47a2
Update mkstatus.py, roadmap.html, and status.html.
Rob Landley <rob@landley.net>
parents:
731
diff
changeset
|
16 return ret,arr |
635
cffb9b7f1c60
Add status.html and script to calculate it from roadmap info.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
17 |
1035
6b4529a50b72
Update status and roadmap pages, and status page generator script.
Rob Landley <rob@landley.net>
parents:
805
diff
changeset
|
18 # Run sed on roadmap and status pages to get command lists, and run toybox too |
6b4529a50b72
Update status and roadmap pages, and status page generator script.
Rob Landley <rob@landley.net>
parents:
805
diff
changeset
|
19 # This gives us a dictionary of types, each with a list of commands |
757
4094f14c47a2
Update mkstatus.py, roadmap.html, and status.html.
Rob Landley <rob@landley.net>
parents:
731
diff
changeset
|
20 |
1035
6b4529a50b72
Update status and roadmap pages, and status page generator script.
Rob Landley <rob@landley.net>
parents:
805
diff
changeset
|
21 stuff,blah=readit(["sed","-n", 's/<span id=\\([a-z_]*\\)>/\\1 /;t good;d;:good;h;:loop;n;s@</span>@@;t out;H;b loop;:out;g;s/\\n/ /g;p', "www/roadmap.html", "www/status.html"]) |
757
4094f14c47a2
Update mkstatus.py, roadmap.html, and status.html.
Rob Landley <rob@landley.net>
parents:
731
diff
changeset
|
22 blah,toystuff=readit(["./toybox"]) |
639
3c591e7a367d
More web page roadmap/status update stuff.
Rob Landley <rob@landley.net>
parents:
635
diff
changeset
|
23 |
1035
6b4529a50b72
Update status and roadmap pages, and status page generator script.
Rob Landley <rob@landley.net>
parents:
805
diff
changeset
|
24 # Create reverse mappings: command is in which |
6b4529a50b72
Update status and roadmap pages, and status page generator script.
Rob Landley <rob@landley.net>
parents:
805
diff
changeset
|
25 |
635
cffb9b7f1c60
Add status.html and script to calculate it from roadmap info.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
26 reverse={} |
cffb9b7f1c60
Add status.html and script to calculate it from roadmap info.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
27 for i in stuff: |
cffb9b7f1c60
Add status.html and script to calculate it from roadmap info.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
28 for j in stuff[i]: |
757
4094f14c47a2
Update mkstatus.py, roadmap.html, and status.html.
Rob Landley <rob@landley.net>
parents:
731
diff
changeset
|
29 try: reverse[j].append(i) |
4094f14c47a2
Update mkstatus.py, roadmap.html, and status.html.
Rob Landley <rob@landley.net>
parents:
731
diff
changeset
|
30 except: reverse[j]=[i] |
4094f14c47a2
Update mkstatus.py, roadmap.html, and status.html.
Rob Landley <rob@landley.net>
parents:
731
diff
changeset
|
31 |
4094f14c47a2
Update mkstatus.py, roadmap.html, and status.html.
Rob Landley <rob@landley.net>
parents:
731
diff
changeset
|
32 for i in toystuff: |
4094f14c47a2
Update mkstatus.py, roadmap.html, and status.html.
Rob Landley <rob@landley.net>
parents:
731
diff
changeset
|
33 try: |
4094f14c47a2
Update mkstatus.py, roadmap.html, and status.html.
Rob Landley <rob@landley.net>
parents:
731
diff
changeset
|
34 if ("ready" in reverse[i]) or ("pending" in reverse[i]): continue |
4094f14c47a2
Update mkstatus.py, roadmap.html, and status.html.
Rob Landley <rob@landley.net>
parents:
731
diff
changeset
|
35 except: pass |
4094f14c47a2
Update mkstatus.py, roadmap.html, and status.html.
Rob Landley <rob@landley.net>
parents:
731
diff
changeset
|
36 print i |
635
cffb9b7f1c60
Add status.html and script to calculate it from roadmap info.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
37 |
cffb9b7f1c60
Add status.html and script to calculate it from roadmap info.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
38 pending=[] |
cffb9b7f1c60
Add status.html and script to calculate it from roadmap info.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
39 done=[] |
cffb9b7f1c60
Add status.html and script to calculate it from roadmap info.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
40 |
805
0db28494d17d
Accumulated web page changes. (Release announcement for previous release, roadmap updates, etc.)
Rob Landley <rob@landley.net>
parents:
757
diff
changeset
|
41 print "all commands=%s" % len(reverse) |
0db28494d17d
Accumulated web page changes. (Release announcement for previous release, roadmap updates, etc.)
Rob Landley <rob@landley.net>
parents:
757
diff
changeset
|
42 |
635
cffb9b7f1c60
Add status.html and script to calculate it from roadmap info.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
43 outfile=open("www/status.gen", "w") |
731
76e7bf56b2e6
Generate status page with new pubs.opengroup.org urls.
Rob Landley <rob@landley.net>
parents:
678
diff
changeset
|
44 outfile.write("<a name=all><h2><a href=#all>All commands</a></h2><blockquote><p>\n") |
635
cffb9b7f1c60
Add status.html and script to calculate it from roadmap info.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
45 |
1035
6b4529a50b72
Update status and roadmap pages, and status page generator script.
Rob Landley <rob@landley.net>
parents:
805
diff
changeset
|
46 conv = [("posix", '<a href="http://pubs.opengroup.org/onlinepubs/9699919799/utilities/%s.html">%%s</a>', "[%s]"), |
6b4529a50b72
Update status and roadmap pages, and status page generator script.
Rob Landley <rob@landley.net>
parents:
805
diff
changeset
|
47 ("lsb", '<a href="http://refspecs.linuxfoundation.org/LSB_4.1.0/LSB-Core-generic/LSB-Core-generic/%s.html">%%s</a>', '<%s>'), |
6b4529a50b72
Update status and roadmap pages, and status page generator script.
Rob Landley <rob@landley.net>
parents:
805
diff
changeset
|
48 ("development", '<a href="http://linux.die.net/man/1/%s">%%s</a>', '(%s)'), |
6b4529a50b72
Update status and roadmap pages, and status page generator script.
Rob Landley <rob@landley.net>
parents:
805
diff
changeset
|
49 ("toolbox", "", '{%s}'), ("klibc_cmd", "", '=%s='), |
6b4529a50b72
Update status and roadmap pages, and status page generator script.
Rob Landley <rob@landley.net>
parents:
805
diff
changeset
|
50 ("sash_cmd", "", '#%s#'), ("sbase_cmd", "", '@%s@'), |
6b4529a50b72
Update status and roadmap pages, and status page generator script.
Rob Landley <rob@landley.net>
parents:
805
diff
changeset
|
51 ("beastiebox_cmd", "", '*%s*'), |
6b4529a50b72
Update status and roadmap pages, and status page generator script.
Rob Landley <rob@landley.net>
parents:
805
diff
changeset
|
52 ("request", '<a href="http://linux.die.net/man/1/%s">%%s</a>', '+%s+')] |
6b4529a50b72
Update status and roadmap pages, and status page generator script.
Rob Landley <rob@landley.net>
parents:
805
diff
changeset
|
53 |
6b4529a50b72
Update status and roadmap pages, and status page generator script.
Rob Landley <rob@landley.net>
parents:
805
diff
changeset
|
54 |
6b4529a50b72
Update status and roadmap pages, and status page generator script.
Rob Landley <rob@landley.net>
parents:
805
diff
changeset
|
55 def categorize(reverse, i, skippy=""): |
6b4529a50b72
Update status and roadmap pages, and status page generator script.
Rob Landley <rob@landley.net>
parents:
805
diff
changeset
|
56 linky = "%s" |
6b4529a50b72
Update status and roadmap pages, and status page generator script.
Rob Landley <rob@landley.net>
parents:
805
diff
changeset
|
57 out = i |
6b4529a50b72
Update status and roadmap pages, and status page generator script.
Rob Landley <rob@landley.net>
parents:
805
diff
changeset
|
58 |
6b4529a50b72
Update status and roadmap pages, and status page generator script.
Rob Landley <rob@landley.net>
parents:
805
diff
changeset
|
59 if skippy: types = filter(lambda a: a != skippy, reverse[i]) |
6b4529a50b72
Update status and roadmap pages, and status page generator script.
Rob Landley <rob@landley.net>
parents:
805
diff
changeset
|
60 else: types = reverse[i] |
6b4529a50b72
Update status and roadmap pages, and status page generator script.
Rob Landley <rob@landley.net>
parents:
805
diff
changeset
|
61 |
6b4529a50b72
Update status and roadmap pages, and status page generator script.
Rob Landley <rob@landley.net>
parents:
805
diff
changeset
|
62 for j in conv: |
6b4529a50b72
Update status and roadmap pages, and status page generator script.
Rob Landley <rob@landley.net>
parents:
805
diff
changeset
|
63 if j[0] in types: |
6b4529a50b72
Update status and roadmap pages, and status page generator script.
Rob Landley <rob@landley.net>
parents:
805
diff
changeset
|
64 if j[1]: linky = j[1] % i |
6b4529a50b72
Update status and roadmap pages, and status page generator script.
Rob Landley <rob@landley.net>
parents:
805
diff
changeset
|
65 out = j[2] % out |
6b4529a50b72
Update status and roadmap pages, and status page generator script.
Rob Landley <rob@landley.net>
parents:
805
diff
changeset
|
66 if not skippy: break |
6b4529a50b72
Update status and roadmap pages, and status page generator script.
Rob Landley <rob@landley.net>
parents:
805
diff
changeset
|
67 if (not skippy) and out == i: |
6b4529a50b72
Update status and roadmap pages, and status page generator script.
Rob Landley <rob@landley.net>
parents:
805
diff
changeset
|
68 sys.stderr.write("unknown %s %s\n" % (i,reverse[i])) |
6b4529a50b72
Update status and roadmap pages, and status page generator script.
Rob Landley <rob@landley.net>
parents:
805
diff
changeset
|
69 |
6b4529a50b72
Update status and roadmap pages, and status page generator script.
Rob Landley <rob@landley.net>
parents:
805
diff
changeset
|
70 return linky % out |
6b4529a50b72
Update status and roadmap pages, and status page generator script.
Rob Landley <rob@landley.net>
parents:
805
diff
changeset
|
71 |
635
cffb9b7f1c60
Add status.html and script to calculate it from roadmap info.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
72 blah=list(reverse) |
cffb9b7f1c60
Add status.html and script to calculate it from roadmap info.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
73 blah.sort() |
cffb9b7f1c60
Add status.html and script to calculate it from roadmap info.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
74 for i in blah: |
1035
6b4529a50b72
Update status and roadmap pages, and status page generator script.
Rob Landley <rob@landley.net>
parents:
805
diff
changeset
|
75 out=categorize(reverse, i) |
635
cffb9b7f1c60
Add status.html and script to calculate it from roadmap info.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
76 if "ready" in reverse[i] or "pending" in reverse[i]: |
639
3c591e7a367d
More web page roadmap/status update stuff.
Rob Landley <rob@landley.net>
parents:
635
diff
changeset
|
77 done.append(out) |
635
cffb9b7f1c60
Add status.html and script to calculate it from roadmap info.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
78 out='<strike>%s</strike>' % out |
cffb9b7f1c60
Add status.html and script to calculate it from roadmap info.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
79 else: pending.append(out) |
cffb9b7f1c60
Add status.html and script to calculate it from roadmap info.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
80 |
cffb9b7f1c60
Add status.html and script to calculate it from roadmap info.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
81 outfile.write(out+"\n") |
cffb9b7f1c60
Add status.html and script to calculate it from roadmap info.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
82 |
805
0db28494d17d
Accumulated web page changes. (Release announcement for previous release, roadmap updates, etc.)
Rob Landley <rob@landley.net>
parents:
757
diff
changeset
|
83 print "done=%s" % len(done) |
635
cffb9b7f1c60
Add status.html and script to calculate it from roadmap info.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
84 outfile.write("</p></blockquote>\n") |
cffb9b7f1c60
Add status.html and script to calculate it from roadmap info.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
85 |
731
76e7bf56b2e6
Generate status page with new pubs.opengroup.org urls.
Rob Landley <rob@landley.net>
parents:
678
diff
changeset
|
86 outfile.write("<a name=todo><h2><a href=#todo>TODO</a></h2><blockquote><p>%s</p></blockquote>\n" % "\n".join(pending)) |
76e7bf56b2e6
Generate status page with new pubs.opengroup.org urls.
Rob Landley <rob@landley.net>
parents:
678
diff
changeset
|
87 outfile.write("<a name=done><h2><a href=#done>Done</a></h2><blockquote><p>%s</p></blockquote>\n" % "\n".join(done)) |
1035
6b4529a50b72
Update status and roadmap pages, and status page generator script.
Rob Landley <rob@landley.net>
parents:
805
diff
changeset
|
88 |
6b4529a50b72
Update status and roadmap pages, and status page generator script.
Rob Landley <rob@landley.net>
parents:
805
diff
changeset
|
89 outfile.write("<hr><h2>Categories of remaining todo items</h2>") |
6b4529a50b72
Update status and roadmap pages, and status page generator script.
Rob Landley <rob@landley.net>
parents:
805
diff
changeset
|
90 |
6b4529a50b72
Update status and roadmap pages, and status page generator script.
Rob Landley <rob@landley.net>
parents:
805
diff
changeset
|
91 for i in stuff: |
6b4529a50b72
Update status and roadmap pages, and status page generator script.
Rob Landley <rob@landley.net>
parents:
805
diff
changeset
|
92 todo = [] |
6b4529a50b72
Update status and roadmap pages, and status page generator script.
Rob Landley <rob@landley.net>
parents:
805
diff
changeset
|
93 |
6b4529a50b72
Update status and roadmap pages, and status page generator script.
Rob Landley <rob@landley.net>
parents:
805
diff
changeset
|
94 for j in stuff[i]: |
6b4529a50b72
Update status and roadmap pages, and status page generator script.
Rob Landley <rob@landley.net>
parents:
805
diff
changeset
|
95 if "ready" in reverse[j]: continue |
1205 | 96 elif "pending" in reverse[j]: todo.append('<strike>%s</strike>' % j) |
1035
6b4529a50b72
Update status and roadmap pages, and status page generator script.
Rob Landley <rob@landley.net>
parents:
805
diff
changeset
|
97 else: todo.append(categorize(reverse,j,i)) |
6b4529a50b72
Update status and roadmap pages, and status page generator script.
Rob Landley <rob@landley.net>
parents:
805
diff
changeset
|
98 |
6b4529a50b72
Update status and roadmap pages, and status page generator script.
Rob Landley <rob@landley.net>
parents:
805
diff
changeset
|
99 if todo: |
6b4529a50b72
Update status and roadmap pages, and status page generator script.
Rob Landley <rob@landley.net>
parents:
805
diff
changeset
|
100 k = i |
6b4529a50b72
Update status and roadmap pages, and status page generator script.
Rob Landley <rob@landley.net>
parents:
805
diff
changeset
|
101 for j in conv: |
6b4529a50b72
Update status and roadmap pages, and status page generator script.
Rob Landley <rob@landley.net>
parents:
805
diff
changeset
|
102 if j[0] == i: |
6b4529a50b72
Update status and roadmap pages, and status page generator script.
Rob Landley <rob@landley.net>
parents:
805
diff
changeset
|
103 k = j[2] % i |
6b4529a50b72
Update status and roadmap pages, and status page generator script.
Rob Landley <rob@landley.net>
parents:
805
diff
changeset
|
104 |
6b4529a50b72
Update status and roadmap pages, and status page generator script.
Rob Landley <rob@landley.net>
parents:
805
diff
changeset
|
105 outfile.write("<a name=%s><h2><a href=#%s>%s<a></h2><blockquote><p>" % (i,i,k)) |
6b4529a50b72
Update status and roadmap pages, and status page generator script.
Rob Landley <rob@landley.net>
parents:
805
diff
changeset
|
106 outfile.write(" ".join(todo)) |
6b4529a50b72
Update status and roadmap pages, and status page generator script.
Rob Landley <rob@landley.net>
parents:
805
diff
changeset
|
107 outfile.write("</p></blockquote>\n") |