[yocto-autobuilder-helper,v4] Add a banner on the old documentation docs

Message ID 20220417084012.19517-1-abongwabonalais@gmail.com
State New
Headers show
Series [yocto-autobuilder-helper,v4] Add a banner on the old documentation docs | expand

Commit Message

Abongwa Bonalais April 17, 2022, 8:40 a.m. UTC
Signed-off-by: Abongwa Bonalais Amahnui <abongwabonalais@gmail.com>
---
 trial.py      | 32 +++++++++++++++++++++++++++
 trialstyle.py | 61 +++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 93 insertions(+)
 create mode 100644 trial.py
 create mode 100644 trialstyle.py

Comments

Quentin Schulz April 17, 2022, 3:40 p.m. UTC | #1
Hi Amahnui,

On April 17, 2022 10:40:13 AM GMT+02:00, Abongwa Amahnui Bonalais <abongwabonalais@gmail.com> wrote:
>Signed-off-by: Abongwa Bonalais Amahnui <abongwabonalais@gmail.com>
>---
> trial.py      | 32 +++++++++++++++++++++++++++
> trialstyle.py | 61 +++++++++++++++++++++++++++++++++++++++++++++++++++
> 2 files changed, 93 insertions(+)
> create mode 100644 trial.py
> create mode 100644 trialstyle.py
>
>diff --git a/trial.py b/trial.py
>new file mode 100644
>index 0000000..c85b16c
>--- /dev/null
>+++ b/trial.py
>@@ -0,0 +1,32 @@
>+#!usr/bin/env python3

#!/usr/bin/env python3

>+#
>+# SPDX-License-Identifier: GPL-2.0-only
>+#
>+#Author: Abongwa Bonalais Amahnui <abongwabonalais@gmail.com>
>+#
>+#
>+# function to append to the content of a html file below the body tag
>+#
>+#
>+import os
>+html_content = '''
>+<div id="outdated-warning">This document is outdated, you should select the <a href="https://docs.yoctoproject.org/">latest release version</a> in this series.</div>
>+
>+'''
>+
>+
>+def loop_through_html_directories(dir):
>+    for dirpath, dirnames, filenames in os.walk(dir):
>+    # loop through all files in the directory
>+        for filename in filenames:
>+            # check if the file is an html file
>+            if filename.endswith('.html'):

All of the above cam be replaced with:
import glob
glob.glob('**/*.html', recursive=True)

C.f. https://docs.python.org/3/library/glob.html#glob.glob

>+                # open the html file in read mode
>+                with open(os.path.join(dirpath, filename), 'r', encoding="ISO-8859-1") as f:
>+                    # read the content of the html file
>+                    current_content = f.read()
>+                # open the html file in write mode
>+                with open(os.path.join(dirpath, filename), 'w') as f:

I assume we want the same encoding that was needed for opening the file for writing the file otherwise we'll have some differences won't we?

In the end I think a recursive "find" for all html files which executes sed could have work just fine too.

E.g.
find -name "*.html" -exec sed -i 's/<body>/<body><the banner>/' {} \;

But potato potato right now ☺️

Also, this script needs to be called somewhere.

I suggest those scripts are added to the scripts/ directory of the git repo and they need to be called in run-docs-build shell script otherwise they are not used.

Cheers,
Quentin

>+                    # write the content of the html file
>+                    f.write(current_content.replace('<body>', '<body>' + html_content))
>+loop_through_html_directories('.')
>diff --git a/trialstyle.py b/trialstyle.py
>new file mode 100644
>index 0000000..a75721a
>--- /dev/null
>+++ b/trialstyle.py
>@@ -0,0 +1,61 @@
>+#!usr/bin/env python3
>+#
>+# SPDX-License-Identifier: GPL-2.0-only
>+#
>+#Author: Abongwa Bonalais Amahnui <abongwabonalais@gmail.com>
>+#
>+#
>+# function to append to the content of a css file below the body class
>+#
>+#
>+import os
>+
>+
>+content = '''
>+ 
>+  font-family: Verdana, Sans, sans-serif;
>+
>+  /*min-width: 640px;*/
>+  width: 100%;
>+  margin:  0;
>+  padding: 0;
>+  color: #333;
>+  overflow-x: hidden;
>+  }
>+ 
>+ /*added books too*/
>+.book{
>+margin:  0 auto;
>+min-width: 640px;
>+padding: 0 5em 5em 5em;
>+}
>+/* added the id below to make the banner show and be fixed*/
>+#outdated-warning{
>+text-align: center;
>+background-color: rgb(255, 186, 186); 
>+color: rgb(106, 14, 14); 
>+padding: 0.5em 0; 
>+width: 100%;
>+position: fixed;
>+top: 0;
>+
>+
>+'''
>+
>+
>+
>+def loop_through_html_directories(dir):
>+    for dirpath, dirnames, filenames in os.walk(dir):
>+    # loop through all files in the directory
>+        for filename in filenames:
>+            # check if the file is an html file
>+            if filename.endswith('style.css'):
>+                # open the html file in read mode
>+                with open(os.path.join(dirpath, filename), 'r', encoding="ISO-8859-1") as f:
>+                    # read the content of the html file
>+                   css_content = f.read()
>+                # open the html file in write mode
>+                with open(os.path.join(dirpath, filename), 'w') as f:
>+                    # write the content of the html file
>+                    f.write(css_content.replace(css_content[css_content.find('body {'):css_content.find('}'[0])], 'body {' + content ))
>+loop_through_html_directories('.')
Abongwa Bonalais April 17, 2022, 5:57 p.m. UTC | #2
On Sun, Apr 17, 2022 at 04:45 PM, Quentin Schulz wrote:

