git: c4db9c153e - main - tools/books*py: improve argument handling of DOC_LANG, and others

Ceri Davies <[email protected]>
Newsgroups gmane.os.freebsd.devel.cvs.doc
Message-ID <[email protected]>
The branch main has been updated by ceri:

URL: https://cgit.FreeBSD.org/doc/commit/?id=c4db9c153e4664a3eec66a68de305a57845c4a5a

commit c4db9c153e4664a3eec66a68de305a57845c4a5a
Author:     Ceri Davies <[email protected]>
AuthorDate: 2021-06-13 12:45:07 +0000
Commit:     Ceri Davies <[email protected]>
CommitDate: 2021-06-13 12:45:07 +0000

    tools/books*py: improve argument handling of DOC_LANG, and others
    
    1) fix shebang lines;
    2) add a -o option that makes no changes but prints the files that
        would be updated/created;
    3) allow the -l argument (and therefore DOC_LANG) to be whitespace
        separated, comma separated, or a mixture of both
    
    Item 2 allows us to start tracking dependencies in Makefiles if we wish
    and therefore reintroduce incremental builds, reducing the amount of
    .PHONY targets that are not truly phony.
    
    Item 3 restores compability with the documented DOC_LANG variable, which
    was previously whitespace separated.
    
    Reviewed by:    dbaio, blackend
    Differential Revision:  https://reviews.freebsd.org/D30732
---
 documentation/tools/books-toc-creator.py          | 30 +++++++++++-----
 documentation/tools/books-toc-examples-creator.py | 31 +++++++++++-----
 documentation/tools/books-toc-figures-creator.py  | 33 +++++++++++------
 documentation/tools/books-toc-parts-creator.py    | 43 ++++++++++++++++-------
 documentation/tools/books-toc-tables-creator.py   | 30 +++++++++++-----
 5 files changed, 117 insertions(+), 50 deletions(-)

diff --git a/documentation/tools/books-toc-creator.py b/documentation/tools/books-toc-creator.py
index 340deec339..bd85b7e923 100644
--- a/documentation/tools/books-toc-creator.py
+++ b/documentation/tools/books-toc-creator.py
@@ -1,11 +1,11 @@
+#!/usr/bin/env python3
 # -*- coding: utf-8 -*-
 """
 BSD 2-Clause License
 Copyright (c) 2020-2021, The FreeBSD Project
 Copyright (c) 2020-2021, Sergio Carlavilla <[email protected]>
-This script will generate the Table of Contents of the Handbook
+This script will generate the Table of Contents of the books.
 """
-#!/usr/bin/env python3
 
 import sys, getopt
 import re
@@ -124,19 +124,28 @@ def checkIsAppendix(chapterContent):
 
 def main(argv):
 
+  justPrintOutput = False
+  langargs = []
   try:
-    opts, args = getopt.getopt(argv,"hl:",["language="])
+    opts, args = getopt.gnu_getopt(argv,"hl:o",["language="])
   except getopt.GetoptError:
-    print('books-toc-creator.py -l <language>')
+    print('books-toc-creator.py [-o] -l <language>')
     sys.exit(2)
   for opt, arg in opts:
     if opt == '-h':
-      print('books-toc-creator.py -l <language>')
+      print('books-toc-creator.py [-o] -l <language>')
       sys.exit()
+    elif opt == '-o':
+      justPrintOutput = True
     elif opt in ("-l", "--language"):
-      languages = arg.split(',')
+      langargs = arg.replace(" ",",").split(',')
+
+  # treat additional arguments as languages, but check if they
+  #  contain ','
+  for l in args:
+    langargs.extend(l.replace(" ",",").split(','))
 
-  for language in languages:
+  for language in langargs:
 
     with open('./content/{}/books/books.adoc'.format(language), 'r', encoding = 'utf-8') as booksFile:
       books = [line.strip() for line in booksFile]
@@ -199,8 +208,11 @@ def main(argv):
 
         toc += "--\n"
 
-        with open('./content/{0}/books/{1}/toc.adoc'.format(language, book), 'w', encoding = 'utf-8') as tocFile:
-          tocFile.write(toc)
+        if justPrintOutput == False:
+          with open('./content/{0}/books/{1}/toc.adoc'.format(language, book), 'w', encoding = 'utf-8') as tocFile:
+            tocFile.write(toc)
+        else:
+          print('./content/{0}/books/{1}/toc.adoc'.format(language, book))
 
 if __name__ == "__main__":
   main(sys.argv[1:])
