diff options
-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) |