git: f1202f5e14 - main - Remove Python dependency

From: Sergio Carlavilla Delgado <carlavilla_at_FreeBSD.org>
Date: Sun, 12 Dec 2021 13:48:07 UTC
The branch main has been updated by carlavilla:

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

commit f1202f5e1430ee863fa77d03e8459010cf5c9bff
Author:     Sergio Carlavilla Delgado <carlavilla@FreeBSD.org>
AuthorDate: 2021-12-12 13:35:56 +0000
Commit:     Sergio Carlavilla Delgado <carlavilla@FreeBSD.org>
CommitDate: 2021-12-12 13:47:44 +0000

    Remove Python dependency
    
    - Convert releases-toml to Ruby
    - Remove hardware notes creator script
---
 website/Makefile                        |  8 ++--
 website/tools/hardware-notes-creator.py | 64 -----------------------------
 website/tools/releases-toml.py          | 72 ---------------------------------
 website/tools/releases-toml.rb          | 55 +++++++++++++++++++++++++
 4 files changed, 60 insertions(+), 139 deletions(-)

diff --git a/website/Makefile b/website/Makefile
index e62d177b57..c1f3d6893e 100644
--- a/website/Makefile
+++ b/website/Makefile
@@ -18,8 +18,10 @@ MAINTAINER=carlavilla@FreeBSD.org
 # List of all languages we have content for
 ALL_LANGUAGES=	de el en es fr hu it ja nl ru tr zh-cn zh-tw
 
-PYTHON_CMD =	/usr/local/bin/python3
-HUGO_CMD =	/usr/local/bin/hugo
+LOCALBASE?=	/usr/local
+
+RUBY_CMD =	${LOCALBASE}/bin/ruby
+HUGO_CMD =	${LOCALBASE}/bin/hugo
 HUGO_ARGS?=	--verbose
 RUBYLIB =	../shared/lib
 .export	RUBYLIB
@@ -80,7 +82,7 @@ end-message: .PHONY
 generate-releases: data/releases.toml
 
 data/releases.toml:
-	${PYTHON_CMD} ./tools/releases-toml.py -p ./shared/releases.adoc
+	${RUBY_CMD} ./tools/releases-toml.rb
 
 run-local: .PHONY
 	HUGO_DISABLELANGUAGES="${SKIP_LANGS}" ${HUGO_CMD} server \