diff --git a/documentation/tools/books-toc-examples-creator.py b/documentation/tools/books-toc-examples-creator.py
index f72ffa945e..423239c30d 100644
--- a/documentation/tools/books-toc-examples-creator.py
+++ b/documentation/tools/books-toc-examples-creator.py
@@ -1,3 +1,4 @@
+#!/usr/bin/env python3
 # -*- coding: utf-8 -*-
 """
 BSD 2-Clause License
@@ -5,9 +6,9 @@ BSD 2-Clause License
 Copyright (c) 2020-2021, The FreeBSD Project
 Copyright (c) 2020-2021, Sergio Carlavilla <[email protected]>
 
-This script will generate the Table of Contents of the Handbook
+This script will generate the Table of Contents of any [example]s in the
+books.
 """
-#!/usr/bin/env python3
 
 import sys, getopt
 import re
@@ -54,19 +55,28 @@ def setTOCTitle(language):
 
 def main(argv):
 
+  justPrintOutput = False
+  langargs = []
   try:
-    opts, args = getopt.getopt(argv,"hl:",["language="])
+    opts, args = getopt.gnu_getopt(argv,"hl:o",["language="])
   except getopt.GetoptError:
-    print('books-toc-examples-creator.py -l <language>')
+    print('books-toc-examples-creator.py [-o] -l <language>')
     sys.exit(2)
   for opt, arg in opts:
     if opt == '-h':
-      print('books-toc-examples-creator.py -l <language>')
+      print('books-toc-examples-creator.py [-o] -l <language>')
       sys.exit()
+    if opt == '-o':
+      justPrintOutput = True
     elif opt in ("-l", "--language"):
-      languages = arg.split(',')
+      langargs = arg.replace(" ",",").split(',')
+
+  # treat additional arguments as languages, but check if they
+  #  contain ','
+  for l in args:
+    langargs.extend(l.replace(" ",",").split(','))
 
-  for language in languages:
+  for language in langargs:
 
     with open('./content/{}/books/books.adoc'.format(language), 'r', encoding = 'utf-8') as booksFile:
       books = [line.strip() for line in booksFile]
@@ -115,8 +125,11 @@ def main(argv):
 
         toc += "--\n"
 
-        with open('./content/{0}/books/{1}/toc-examples.adoc'.format(language, book), 'w', encoding = 'utf-8') as tocFile:
-          tocFile.write(toc)
+        if justPrintOutput == False:
+          with open('./content/{0}/books/{1}/toc-examples.adoc'.format(language, book), 'w', encoding = 'utf-8') as tocFile:
+            tocFile.write(toc)
+        else:
+          print('./content/{0}/books/{1}/toc-examples.adoc'.format(language, book))
 
 if __name__ == "__main__":
   main(sys.argv[1:])
diff --git a/documentation/tools/books-toc-figures-creator.py b/documentation/tools/books-toc-figures-creator.py
index 46bea6226b..fbe1d62c65 100644
--- a/documentation/tools/books-toc-figures-creator.py
+++ b/documentation/tools/books-toc-figures-creator.py
@@ -1,3 +1,4 @@
+#!/usr/bin/env python3
 # -*- coding: utf-8 -*-
 """
 BSD 2-Clause License
@@ -5,9 +6,9 @@ BSD 2-Clause License
 Copyright (c) 2020-2021, The FreeBSD Project
 Copyright (c) 2020-2021, Sergio Carlavilla <[email protected]>
 
-This script will generate the Table of Contents of the Handbook
+This script will generate the Table of Contents for any figures/images
+in the books.
 """
-#!/usr/bin/env python3
 
 import sys, getopt
 import re
@@ -53,20 +54,29 @@ def setTOCTitle(language):
   return languages.get(language)
 
 def main(argv):
-
+  
+  justPrintOutput = False
+  langargs = []
   try:
-    opts, args = getopt.getopt(argv,"hl:",["language="])
+    opts, args = getopt.gnu_getopt(argv,"hl:o",["language="])
   except getopt.GetoptError:
