summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2014-09-22 13:19:00 +0100
committerLars Wirzenius <liw@liw.fi>2014-09-22 13:19:00 +0100
commit85a9776ba3cc520d51ffda6e1945f62b22bba9e4 (patch)
tree5f4138e7727f5efd3484cd699ed97b51b859e9af
parent6253d6cb08d0cecfe886e449785e0af11c7057b9 (diff)
downloadjt-85a9776ba3cc520d51ffda6e1945f62b22bba9e4.tar.gz
Add --layout=pkb
-rwxr-xr-xjt67
1 files changed, 42 insertions, 25 deletions
diff --git a/jt b/jt
index 4462496..bf62219 100755
--- a/jt
+++ b/jt
@@ -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.