Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
131 commits
Select commit Hold shift + click to select a range
f870d73
Update LLM cache [skip ci]
actions-user Sep 29, 2025
a5f7dc3
Update non-browsable doc map [skip ci]
actions-user Sep 29, 2025
57d943d
Conversion of HRL Croplands PUM + media
Stina-Gremme Sep 30, 2025
af06cfa
Update LLM cache [skip ci]
actions-user Sep 30, 2025
da0623c
Media url fix in HRL_Croplands doc
mckeea Sep 30, 2025
b6bab21
Update LLM cache [skip ci]
actions-user Sep 30, 2025
0e5d969
Added category to yaml header
Stina-Gremme Sep 30, 2025
58dbaba
Update LLM cache [skip ci]
actions-user Sep 30, 2025
01f9def
Moved HRL Cropland in its own project folder
Stina-Gremme Oct 1, 2025
03d0a4d
Update LLM cache [skip ci]
actions-user Oct 1, 2025
c51e776
converted CLC+ Backbone (in respecitve project folder)
Stina-Gremme Oct 1, 2025
1cfa522
Update LLM cache [skip ci]
actions-user Oct 1, 2025
5bb9fc0
moved HRL Grasslands to specific project folder + renamed existing pr…
Stina-Gremme Oct 1, 2025
ace96d6
Update LLM cache [skip ci]
actions-user Oct 1, 2025
37a1695
moved the converted documents into their respective project folders
Stina-Gremme Oct 1, 2025
bcb2aea
Merge branch 'develop' of https://github.com/eea/CLMS_documents into …
Stina-Gremme Oct 1, 2025
1bfa222
changed date of document from 2025 to 2024
Stina-Gremme Oct 2, 2025
3e761ba
Update LLM cache [skip ci]
actions-user Oct 2, 2025
9bfd4ce
Update non-browsable doc map [skip ci]
actions-user Oct 2, 2025
f50aa61
moved VLCC ATBD to respective product category (HRL Cropland)
Stina-Gremme Oct 2, 2025
f29b67b
Merge branch 'develop' of https://github.com/eea/CLMS_documents into …
Stina-Gremme Oct 2, 2025
bcf73f0
Update LLM cache [skip ci]
actions-user Oct 2, 2025
3f1a9ff
specified file name of CLC+BB User Manual 2021
Stina-Gremme Oct 6, 2025
503ed01
Update LLM cache [skip ci]
actions-user Oct 6, 2025
58c0e19
embedded media correctly
Stina-Gremme Oct 6, 2025
9193da7
Merge branch 'develop' of https://github.com/eea/CLMS_documents into …
Stina-Gremme Oct 6, 2025
f1aeda9
Update LLM cache [skip ci]
actions-user Oct 6, 2025
27c63bb
DOCS dir reorganization
mckeea Oct 8, 2025
66e41a4
cleanup
mckeea Oct 8, 2025
c6156d2
Update LLM cache [skip ci]
actions-user Oct 8, 2025
48ce4dc
config update
mckeea Oct 8, 2025
0de3437
Config update
mckeea Oct 8, 2025
c435120
corrected media embedding
Stina-Gremme Oct 9, 2025
9c92335
Update LLM cache [skip ci]
actions-user Oct 9, 2025
917aba5
corrected media embedding
Stina-Gremme Oct 9, 2025
0fd4a88
Update LLM cache [skip ci]
actions-user Oct 9, 2025
8b8ca4e
retrieved lost pictures in Riparian Zones Nomenclature Guideline
Stina-Gremme Oct 10, 2025
a21b791
test commit
mckeea Oct 13, 2025
c6a918c
corrected file name Coastal Zones version 1
Stina-Gremme Oct 21, 2025
982c329
Update LLM cache [skip ci]
actions-user Oct 21, 2025
0196d2d
embedded the media following the new named media path
Stina-Gremme Oct 21, 2025
e587217
Update LLM cache [skip ci]
actions-user Oct 21, 2025
401f696
added the major version digit to all document file names that were al…
Stina-Gremme Oct 27, 2025
69c66bb
Removed the duplicated contact line
Stina-Gremme Oct 29, 2025
f428f49
Update LLM cache [skip ci]
actions-user Oct 29, 2025
76003e2
Update non-browsable doc map [skip ci]
actions-user Oct 29, 2025
9c41b47
converted CLC+BB 2023 & fixed title of CLC+BB 2021
Stina-Gremme Oct 29, 2025
72cc099
Merge branch 'develop' of https://github.com/eea/CLMS_documents into …
Stina-Gremme Oct 29, 2025
45be6e0
Update LLM cache [skip ci]
actions-user Oct 29, 2025
5c5e22d
Updated category "products"
Stina-Gremme Oct 29, 2025
bf2df50
Update LLM cache [skip ci]
actions-user Oct 30, 2025
4bcee90
correcting document name "+" to "plus"
Stina-Gremme Oct 30, 2025
5ad928a
Merge branch 'develop' of https://github.com/eea/CLMS_documents into …
Stina-Gremme Oct 30, 2025
e230574
Update LLM cache [skip ci]
actions-user Oct 30, 2025
ba7b297
Cleaned up folder structure + file naming following the newest decisi…
Stina-Gremme Nov 10, 2025
b65d6e4
Update LLM cache [skip ci]
actions-user Nov 10, 2025
604b1b9
uploaded original PDF files to convert
Stina-Gremme Nov 19, 2025
16b1443
Update LLM cache [skip ci]
actions-user Nov 19, 2025
06890ec
Renamed folder name
Stina-Gremme Nov 20, 2025
9e578b3
converted pdf to qmd for QC
Stina-Gremme Nov 21, 2025
836cae3
Update LLM cache [skip ci]
actions-user Nov 21, 2025
dd5fbd3
updated python script to include catgeory in Yaml header + converted …
Stina-Gremme Nov 21, 2025
265e9e7
Quality checked CLCplus BB 2023 ATBD
Stina-Gremme Nov 21, 2025
3531970
moved original pdf file in converted folder
Stina-Gremme Nov 21, 2025
25de9cb
Update LLM cache [skip ci]
actions-user Nov 21, 2025
43209ac
Cleaned up document names + file names
Stina-Gremme Nov 21, 2025
6846770
deleted Grassland PUM, to prepare for conversion of new version
Stina-Gremme Nov 21, 2025
9c22933
Update LLM cache [skip ci]
actions-user Nov 21, 2025
d9bd406
Merge branch 'develop' of https://github.com/eea/CLMS_documents into …
mckeea Nov 24, 2025
6f75868
Few files renamed
mckeea Nov 30, 2025
be08b78
Update LLM cache [skip ci]
actions-user Nov 30, 2025
6056d8e
New and upgraded logic for version change detection and changelogs ge…
mckeea Dec 1, 2025
b42c9d0
Merge branch 'develop' of https://github.com/eea/CLMS_documents into …
mckeea Dec 1, 2025
38375e2
Merge branch 'test' into develop
mckeea Dec 1, 2025
f9b040d
Update non-browsable doc map [skip ci]
actions-user Dec 1, 2025
eb05d11
Better naming for PR message/title & squash merge for PR added
mckeea Dec 1, 2025
3f815e7
converted pdf to qmd for quality check
Stina-Gremme Dec 3, 2025
042f5a0
Worked up until some point
Dec 3, 2025
a6108bc
improvement: smart batching for keywords generation
mckeea Dec 4, 2025
64dbe2e
fix: .gitattributes [skip ci]
mckeea Dec 4, 2025
87fd073
Merge branch 'test' into develop
mckeea Dec 4, 2025
1d1a7d0
Update LLM cache [skip ci]
actions-user Dec 4, 2025
319a256
fix: .gitignore [skip ci]
mckeea Dec 4, 2025
b68c29b
Test change whatever
Jan 6, 2026
90448db
changed folder name CORINE_Land_Cover
Jan 6, 2026
4486ad2
Fixed the gitignore file (to include Files_to_convert dir) + converte…
Stina-Gremme Jan 8, 2026
7e5b51f
added: 'restore' functionality
mckeea Jan 26, 2026
be4f3c8
added: .version-history dir
mckeea Jan 26, 2026
e0faca6
fix: increased time for build phase
mckeea Jan 26, 2026
3559560
debug logging for build script
mckeea Jan 26, 2026
9146caa
Test
Jan 27, 2026
4bb53d2
Test
Jan 27, 2026
92205f0
Worked up until line 162
Jan 27, 2026
e731e6a
Added a PNG of a table
Jan 27, 2026
b7d5d4a
Copy-pasted from main
Jan 27, 2026
db30e32
updated: Editor Manual
mckeea Jan 28, 2026
b2c1003
Worked up until line 466
Jan 28, 2026
cb9d319
First draft done
Jan 28, 2026
b9fbfb3
Added HRL SLF 2021 Validation Report + edits to HRL VLCC ATBD v2
Stina-Gremme Jan 29, 2026
e202e5b
Second draft done
Jan 29, 2026
8cb51ac
deleted CLC PUM 2023 for new version
Stina-Gremme Jan 29, 2026
4bc5c0e
deleted CLC+BB 2021 PUM from "Files to convert" because it already ex…
Stina-Gremme Jan 29, 2026
da05221
changed file names to comply with naming convention
Stina-Gremme Jan 29, 2026
8b3f423
Draft 3, up until line 472
Jan 29, 2026
76fbfa2
Third draft, until line 469
Jan 29, 2026
95f5265
Merge branch 'develop' of https://github.com/eea/CLMS_documents into …
Jan 30, 2026
8c1aa78
Quality checked CLCplus BB 2023 PUM
Jan 30, 2026
111b297
Cleaned up after CLCplus BB 2023 PUM QC
Jan 30, 2026
3f36516
Cleaned up after CLCplus BB 2023 QC 2
Jan 30, 2026
7b67ef5
HRL SLF 2021 PUM / worked up until line 480
Jan 30, 2026
9c3ef6e
HRL SLF 2021 PUM / quality checked
Feb 3, 2026
bf95629
HRL SLF 2021 PUM / cleaned up
Feb 3, 2026
ce572d4
UA 2021 / imported PUM and ATBD
Feb 3, 2026
490230d
UA 2021 / converted PUM and ATBD
Feb 3, 2026
8e13b74
UA 2021 PUM / first draft
Feb 3, 2026
4735185
debug: turn off 'quiet' mode for quarto
mckeea Feb 4, 2026
114f431
CLCplus BB 2023 PUM / deleted the "format" section
Feb 4, 2026
a640a11
Merge branch 'develop' of https://github.com/eea/CLMS_documents into …
Feb 4, 2026
24efc49
HRL SLF 2021 PUM / deleted the "format" section + cleaned up
Feb 4, 2026
c7d7687
UA 2021 PUM / quality checked
Feb 5, 2026
e0bb18e
UA 2021 PUM / cleaned up
Feb 5, 2026
415d1a6
CLCplus BB 2023, HRL SLF 2021, UA 2021 / changed the titles of the PU…
Feb 5, 2026
86f08ca
UA LULC 2021 + 2024 PUM / updated to v1.2
Feb 5, 2026
470a534
UA LULC 2021 + 2024 ATBD / did prep work for v1.2
Feb 5, 2026
8a12589
UA LCLU 2021 + 2024 PUM / updated document history to v1.2
Feb 5, 2026
482db5e
UA LCLU 2021 ATBD / updated to v1.2
Feb 6, 2026
7fd3816
UA LCLU 2021 ATBD / updated to v1.2
Feb 6, 2026
72b62f3
UA LCLU 2021 ATBD / cleaned up
Feb 6, 2026
023fc6f
CLC PUM / converted to QMD
Feb 6, 2026
c552823
HRL SLF 2021 ATBD + VR / worked, noticed the wrong versions
Feb 6, 2026
a079d9f
Merge branch 'test' into develop
mckeea Feb 9, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
31 changes: 26 additions & 5 deletions .github/scripts/build-docs.sh
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ fi

