summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2014-04-14 09:01:49 +0100
committerLars Wirzenius <liw@liw.fi>2014-04-14 09:01:49 +0100
commit60a588e127140ab0fccf5b6e7701b69aade6846c (patch)
tree010457db58aaf3e23445ac7411e5da975977bb40
parentffbd94c73d4657fa009f22593e325f1c08ffba93 (diff)
downloadliw-automation-60a588e127140ab0fccf5b6e7701b69aade6846c.tar.gz
Remove journal-note, I have jt
-rwxr-xr-xscripts/journal-note210
1 files changed, 0 insertions, 210 deletions
diff --git a/scripts/journal-note b/scripts/journal-note
deleted file mode 100755
index f28aaa1..0000000
--- a/scripts/journal-note
+++ /dev/null
@@ -1,210 +0,0 @@
-#!/usr/bin/python
-# Copyright 2010 Lars Wirzenius
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-
-import optparse
-import os
-import re
-import shutil
-import subprocess
-import sys
-import tempfile
-import time
-import traceback
-
-
-template = '''\
-[[!meta title="%(title)s"]]
-[[!tag ]]
-[[!meta date="%(date)s"]]
-
-'''
-
-
-class AppException(Exception):
-
- pass
-
-
-class App(object):
-
- def __init__(self):
- pass
-
- def parse_args(self):
- p = optparse.OptionParser()
-
- p.add_option('--base', default=os.path.expanduser('~/Journal'))
-
- return p.parse_args()
-
- def main(self):
- commands = {
- 'new': self.new_entry,
- 'list': self.list_entries,
- 'edit': self.edit_entry,
- 'attach': self.attach_entry,
- 'remove': self.remove_entry,
- 'finish': self.finish_entry,
- 'rebuild': self.rebuild_journal,
- }
-
- opts, args = self.parse_args()
- if args and args[0] in commands:
- commands[args[0]](args[1:], opts)
- else:
- raise AppException('Usage: journal-note [options] cmd args...')
-
- def drafts(self, opts):
- return os.path.join(opts.base, 'drafts')
-
- def draftname(self, opts, draft_id):
- return os.path.join(opts.base, 'drafts', '%s.mdwn' % draft_id)
-
- def gedit_file(self, pathname):
- subprocess.check_call(['sensible-editor', pathname])
-
- def new_entry(self, args, opts):
- if not args:
- raise AppException('Usage: journal-note new TITLE')
-
- for i in range(1000):
- name = self.draftname(opts, i)
- if not os.path.exists(name):
- break
- else:
- raise AppException('ERROR: too many existing drafts')
-
- values = {
- 'title': args[0],
- 'date': time.strftime('%Y-%m-%d %H:%M')
- }
- f = open(name, 'w')
- f.write(template % values)
- f.close()
- self.gedit_file(name)
-
- def find_drafts(self, opts):
- drafts = self.drafts(opts)
- for name in os.listdir(drafts):
- if name.endswith('.mdwn'):
- yield name[:-len('.mdwn')], name
-
- def list_entries(self, args, opts):
- drafts = self.drafts(opts)
- for draft_id, name in self.find_drafts(opts):
- if name.endswith('.mdwn'):
- f = open(os.path.join(drafts, name))
- for line in f:
- m = re.match('\[\[!meta title="(?P<title>.*)("\]\])$',
- line)
- if m:
- title = m.group('title')
- break
- else:
- title = 'unknown title'
- f.close()
- print draft_id, title
-
- def choose_entry(self, args, opts):
- if len(args) == 0:
- drafts = list(self.find_drafts(opts))
- if len(drafts) == 1:
- draft_id, filename = drafts[0]
- return draft_id
- else:
- raise AppException('Cannot choose entry automatically')
- elif len(args) == 1:
- return args[0]
- elif len(args) > 1:
- raise AppException('Must give only one entry')
-
- def edit_entry(self, args, opts):
- draft_id = self.choose_entry(args, opts)
- pathname = self.draftname(opts, draft_id)
- if not os.path.exists(pathname):
- raise AppException('draft %s does not exist' % args[0])
- self.gedit_file(pathname)
-
- def attach_entry(self, args, opts):
- if len(args) < 2:
- raise AppException('Usage: journal-note attach ID file...')
- pathname = self.draftname(opts, args[0])
- if not os.path.exists(pathname):
- raise AppException('draft %s does not exist' % args[0])
- dirname, ext = os.path.splitext(pathname)
- if not os.path.exists(dirname):
- os.mkdir(dirname)
- for filename in args[1:]:
- shutil.copy(filename, dirname)
-
- def remove_entry(self, args, opts):
- if not args:
- raise AppException('Usage: journal-note remove ID')
- pathname = self.draftname(opts, args[0])
- os.remove(pathname)
-
- def finish_entry(self, args, opts):
- draft_id = self.choose_entry(args, opts)
- draft = self.draftname(opts, draft_id)
- if not os.path.exists(draft):
- raise AppException('draft %s does not exist' % args[0])
- basename = time.strftime('%Y-%m-%d-%H:%M.mdwn')
- i = 0
- while True:
- finished = os.path.join(opts.base, 'src', 'notes', basename)
- if not os.path.exists(finished):
- break
- i += 1
- basename = '%s-%d.mdwn' % (time.strftime('%Y-%m-%d-%H:%M:%S-'), i)
- os.rename(draft, finished)
-
- draft_dir, ext = os.path.splitext(draft)
- finished_dir, ext = os.path.splitext(finished)
- if os.path.exists(draft_dir):
- if os.path.exists(finished_dir):
- raise obnamlib.AppException('%s already exists' %
- finished_dir)
- os.rename(draft_dir, finished_dir)
-
- src = os.path.join(opts.base, 'src')
- argv = ['bzr', 'add', finished]
- if os.path.exists(finished_dir):
- argv.append(finished_dir)
- subprocess.check_call(argv, cwd=src)
- subprocess.check_call(['bzr', 'commit', '-m', 'new note'], cwd=src)
- self.rebuild_journal(args, opts)
-
- def rebuild_journal(self, args, opts):
- subprocess.check_call(['ikiwiki', '--setup', '../ikiwiki.setup',
- '--refresh'],
- cwd=os.path.join(opts.base, 'src'))
-
-
-if __name__ == '__main__':
- try:
- App().main()
- except KeyboardInterrupt:
- sys.exit(1)
- except AppException, e:
- sys.stderr.write('%s\n' % str(e))
- sys.exit(1)
- except SystemExit, e:
- sys.exit(e.code)
- except BaseException, e:
- sys.stderr.write(traceback.format_exc(e))
- sys.exit(1)
-