now possible to update the same file

This commit is contained in:
geritol
2017-09-30 14:59:20 +02:00
committed by Vishnu Ks
parent 416796678b
commit b224665c24
2 changed files with 25 additions and 13 deletions

View File

@@ -1,3 +1,7 @@
from shutil import copyfile
import os
def render_book_line(book_object):
book = book_object
book['rating'] = '?' if not 'rating' in book else book['rating']
@@ -12,27 +16,37 @@ def render_book_line(book_object):
# TODO: refine this logic
def render(in_file, out_file, library):
"""
This renders the file to the out_file location
savig the new file to tmp_file location, the copying it to out-file and deleting tmp_file
this is done to prevent issues if the in and the out file are the same
"""
tmp_file = './.tmp-file.md'
open(tmp_file, 'a').close()
books_not_reached = True
with open(out_file, 'w') as out_file:
with open(tmp_file, 'w') as out_file_tmp:
with open(in_file) as original_file:
for line in original_file:
if line.strip() in library:
if not books_not_reached: out_file.write('\n')
if not books_not_reached: out_file_tmp.write('\n')
books_not_reached = False
# render chapter and start of the table
out_file.write(line)
out_file_tmp.write(line)
if len(library[line.strip()]) > 0:
out_file.write('| Name | Author | Goodreads Rating | Year Published | \n')
out_file.write('|------|--------|------------------|----------------| \n')
out_file_tmp.write('| Name | Author | Goodreads Rating | Year Published | \n')
out_file_tmp.write('|------|--------|------------------|----------------| \n')
# render books
for book in library[line.strip()]:
out_file.write(render_book_line(book))
out_file_tmp.write(render_book_line(book))
elif books_not_reached:
out_file.write(line)
out_file_tmp.write(line)
elif line.startswith('## License'):
out_file.write('\n')
out_file.write('\n')
out_file.write(line)
books_not_reached = True
out_file_tmp.write('\n')
out_file_tmp.write('\n')
out_file_tmp.write(line)
books_not_reached = True
copyfile(tmp_file, out_file)
os.remove(tmp_file)