# Render all files together (changelog filter uses original-filename from YAML headers)
echo "🔄 Rendering all documents to HTML..."
QUARTO_CHROMIUM_HEADLESS_MODE=new quarto render --to html --no-clean
QUARTO_CHROMIUM_HEADLESS_MODE=new quarto render --to html --no-clean

# Backup the correct sitemap as it may be overwritten by next operations
sleep 5
Expand All @@ -57,17 +57,38 @@ node ../.github/scripts/generate_index_all.mjs
echo "📄 Render only index.qmd files using 'index' profile"
mv _quarto.yml _quarto_not_used.yml
mv _quarto-index.yml _quarto.yml
index_count=$(find ./ -type f -name index.qmd | wc -l)
echo " Rendering $index_count index files..."
find ./ -type f -name index.qmd -print0 | while IFS= read -r -d '' src; do
echo "🔧 Rendering $src using profile=index..."
QUARTO_CHROMIUM_HEADLESS_MODE=new quarto render "$src" --profile index --to html --no-clean $QUARTO_FLAGS
QUARTO_CHROMIUM_HEADLESS_MODE=new quarto render "$src" --profile index --to html --no-clean --quiet $QUARTO_FLAGS
done
mv _quarto.yml _quarto-index.yml
cp _quarto_not_used.yml _quarto.yml && rm _quarto_not_used.yml