-    print('books-toc-figures-creator.py -l <language>')
+    print('books-toc-figures-creator.py [-o] -l <language>')
     sys.exit(2)
   for opt, arg in opts:
     if opt == '-h':
-      print('books-toc-figures-creator.py -l <language>')
+      print('books-toc-figures-creator.py [-o] -l <language>')
       sys.exit()
+    if opt == '-o':
+      justPrintOutput = True
     elif opt in ("-l", "--language"):
-      languages = arg.split(',')
+      langargs = arg.replace(" ",",").split(',')
+
+  # treat additional arguments as languages, but check if they
+  #  contain ','
+  for l in args:
+    langargs.extend(l.replace(" ",",").split(','))
 
-  for language in languages:
+  for language in langargs:
 
     with open('./content/{}/books/books.adoc'.format(language), 'r', encoding = 'utf-8') as booksFile:
       books = [line.strip() for line in booksFile]
@@ -114,8 +124,11 @@ def main(argv):
 
         toc += "--\n"
 
-        with open('./content/{0}/books/{1}/toc-figures.adoc'.format(language, book), 'w', encoding = 'utf-8') as tocFile:
-          tocFile.write(toc)
+        if justPrintOutput == False:
+          with open('./content/{0}/books/{1}/toc-figures.adoc'.format(language, book), 'w', encoding = 'utf-8') as tocFile:
+            tocFile.write(toc)
+        else:
+          print('./content/{0}/books/{1}/toc-figures.adoc'.format(language, book))
 
 if __name__ == "__main__":
   main(sys.argv[1:])
diff --git a/documentation/tools/books-toc-parts-creator.py b/documentation/tools/books-toc-parts-creator.py
index b05aeb9dc5..aeb035b8cb 100644
--- a/documentation/tools/books-toc-parts-creator.py
+++ b/documentation/tools/books-toc-parts-creator.py
@@ -1,11 +1,12 @@
+#!/usr/bin/env python3
 # -*- coding: utf-8 -*-
 """
 BSD 2-Clause License
 Copyright (c) 2020-2021, The FreeBSD Project
 Copyright (c) 2020-2021, Sergio Carlavilla <[email protected]>
-This script will generate the Table of Contents of the Handbook
+This script will generate the Table of Contents for any [preface],
+[appendix] or other "parts" as defined by asciidoc.
 """
-#!/usr/bin/env python3
 
 import sys, getopt
 import re
@@ -14,12 +15,18 @@ import os.path
 languages = []
 
 def cleanTocFile(language, tocCounter, book):
-    path = './content/{0}/books/{1}/toc-{2}.adoc'.format(language, book, tocCounter)
+  path = './content/{0}/books/{1}/toc-{2}.adoc'.format(language, book, tocCounter)
+  if justPrintOutput == True:
+    print(path)
+  else:
     if os.path.exists(path):
-        tocFile = open(path, 'r+', encoding = 'utf-8')
-        tocFile.truncate(0)
+      tocFile = open(path, 'r+', encoding = 'utf-8')
+      tocFile.truncate(0)
+
+def prependCommentAndTitle(language, tocCounter, tocContent, book):
+  if justPrintOutput == True:
+    return True
 
-def appendCommendAndTitle(language, tocCounter, tocContent, book):
   toc =  "// Code generated by the FreeBSD Documentation toolchain. DO NOT EDIT.\n"
   toc += "// Please don't change this file manually but run `make` to update it.\n"
   toc += "// For more information, please read the FreeBSD Documentation Project Primer\n\n"
@@ -112,20 +119,30 @@ def setTOCTitle(language):
   return languages.get(language)
 
 def main(argv):
+  global justPrintOutput
 
+  justPrintOutput = False
+  langargs=[]
   try:
-    opts, args = getopt.getopt(argv,"hl:",["language="])
+    opts, args = getopt.gnu_getopt(argv,"hl:o",["language="])
   except getopt.GetoptError:
-    print('books-toc-creator.py -l <language>')
+    print('books-toc-creator.py [-o] -l <language>')
     sys.exit(2)
   for opt, arg in opts:
     if opt == '-h':
-      print('books-toc-creator.py -l <language>')
+      print('books-toc-creator.py [-o] -l <language>')
       sys.exit()