> 
> import glob
> glob.glob('**/*.html', recursive=True)

Hi Quentin, thanks for the review.
If I use the glob module here, I will get rid of os.walk which was suggested by Richard, and I have some issues implementing the glob as I am not very familiar with it.
Abongwa Bonalais April 18, 2022, 4:19 p.m. UTC | #3
I sent a more recent patch which takes care of the topmost element overlapping with the banner, puting it in a div called body and pushing it down so the banner remains on top.

Patch

diff --git a/trial.py b/trial.py
new file mode 100644
index 0000000..c85b16c
--- /dev/null
+++ b/trial.py
@@ -0,0 +1,32 @@ 
+#!usr/bin/env python3
+#
+# SPDX-License-Identifier: GPL-2.0-only
+#
+#Author: Abongwa Bonalais Amahnui <abongwabonalais@gmail.com>
+#
+#
+# function to append to the content of a html file below the body tag
+#
+#
+import os
+html_content = '''
+<div id="outdated-warning">This document is outdated, you should select the <a href="https://docs.yoctoproject.org/">latest release version</a> in this series.</div>
+
+'''
+
+
+def loop_through_html_directories(dir):
+    for dirpath, dirnames, filenames in os.walk(dir):
+    # loop through all files in the directory
+        for filename in filenames:
+            # check if the file is an html file
+            if filename.endswith('.html'):
+                # open the html file in read mode
+                with open(os.path.join(dirpath, filename), 'r', encoding="ISO-8859-1") as f:
+                    # read the content of the html file
+                    current_content = f.read()
+                # open the html file in write mode
+                with open(os.path.join(dirpath, filename), 'w') as f:
+                    # write the content of the html file
+                    f.write(current_content.replace('<body>', '<body>' + html_content))
+loop_through_html_directories('.')
diff --git a/trialstyle.py b/trialstyle.py
new file mode 100644
index 0000000..a75721a
--- /dev/null
+++ b/trialstyle.py
@@ -0,0 +1,61 @@ 
+#!usr/bin/env python3
+#
+# SPDX-License-Identifier: GPL-2.0-only
+#
+#Author: Abongwa Bonalais Amahnui <abongwabonalais@gmail.com>
+#
+#
+# function to append to the content of a css file below the body class
+#
+#
+import os
+
+
+content = '''
+ 
+  font-family: Verdana, Sans, sans-serif;
+
+  /*min-width: 640px;*/
+  width: 100%;
+  margin:  0;
+  padding: 0;
+  color: #333;
+  overflow-x: hidden;
+  }
+ 
+ /*added books too*/
+.book{
+margin:  0 auto;
+min-width: 640px;
+padding: 0 5em 5em 5em;
+}
+/* added the id below to make the banner show and be fixed*/
+#outdated-warning{
+text-align: center;
+background-color: rgb(255, 186, 186); 
+color: rgb(106, 14, 14); 
+padding: 0.5em 0; 
+width: 100%;
+position: fixed;
+top: 0;
+
+
+'''
+
+
+
+def loop_through_html_directories(dir):
+    for dirpath, dirnames, filenames in os.walk(dir):
+    # loop through all files in the directory
+        for filename in filenames:
+            # check if the file is an html file
+            if filename.endswith('style.css'):
+                # open the html file in read mode
+                with open(os.path.join(dirpath, filename), 'r', encoding="ISO-8859-1") as f:
+                    # read the content of the html file
+                   css_content = f.read()
+                # open the html file in write mode
+                with open(os.path.join(dirpath, filename), 'w') as f:
+                    # write the content of the html file
+                    f.write(css_content.replace(css_content[css_content.find('body {'):css_content.find('}'[0])], 'body {' + content ))
+loop_through_html_directories('.')