Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

scripts/set-alias-page.py, scripts/set-more-info-link.py: sync documentation and get_tldr_root #12744

Merged
merged 12 commits into from
May 13, 2024
Merged
65 changes: 37 additions & 28 deletions scripts/set-alias-page.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,45 +8,54 @@
isn't suggested to use the sync option. If used, only stage changes
and commit verified changes for your language by using -l LANGUAGE.

Note: If there is a symlink error when using the stage flag remove the `pages.en`
directory temporarily and try executing it again.
Note: If the current directory or one of its parents is called "tldr", the script will assume it is the tldr root, i.e., the directory that contains a clone of https://github.com/tldr-pages/tldr
If you aren't, the script will use TLDR_ROOT as the tldr root. Also, ensure 'git' is available.

Usage:
python3 scripts/set-alias-page.py [-p PAGE] [-l LANGUAGE] [-s] [-S] [-n] [COMMAND]
python3 scripts/set-alias-page.py [-p PAGE] [-S] [-l LANGUAGE] [-s] [-n] [COMMAND]

Options:
-p, --page PAGE
Specify the alias page in the format "platform/alias_command.md".
-S, --sync
Synchronize each translation's alias page (if exists) with that of the English page.
-l, --language LANGUAGE
Specify the language, a POSIX Locale Name in the form of "ll" or "ll_CC" (e.g. "fr" or "pt_BR").
-s, --stage
Stage modified pages (requires 'git' on $PATH and TLDR_ROOT to be a Git repository).
-S, --sync
Synchronize each translation's alias page (if exists) with that of the English page.
-n, --dry-run
Show what changes would be made without actually modifying the page.

Positional Argument:
COMMAND The command to be set as the alias command.

Examples:
1. Add 'vi' as an alias page of 'vim':
python3 scripts/set-alias-page.py -p common/vi vim
python3 scripts/set-alias-page.py --page common/vi vim

2. Read English alias pages and synchronize them into all translations:
python3 scripts/set-alias-page.py -S
python3 scripts/set-alias-page.py --sync

3. Read English alias pages and show what changes would be made:
python3 scripts/set-alias-page.py -Sn
python3 scripts/set-alias-page.py --sync --dry-run

4. Read English alias pages and synchronize them for Brazilian Portuguese pages only:
3. Read English alias pages and synchronize them for Brazilian Portuguese pages only:
python3 scripts/set-alias-page.py -S -l pt_BR
python3 scripts/set-alias-page.py --sync --language pt_BR

4. Read English alias pages, synchronize them into all translations and stage modified pages for commit:
python3 scripts/set-more-info-link.py -Ss
python3 scripts/set-more-info-link.py --sync --stage

5. Read English alias pages and show what changes would be made:
python3 scripts/set-alias-page.py -Sn
python3 scripts/set-alias-page.py --sync --dry-run
"""

import argparse
import os
import re
import subprocess
from pathlib import Path

IGNORE_FILES = (".DS_Store", "tldr.md", "aria2.md")

Expand All @@ -57,16 +66,16 @@ def get_tldr_root():
"""

# If this script is running from tldr/scripts, the parent's parent is the root
f = os.path.normpath(__file__)
if f.endswith("tldr/scripts/set-alias-page.py"):
return os.path.dirname(os.path.dirname(f))

if "TLDR_ROOT" in os.environ:
return os.environ["TLDR_ROOT"]
else:
raise SystemExit(
"\x1b[31mPlease set TLDR_ROOT to the location of a clone of https://github.com/tldr-pages/tldr.\x1b[0m"
)
f = Path(__file__).resolve()
if (
tldr_root := next((path for path in f.parents if path.name == "tldr"), None)
) is not None:
return tldr_root
elif "TLDR_ROOT" in os.environ:
return Path(os.environ["TLDR_ROOT"])
raise SystemExit(
"\x1b[31mPlease set TLDR_ROOT to the location of a clone of https://github.com/tldr-pages/tldr."
)


def get_templates(root):
Expand Down Expand Up @@ -177,7 +186,7 @@ def set_alias_page(file, command, dry_run=False, language_to_update=""):
action = "updated"

if dry_run:
status = f"page will be {action}"
status = f"page would be {action}"
else:
status = f"page {action}"