+    elif opt == '-o':
+      justPrintOutput = True
     elif opt in ("-l", "--language"):
-      languages = arg.split(',')
+      langargs = arg.replace(" ",",").split(',')
+
+  # treat additional arguments as languages, but check if they
+  #  contain ','
+  for l in args:
+    langargs.extend(l.replace(" ",",").split(','))
 
-  for language in languages:
+  for language in langargs:
 
     with open('./content/{}/books/books.adoc'.format(language), 'r', encoding = 'utf-8') as booksFile:
       books = [line.strip() for line in booksFile]
@@ -149,7 +166,7 @@ def main(argv):
 
               if partCounter > 0:
                 cleanTocFile(language, partCounter, book)
-                appendCommendAndTitle(language, partCounter, toc, book)
+                prependCommentAndTitle(language, partCounter, toc, book)
                 toc = "" # Clean toc content
 
               partCounter += 1
@@ -181,7 +198,7 @@ def main(argv):
 
         if partCounter > 0:
           cleanTocFile(language, partCounter, book)
-          appendCommendAndTitle(language, partCounter, toc, book) # For the last part
+          prependCommentAndTitle(language, partCounter, toc, book) # For the last part
 
 if __name__ == "__main__":
   main(sys.argv[1:])
diff --git a/documentation/tools/books-toc-tables-creator.py b/documentation/tools/books-toc-tables-creator.py
index 592330b7a4..67f1733d45 100644
--- a/documentation/tools/books-toc-tables-creator.py
+++ b/documentation/tools/books-toc-tables-creator.py
@@ -1,3 +1,4 @@
+#!/usr/bin/env python3
 # -*- coding: utf-8 -*-
 """
 BSD 2-Clause License
@@ -5,9 +6,8 @@ BSD 2-Clause License
 Copyright (c) 2020-2021, The FreeBSD Project
 Copyright (c) 2020-2021, Sergio Carlavilla <[email protected]>
 
-This script will generate the Table of Contents of the Handbook
+This script will generate the Table of Contents for tables in the books.
 """
-#!/usr/bin/env python3
 
 import sys, getopt
 import re
@@ -54,19 +54,28 @@ def setTOCTitle(language):
 
 def main(argv):
 
+  justPrintOutput = False
+  langargs= []
   try:
-    opts, args = getopt.getopt(argv,"hl:",["language="])
+    opts, args = getopt.gnu_getopt(argv,"hl:o",["language="])
   except getopt.GetoptError:
-    print('books-toc-tables-creator.py -l <language>')
+    print('books-toc-tables-creator.py [-o] -l <language>')
     sys.exit(2)
   for opt, arg in opts:
     if opt == '-h':
-      print('books-toc-tables-creator.py -l <language>')
+      print('books-toc-tables-creator.py [-o] -l <language>')
       sys.exit()
+    if opt == '-o':
+      justPrintOutput = True
     elif opt in ("-l", "--language"):
-      languages = arg.split(',')
+      langargs = arg.replace(" ",",").split(',')
+
+  # treat additional arguments as languages, but check if they
+  #  contain ','
+  for l in args:
+    langargs.extend(l.replace(" ",",").split(','))
 
-  for language in languages:
+  for language in langargs:
 
     with open('./content/{}/books/books.adoc'.format(language), 'r', encoding = 'utf-8') as booksFile:
       books = [line.strip() for line in booksFile]
@@ -114,8 +123,11 @@ def main(argv):
 
         toc += "--\n"
 
-        with open('./content/{0}/books/{1}/toc-tables.adoc'.format(language, book), 'w', encoding = 'utf-8') as tocFile:
-          tocFile.write(toc)
+        if justPrintOutput == False:
+          with open('./content/{0}/books/{1}/toc-tables.adoc'.format(language, book), 'w', encoding = 'utf-8') as tocFile:
+            tocFile.write(toc)
+        else:
+          print('./content/{0}/books/{1}/toc-tables.adoc'.format(language, book))
 
 if __name__ == "__main__":
   main(sys.argv[1:])
_______________________________________________
[email protected] mailing list
https://lists.freebsd.org/mailman/listinfo/dev-commits-doc-all
To unsubscribe, send any mail to "[email protected]"
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.