echo "📄 Converting .docx files to .pdf..."
timeout 3s ../.github/scripts/convert_docx_to_pdf.sh || true
timeout 10m ../.github/scripts/convert_docx_to_pdf.sh
docx_count=$(find _site -name "*.docx" -type f | wc -l)
echo " Found $docx_count DOCX files to convert"

# Quick 3-second test run
echo " Running quick test conversion..."
timeout 3s ../.github/scripts/convert_docx_to_pdf.sh 2>&1 | head -20 || true

# Full conversion with detailed error reporting
echo " Starting full PDF conversion (timeout: 20m)..."
if ! timeout 20m ../.github/scripts/convert_docx_to_pdf.sh 2>&1 | tee conversion.log; then
exit_code=$?
echo "❌ PDF conversion failed with exit code: $exit_code"
echo " Last 30 lines of output:"
tail -30 conversion.log
echo " DOCX files present:"
find _site -name "*.docx" -type f | head -10
exit $exit_code
fi

echo "✅ PDF conversion completed successfully"
pdf_count=$(find _site -name "*.pdf" -type f | wc -l)
echo " Generated $pdf_count PDF files"

# Clean up DOCX files if requested (they're only needed for PDF conversion)
if [[ -n "$SKIP_DOCX" ]]; then
Expand Down
17 changes: 8 additions & 9 deletions .github/scripts/external_publish_main.sh
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,8 @@ get_changed_files() {
git ls-tree -r --name-only "$PUBLISH_COMMIT" > changed-files.txt
# Remove specific files we want to ignore
sed -i '/^\.gitignore$/d; /^\.github\/workflows\/trigger\.yml$/d' changed-files.txt
cat changed-files.txt
file_count=$(wc -l < changed-files.txt)
echo "Found $file_count changed file(s)"
}