Expand Down Expand Up @@ -237,6 +246,13 @@ def main():
default="",
help='page name in the format "platform/alias_command.md"',
)
parser.add_argument(
"-S",
"--sync",
action="store_true",
default=False,
help="synchronize each translation's alias page (if exists) with that of English page",
)
parser.add_argument(
"-l",
"--language",
Expand All @@ -252,13 +268,6 @@ def main():
default=False,
help="stage modified pages (requires `git` to be on $PATH and TLDR_ROOT to be a Git repository)",
)
parser.add_argument(
"-S",
"--sync",
action="store_true",
default=False,
help="synchronize each translation's alias page (if exists) with that of English page",
)
parser.add_argument(
"-n",
"--dry-run",
Expand Down
67 changes: 35 additions & 32 deletions scripts/set-more-info-link.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,37 +2,37 @@
# SPDX-License-Identifier: MIT

"""
This script sets the "More information" link for all translations of a page.
It can be used to add or update the links in translations.

Note: Before running this script, ensure that TLDR_ROOT is set to the location
of a clone of https://github.com/tldr-pages/tldr, and 'git' is available.
If there is a symlink error when using the stage flag remove the `pages.en`
directory temporarily and try executing it again.

Usage: python3 scripts/set-more-info-link.py [-p PAGE] [-s] [-S] [-n] [LINK]

Supported Arguments:
-p, --page Specify the page name in the format "platform/command.md".
This option allows setting the link for a specific page.
-s, --stage Stage modified pages for commit. This option requires 'git'
to be on the $PATH and TLDR_ROOT to be a Git repository.
-S, --sync Synchronize each translation's more information link (if
exists) with that of the English page. This is useful to
ensure consistency across translations.
-n, --dry-run Show what changes would be made without actually modifying the page.
A Python script to add or update the "More information" link for all translations of a page.

Note: If the current directory or one of its parents is called "tldr", the script will assume it is the tldr root, i.e., the directory that contains a clone of https://github.com/tldr-pages/tldr
If you aren't, the script will use TLDR_ROOT as the tldr root. Also, ensure 'git' is available.

Usage:
python3 scripts/set-more-info-link.py [-p PAGE] [-S] [-s] [-n] [LINK]

Options:
-p, --page PAGE
Specify the alias page in the format "platform/alias_command.md".
-S, --sync
Synchronize each translation's more information link (if exists) with that of the English page.
-s, --stage
Stage modified pages (requires 'git' on $PATH and TLDR_ROOT to be a Git repository).
-n, --dry-run
Show what changes would be made without actually modifying the page.

Positional Argument:
LINK The link to be set as the "More information" link.

Examples:
1. Set the link for a specific page:
python3 scripts/set-more-info-link.py -p common/tar.md https://example.com
python3 scripts/set-more-info-link.py --page common/tar.md https://example.com

2. Synchronize more information links across translations:
2. Read English pages and synchronize more information links across translations:
python3 scripts/set-more-info-link.py -S
python3 scripts/set-more-info-link.py --sync

3. Synchronize more information links across translations and stage modified pages for commit:
3. Read English pages, synchronize more information links across translations and stage modified pages for commit:
python3 scripts/set-more-info-link.py -Ss
python3 scripts/set-more-info-link.py --sync --stage

Expand Down Expand Up @@ -91,12 +91,15 @@


def get_tldr_root() -> Path:
# If this script is running from tldr/scripts, the parent's parent is the root
f = Path(__file__).resolve()
return next(path for path in f.parents if path.name == "tldr")

if "TLDR_ROOT" in os.environ:
if (
tldr_root := next((path for path in f.parents if path.name == "tldr"), None)
) is not None:
return tldr_root
elif "TLDR_ROOT" in os.environ:
return Path(os.environ["TLDR_ROOT"])
raise SystemError(
raise SystemExit(
"\x1b[31mPlease set TLDR_ROOT to the location of a clone of https://github.com/tldr-pages/tldr."
)

Expand Down Expand Up @@ -151,7 +154,7 @@ def set_link(path: Path, link: str, dry_run=False) -> str:
action = "added"

if dry_run:
status = f"link will be {action}"
status = f"link would be {action}"
else:
status = f"link {action}"

Expand Down Expand Up @@ -214,18 +217,18 @@ def main():
help='page name in the format "platform/command.md"',
)
parser.add_argument(
"-s",
"--stage",
"-S",
"--sync",
action="store_true",
default=False,
help="stage modified pages (requires `git` to be on $PATH and TLDR_ROOT to be a Git repository)",
help="synchronize each translation's more information link (if exists) with that of English page",
)
parser.add_argument(
"-S",
"--sync",
"-s",
"--stage",
action="store_true",
default=False,
help="synchronize each translation's more information link (if exists) with that of English page",
help="stage modified pages (requires `git` to be on $PATH and TLDR_ROOT to be a Git repository)",
)
parser.add_argument(
"-n",
Expand Down