From 5523218f134c29adaf83314f2d1b48d25c22c5dc Mon Sep 17 00:00:00 2001 From: Lars Wirzenius Date: Sat, 22 Nov 2014 19:28:59 +0200 Subject: Move summarise_title into FinishCommand --- jt | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/jt b/jt index 6b82994..c042ff6 100755 --- a/jt +++ b/jt @@ -199,13 +199,23 @@ class FinishCommand(Command): title = self._app.get_draft_title(draft_mdwn) if not title: raise Exception("%s has no title" % draft_mdwn) - basename = self._app.summarise_title(title) + basename = self._summarise_title(title) else: raise Exception( 'Setting --layout=%s is unknown' % self._app.settings['layout']) return basename + def _summarise_title(self, title): + basename = '' + acceptable = set(string.ascii_letters + string.digits + '-_') + for c in title.lower(): + if c in acceptable: + basename += c + elif not basename.endswith('_'): + basename += '_' + return basename + def _commit_to_git(self, pathnames): cliapp.runcmd( ['git', 'add'] + pathname, @@ -360,16 +370,6 @@ class JournalTool(cliapp.Application): '''Publish a draft journal entry.''' FinishCommand(self).run(args) - def summarise_title(self, title): - basename = '' - acceptable = set(string.ascii_letters + string.digits + '-_') - for c in title.lower(): - if c in acceptable: - basename += c - elif not basename.endswith('_'): - basename += '_' - return basename - def cmd_new_person(self, args): '''Create a page to list all notes referring to a person. -- cgit v1.2.1 From 23976f87ea3396e3e848e04830ee0febcfec1cc0 Mon Sep 17 00:00:00 2001 From: Lars Wirzenius Date: Sat, 22 Nov 2014 19:32:12 +0200 Subject: Move get_draft_title to DraftsDirectory --- jt | 37 ++++++++++++++++++++----------------- 1 file changed, 20 insertions(+), 17 deletions(-) diff --git a/jt b/jt index c042ff6..2167499 100755 --- a/jt +++ b/jt @@ -83,6 +83,21 @@ class DraftsDirectory(object): if os.path.exists(dirname): shutil.rmtree(dirname) + def get_draft_title(self, draft_id): + pathname = self.get_draft_pathname(draft_id) + with open(pathname) as f: + for line in f: + m = re.match( + '\[\[!meta title="(?P.*)("\]\])$', + line) + if m: + title = m.group('title') + break + else: + title = None + return title + return '' + class Command(object): @@ -118,7 +133,7 @@ class ListCommand(Command): def run(self, args): drafts_dir = DraftsDirectory(self._app.drafts_dir()) for draft_id, filename in drafts_dir.get_drafts(): - print draft_id, self._app.get_draft_title(filename) or "" + print draft_id, drafts_dir.get_draft_title(draft_id) class EditCommand(Command): @@ -162,7 +177,8 @@ class FinishCommand(Command): draft_attch = drafts_dir.get_draft_attachments_dirname(draft_id) pub_attch = os.path.join( - self._published_dir(), self._published_basename(draft_mdwn)) + self._published_dir(), + self._published_basename(drafts_dir, draft_id, draft_mdwn)) pub_mdwn = pub_attch + '.mdwn' if os.path.exists(pub_mdwn): @@ -192,11 +208,11 @@ class FinishCommand(Command): subdir = subdirs[self._app.settings['layout']] return os.path.join(self._app.settings['source'], subdir) - def _published_basename(self, draft_mdwn): + def _published_basename(self, drafts_dir, draft_id, draft_mdwn): if self._app.settings['layout'] in ('liw', 'ct'): basename = time.strftime('%Y-%m-%d-%H:%M:%S') elif self._app.settings['layout'] == 'pkb': - title = self._app.get_draft_title(draft_mdwn) + title = drafts_dir.get_draft_title(draft_id) if not title: raise Exception("%s has no title" % draft_mdwn) basename = self._summarise_title(title) @@ -323,19 +339,6 @@ class JournalTool(cliapp.Application): '''List journal entry drafts.''' ListCommand(self).run(args) - 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.''' EditCommand(self).run(args) -- cgit v1.2.1 From 2cf33a276340bb60ca07eaae1b07a0689e5362a0 Mon Sep 17 00:00:00 2001 From: Lars Wirzenius <liw@liw.fi> Date: Sat, 22 Nov 2014 19:37:32 +0200 Subject: Move publishing into helper method --- jt | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/jt b/jt index 2167499..57d7f6a 100755 --- a/jt +++ b/jt @@ -173,6 +173,7 @@ class FinishCommand(Command): def run(self, args): drafts_dir = DraftsDirectory(self._app.drafts_dir()) + draft_id, draft_mdwn = self._app.choose_draft(drafts_dir, args) draft_attch = drafts_dir.get_draft_attachments_dirname(draft_id) @@ -184,11 +185,7 @@ class FinishCommand(Command): if os.path.exists(pub_mdwn): raise cliapp.AppException('%s already exists' % pub_mdwn) - if not os.path.exists(self._published_dir()): - os.makedirs(self._published_dir()) - os.rename(draft_mdwn, pub_mdwn) - if os.path.exists(draft_attch): - os.rename(draft_attch, pub_attch) + self._publish_draft(draft_mdwn, draft_attch, pub_mdwn, pub_attch) if self._app.settings['git']: if os.path.exists(pub_attch): @@ -232,6 +229,14 @@ class FinishCommand(Command): basename += '_' return basename + def _publish_draft(self, draft_mdwn, draft_attch, pub_mdwn, pub_attch): + parent_dir = os.path.dirname(pub_mdwn) + if not os.path.exists(parent_dir): + os.makedirs(parent_dir) + os.rename(draft_mdwn, pub_mdwn) + if os.path.exists(draft_attch): + os.rename(draft_attch, pub_attch) + def _commit_to_git(self, pathnames): cliapp.runcmd( ['git', 'add'] + pathname, -- cgit v1.2.1 From a7f0cd87d9a03b97751207dd7079309e92bc2bf7 Mon Sep 17 00:00:00 2001 From: Lars Wirzenius <liw@liw.fi> Date: Sat, 22 Nov 2014 19:43:38 +0200 Subject: Simplify how published basename is computed --- jt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/jt b/jt index 57d7f6a..12db5b9 100755 --- a/jt +++ b/jt @@ -177,9 +177,10 @@ class FinishCommand(Command): draft_id, draft_mdwn = self._app.choose_draft(drafts_dir, args) draft_attch = drafts_dir.get_draft_attachments_dirname(draft_id) + title = drafts_dir.get_draft_title(draft_id) pub_attch = os.path.join( self._published_dir(), - self._published_basename(drafts_dir, draft_id, draft_mdwn)) + self._published_basename(title, draft_mdwn)) pub_mdwn = pub_attch + '.mdwn' if os.path.exists(pub_mdwn): @@ -205,11 +206,10 @@ class FinishCommand(Command): subdir = subdirs[self._app.settings['layout']] return os.path.join(self._app.settings['source'], subdir) - def _published_basename(self, drafts_dir, draft_id, draft_mdwn): + def _published_basename(self, title, draft_mdwn): if self._app.settings['layout'] in ('liw', 'ct'): basename = time.strftime('%Y-%m-%d-%H:%M:%S') elif self._app.settings['layout'] == 'pkb': - title = drafts_dir.get_draft_title(draft_id) if not title: raise Exception("%s has no title" % draft_mdwn) basename = self._summarise_title(title) -- cgit v1.2.1 From a9ae0264de61e057972d0c08436e50a0e016e379 Mon Sep 17 00:00:00 2001 From: Lars Wirzenius <liw@liw.fi> Date: Sat, 22 Nov 2014 19:45:39 +0200 Subject: Remove non-pkb layouts (sorry) --- jt | 33 +++++---------------------------- yarns/yarn.sh | 1 - 2 files changed, 5 insertions(+), 29 deletions(-) diff --git a/jt b/jt index 12db5b9..d41bb55 100755 --- a/jt +++ b/jt @@ -115,7 +115,6 @@ class NewCommand(Command): raise cliapp.AppException('Usage: journal-note new TITLE') self._app.settings.require('source') - self._app.settings.require('layout') values = { 'title': args[0], @@ -178,9 +177,12 @@ class FinishCommand(Command): draft_attch = drafts_dir.get_draft_attachments_dirname(draft_id) title = drafts_dir.get_draft_title(draft_id) + if not title: + raise Exception("%s has no title" % draft_mdwn) + pub_attch = os.path.join( self._published_dir(), - self._published_basename(title, draft_mdwn)) + self._summarise_title(title)) pub_mdwn = pub_attch + '.mdwn' if os.path.exists(pub_mdwn): @@ -197,28 +199,9 @@ class FinishCommand(Command): self.push_git() def _published_dir(self): - subdirs = { - 'liw': 'notes', - 'ct': 'log/%d' % time.localtime().tm_year, - 'pkb': time.strftime('notes/%Y/%m/%d'), - } - - subdir = subdirs[self._app.settings['layout']] + subdir = time.strftime('notes/%Y/%m/%d') return os.path.join(self._app.settings['source'], subdir) - def _published_basename(self, title, draft_mdwn): - if self._app.settings['layout'] in ('liw', 'ct'): - basename = time.strftime('%Y-%m-%d-%H:%M:%S') - elif self._app.settings['layout'] == 'pkb': - if not title: - raise Exception("%s has no title" % draft_mdwn) - basename = self._summarise_title(title) - else: - raise Exception( - 'Setting --layout=%s is unknown' % self._app.settings['layout']) - - return basename - def _summarise_title(self, title): basename = '' acceptable = set(string.ascii_letters + string.digits + '-_') @@ -302,12 +285,6 @@ class JournalTool(cliapp.Application): 'use journal source tree in DIR', metavar='DIR') - self.settings.choice( - ['layout'], - ['ct', 'liw', 'pkb'], - 'use journal layout (one of liw, ct, pkb)', - metavar='LAYOUT') - self.settings.boolean( ['git'], 'add entries to git automatically', diff --git a/yarns/yarn.sh b/yarns/yarn.sh index 5f3e59b..1f02369 100644 --- a/yarns/yarn.sh +++ b/yarns/yarn.sh @@ -28,7 +28,6 @@ run_jt() "$SRCDIR/jt" --no-default-config \ --config "$DATADIR/source.conf" \ --config "$DATADIR/time.conf" \ - --layout=pkb \ --no-git \ "$@" exit_code="$?" -- cgit v1.2.1 From 275f7ebd71e6f0335772496e5904c4e1b52a4e65 Mon Sep 17 00:00:00 2001 From: Lars Wirzenius <liw@liw.fi> Date: Sat, 22 Nov 2014 19:46:58 +0200 Subject: Re-order cmd_ methods to be together --- jt | 52 ++++++++++++++++++++++++++-------------------------- 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/jt b/jt index d41bb55..02a9bb8 100755 --- a/jt +++ b/jt @@ -309,14 +309,6 @@ class JournalTool(cliapp.Application): '''Create a new journal entry draft.''' NewCommand(self).run(args) - def drafts_dir(self): - return os.path.join(self.settings['source'], 'drafts') - - def edit_file(self, pathname): - safe_pathname = cliapp.shell_quote(pathname) - cmdline = ['sh', '-c', self.settings['editor'] % pathname] - self.runcmd(cmdline, stdin=None, stdout=None, stderr=None) - def cmd_list(self, args): '''List journal entry drafts.''' ListCommand(self).run(args) @@ -325,24 +317,6 @@ class JournalTool(cliapp.Application): '''Edit a draft journal entry.''' EditCommand(self).run(args) - def choose_draft(self, drafts_dir, args): - if len(args) == 0: - drafts = list(drafts_dir.get_drafts()) - if len(drafts) == 1: - draft_id, filename = drafts[0] - return draft_id, filename - elif len(drafts) == 0: - raise cliapp.AppException('No drafts to choose from') - else: - raise cliapp.AppException('Cannot choose entry draft automatically') - elif len(args) == 1: - pathname = drafts_dir.get_draft_pathname(args[0]) - if not os.path.exists(pathname): - raise cliapp.AppException('draft %s does not exist' % args[0]) - return args[0], pathname - elif len(args) > 1: - raise cliapp.AppException('Must give at most one draft number') - def cmd_attach(self, args): '''Attach files to a journal entry draft.''' AttachCommand(self).run(args) @@ -364,5 +338,31 @@ class JournalTool(cliapp.Application): NewPersonCommand(self).run(args) + def drafts_dir(self): + return os.path.join(self.settings['source'], 'drafts') + + def edit_file(self, pathname): + safe_pathname = cliapp.shell_quote(pathname) + cmdline = ['sh', '-c', self.settings['editor'] % pathname] + self.runcmd(cmdline, stdin=None, stdout=None, stderr=None) + + def choose_draft(self, drafts_dir, args): + if len(args) == 0: + drafts = list(drafts_dir.get_drafts()) + if len(drafts) == 1: + draft_id, filename = drafts[0] + return draft_id, filename + elif len(drafts) == 0: + raise cliapp.AppException('No drafts to choose from') + else: + raise cliapp.AppException('Cannot choose entry draft automatically') + elif len(args) == 1: + pathname = drafts_dir.get_draft_pathname(args[0]) + if not os.path.exists(pathname): + raise cliapp.AppException('draft %s does not exist' % args[0]) + return args[0], pathname + elif len(args) > 1: + raise cliapp.AppException('Must give at most one draft number') + JournalTool(version=__version__).run() -- cgit v1.2.1