Skip to content

Commit c8982a3

Browse files
Jaimepas77CleanMachine1vitorhclkbdharun
authored
Notice other versions of the same page (#208)
* Notice other versions of the same page For instance, inform if a linux page is also in common. * feat: list all found platforms that have the pag --------- Signed-off-by: K.B.Dharun Krishna <[email protected]> Co-authored-by: CleanMachine1 <[email protected]> Co-authored-by: Vitor Henrique <[email protected]> Co-authored-by: K.B.Dharun Krishna <[email protected]>
1 parent 3d78727 commit c8982a3

File tree

1 file changed

+80
-3
lines changed

1 file changed

+80
-3
lines changed

tldr.py

+80-3
Original file line numberDiff line numberDiff line change
@@ -234,6 +234,70 @@ def get_language_list() -> List[str]:
234234
return languages
235235

236236

237+
def get_page_for_every_platform(
238+
command: str,
239+
remote: Optional[str] = None,
240+
platforms: Optional[List[str]] = None,
241+
languages: Optional[List[str]] = None
242+
) -> Union[List[Tuple[str, str]], bool]:
243+
"""Gives a list of tuples result-platform ordered by priority."""
244+
if platforms is None:
245+
platforms = get_platform_list()
246+
if languages is None:
247+
languages = get_language_list()
248+
# only use cache
249+
if USE_CACHE:
250+
result = list()
251+
for platform in platforms:
252+
for language in languages:
253+
if platform is None:
254+
continue
255+
try:
256+
result.append(
257+
(get_page_for_platform(
258+
command,
259+
platform,
260+
remote,
261+
language,
262+
only_use_cache=True,
263+
), platform)
264+
)
265+
break # Don't want to look for the same page in other langs
266+
except CacheNotExist:
267+
continue
268+
if result: # Return if smth was found
269+
return result
270+
# Know here that we don't have the info in cache
271+
result = list()
272+
for platform in platforms:
273+
for language in languages:
274+
if platform is None:
275+
continue
276+
try:
277+
result.append(
278+
(
279+
get_page_for_platform(
280+
command,
281+
platform,
282+
remote,
283+
language
284+
),
285+
platform
286+
)
287+
)
288+
break
289+
except HTTPError as err:
290+
if err.code != 404:
291+
raise
292+
except URLError:
293+
if not PAGES_SOURCE_LOCATION.startswith('file://'):
294+
raise
295+
if result: # Return if smth was found
296+
return result
297+
298+
return False
299+
300+
237301
def get_page(
238302
command: str,
239303
remote: Optional[str] = None,
@@ -547,20 +611,33 @@ def main() -> None:
547611
else:
548612
try:
549613
command = '-'.join(options.command).lower()
550-
result = get_page(
614+
results = get_page_for_every_platform(
551615
command,
552616
options.source,
553617
options.platform,
554618
options.language
555619
)
556-
if not result:
620+
if not results:
557621
sys.exit((
558622
"`{cmd}` documentation is not available.\n"
559623
"If you want to contribute it, feel free to"
560624
" send a pull request to: https://github.com/tldr-pages/tldr"
561625
).format(cmd=command))
562626
else:
563-
output(result, plain=options.markdown)
627+
output(results[0][0], plain=options.markdown)
628+
if results[1:]:
629+
platforms_str = [result[1] for result in results[1:]]
630+
are_multiple_platforms = len(platforms_str) > 1
631+
if are_multiple_platforms:
632+
print(
633+
f"Found {len(platforms_str)} pages with the same name"
634+
f" under the platforms: {', '.join(platforms_str)}."
635+
)
636+
else:
637+
print(
638+
f"Found 1 page with the same name"
639+
f" under the platform: {platforms_str[0]}."
640+
)
564641
except URLError as e:
565642
sys.exit("Error fetching from tldr: {}".format(e))
566643

0 commit comments

Comments
 (0)