diff options
author | Lars Wirzenius <liw@liw.fi> | 2014-11-22 18:38:12 +0200 |
---|---|---|
committer | Lars Wirzenius <liw@liw.fi> | 2014-11-22 18:38:12 +0200 |
commit | db443df0435113323c7e39b254aaf8769d44f6b3 (patch) | |
tree | 09b2a98b8677406e1d45c58350b9d04d1e33a1eb | |
parent | 2ab7f63d39dc3aa8602091ed0f11e7448d48e605 (diff) | |
download | jt-db443df0435113323c7e39b254aaf8769d44f6b3.tar.gz |
Add a DraftsDir helper class
-rwxr-xr-x | jt | 39 |
1 files changed, 24 insertions, 15 deletions
@@ -39,6 +39,19 @@ template = '''\ ''' +class DraftsDirectory(object): + + def __init__(self, dirname): + self.dirname = dirname + + def create_if_missing(self): + if not os.path.exists(self.dirname): + os.mkdir(self.dirname) + + def get_draft_pathname(self, draft_number): + return os.path.join(self.dirname, '%s.mdwn' % draft_number) + + class Command(object): def __init__(self, app): @@ -57,30 +70,26 @@ class NewCommand(Command): self._app.settings.require('source') self._app.settings.require('layout') - drafts_dir = self._app.drafts_dir() - self._create_dir_if_missing(drafts_dir) - name = self._pick_draft_name() - self._create_draft(name, args[0]) - self._app.edit_file(name) + drafts_dir = DraftsDirectory(self._app.drafts_dir()) + drafts_dir.create_if_missing() + pathname = self._pick_draft_pathname(drafts_dir) + self._create_draft(pathname, args[0]) + self._app.edit_file(pathname) - def _create_dir_if_missing(self, dirname): - if not os.path.exists(dirname): - os.mkdir(dirname) - - def _pick_draft_name(self): + def _pick_draft_pathname(self, drafts_dir): for i in range(1000): - name = self._app.draft_name(i) - if not os.path.exists(name): - return name + pathname = drafts_dir.get_draft_pathname(i) + if not os.path.exists(pathname): + return pathname else: raise cliapp.AppException('ERROR: too many existing drafts') - def _create_draft(self, name, title): + def _create_draft(self, pathname, title): values = { 'title': title, 'date': time.strftime('%Y-%m-%d %H:%M') } - with open(name, 'w') as f: + with open(pathname, 'w') as f: f.write(template % values) |