diff --git a/website/tools/hardware-notes-creator.py b/website/tools/hardware-notes-creator.py
deleted file mode 100644
index 67c27ccb7d..0000000000
--- a/website/tools/hardware-notes-creator.py
+++ /dev/null
@@ -1,64 +0,0 @@
-# -*- coding: utf-8 -*-
-"""
-BSD 2-Clause License
-
-Copyright (c) 2020-2021, The FreeBSD Project
-Copyright (c) 2020-2021, Sergio Carlavilla <carlavilla@FreeBSD.org>
-
-This script will generate the Table of Contents of the Handbook
-"""
-#!/usr/bin/env python3
-
-import sys, getopt
-import ntpath
-import subprocess
-import os
-
-manPagesPath = ""
-
-def loadManPages(manPagesDir):
-  manPagesPaths = []
-
-  for root, _, files in os.walk(manPagesDir):
-    for file in files:
-      if file.endswith(".4"):
-        manPagesPaths.append(os.path.join(root, file))
-  return manPagesPaths
-
-def createHardwareNotesDirectory(path):
-  try:
-    os.mkdir(path)
-  except OSError:
-    print ("Creation of the directory %s failed" % path)
-  else:
-    print ("Successfully created the directory %s " % path)
-
-def main(argv):
-
-  try:
-    opts, args = getopt.getopt(argv,"hp:",["path="])
-  except getopt.GetoptError:
-    print('hardware-notes-creator.py -p <path>')
-    sys.exit(2)
-
-  for opt, arg in opts:
-    if opt == '-h':
-      print('hardware-notes-creator.py -p <path>')
-      sys.exit()
-    elif opt in ("-p", "--path"):
-      manPagesPath = arg
-
-  manPages = loadManPages("/home/carlavilla/Projects/base/src/share/man/man4/")
-  createHardwareNotesDirectory('/home/carlavilla/Projects/testsssss')
-
-  for manPage in manPages:
-    manPageParsed = subprocess.getoutput("mandoc -Tmarkdown " + manPage + " | sed -n '/# HARDWARE/,/#/{/#/!p;}'")
-
-    if len(manPageParsed) > 0:
-      manPageName = ntpath.basename(manPage).replace(".4", "")
-
-      with open('/home/carlavilla/Projects/testsssss/{}.adoc'.format(manPageName), 'w', encoding = 'utf-8') as manPageFile:
-        manPageFile.write(manPageParsed)
-
-if __name__ == "__main__":
-  main(sys.argv[1:])
diff --git a/website/tools/releases-toml.py b/website/tools/releases-toml.py
deleted file mode 100644
index 2dc96d310f..0000000000
--- a/website/tools/releases-toml.py
+++ /dev/null
@@ -1,72 +0,0 @@
-# -*- coding: utf-8 -*-
-"""
-BSD 2-Clause License
-
-Copyright (c) 2020-2021, The FreeBSD Project
-Copyright (c) 2020-2021, Sergio Carlavilla <carlavilla@FreeBSD.org>
-
-This script will convert the releases.adoc file to releases.toml
-in this way we can share the releases variables between AsciiDoctor and Hugo
-"""
-#!/usr/bin/env python3
-
-import sys, getopt
-import re
-
-variables = {}
-
-def getValueByKey(key):
-  return variables[key.replace("{", "").replace("}", "")].replace("\"", "")
-
-def loadVariables(path):
-  with open(path, 'r', encoding = 'utf-8') as releasesFile:
-    line = releasesFile.readline()
-
-    while line:
-      if (re.match(r"^:{1}[^\n]+", line)):
-        variable = re.sub(':', '', line.strip(), 1)
-        variable = re.sub(': ', '="', variable)
-        variable += "\""
-        data = variable.split("=")
-
-        if (len(data) == 2):
-          variables.update( {data[0] : data[1]} )
-
-      line = releasesFile.readline()
-
-def main(argv):
-  path = ''
-
-  try:
-    opts, args = getopt.getopt(argv,"hp:",["path="])
-  except getopt.GetoptError:
-    print('releases-toml.py -p <path>')
-    sys.exit(2)
-  for opt, arg in opts:
-    if opt == '-h':
-      print('releases-toml.py -p <path>')
-      sys.exit()
-    elif opt in ("-p", "--path"):
-      path = arg
-
-  releasesTOML =  "# Code @" + "generated by the FreeBSD Documentation toolchain. DO NOT EDIT.\n"
-  releasesTOML += "# Please don't change this file manually but run `make` to update it.\n"
-  releasesTOML += "# For more information, please read the FreeBSD Documentation Project Primer\n"
-  releasesTOML += '\n'
-
-  loadVariables(path)
-
-  for key in variables:
-    foundBraces = re.search(r"\{.*?\}", variables[key])
-
-    if (foundBraces):
-      braces = foundBraces.group(0)
-      releasesTOML += key + "=" + variables[key].replace(braces, getValueByKey(braces)) + "\n"
-    else:
-      releasesTOML += key + "=" + variables[key] + "\n"
-
-  with open('./data/releases.toml', 'w', encoding = 'utf-8') as releasesTOMLFile:
-    releasesTOMLFile.write(releasesTOML)
-
-if __name__ == "__main__":
-  main(sys.argv[1:])
diff --git a/website/tools/releases-toml.rb b/website/tools/releases-toml.rb
new file mode 100644
index 0000000000..3dbd2f6ea2
--- /dev/null
+++ b/website/tools/releases-toml.rb
@@ -0,0 +1,55 @@
+#!/usr/bin/env ruby
+
+=begin
+
+BSD 2-Clause License
+Copyright (c) 2020-2021, The FreeBSD Project
+Copyright (c) 2020-2021, Sergio Carlavilla <carlavilla@FreeBSD.org>
+
+This script will merge all the pgpkeys into one single file
+
+=end
+
+def getValueByKey(key, variables)
+  return variables.fetch(key.gsub("{", "").gsub("}", "")).gsub("\"", "")
+end
+
+def mapVariables(path)
+  variables = Hash.new
+
+  File.foreach(path).with_index do |line|
+    if line.match("^:{1}[^\n]+")
+      variable = line.strip.sub(":", '')
+      variable = variable.sub(": ", "=\"")
+      variable << "\""
+      data = variable.split("=")
+
+      if data.length == 2
+        variables.store(data[0], data[1])
+      end
+    end
+  end
+
+  return variables
+end
+
+# Main method
+releasesTOMLFile = File.new("./data/releases.toml", "w")
+
+releasesTOMLFile.puts("# Code @" + "generated by the FreeBSD Documentation toolchain. DO NOT EDIT.\n")
+releasesTOMLFile.puts("# Please don't change this file manually but run `make` to update it.\n")
+releasesTOMLFile.puts("# For more information, please read the FreeBSD Documentation Project Primer\n")
+releasesTOMLFile.puts("\n")
+
+variables = mapVariables("./shared/releases.adoc")
+
+variables.each do |key, value|
+
+  if keyToFind = value.match("\{.*?\}")
+    releasesTOMLFile.puts(key + "=" + value.gsub(keyToFind[0], getValueByKey(keyToFind[0], variables)) + "\n")
+  else
+    releasesTOMLFile.puts(key + "=" + value + "\n")
+  end
+
+end
+