Implement refs() to list all branches and tags - stahg-gopher - Static Mercurial page generator for gopher
(HTM) hg clone https://bitbucket.org/iamleot/stahg-gopher
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) README
(DIR) LICENSE
---
(DIR) changeset 1614c33a9710f589494b5916d530a0388afb2144
(DIR) parent 12d7dd66c5a3153b8ed11b3af5f7df8f0ce140eb
(HTM) Author: Leonardo Taccari <iamleot@gmail.com>
Date: Mon, 13 May 2019 17:50:22
Implement refs() to list all branches and tags
Diffstat:
TODO | 1 -
stahg-gopher.py | 33 +++++++++++++++++++++++++++++++--
2 files changed, 31 insertions(+), 3 deletions(-)
---
diff -r 12d7dd66c5a3 -r 1614c33a9710 TODO
--- a/TODO Mon May 13 15:35:55 2019 +0200
+++ b/TODO Mon May 13 17:50:22 2019 +0200
@@ -4,7 +4,6 @@
Missing features/bugs
---------------------
- - Implement refs(), to list all branches and tags
- Write a stahg-gopher-index
- Write documentation and man page(s)
diff -r 12d7dd66c5a3 -r 1614c33a9710 stahg-gopher.py
--- a/stahg-gopher.py Mon May 13 15:35:55 2019 +0200
+++ b/stahg-gopher.py Mon May 13 17:50:22 2019 +0200
@@ -150,7 +150,8 @@
bp = gph_escape_entry(self.base_prefix)
m = '[1|Log|' + bp + '/log.gph|server|port]\n' + \
- '[1|Files|' + bp + '/files.gph|server|port]'
+ '[1|Files|' + bp + '/files.gph|server|port]\n' + \
+ '[1|Refs|' + bp + '/refs.gph|server|port]'
if self.readme:
m += '\n[1|README|' + bp + '/file/{file}.gph|server|port]'.format(
@@ -221,7 +222,35 @@
def refs(self):
"""Generate refs.gph listing all branches and tags"""
- pass # TODO
+ bp = gph_escape_entry(self.base_prefix)
+ fname = 'refs.gph'
+
+ with open(fname, 'w') as f:
+ print(self.title('Files'), file=f)
+ print(self.menu(), file=f)
+ print('---', file=f)
+
+ print('Branches', file=f)
+ print(' {:32} {:16} {:26}'.format('Name', 'Last commit date', 'Author'), file=f)
+ for name, _, changeset in self.client.branches():
+ print(
+ gph_escape_text(' {name:32} {date:16} {author:26}'.format(
+ name=shorten(name.decode(), 32),
+ date=self.client[changeset].date().strftime('%Y-%m-%d %H:%M'),
+ author=author_name(self.client[changeset].author().decode()))),
+ file=f)
+
+ print(file=f)
+
+ print('Tags', file=f)
+ print(' {:32} {:16} {:26}'.format('Name', 'Last commit date', 'Author'), file=f)
+ for name, _, changeset, _ in self.client.tags():
+ print(
+ gph_escape_text(' {name:32} {date:16} {author:26}'.format(
+ name=shorten(name.decode(), 32),
+ date=self.client[changeset].date().strftime('%Y-%m-%d %H:%M'),
+ author=author_name(self.client[changeset].author().decode()))),
+ file=f)
def commit(self, changeset):