From da2d20b458e128683b0b92cd791e15885a2d520b Mon Sep 17 00:00:00 2001 From: Xylar Asay-Davis Date: Wed, 9 Apr 2025 22:37:31 -0600 Subject: [PATCH] Sort versions in dropdown more carefully First, named branches alphabeticaly, then numbered versions from most recent to oldest. --- conda_package/docs/generate_versions_json.py | 31 +++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/conda_package/docs/generate_versions_json.py b/conda_package/docs/generate_versions_json.py index f1b7c7157..47f46c51d 100644 --- a/conda_package/docs/generate_versions_json.py +++ b/conda_package/docs/generate_versions_json.py @@ -2,6 +2,17 @@ import argparse import json import os +import re + + +def version_key(name): + """Key function for sorting versions.""" + match = re.match(r'^(\d+)\.(\d+)\.(\d+)$', name) + if match: + # Sort by major, minor, patch + return tuple(map(int, match.groups())) + return () + # Mode: local or production parser = argparse.ArgumentParser( @@ -22,7 +33,25 @@ raise FileNotFoundError( f"Base directory '{base_dir}' does not exist or is empty.") -versions = sorted(os.listdir(base_dir), reverse=True) +versions = os.listdir(base_dir) +numeric_versions = [] +non_numeric_versions = [] + +for version in versions: + # Check if it matches version pattern + if re.match(r'^\d+\.\d+\.\d+$', version): + numeric_versions.append(version) + else: + non_numeric_versions.append(version) + +# Sort numeric versions by major, minor, patch +numeric_versions.sort(key=version_key) +# Sort non-numeric versions alphabetically +non_numeric_versions.sort() + +# Combine the sorted lists +versions = non_numeric_versions + numeric_versions + if 'master' in versions: versions.insert(0, versions.pop(versions.index('master')))