git: c4db9c153e - main - tools/books*py: improve argument handling of DOC_LANG, and others
Ceri Davies
ceri at FreeBSD.org
Sun Jun 13 12:49:42 UTC 2021
The branch main has been updated by ceri:
URL: https://cgit.FreeBSD.org/doc/commit/?id=c4db9c153e4664a3eec66a68de305a57845c4a5a
commit c4db9c153e4664a3eec66a68de305a57845c4a5a
Author: Ceri Davies <ceri at FreeBSD.org>
AuthorDate: 2021-06-13 12:45:07 +0000
Commit: Ceri Davies <ceri at FreeBSD.org>
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 <carlavilla at FreeBSD.org>
-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 <carlavilla at FreeBSD.org>
-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 <carlavilla at FreeBSD.org>
-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 <carlavilla at FreeBSD.org>
-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 <carlavilla at FreeBSD.org>
-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:])
More information about the dev-commits-doc-all
mailing list