check_files_within_project() {
Expand Down Expand Up @@ -73,10 +74,7 @@ check_for_changes() {
return 1
fi

echo "✅ Modified files:"
printf '%s\n' "${MODIFIED_FILES[@]}"
echo "🗑️ Deleted files:"
printf '%s\n' "${DELETED_FILES[@]}"
echo "✅ Changes detected: ${#MODIFIED_FILES[@]} modified, ${#DELETED_FILES[@]} deleted"

return 0
}
Expand All @@ -95,10 +93,11 @@ apply_file_changes() {
run_git "removing deleted files" rm "${DELETED_FILES[@]}"
fi

# Stage modified files
for file in "${MODIFIED_FILES[@]}"; do
run_git "adding $file to staging" add "$file"
done
# Stage all modified files at once
if [ "${#MODIFIED_FILES[@]}" -gt 0 ]; then
git add "${MODIFIED_FILES[@]}" 2>&1 | head -1 || true
echo "Staged ${#MODIFIED_FILES[@]} modified file(s)"
fi
}

generate_commit_message() {
Expand Down
71 changes: 30 additions & 41 deletions .github/scripts/group_docs_by_category.py
Original file line number Diff line number Diff line change
Expand Up @@ -146,6 +146,11 @@ def group_qmd_files_by_category(source_dir="origin_DOCS", target_dir="DOCS"):
secret_mappings = load_secret_map()
updated = False

# Counters for summary
categorized_count = 0
non_browsable_count = 0
new_non_browsable_assignments = 0

# Find all .qmd files
qmd_files = [
f
Expand Down Expand Up @@ -179,15 +184,13 @@ def group_qmd_files_by_category(source_dir="origin_DOCS", target_dir="DOCS"):
secret_mappings, rel_source, base, url
)
updated = True
new_non_browsable_assignments += 1
print(
f"\t[non-browsable] Assigned new random base '{base}' for {rel_source}"
)
else:
base = mapping["base"]
url = mapping["url"]
print(
f"\t[non-browsable] Using existing base '{base}' for {rel_source}"
)

target_file = nb_dir / f"{base}.qmd"
shutil.copy2(qmd_file, target_file)
Expand All @@ -202,9 +205,6 @@ def group_qmd_files_by_category(source_dir="origin_DOCS", target_dir="DOCS"):
if target_media_dir.exists():
shutil.rmtree(target_media_dir)
shutil.copytree(orig_media_dir, target_media_dir)
print(
f"\t\tCopied media directory: {base}-media (renamed for non-browsable)"
)
# Update references in the copied .qmd file
try:
with open(target_file, "r", encoding="utf-8") as f:
Expand All @@ -215,16 +215,11 @@ def group_qmd_files_by_category(source_dir="origin_DOCS", target_dir="DOCS"):
content = content.replace(old_media, new_media)
with open(target_file, "w", encoding="utf-8") as f:
f.write(content)
print(
f"\t\tRewrote media references in {base}.qmd (non-browsable)"
)
except Exception as e:
print(
f"\t\t[ERROR] Failed to rewrite media references in {base}.qmd: {e}"
)
print(
f"\t[non-browsable] Copied {qmd_file.name} → non-browsable/{base}.qmd (non-browsable)"
)
non_browsable_count += 1
else:
# Normal doc: group by category, prefix with project name to avoid collisions
target_directory = get_directory_for_category(category)
Expand All @@ -245,7 +240,6 @@ def group_qmd_files_by_category(source_dir="origin_DOCS", target_dir="DOCS"):
if target_media_dir.exists():
shutil.rmtree(target_media_dir)
shutil.copytree(orig_media_dir, target_media_dir)
print(f"\t\tCopied media directory: {prefix}{qmd_file.stem}-media")
# Rewrite media references in the copied QMD file
if prefix:
try:
Expand All @@ -258,41 +252,30 @@ def group_qmd_files_by_category(source_dir="origin_DOCS", target_dir="DOCS"):
content = content.replace(old_media, new_media)
with open(target_file, "w", encoding="utf-8") as f:
f.write(content)
print(
f"\t\tRewrote media references in {prefix}{qmd_file.name}"
)
except Exception as e:
print(
f"\t\t[ERROR] Failed to rewrite media references in {prefix}{qmd_file.name}: {e}"
)
if category:
if category in CATEGORY_TO_DIRECTORY_MAP:
print(
f"\tCopied {qmd_file.name} → {target_directory}/ as {prefix}{qmd_file.name} (category: {category})"
)
else:
print(
f"\tCopied {qmd_file.name} → {target_directory}/ as {prefix}{qmd_file.name}"
)
else:
print(
f"\tCopied {qmd_file.name} → {target_directory}/ as {prefix}{qmd_file.name} (no category found)"
)
categorized_count += 1

# Save updated secret mapping if changed
if updated:
save_secret_map(secret_mappings)
print(f"[non-browsable] Updated mapping file: {NON_BROWSABLE_MAP_PATH}")
else:
print(f"[non-browsable] No changes to mapping file: {NON_BROWSABLE_MAP_PATH}")
if new_non_browsable_assignments > 0:
print(
f"[non-browsable] Created {new_non_browsable_assignments} new URL mappings"
)

# Save path mappings for changelog system
mapping_file = target_path / "_meta" / ".temp_path_mapping.json"
import json

with open(mapping_file, "w", encoding="utf-8") as f:
json.dump(path_mappings, f, indent=2)
print(f"[path-mapping] Saved {len(path_mappings)} path mappings to {mapping_file}")

print(
f"Processed {len(qmd_files)} files: {categorized_count} categorized, {non_browsable_count} non-browsable."
)


def copy_excluded_dirs(source_dir="origin_DOCS", target_dir="DOCS"):
Expand All @@ -317,6 +300,7 @@ def inject_original_filename_in_qmd_files(docs_dir="origin_DOCS"):
print("Injecting original filename field into QMD files...")

processed_files = 0
skipped_files = 0

# Find all .qmd files in the docs directory
for qmd_file in docs_path.rglob("*.qmd"):
Expand All @@ -337,13 +321,15 @@ def inject_original_filename_in_qmd_files(docs_dir="origin_DOCS"):
print(
f" Warning: {qmd_file.name} doesn't have YAML header, skipping"
)
skipped_files += 1
continue

parts = content.split("---", 2)
if len(parts) < 3:
print(
f" Warning: {qmd_file.name} has malformed YAML header, skipping"
)
skipped_files += 1
continue

yaml_header = parts[1]
Expand All @@ -370,15 +356,15 @@ def inject_original_filename_in_qmd_files(docs_dir="origin_DOCS"):
with open(qmd_file, "w", encoding="utf-8") as file:
file.write(new_content)

print(
f" Added original-filename: {original_filename_field} to {qmd_file.name}"
)
processed_files += 1

except Exception as e:
print(f" Error processing {qmd_file.name}: {e}")
skipped_files += 1

print(f"Processed {processed_files} QMD files with original filename injection.")
print(f"Processed {processed_files} QMD files successfully.")
if skipped_files > 0:
print(f"Skipped {skipped_files} files due to errors or missing headers.")


def update_bibliography_paths_before_regroup(
Expand All @@ -394,6 +380,7 @@ def update_bibliography_paths_before_regroup(

processed_projects = 0
processed_qmd_files = 0
moved_bib_files = 0

for project_dir in docs_path.iterdir():
if not project_dir.is_dir() or project_dir.name in EXCLUDED_DOCS_DIRS:
Expand Down Expand Up @@ -430,14 +417,18 @@ def update_bibliography_paths_before_regroup(
for qmd_file in qmd_files:
if update_qmd_bibliography_reference(qmd_file, new_bib_reference):
processed_qmd_files += 1
print(f" Updated {qmd_file.name}")

# Move .bib file to new location
shutil.copy2(original_bib, new_bib_path)
print(f" Moved {original_bib.name} -> {new_bib_path}")
moved_bib_files += 1

processed_projects += 1

if processed_projects > 0:
print(
f"Processed {processed_projects} projects: updated {processed_qmd_files} files, moved {moved_bib_files} bibliography files."
)


def update_qmd_bibliography_reference(qmd_file_path, new_bib_reference):
try:
Expand Down Expand Up @@ -480,10 +471,8 @@ def update_qmd_bibliography_reference(qmd_file_path, new_bib_reference):
with open(qmd_file_path, "w", encoding="utf-8") as file:
file.write(new_content)

print(f" {old_bib_ref} -> {new_bib_reference}")
return True
else:
print(f" No bibliography field in YAML header, skipping")
return False

except Exception as e:
Expand Down
Loading
Loading