97 lines
2.1 KiB
Python
Executable File
97 lines
2.1 KiB
Python
Executable File
#!/usr/bin/python
|
|
# coding: utf-8
|
|
|
|
import datetime
|
|
import os
|
|
import subprocess
|
|
import sys
|
|
|
|
|
|
ROOR_DIRECTORY_ENV = 'DIARY_ROOT_DIRECTORY'
|
|
|
|
EDITOR_ENV = 'DIARY_EDITOR'
|
|
|
|
EDITOR_VARIABLES = [
|
|
EDITOR_ENV,
|
|
'VISUAL',
|
|
'EDITOR',
|
|
]
|
|
|
|
DEFAULT_EDITOR = 'vi'
|
|
|
|
|
|
def main():
|
|
root_directory = get_root_directory()
|
|
check_root_directory(root_directory)
|
|
editor = get_editor()
|
|
check_editor(editor)
|
|
filename = get_file_name()
|
|
full_path = os.path.join(root_directory, filename)
|
|
touch_file(full_path)
|
|
run_editor(editor, full_path)
|
|
|
|
|
|
def get_root_directory():
|
|
return os.getenv(ROOR_DIRECTORY_ENV)
|
|
|
|
|
|
def check_root_directory(root_directory):
|
|
if root_directory is None:
|
|
print 'Root directory not setup. Use {} environment variable'.format(ROOR_DIRECTORY_ENV)
|
|
sys.exit(1)
|
|
|
|
if not os.path.exists(root_directory):
|
|
print 'Root directory "{}" does not exists'.format(root_directory)
|
|
sys.exit(1)
|
|
|
|
|
|
def get_file_name():
|
|
today = datetime.date.today()
|
|
return '{:04}-{:02}-{:02}.md'.format(today.year, today.month, today.day)
|
|
|
|
|
|
def get_template():
|
|
template = [
|
|
'---',
|
|
'Title: Запись {day}.{month}.{year}',
|
|
'---',
|
|
'',
|
|
'',
|
|
]
|
|
today = datetime.date.today()
|
|
return '\n'.join(template).format(**{
|
|
'day': today.day,
|
|
'month': today.month,
|
|
'year': today.year,
|
|
})
|
|
|
|
|
|
def touch_file(full_path):
|
|
if os.path.exists(full_path):
|
|
return
|
|
|
|
template = get_template()
|
|
with open(full_path, 'w') as new_file:
|
|
new_file.write(template)
|
|
|
|
|
|
def get_editor():
|
|
editors = [os.getenv(i) for i in EDITOR_VARIABLES]
|
|
available = [editor for editor in editors if editor]
|
|
return next(iter(available), DEFAULT_EDITOR)
|
|
|
|
|
|
def check_editor(editor):
|
|
if editor is None:
|
|
list_of_variables = ', '.join(EDITOR_VARIABLES)
|
|
print 'Editor not found. Check environment variables: {}'.format(list_of_variables)
|
|
sys.exit(1)
|
|
|
|
|
|
def run_editor(editor, full_path):
|
|
subprocess.call([editor, full_path])
|
|
|
|
|
|
if __name__ == '__main__':
|
|
main()
|