refactored for one-repos use and updated readme
This commit is contained in:
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
ospkit.src
|
ospkit.src
|
||||||
OSPKit
|
OSPKit
|
||||||
node_modules
|
node_modules
|
||||||
book-src/*.git
|
book-src
|
||||||
build
|
build
|
||||||
assets/css/dist/*.css
|
assets/css/dist/*.css
|
||||||
|
|||||||
@@ -9,10 +9,15 @@ source are in the directory book-src
|
|||||||
|
|
||||||
bin/build.py will read the book sources and convert them to html files using pandoc (pypandoc)
|
bin/build.py will read the book sources and convert them to html files using pandoc (pypandoc)
|
||||||
|
|
||||||
### Assets
|
|
||||||
|
|
||||||
building process intergate in html files all the necessary assets (css/js) contained in the "assets" directory
|
|
||||||
|
|
||||||
## Automation
|
## Automation
|
||||||
|
|
||||||
gulp is watching assets files to convert scss to css and then rebuild html pages
|
gulp is watching assets files to convert scss to css and then rebuild html pages
|
||||||
|
gulp is also runing once on launch a webserver accessible a localhost:8000 and the bin/sync script
|
||||||
|
|
||||||
|
## use
|
||||||
|
- sync : configure the git repository url of md book in bin/sync
|
||||||
|
- run gulp from terminale
|
||||||
|
- configure book's main properties in assets/css/setup.scss and assets/js/setup.js
|
||||||
|
- access to your book at localhost:8000 from a css-region-compatible webbrowser
|
||||||
|
- start to design your book with assets/css/styles.css
|
||||||
|
- it's also possible to add any dynamic javascript formatting with assets/js/script.js
|
||||||
|
|||||||
+20
-37
@@ -21,32 +21,26 @@ import re
|
|||||||
|
|
||||||
_BOOKS_SRC = 'book-src'
|
_BOOKS_SRC = 'book-src'
|
||||||
_BUILD_d = "build"
|
_BUILD_d = "build"
|
||||||
_TOC = []
|
|
||||||
# CUR_PATH = os.path.dirname(os.path.abspath(__file__))
|
# CUR_PATH = os.path.dirname(os.path.abspath(__file__))
|
||||||
|
|
||||||
|
print("Building book")
|
||||||
def main():
|
def main():
|
||||||
print("Building books")
|
# clean build directory
|
||||||
if not os.path.isdir(_BUILD_d):
|
if os.path.isdir(_BUILD_d):
|
||||||
os.mkdir(_BUILD_d)
|
shutil.rmtree(_BUILD_d, ignore_errors=True)
|
||||||
|
os.mkdir(_BUILD_d)
|
||||||
|
|
||||||
# loop through books sources
|
parse_book(_BOOKS_SRC)
|
||||||
for book in os.listdir(_BOOKS_SRC):
|
|
||||||
if os.path.isdir(os.path.join(_BOOKS_SRC, book)):
|
|
||||||
# print(book)
|
|
||||||
parse_book(book)
|
|
||||||
|
|
||||||
with open(_BUILD_d+'/toc.json', 'w') as fp:
|
|
||||||
json.dump(_TOC, fp, ensure_ascii=False, indent="\t")
|
|
||||||
|
|
||||||
|
|
||||||
def parse_book(book):
|
def parse_book(book):
|
||||||
book_name = book.replace('.git', '')
|
# book_name = book.replace('.git', '')
|
||||||
print("- - -")
|
# print("- - -")
|
||||||
print(book_name)
|
print("Parse book")
|
||||||
print("- - -")
|
# print("- - -")
|
||||||
|
|
||||||
# table of content (ordered list of markdown files)
|
# table of content (ordered list of markdown files)
|
||||||
sum_p = os.path.join(_BOOKS_SRC, book, "SUMMARY.md")
|
sum_p = os.path.join(_BOOKS_SRC, "SUMMARY.md")
|
||||||
if not os.path.isfile(sum_p):
|
if not os.path.isfile(sum_p):
|
||||||
print("No summary file, can't generate html")
|
print("No summary file, can't generate html")
|
||||||
return
|
return
|
||||||
@@ -65,9 +59,10 @@ def parse_book(book):
|
|||||||
# print(toc)
|
# print(toc)
|
||||||
|
|
||||||
# generate final html build for html2print
|
# generate final html build for html2print
|
||||||
generate_html(book, toc, book_name)
|
generate_html(book, toc)
|
||||||
|
|
||||||
def parse_summary(ul, toc):
|
def parse_summary(ul, toc):
|
||||||
|
print("Parse summary")
|
||||||
i=0
|
i=0
|
||||||
for li in ul.find_all('li',recursive=False):
|
for li in ul.find_all('li',recursive=False):
|
||||||
# print('li')
|
# print('li')
|
||||||
@@ -85,33 +80,28 @@ def parse_summary(ul, toc):
|
|||||||
return toc
|
return toc
|
||||||
|
|
||||||
|
|
||||||
def generate_html(book, toc, book_name):
|
def generate_html(book, toc):
|
||||||
# build directory destination
|
print("Generate html")
|
||||||
book_build_d = os.path.join(_BUILD_d,book_name)
|
|
||||||
if os.path.isdir(book_build_d):
|
|
||||||
shutil.rmtree(book_build_d, ignore_errors=True)
|
|
||||||
os.mkdir(book_build_d)
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# create main html dom from template
|
# create main html dom from template
|
||||||
template_f = open("templates/main.tpl.html", "r")
|
template_f = open("templates/main.tpl.html", "r")
|
||||||
template_html = template_f.read()
|
template_html = template_f.read()
|
||||||
template_dom = BeautifulSoup(template_html, 'html.parser')
|
template_dom = BeautifulSoup(template_html, 'html.parser')
|
||||||
# replace title
|
# replace title
|
||||||
template_dom.html.head.title.contents[0].replaceWith(book_name)
|
# template_dom.html.head.title.contents[0].replaceWith(book_name)
|
||||||
# get story div
|
# get story div
|
||||||
story_dom = template_dom.find('div', {"id":"my-story"})
|
story_dom = template_dom.find('div', {"id":"my-story"})
|
||||||
|
|
||||||
#
|
#
|
||||||
# loop through pages to convert them to html and add it to main html file
|
# loop through pages to convert them to html and add it to main html file
|
||||||
book_build_d_pages = os.path.join(book_build_d,'pages')
|
# book_build_d_pages = os.path.join(_BUILD_d,'pages')
|
||||||
os.mkdir(book_build_d_pages)
|
# os.mkdir(book_build_d_pages)
|
||||||
|
|
||||||
for p in toc:
|
for p in toc:
|
||||||
# print(toc[p]['file'])
|
# print(toc[p]['file'])
|
||||||
|
|
||||||
# files
|
# files
|
||||||
in_f = os.path.join(_BOOKS_SRC, book, toc[p]['file'])
|
in_f = os.path.join(_BOOKS_SRC, toc[p]['file'])
|
||||||
if not os.path.isfile(in_f):
|
if not os.path.isfile(in_f):
|
||||||
print("Source path is not a file, can't generate html : "+in_f)
|
print("Source path is not a file, can't generate html : "+in_f)
|
||||||
continue
|
continue
|
||||||
@@ -136,17 +126,10 @@ def generate_html(book, toc, book_name):
|
|||||||
story_dom.append(story_page)
|
story_dom.append(story_page)
|
||||||
|
|
||||||
# create main html file from filled template html dom
|
# create main html file from filled template html dom
|
||||||
book_html_f = os.path.join(book_build_d,book_name+'.html')
|
book_html_f = os.path.join(_BUILD_d,'stories.html')
|
||||||
with open(book_html_f, 'w') as fp:
|
with open(book_html_f, 'w') as fp:
|
||||||
fp.write(template_dom.prettify())
|
fp.write(template_dom.prettify())
|
||||||
|
|
||||||
book_toc = {
|
|
||||||
'label':book_name,
|
|
||||||
'file':book_html_f
|
|
||||||
}
|
|
||||||
|
|
||||||
global _TOC
|
|
||||||
_TOC.append(book_toc)
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
|||||||
+14
-24
@@ -7,36 +7,26 @@
|
|||||||
# @Last modified time: 21-04-2017
|
# @Last modified time: 21-04-2017
|
||||||
# @License: GPL-V3
|
# @License: GPL-V3
|
||||||
|
|
||||||
|
# setup
|
||||||
|
distantrepos='https://figureslibres.io/gogs/bachir/TDSM-commissaires.git'
|
||||||
|
|
||||||
echo "Sync books"
|
# script
|
||||||
|
echo "Sync book"
|
||||||
|
|
||||||
# activate credential cache
|
# activate credential cache
|
||||||
git config --global credential.helper cache
|
git config --global credential.helper cache
|
||||||
git config --global credential.helper 'cache --timeout=7200'
|
git config --global credential.helper 'cache --timeout=7200'
|
||||||
|
|
||||||
folder='book-src'
|
folder='book-src'
|
||||||
host='https://figureslibres.io/gogs/bachir'
|
|
||||||
|
|
||||||
# echo "$host"
|
|
||||||
|
|
||||||
repos[0]='TDSM-oeuvres'
|
if [ -d $folder/.git ];
|
||||||
repos[1]='TDSM-notices'
|
then
|
||||||
repos[2]='TDSM-commissaires'
|
# if repos exists, pull
|
||||||
repos[3]='TDSM-english'
|
echo "Pull $repo"
|
||||||
|
git -C $folder pull origin master
|
||||||
# echo $repos
|
else
|
||||||
|
# if repos does not exists, clone
|
||||||
for repo in "${repos[@]}"
|
echo "clone $repo"
|
||||||
do
|
git clone $distantrepos $folder
|
||||||
echo ${repo}
|
fi
|
||||||
if [ -d $folder/$repo.git ];
|
|
||||||
then
|
|
||||||
# if repos exists, pull
|
|
||||||
echo "Pull $repo"
|
|
||||||
git -C $folder/$repo.git pull origin master
|
|
||||||
else
|
|
||||||
# if repos does not exists, clone
|
|
||||||
echo "clone $repo"
|
|
||||||
git clone $host/$repo.git $folder/$repo.git
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|||||||
+1
-6
@@ -9,7 +9,7 @@
|
|||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id="viewport">
|
<div id="viewport">
|
||||||
<iframe src=""></iframe>
|
<iframe src="build/stories.html"></iframe>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="toolbar">
|
<div id="toolbar">
|
||||||
@@ -28,11 +28,6 @@
|
|||||||
<label for="zoom">zoom</label>
|
<label for="zoom">zoom</label>
|
||||||
<input name="zoom" value="100" type="number" min="25" max="1600" step="25">
|
<input name="zoom" value="100" type="number" min="25" max="1600" step="25">
|
||||||
|
|
||||||
<label for="document">document</label>
|
|
||||||
<select name="document">
|
|
||||||
<option value="0">Choose a document</option>
|
|
||||||
</select>
|
|
||||||
|
|
||||||
<label for="page">page</label>
|
<label for="page">page</label>
|
||||||
<input name="page" value="1" type="number" min="1" max="100" step="1">
|
<input name="page" value="1" type="number" min="1" max="100" step="1">
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user