diff options
author | Lars Wirzenius <liw@liw.fi> | 2014-09-22 13:19:00 +0100 |
---|---|---|
committer | Lars Wirzenius <liw@liw.fi> | 2014-09-22 13:19:00 +0100 |
commit | 85a9776ba3cc520d51ffda6e1945f62b22bba9e4 (patch) | |
tree | 5f4138e7727f5efd3484cd699ed97b51b859e9af | |
parent | 6253d6cb08d0cecfe886e449785e0af11c7057b9 (diff) | |
download | jt-85a9776ba3cc520d51ffda6e1945f62b22bba9e4.tar.gz |
Add --layout=pkb
-rwxr-xr-x | jt | 67 |
1 files changed, 42 insertions, 25 deletions
@@ -57,8 +57,8 @@ class JournalTool(cliapp.Application): self.settings.choice( ['layout'], - ['ct', 'liw'], - 'use journal layout (one of liw, ct)', + ['ct', 'liw', 'pkb'], + 'use journal layout (one of liw, ct, pkb)', metavar='LAYOUT') self.settings.boolean( @@ -114,15 +114,6 @@ class JournalTool(cliapp.Application): def draft_name(self, draft_id): return os.path.join(self.drafts_dir(), '%s.mdwn' % draft_id) - def published_dir(self): - subdirs = { - 'liw': 'notes', - 'ct': 'log/%d' % time.localtime().tm_year, - } - - subdir = subdirs[self.settings['layout']] - return os.path.join(self.settings['source'], subdir) - def edit_file(self, pathname): safe_pathname = cliapp.shell_quote(pathname) cmdline = ['sh', '-c', self.settings['editor'] % pathname] @@ -132,17 +123,7 @@ class JournalTool(cliapp.Application): '''List journal entry drafts.''' for draft_id, filename in self.find_drafts(): - with open(filename) as f: - for line in f: - m = re.match( - '\[\[!meta title="(?P<title>.*)("\]\])$', - line) - if m: - title = m.group('title') - break - else: - title = 'unknown title' - print draft_id, title + print draft_id, self.get_draft_title(filename) or "" def find_drafts(self): drafts_dir = self.drafts_dir() @@ -151,6 +132,19 @@ class JournalTool(cliapp.Application): if name.endswith('.mdwn') and not name.startswith('.#'): yield name[:-len('.mdwn')], os.path.join(drafts_dir, name) + def get_draft_title(self, filename): + with open(filename) as f: + for line in f: + m = re.match( + '\[\[!meta title="(?P<title>.*)("\]\])$', + line) + if m: + title = m.group('title') + break + else: + title = None + return title + def cmd_edit(self, args): '''Edit a draft journal entry.''' @@ -209,9 +203,9 @@ class JournalTool(cliapp.Application): draft_attch, ext = os.path.splitext(draft_mdwn) assert ext == '.mdwn' - basename = time.strftime('%Y-%m-%d-%H:%M:%S') - pub_mdwn = os.path.join(self.published_dir(), '%s.mdwn' % basename) - pub_attch = os.path.join(self.published_dir(), basename) + pub_attch = os.path.join( + self.published_dir(), self.published_basename(draft_mdwn)) + pub_mdwn = pub_attch + '.mdwn' if os.path.exists(pub_mdwn): raise cliapp.AppException('%s already exists' % pub_mdwn) @@ -235,6 +229,29 @@ class JournalTool(cliapp.Application): ['git', 'push', 'origin', 'HEAD'], cwd=self.settings['source']) + def published_dir(self): + subdirs = { + 'liw': 'notes', + 'ct': 'log/%d' % time.localtime().tm_year, + 'pkb': time.strftime('notes/%Y/%m/%d'), + } + + subdir = subdirs[self.settings['layout']] + return os.path.join(self.settings['source'], subdir) + + def published_basename(self, draft_mdwn): + if self.settings['layout'] in ('liw', 'ct'): + basename = time.strftime('%Y-%m-%d-%H:%M:%S') + elif self.settings['layout'] == 'pkb': + basename = self.get_draft_title(draft_mdwn) + if not basename: + raise Exception("%s has no title" % draft_mdwn) + else: + raise Exception( + 'Setting --layout=%s is unknown' % self.settings['layout']) + + return basename + def cmd_new_person(self, args): '''Create a page to list all notes referring to a person. |