Skip to content

Commit da2d20b

Browse files
committed
Sort versions in dropdown more carefully
First, named branches alphabeticaly, then numbered versions from most recent to oldest.
1 parent d9b3f96 commit da2d20b

1 file changed

Lines changed: 30 additions & 1 deletion

File tree

conda_package/docs/generate_versions_json.py

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,17 @@
22
import argparse
33
import json
44
import os
5+
import re
6+
7+
8+
def version_key(name):
9+
"""Key function for sorting versions."""
10+
match = re.match(r'^(\d+)\.(\d+)\.(\d+)$', name)
11+
if match:
12+
# Sort by major, minor, patch
13+
return tuple(map(int, match.groups()))
14+
return ()
15+
516

617
# Mode: local or production
718
parser = argparse.ArgumentParser(
@@ -22,7 +33,25 @@
2233
raise FileNotFoundError(
2334
f"Base directory '{base_dir}' does not exist or is empty.")
2435

25-
versions = sorted(os.listdir(base_dir), reverse=True)
36+
versions = os.listdir(base_dir)
37+
numeric_versions = []
38+
non_numeric_versions = []
39+
40+
for version in versions:
41+
# Check if it matches version pattern
42+
if re.match(r'^\d+\.\d+\.\d+$', version):
43+
numeric_versions.append(version)
44+
else:
45+
non_numeric_versions.append(version)
46+
47+
# Sort numeric versions by major, minor, patch
48+
numeric_versions.sort(key=version_key)
49+
# Sort non-numeric versions alphabetically
50+
non_numeric_versions.sort()
51+
52+
# Combine the sorted lists
53+
versions = non_numeric_versions + numeric_versions
54+
2655
if 'master' in versions:
2756
versions.insert(0, versions.pop(versions.index('master')))
2857

0 commit comments

Comments
 (0)