Browse Source

refactored for one-repos use and updated readme

Bachir Soussi Chiadmi 7 years ago
parent
commit
d9d3bf9f43
6 changed files with 45 additions and 72 deletions
  1. 1 1
      .gitignore
  2. 9 4
      README.md
  3. 20 37
      bin/build.py
  4. 14 24
      bin/sync.sh
  5. 0 0
      book-src/.keepme
  6. 1 6
      index.html

+ 1 - 1
.gitignore

@@ -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 - 4
README.md

@@ -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
bin/build.py

@@ -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")
-   if not os.path.isdir(_BUILD_d):
-      os.mkdir(_BUILD_d)
+   # clean build directory
+   if os.path.isdir(_BUILD_d):
+      shutil.rmtree(_BUILD_d, ignore_errors=True)
+   os.mkdir(_BUILD_d)
 
 
-   # loop through books sources
-   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")
+   parse_book(_BOOKS_SRC)
 
 
 
 
 def parse_book(book):
 def parse_book(book):
-   book_name = book.replace('.git', '')
-   print("- - -")
-   print(book_name)
-   print("- - -")
+   # book_name = book.replace('.git', '')
+   # print("- - -")
+   print("Parse book")
+   # 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):
-   # build directory destination
-   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)
-
+def generate_html(book, toc):
+   print("Generate html")
    #
    #
    # 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')
-   os.mkdir(book_build_d_pages)
+   # book_build_d_pages = os.path.join(_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
bin/sync.sh

@@ -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'
-repos[1]='TDSM-notices'
-repos[2]='TDSM-commissaires'
-repos[3]='TDSM-english'
-
-# echo $repos
-
-for repo in "${repos[@]}"
-do
-  echo ${repo}
-  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
+if [ -d $folder/.git ];
+then
+  # if repos exists, pull
+  echo "Pull $repo"
+  git -C $folder pull origin master
+else
+  # if repos does not exists, clone
+  echo "clone $repo"
+  git clone $distantrepos $folder
+fi

+ 0 - 0
book-src/.keepme


+ 1 - 6
index.html

@@ -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">