From 69f6512783395438edb416c4a8b280e22683b0b8 Mon Sep 17 00:00:00 2001 From: NeuroDebian Wizard Date: Thu, 6 Jan 2011 11:44:59 -0500 Subject: [PATCH] Put icon links to extracts from DSCs (README, changelog, copyright) --- Makefile | 1 + neurodebian/dde.py | 21 ++++++++++++++++----- neurodebian/templates/pkg.rst | 14 ++++++++++++++ sphinx/_static/changelog.png | Bin 0 -> 2995 bytes sphinx/_static/debian-changelog.png | Bin 0 -> 3624 bytes sphinx/_static/info.png | Bin 0 -> 3478 bytes sphinx/_static/legal.png | Bin 0 -> 4001 bytes 7 files changed, 31 insertions(+), 5 deletions(-) create mode 100644 sphinx/_static/changelog.png create mode 100644 sphinx/_static/debian-changelog.png create mode 100644 sphinx/_static/info.png create mode 100644 sphinx/_static/legal.png diff --git a/Makefile b/Makefile index dd9097c..4f37cf7 100644 --- a/Makefile +++ b/Makefile @@ -32,6 +32,7 @@ source-stamp: build/db.db --db build/db.db \ --outdir build/src \ --pkgaddenum pkgs \ + --extracts /home/www/neuro.debian.net/www/debian/extracts \ commandisirrelevant rm -f html-stamp touch $@ diff --git a/neurodebian/dde.py b/neurodebian/dde.py index c93814b..4325e90 100755 --- a/neurodebian/dde.py +++ b/neurodebian/dde.py @@ -583,7 +583,8 @@ def convert_longdescr(ld): return ld -def generate_pkgpage(pkg, cfg, db, template, addenum_dir): +def generate_pkgpage(pkg, cfg, db, template, addenum_dir, extracts_dir): + print pkg # local binding for ease of use pkgdb = db[pkg] # do nothing if there is not at least the very basic stuff @@ -593,6 +594,11 @@ def generate_pkgpage(pkg, cfg, db, template, addenum_dir): underline = '*' * (len(title) + 2) title = '%s\n %s\n%s' % (underline, title, underline) + ex_dir = None + if 'sv' in pkgdb['main']: + ex_dir = os.path.join(extracts_dir, pkgdb['main']['sv'].split()[0]) + if not os.path.exists(ex_dir): + ex_dir = None page = template.render( pkg=pkg, title=title, @@ -600,7 +606,9 @@ def generate_pkgpage(pkg, cfg, db, template, addenum_dir): assure_unicode(pkgdb['main']['long_description'])), cfg=cfg, db=pkgdb, - fulldb=db) + fulldb=db, + extracts_dir=ex_dir, + op=os.path) # the following can be replaced by something like # {% include "sidebar.html" ignore missing %} # in the template whenever jinja 2.2 becomes available @@ -650,7 +658,7 @@ def write_sourceslist(jinja_env, cfg, outdir): sl.close() -def write_pkgpages(jinja_env, cfg, db, outdir, addenum_dir): +def write_pkgpages(jinja_env, cfg, db, outdir, addenum_dir, extracts_dir): create_dir(outdir) create_dir(os.path.join(outdir, 'pkgs')) @@ -675,7 +683,7 @@ def write_pkgpages(jinja_env, cfg, db, outdir, addenum_dir): # and now each individual package page pkg_template = jinja_env.get_template('pkg.rst') for p in db.keys(): - page = generate_pkgpage(p, cfg, db, pkg_template, addenum_dir) + page = generate_pkgpage(p, cfg, db, pkg_template, addenum_dir, extracts_dir) # when no page is available skip this package if page is None: continue @@ -710,6 +718,9 @@ def prepOptParser(op): op.add_option("--pkgaddenum", action="store", dest="addenum_dir", type="string", default=None, help="None") + op.add_option("--extracts", action="store", dest="extracts_dir", + type="string", default=None, help="None") + def main(): op = OptionParser(version="%prog 0.0.2") @@ -773,7 +784,7 @@ def main(): jinja_env = Environment(loader=PackageLoader('neurodebian', 'templates')) # generate package pages and TOC and write them to files - write_pkgpages(jinja_env, cfg, db, opts.outdir, opts.addenum_dir) + write_pkgpages(jinja_env, cfg, db, opts.outdir, opts.addenum_dir, opts.extracts_dir) write_sourceslist(jinja_env, cfg, opts.outdir) diff --git a/neurodebian/templates/pkg.rst b/neurodebian/templates/pkg.rst index 5290b0a..17af598 100644 --- a/neurodebian/templates/pkg.rst +++ b/neurodebian/templates/pkg.rst @@ -12,6 +12,20 @@ External links:

+ {%- if extracts_dir -%} + {%- if op.exists(op.join(extracts_dir, 'copyright')) -%} + + + {%- endif -%} + {%- if op.exists(op.join(extracts_dir, 'changelog')) -%} + + + {%- endif -%} + {%- if op.exists(op.join(extracts_dir, 'README.Debian')) -%} + + + {%- endif -%} + {%- endif -%} {%- if cfg.has_option("nitrc ids", pkg) -%} diff --git a/sphinx/_static/changelog.png b/sphinx/_static/changelog.png new file mode 100644 index 0000000000000000000000000000000000000000..9330fe5bc5192c596ee4b359c18afa27185ff4c2 GIT binary patch literal 2995 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 Eg7m7PHvj+t literal 0 HcmV?d00001 diff --git a/sphinx/_static/legal.png b/sphinx/_static/legal.png new file mode 100644 index 0000000000000000000000000000000000000000..08fc8e12daf3db15ba6c951019b58f357c3db2b1 GIT binary patch literal 4001 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 Hu0mjf