[PATCH] scripts: use ':Original:' tag to locate the origin file

Cheng Ziqiu posted 1 patch 2 months, 2 weeks ago
scripts/checktransupdate.py | 13 +++++++++++++
1 file changed, 13 insertions(+)
[PATCH] scripts: use ':Original:' tag to locate the origin file
Posted by Cheng Ziqiu 2 months, 2 weeks ago
Simply substitute path may cause file finding failed
if we have a different dir map for translation. The
':Original:' tag could be used to locate the origin
file if both the tag and file exist.

Signed-off-by: Cheng Ziqiu <chengziqiu@hust.edu.cn>
---
 scripts/checktransupdate.py | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/scripts/checktransupdate.py b/scripts/checktransupdate.py
index 578c3fecfdfd..f28176691b03 100755
--- a/scripts/checktransupdate.py
+++ b/scripts/checktransupdate.py
@@ -25,6 +25,7 @@ commit 42fb9cfd5b18 ("Documentation: dev-tools: Add link to RV docs")
 
 import os
 import time
+import re
 import logging
 from argparse import ArgumentParser, ArgumentTypeError, BooleanOptionalAction
 from datetime import datetime
@@ -32,6 +33,18 @@ from datetime import datetime
 
 def get_origin_path(file_path):
     """Get the origin path from the translation path"""
+    with open(file_path, "r") as f:
+        content = f.read()
+    # find the origin path in the content
+    match = re.search(r":Original:\s*(?::ref:`|:doc:`)?([^\s`]+)", content)
+    if match:
+        f = match.group(1)
+        if os.path.exists(f):
+            logging.debug("Origin tag found: %s", f)
+            return f
+        else:
+            logging.warning("Origin tag found but file not exists: %s", f)
+
     paths = file_path.split("/")
     tidx = paths.index("translations")
     opaths = paths[:tidx]
-- 
2.34.1
Re: [PATCH] scripts: use ':Original:' tag to locate the origin file
Posted by Jonathan Corbet 2 months, 2 weeks ago
Cheng Ziqiu <chengziqiu@hust.edu.cn> writes:

> Simply substitute path may cause file finding failed
> if we have a different dir map for translation. The
> ':Original:' tag could be used to locate the origin
> file if both the tag and file exist.
>
> Signed-off-by: Cheng Ziqiu <chengziqiu@hust.edu.cn>
> ---
>  scripts/checktransupdate.py | 13 +++++++++++++
>  1 file changed, 13 insertions(+)

Perhaps we need this, but I would really rather move any files that
don't conform to the English-language directory structure.  Having them
be anything but the same can only lead to this sort of confusion.

Thanks,

jon
Re: [PATCH] scripts: use ':Original:' tag to locate the origin file
Posted by Akira Yokosawa 2 months, 2 weeks ago
[+CC: Vegard]

Hi,

On Fri, 13 Sep 2024 08:38:24 -0600, Jonathan Corbet wrote:
> Cheng Ziqiu <chengziqiu@hust.edu.cn> writes:
> 
>> Simply substitute path may cause file finding failed
>> if we have a different dir map for translation. The
>> ':Original:' tag could be used to locate the origin
>> file if both the tag and file exist.
>>
>> Signed-off-by: Cheng Ziqiu <chengziqiu@hust.edu.cn>
>> ---
>>  scripts/checktransupdate.py | 13 +++++++++++++
>>  1 file changed, 13 insertions(+)
> 
> Perhaps we need this, but I would really rather move any files that
> don't conform to the English-language directory structure.  Having them
> be anything but the same can only lead to this sort of confusion.

+1

Furthermore, the "translations" extension for htmldocs available since
v6.8 at:
    Documentation/sphinx/translations.py
assumes the same structure as the English one.

It might be nice for this script to warn about translation docs
whose positions don't match the assumption.

        Thanks, Akira

> 
> Thanks,
> 
> jon
Re: [PATCH] scripts: use ':Original:' tag to locate the origin file
Posted by Dongliang Mu 2 months, 2 weeks ago
On Fri, Sep 13, 2024 at 4:17 PM Cheng Ziqiu <chengziqiu@hust.edu.cn> wrote:
>
> Simply substitute path may cause file finding failed
> if we have a different dir map for translation. The
> ':Original:' tag could be used to locate the origin
> file if both the tag and file exist.

+cc yanteng's new email

>
> Signed-off-by: Cheng Ziqiu <chengziqiu@hust.edu.cn>
> ---
>  scripts/checktransupdate.py | 13 +++++++++++++
>  1 file changed, 13 insertions(+)
>
> diff --git a/scripts/checktransupdate.py b/scripts/checktransupdate.py
> index 578c3fecfdfd..f28176691b03 100755
> --- a/scripts/checktransupdate.py
> +++ b/scripts/checktransupdate.py
> @@ -25,6 +25,7 @@ commit 42fb9cfd5b18 ("Documentation: dev-tools: Add link to RV docs")
>
>  import os
>  import time
> +import re
>  import logging
>  from argparse import ArgumentParser, ArgumentTypeError, BooleanOptionalAction
>  from datetime import datetime
> @@ -32,6 +33,18 @@ from datetime import datetime
>
>  def get_origin_path(file_path):
>      """Get the origin path from the translation path"""
> +    with open(file_path, "r") as f:
> +        content = f.read()
> +    # find the origin path in the content
> +    match = re.search(r":Original:\s*(?::ref:`|:doc:`)?([^\s`]+)", content)
> +    if match:
> +        f = match.group(1)
> +        if os.path.exists(f):
> +            logging.debug("Origin tag found: %s", f)
> +            return f
> +        else:
> +            logging.warning("Origin tag found but file not exists: %s", f)
> +
>      paths = file_path.split("/")
>      tidx = paths.index("translations")
>      opaths = paths[:tidx]
> --
> 2.34.1
>
>