diff --git a/.github/workflows/adoc_build.yml b/.github/workflows/adoc_build.yml deleted file mode 100644 index 2871aece..00000000 --- a/.github/workflows/adoc_build.yml +++ /dev/null @@ -1,136 +0,0 @@ -# -# GitHub Actions Workflow for building and publishing the CF conventions and -# conformance docs. -# -# Pull request events against the main branch trigger jobs to build the -# documents. If successful, the resulting html and pdf files are uploaded as -# artifacts to make it easier to preview the impacts of a PR on the -# documentation. -# -# When a PR is accepted and merged into main, the documents are built and -# published to the root directory of the gh-pages branch. -# -# When a GitHub release is published, the documents are built and published to -# on the gh-pages branch in a directory named after the release (e.g. v1.9.0/). -# -# For more information on the actions used in this workflow, please see: -# https://github.com/actions/checkout -# https://github.com/Analog-inc/asciidoctor-action -# https://github.com/actions/upload-artifact -# https://github.com/actions/download-artifact -# -name: Asciidoctor Build Workflow -on: - # manually run workflow - workflow_dispatch: - # trigger on PR event against main (will not run publish job) - pull_request: - branches: [ main ] - # Trigger on a push to main (a PR is merged), or when a release is - # published on github. These will run the publish job. - push: - branches: - - main - # Trigger when a GitHub release is published. - release: - types: - - published -jobs: - # Job to build cf-conventions.html, cf-conventions.pdf - build_conventions_and_conformance: - name: Build cf-conventions and conformance html and pdf - runs-on: ubuntu-latest - steps: - # Check out PR - - uses: actions/checkout@v4 - # If it is release event, tag for final - - name: If it is a release add the "final" tag and date timestamp formatting - if: github.event_name == 'release' - run: | - echo "CF_FINAL=True" >> "$GITHUB_ENV" - # Build cf-conventions.html using the Analog-inc asciidoctor-action - - name: Make ALL - uses: Analog-inc/asciidoctor-action@v1 - with: - shellcommand: 'make all' - - name: Copy index.html - run: | - sudo cp -p .github/gh-pages/index.html build/ - - # Upload artifact containing cf-conventions.html, cf-conventions.pdf - - name: Save cf-conventions and conformance docs - uses: actions/upload-artifact@v4 - with: - name: convention_and_conformance_docs - path: build/ - # Use artifacts from the build_conventions, build_conformance, and - # images_artifact jobs to update the gh-pages branch. The location of the - # files to be updated depend on whether the job it triggered from a PR merge - # into main (files in the base directory are updated), or if the job is - # triggered by the publication of a release on github (new files are created - # in a directory named after the release name). - publish: - name: Release cf-conventions and conformance html and pdf - # Do not run on pull requests - if: github.event_name != 'pull_request' - # Wait for the build artifacts to become available - needs: [build_conventions_and_conformance] - runs-on: ubuntu-latest - steps: - # Checkout gh-pages branch - - uses: actions/checkout@v4 - with: - ref: 'gh-pages' - # Will new docs go into root, or into a directory named after the - # release? - - name: Determine where the new documents should live - run: | - if [[ ${{ github.event_name }} == 'release' ]]; then - # ${GITHUB_REF##*/} -> turns refs/tags/vM.m.p into vM.m.p - echo "TARGET_DIR=${GITHUB_REF##*/}" >> "$GITHUB_ENV" - else - echo "TARGET_DIR=." >> "$GITHUB_ENV" - fi - # Obtain the build artifacts from the previous jobs and place them in the - # build/ directory - - uses: actions/download-artifact@v4 - with: - name: convention_and_conformance_docs - path: build/ - # If we are doing a release, we need to create the release directory - - name: Make release directory - if: github.event_name == 'release' - run: mkdir -p ${{ env.TARGET_DIR }} - # If we are not doing a release, let's clean out the previous images - # directory in the root directory - - name: Remove old images directory - if: github.event_name != 'release' - run: rm -rf ${{ env.TARGET_DIR }}/images - - name: Copy conventions and conformance documents - run: | - cp -p build/cf-conventions.html ${{ env.TARGET_DIR }}/ - cp -p build/cf-conventions.pdf ${{ env.TARGET_DIR }}/ - cp -p build/conformance.html ${{ env.TARGET_DIR }}/ - cp -p build/conformance.pdf ${{ env.TARGET_DIR }}/ - cp -p build/index.html ${{ env.TARGET_DIR }}/ - # Remove the directory that held the artifacts so that it does not get - # committed to the gh-pages branch - - name: Remove artifact directory - run: rm -rf build/ - # If we are doing a release, update the index.html file to reflect the new - # latest release version. - - name: Update release index.html to point to new release - if: github.event_name == 'release' - run: | - sed -i s/Latest/"${GITHUB_REF##*/}"/ ${{ env.TARGET_DIR }}/index.html; - # Stage all changed files to git - - name: Add all changes to git - run: git add --all - # Configure git to use the built-in repo credentials, commit changes, and - # push to the gh-pages branch - - name: Commit changes and push to gh-pages branch - run: | - git config user.name github-actions - git config user.email github-actions@github.com - git commit -m "Auto-generated from ${GITHUB_REPOSITORY}@${GITHUB_SHA}" - git push diff --git a/.github/workflows/build_and_deploy_docs.yml b/.github/workflows/build_and_deploy_docs.yml new file mode 100644 index 00000000..1c5c5088 --- /dev/null +++ b/.github/workflows/build_and_deploy_docs.yml @@ -0,0 +1,186 @@ +# +# GitHub Actions Workflow for building and publishing the CF conventions and +# conformance docs. +# +# For more information on the actions used in this workflow, please see: +# https://github.com/actions/checkout +# https://github.com/Analog-inc/asciidoctor-action +# https://github.com/actions/upload-artifact +# https://github.com/actions/download-artifact + +name: Asciidoctor Build Workflow +on: + workflow_dispatch: # Manual trigger + pull_request: # On pull request to main + branches: [main] + push: # On push any branch (excluding gh-pages) + branches-ignore: [gh-pages] + release: # On release published + types: + - published + +# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages +permissions: + contents: write + pages: write + id-token: write + +# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued. +# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete. +concurrency: + group: "pages" + cancel-in-progress: false + +env: + DESIRED_BRANCH: "gh-pages" # Branch to use for GitHub Pages + DESIRED_PATH: "/" # Path to use for GitHub Pages + DESIRED_BUILD_TYPE: "legacy" # Build type for GitHub Pages + GH_TOKEN: ${{ github.token }} + +jobs: + # Job to build documents + build_docs: + name: Build Documentation + runs-on: ubuntu-latest + + steps: + - name: Checkout Repository + uses: actions/checkout@v4 + + - name: Set Release Tag and Date + if: github.event_name == 'release' + run: | + echo "CF_FINAL=True" >> $GITHUB_ENV + + - name: Build Documentation + uses: Analog-inc/asciidoctor-action@v1 + with: + shellcommand: 'make all' + + - name: Prepare and Update Index Page + run: | + sudo cp -p .github/gh-pages/index.html build/ + PATH_REVISION="${GITHUB_REPOSITORY}/${GITHUB_REF_TYPE}/${GITHUB_REF_NAME}@${GITHUB_SHA:0:7}" + sudo sed -i "s/Latest/${PATH_REVISION//\//\\/}/" build/index.html + + - name: Upload Artifacts + uses: actions/upload-artifact@v4 + with: + name: documentation_artifacts + path: build/ + + + # Job to publish documentation to GitHub Pages + publish_docs: + name: Publish Documentation + runs-on: ubuntu-latest + needs: build_docs + if: github.event_name != 'pull_request' + + steps: + - name: Verify Pre-installed Tools + run: | + jq --version + tree --version + gh --version + + - name: Checkout Repository + uses: actions/checkout@v4 + + - name: Check and Create GH Pages Branch + run: | + if ! git ls-remote --exit-code origin gh-pages > /dev/null; then + echo "Creating the $DESIRED_BRANCH branch..." + git checkout --orphan $DESIRED_BRANCH + git rm -rf . || true + echo "# GitHub Pages" > index.html + git add index.html + git commit -m "Initialize $DESIRED_BRANCH branch" + git push origin $DESIRED_BRANCH + else + echo "The $DESIRED_BRANCH branch already exists." + fi + + - name: Enforce GitHub Pages Configuration + run: | + # Fetch current GitHub Pages configuration + API_RESPONSE=$(gh api repos/${{ github.repository }}/pages || echo "{}") + + # Extract current configuration + IS_ENABLED=$(echo "$API_RESPONSE" | jq -r '.source // empty') + BUILD_TYPE=$(echo "$API_RESPONSE" | jq -r '.build_type // empty') + SOURCE_BRANCH=$(echo "$API_RESPONSE" | jq -r '.source.branch // empty') + SOURCE_PATH=$(echo "$API_RESPONSE" | jq -r '.source.path // empty') + + # Enforce configuration if any setting is incorrect or GitHub Pages is not enabled + if [[ -z "$IS_ENABLED" ]] || [[ "$BUILD_TYPE" != "$DESIRED_BUILD_TYPE" ]] || [[ "$SOURCE_BRANCH" != "$DESIRED_BRANCH" ]] || [[ "$SOURCE_PATH" != "$DESIRED_PATH" ]]; then + echo "Enforcing GitHub Pages configuration..." + gh api repos/${{ github.repository }}/pages \ + --method POST \ + --input - <<< "{\"source\":{\"branch\":\"$DESIRED_BRANCH\",\"path\":\"$DESIRED_PATH\"}, \"build_type\":\"$DESIRED_BUILD_TYPE\"}" + echo "GitHub Pages has been configured: Branch='${DESIRED_BRANCH}', Path='${DESIRED_PATH}', Build Type='${DESIRED_BUILD_TYPE}'." + else + echo "GitHub Pages is already configured correctly: Branch='${DESIRED_BRANCH}', Path='${DESIRED_PATH}', Build Type='${DESIRED_BUILD_TYPE}'." + fi + + - name: Checkout gh-pages Branch into Subdirectory + uses: actions/checkout@v4 + with: + repository: ${{ github.repository }} + ref: ${{ env.DESIRED_BRANCH }} + path: gh-pages + + - name: Determine Target Directory and Add .nojekyll + run: | + cd gh-pages + # Ensure .nojekyll exists + [ ! -f .nojekyll ] && touch .nojekyll + # Determine target directory based on the event type + if [[ ${{ github.event_name }} == 'release' ]]; then + echo "TARGET_DIR=release/${GITHUB_REF_NAME}" >> $GITHUB_ENV + else + echo "TARGET_DIR=${GITHUB_REF_TYPE}/${GITHUB_REF_NAME}" >> $GITHUB_ENV + fi + + - name: Download Artifacts + uses: actions/download-artifact@v4 + with: + name: documentation_artifacts + path: gh-pages/build/ + + - name: Verify Build Artifacts + run: | + cd gh-pages + if [ ! "$(ls -A build)" ]; then + echo "Build artifacts are missing!" >&2 + exit 1 + fi + + - name: Publish Documentation + run: | + cd gh-pages + mkdir -p ${{ env.TARGET_DIR }} + cp -p build/* ${{ env.TARGET_DIR }}/ + rm -rf build/ + tree -T "${GITHUB_REPOSITORY}" --dirsfirst --prune --noreport \ + -I "index.html|README.md" -H . -o index.html + + - name: Commit and Push Changes + run: | + cd gh-pages + git add --all + git config user.name "github-actions[bot]" + git config user.email "github-actions[bot]@users.noreply.github.com" + git commit -m "Update documentation from ${GITHUB_REPOSITORY}@${GITHUB_SHA}" || echo "No changes to commit; skipping push." + git push + + - name: Upload Documentation files as Release Asset + if: github.event_name == 'release' + run: | + export TARGET_DIR=${{ env.TARGET_DIR }} + gh release upload ${{ github.event.release.tag_name }} \ + gh-pages/${TARGET_DIR}/cf-conventions.html \ + gh-pages/${TARGET_DIR}/cf-conventions.pdf \ + gh-pages/${TARGET_DIR}/conformance.html \ + gh-pages/${TARGET_DIR}/conformance.pdf \ + --clobber diff --git a/.gitignore b/.gitignore index 662b639a..50afdd97 100644 --- a/.gitignore +++ b/.gitignore @@ -8,4 +8,5 @@ conventions_build/ conformance.html conformance.pdf conformance_build/ +build/ .vscode/ diff --git a/.zenodo.json b/.zenodo.json index 8d88ed27..86e95c57 100644 --- a/.zenodo.json +++ b/.zenodo.json @@ -1,236 +1,76 @@ { - "title": "NetCDF Climate and Forecast (CF) Metadata Conventions", - "description": "This document describes the CF conventions for climate and forecast metadata designed to promote the processing and sharing of files created with the netCDF Application Programmer Interface. The conventions define metadata that provide a definitive description of what the data in each variable represents, and of the spatial and temporal properties of the data. This enables users of data from different sources to decide which quantities are comparable, and facilitates building applications with powerful extraction, regridding, and display capabilities. The CF conventions generalize and extend the COARDS conventions. The extensions include metadata that provides a precise definition of each variable via specification of a standard name, describes the vertical locations corresponding to dimensionless vertical coordinate values, and provides the spatial coordinates of non-rectilinear gridded data. Since climate and forecast data are often not simply representative of points in space/time, other extensions provide for the description of coordinate intervals, multidimensional cells and climatological time coordinates, and indicate how a data value is representative of an interval or cell. This standard also relaxes the COARDS constraints on dimension order and specifies methods for reducing the size of datasets.", - "license": "CC0-1.0", - "creators": [ - { - "name": "Brian Eaton", - "affiliation": "NCAR" - }, - { - "name": "Jonathan Gregory", - "affiliation": "University of Reading and UK Met Office Hadley Centre", - "orcid": "0000-0003-1296-8644" - }, - { - "name": "Bob Drach", - "affiliation": "PCMDI, LLNL" - }, - { - "name": "Karl Taylor", - "affiliation": "PCMDI, LLNL", - "orcid": "0000-0002-6491-2135" - }, - { - "name": "Steve Hankin", - "affiliation": "PMEL, NOAA" - }, - { - "name": "Jon Blower", - "affiliation": "University of Reading" - }, - { - "name": "John Caron", - "affiliation": "Unidata" - }, - { - "name": "Rich Signell", - "affiliation": "USGS" - }, - { - "name": "Phil Bentley", - "affiliation": "UK Met Office" - }, - { - "name": "Greg Rappa", - "affiliation": "MIT" - }, - { - "name": "Heinke Höck", - "affiliation": "DKRZ", - "orcid": "0000-0002-0131-1404" - }, - { - "name": "Alison Pamment", - "affiliation": "NCAS and CEDA", - "orcid": "0000-0001-5040-4626" - }, - { - "name": "Martin Juckes", - "affiliation": "NCAS" - }, - { - "name": "Martin Raspaud", - "affiliation": "SMHI" - }, - { - "name": "Randy Horne", - "affiliation": "Excalibur Laboratories Inc" - }, - { - "name": "Timothy Whiteaker", - "affiliation": "University of Texas" - }, - { - "name": "David Blodgett", - "affiliation": "USGS" - }, - { - "name": "Charlie Zender", - "affiliation": "UC Irvine" - }, - { - "name": "Daniel Lee", - "affiliation": "EUMETSAT", - "orcid": "0000-0002-1041-232X" - }, - { - "name": "David Hassell", - "affiliation": "NCAS and University of Reading", - "orcid": "0000-0001-5106-7502" - }, - { - "name": "Alan D. Snow", - "affiliation": "Corteva Agriscience" - }, - { - "name": "Tobias Kölling", - "affiliation": "Max Planck Institute for Meteorology" - }, - { - "name": "Dave Allured", - "affiliation": "NOAA/CIRES/University of Colorado" - }, - { - "name": "Aleksandar Jelenak", - "affiliation": "HDF Group" - }, - { - "name": "Anders Meier Soerensen", - "affiliation": "EUMETSAT" - }, - { - "name": "Lucile Gaultier", - "affiliation": "OceanDataLab" - }, - { - "name": "Sylvain Herlédan", - "affiliation": "OceanDataLab" - }, - { - "name": "Fernando Manzano", - "affiliation": "Puertos del Estado, Madrid" - }, - { - "name": "Lars Bärring", - "affiliation": "SMHI Rossby Centre, Swedish Meteorological and Hydrological Institute", - "orcid": "0000-0001-7280-2502" - }, - { - "name": "Christopher Barker", - "affiliation": "NOAA" - }, - { - "name": "Sadie L. Bartholomew", - "affiliation": "National Centre for Atmospheric Science and University of Reading", - "orcid": "0000-0002-6180-3603" - } - ], - "contributors": [ - {"name": "Ryan Abernathey", "affiliation": "Columbia University"}, - {"name": "Ben Adams", "affiliation": "RPS group"}, - {"name": "Dave Allured", "affiliation": "NOAA/CIRES/University of Colorado"}, - {"name": "Abel Aoun", "affiliation": "EUMETSAT"}, - {"name": "Sean Arms", "affiliation": "SpectraLogic"}, - {"name": "Balaji", "affiliation": "NOAA and Princeton University"}, - {"name": "Christopher Barker", "affiliation": "NOAA"}, - {"name": "Andrew Barna", "affiliation": "SIO/UCSD"}, - {"name": "Lars Bärring", "affiliation": "SMHI Rossby Centre, Swedish Meteorological and Hydrological Institute", "orcid": "0000-0001-7280-2502"}, - {"name": "Sadie L. Bartholomew", "affiliation": "National Centre for Atmospheric Science and University of Reading", "orcid": "0000-0002-6180-3603"}, - {"name": "Abby Benson", "affiliation": "USGS"}, - {"name": "Phil Bentley", "affiliation": "UK Met Office"}, - {"name": "Jim Biard", "affiliation": "NOAA"}, - {"name": "Leon Bilton", "affiliation": "ANU"}, - {"name": "David Blodgett", "affiliation": "USGS"}, - {"name": "Jon Blower", "affiliation": "University of Reading"}, - {"name": "Benno Blumenthal", "affiliation": "Columbia University"}, - {"name": "Philip Cameron-Smith", "affiliation": "LLNL"}, - {"name": "John Caron", "affiliation": "Unidata"}, - {"name": "Guilherme Castelão", "affiliation": "Scripps Institution of Oceanography, UC San Diego", "orcid": "0000-0002-6765-0708"}, - {"name": "Antonio S. Cofi\u00f1o", "affiliation": "Institute of Physics of Cantabria, CSIC-UC", "orcid": "0000-0001-7719-979X"}, - {"name": "Lorenzo Corgnati", "affiliation": "CNR-ISMAR"}, - {"name": "Ethan Davis", "affiliation": "NSF Unidata", "orcid": "0000-0002-8530-2213"}, - {"name": "Cecelia DeLuca", "affiliation": "NOAA"}, - {"name": "Martin Desruisseaux", "affiliation": "Geomatys"}, - {"name": "Francisco Doblas-Reyes", "affiliation": "ECMWF"}, - {"name": "Bob Drach", "affiliation": "PCMDI, LLNL"}, - {"name": "Alan D. Snow", "affiliation": "Corteva Agriscience"}, - {"name": "Brian Eaton", "affiliation": "NCAR"}, - {"name": "Steve Emmerson", "affiliation": "Unidata"}, - {"name": "Jesus Fernandez", "affiliation": "Universidad de Cantabria"}, - {"name": "Nan Galbraith", "affiliation": "WHOI"}, - {"name": "Lucile Gaultier", "affiliation": "OceanDataLab"}, - {"name": "Beate Geyer", "affiliation": "GKSS"}, - {"name": "\u00d8ystein God\u00f8y", "affiliation": "NMI"}, - {"name": "John Graybeal", "affiliation": "Stanford University"}, - {"name": "Jonathan Gregory", "affiliation": "University of Reading and UK Met Office Hadley Centre", "orcid": "0000-0003-1296-8644"}, - {"name": "Tom Gross", "affiliation": "NOAA"}, - {"name": "Magnus Hagdorn", "affiliation": "University of Edinburgh"}, - {"name": "Steve Hankin", "affiliation": "PMEL, NOAA"}, - {"name": "David Hassell", "affiliation": "NCAS and University of Reading", "orcid": "0000-0001-5106-7502"}, - {"name": "Rosalyn Hatcher", "affiliation": "NCAS and University of Reading"}, - {"name": "Richard Hattersley", "affiliation": "UK Met Office"}, - {"name": "Mark Hedley", "affiliation": "UK Met Office"}, - {"name": "Angelika Heil", "affiliation": "DKRZ"}, - {"name": "Dan Hollis", "affiliation": "UK Met Office"}, - {"name": "Sylvain Herl\u00e9dan", "affiliation": "OceanDataLab"}, - {"name": "Heinke Höck", "affiliation": "DKRZ", "orcid": "0000-0002-0131-1404"}, - {"name": "Gerrit Holl", "affiliation": "Deutscher Wetterdienst"}, - {"name": "Randy Horne", "affiliation": "Excalibur Laboratories Inc"}, - {"name": "Bert Jagers", "affiliation": "Deltares"}, - {"name": "Aleksandar Jelenak", "affiliation": "HDF Group"}, - {"name": "Steve Jones", "affiliation": "University of Bergen"}, - {"name": "Martin Juckes", "affiliation": "NCAS"}, - {"name": "Tobias Kölling", "affiliation": "Max Planck Institute for Meteorology"}, - {"name": "Dalton Kell", "affiliation": "AER"}, - {"name": "Jamie Kettleborough", "affiliation": "UK Met Office"}, - {"name": "Heiko Klein", "affiliation": "NMI"}, - {"name": "Luis Kornblueh", "affiliation": "MPIM"}, - {"name": "Peter Kuma", "affiliation": "Stockholm University"}, - {"name": "Thomas Lavergne", "affiliation": "NMI"}, - {"name": "Bryan Lawrence", "affiliation": "NCAS and University of Reading"}, - {"name": "Daniel Lee", "affiliation": "EUMETSAT", "orcid": "0000-0002-1041-232X"}, - {"name": "Danny Lloyd", "affiliation": "NCAS"}, - {"name": "Roy Lowry", "affiliation": "BODC"}, - {"name": "Joao Macedo", "affiliation": "IPMA"}, - {"name": "Ken Mankoff", "affiliation": "NASA GISS"}, - {"name": "Fernando Manzano", "affiliation": "Puertos del Estado, Madrid"}, - {"name": "Seth McGinnis", "affiliation": "NCAR"}, - {"name": "Kai M\u00fchlbauer", "affiliation": "University of Bonn"}, - {"name": "Don Murray", "affiliation": "Unidata"}, - {"name": "Daniel Neumann", "affiliation": "DKRZ"}, - {"name": "Dan Nowacki", "affiliation": "USGS"}, - {"name": "Kevin O'Brien", "affiliation": "University of Washington/CICOES", "orcid": "0000-0003-4167-3028"}, - {"name": "Alison Pamment", "affiliation": "NCAS and CEDA", "orcid": "0000-0001-5040-4626"}, - {"name": "Patrick Peglar", "affiliation": "UK Met Office"}, - {"name": "Jean-Yves Peterschmitt", "affiliation": "LSCE-CEA-IPSL"}, - {"name": "Alex Pletzer", "affiliation": "Tech-X Corporation"}, - {"name": "Greg Rappa", "affiliation": "MIT"}, - {"name": "Martin Raspaud", "affiliation": "SMHI", "orcid": "0000-0002-3221-3778"}, - {"name": "Russ Rew", "affiliation": "Unidata"}, - {"name": "Burkhardt Rockel", "affiliation": "GKSS"}, - {"name": "Martin Schultz", "affiliation": "J\u00fclich Supercomputing Centre"}, - {"name": "Rich Signell", "affiliation": "USGS"}, - {"name": "Bob Simons", "affiliation": "NOAA"}, - {"name": "Maarten Sneep", "affiliation": "KNMI"}, - {"name": "Ag Stephens", "affiliation": "BADC"}, - {"name": "Anders Meier Soerensen", "affiliation": "EUMETSAT"}, - {"name": "Karl Taylor", "affiliation": "PCMDI, LLNL", "orcid": "0000-0002-6491-2135"}, - {"name": "Etienne Tourigny", "affiliation": "INPE"}, - {"name": "Micah Wengren", "affiliation": "NOAA"}, - {"name": "Timothy Whiteaker", "affiliation": "University of Texas"}, - {"name": "John Wilkin", "affiliation": "Rutgers University"}, - {"name": "Charlie Zender", "affiliation": "UC Irvine"}, - {"name": "Klaus Zimmermann", "affiliation": "SMHI"} + "metadata": { + "title": "NetCDF Climate and Forecast (CF) Metadata Conventions", + "description": "This document describes the CF conventions for climate and forecast metadata designed to promote the processing and sharing of files created with the netCDF Application Programmer Interface. The conventions define metadata that provide a definitive description of what the data in each variable represents, and of the spatial and temporal properties of the data. This enables users of data from different sources to decide which quantities are comparable, and facilitates building applications with powerful extraction, regridding, and display capabilities. The CF conventions generalize and extend the COARDS conventions. The extensions include metadata that provides a precise definition of each variable via specification of a standard name, describes the vertical locations corresponding to dimensionless vertical coordinate values, and provides the spatial coordinates of non-rectilinear gridded data. Since climate and forecast data are often not simply representative of points in space/time, other extensions provide for the description of coordinate intervals, multidimensional cells and climatological time coordinates, and indicate how a data value is representative of an interval or cell. This standard also relaxes the COARDS constraints on dimension order and specifies methods for reducing the size of datasets.", + "license": "CC0-1.0", + "imprint_publisher": "CF Community", + "communities": [{"identifier": "cfconventions-sandbox"}], + "upload_type": "publication", + "publication_type": "standard", + "version": "1.12-rc8", + "publication_date": "2024-11-12", + "creators": [ + { "name": "Eaton, Brian", "affiliation": "NCAR" }, + { "name": "Gregory, Jonathan", "affiliation": "University of Reading and UK Met Office Hadley Centre", "orcid": "0000-0003-1296-8644" }, + { "name": "Drach, Bob", "affiliation": "PCMDI, LLNL" }, + { "name": "Taylor, Karl", "affiliation": "PCMDI, LLNL", "orcid": "0000-0002-6491-2135" }, + { "name": "Hankin, Steve", "affiliation": "PMEL, NOAA" }, + { "name": "Blower, Jon", "affiliation": "University of Reading" }, + { "name": "Caron, John", "affiliation": "Unidata" }, + { "name": "Signell, Rich", "affiliation": "USGS" }, + { "name": "Bentley, Phil", "affiliation": "UK Met Office" }, + { "name": "Rappa, Greg", "affiliation": "MIT" }, + { "name": "Höck, Heinke", "affiliation": "DKRZ", "orcid": "0000-0002-0131-1404" }, + { "name": "Pamment, Alison", "affiliation": "NCAS and CEDA", "orcid": "0000-0001-5040-4626"}, + { "name": "Juckes, Martin", "affiliation": "NCAS" }, + { "name": "Raspaud, Martin", "affiliation": "SMHI" }, + { "name": "Horne, Randy", "affiliation": "Excalibur Laboratories Inc" }, + { "name": "Whiteaker, Timothy", "affiliation": "University of Texas" }, + { "name": "Blodgett, David", "affiliation": "USGS" }, + { "name": "Zender, Charlie", "affiliation": "UC Irvine" }, + { "name": "Lee, Daniel", "affiliation": "EUMETSAT", "orcid": "0000-0002-1041-232X" }, + { "name": "Hassell, David", "affiliation": "NCAS and University of Reading", "orcid": "0000-0001-5106-7502" }, + { "name": "Snow, Alan D.", "affiliation": "Corteva Agriscience" }, + { "name": "Kölling, Tobias", "affiliation": "Max Planck Institute for Meteorology" }, + { "name": "Allured, Dave", "affiliation": "NOAA/CIRES/University of Colorado" }, + { "name": "Jelenak, Aleksandar", "affiliation": "HDF Group" }, + { "name": "Soerensen, Anders Meier", "affiliation": "EUMETSAT" }, + { "name": "Gaultier, Lucile", "affiliation": "OceanDataLab" }, + { "name": "Herlédan, Sylvain", "affiliation": "OceanDataLab" }, + { "name": "Manzano, Fernando", "affiliation": "Puertos del Estado, Madrid" }, + { "name": "Bärring, Lars", "affiliation": "SMHI Rossby Centre, Swedish Meteorological and Hydrological Institute", "orcid": "0000-0001-7280-2502" }, + { "name": "Barker, Christopher", "affiliation": "NOAA" }, + { "name": "Bartholomew, Sadie L.", "affiliation": "National Centre for Atmospheric Science and University of Reading", "orcid": "0000-0002-6180-3603" } + ], + "related_identifiers": [ + { + "relation": "isSupplementTo", + "resource_type": "publication-standard", + "scheme": "url", + "identifier": "https://github.com/cf-convention/cf-conventions/tree/v1.12-rc8" + }, + { + "relation": "documents", + "resource_type": "publication-standard", + "scheme": "url", + "identifier": "https://cfconventions.org/" + }, + { + "relation": "isIdenticalTo", + "resource_type": "publication-standard", + "scheme": "url", + "identifier": "https://cfconventions.org/Data/cf-conventions/cf-conventions-v1.12-rc8/cf-conventions.html" + }, + { + "relation": "isIdenticalTo", + "resource_type": "publication-standard", + "scheme": "url", + "identifier": "https://cfconventions.org/Data/cf-conventions/cf-conventions-v1.12-rc8/cf-conventions.pdf" + } + ] + }, + "files": [ + {"filename": "cf-conventions.pdf", "size": 5979284, "checksum": "md5:24f73fade28dea807df0a6f5131b0384"}, + {"filename": "conformance.pdf", "size": 347588, "checksum": "md5:85ec577392275291de07eb78aadddfae"} ] -} +} \ No newline at end of file diff --git a/CITATION.cff b/CITATION.cff new file mode 100644 index 00000000..cdf0785f --- /dev/null +++ b/CITATION.cff @@ -0,0 +1,125 @@ +cff-version: 1.2.0 +license: +- cc0-1.0 +title: NetCDF Climate and Forecast (CF) Metadata Conventions +version: '1.11' +date-released: '2023-12-05' +doi: 10.5072/zenodo.130529 +abstract: This document describes the CF conventions for climate and forecast metadata + designed to promote the processing and sharing of files created with the netCDF + Application Programmer Interface. The conventions define metadata that provide a + definitive description of what the data in each variable represents, and of the + spatial and temporal properties of the data. This enables users of data from different + sources to decide which quantities are comparable, and facilitates building applications + with powerful extraction, regridding, and display capabilities. The CF conventions + generalize and extend the COARDS conventions. The extensions include metadata that + provides a precise definition of each variable via specification of a standard name, + describes the vertical locations corresponding to dimensionless vertical coordinate + values, and provides the spatial coordinates of non-rectilinear gridded data. Since + climate and forecast data are often not simply representative of points in space/time, + other extensions provide for the description of coordinate intervals, multidimensional + cells and climatological time coordinates, and indicate how a data value is representative + of an interval or cell. This standard also relaxes the COARDS constraints on dimension + order and specifies methods for reducing the size of datasets. +authors: +- affiliation: NCAR + family-names: Eaton + given-names: Brian +- affiliation: University of Reading and UK Met Office Hadley Centre + family-names: Gregory + given-names: Jonathan + orcid: 0000-0003-1296-8644 +- affiliation: PCMDI, LLNL + family-names: Drach + given-names: Bob +- affiliation: PCMDI, LLNL + family-names: Taylor + given-names: Karl + orcid: 0000-0002-6491-2135 +- affiliation: PMEL, NOAA + family-names: Hankin + given-names: Steve +- affiliation: University of Reading + family-names: Blower + given-names: Jon +- affiliation: Unidata + family-names: Caron + given-names: John +- affiliation: USGS + family-names: Signell + given-names: Rich +- affiliation: UK Met Office + family-names: Bentley + given-names: Phil +- affiliation: MIT + family-names: Rappa + given-names: Greg +- affiliation: DKRZ + family-names: "H\xF6ck" + given-names: Heinke + orcid: 0000-0002-0131-1404 +- affiliation: NCAS and CEDA + family-names: Pamment + given-names: Alison + orcid: 0000-0001-5040-4626 +- affiliation: NCAS + family-names: Juckes + given-names: Martin +- affiliation: SMHI + family-names: Raspaud + given-names: Martin +- affiliation: Excalibur Laboratories Inc + family-names: Horne + given-names: Randy +- affiliation: University of Texas + family-names: Whiteaker + given-names: Timothy +- affiliation: USGS + family-names: Blodgett + given-names: David +- affiliation: UC Irvine + family-names: Zender + given-names: Charlie +- affiliation: EUMETSAT + family-names: Lee + given-names: Daniel + orcid: 0000-0002-1041-232X +- affiliation: NCAS and University of Reading + family-names: Hassell + given-names: David + orcid: 0000-0001-5106-7502 +- affiliation: Corteva Agriscience + family-names: Snow + given-names: Alan D. +- affiliation: Max Planck Institute for Meteorology + family-names: "K\xF6lling" + given-names: Tobias +- affiliation: NOAA/CIRES/University of Colorado + family-names: Allured + given-names: Dave +- affiliation: HDF Group + family-names: Jelenak + given-names: Aleksandar +- affiliation: EUMETSAT + family-names: Soerensen + given-names: Anders Meier +- affiliation: OceanDataLab + family-names: Gaultier + given-names: Lucile +- affiliation: OceanDataLab + family-names: "Herl\xE9dan" + given-names: Sylvain +- affiliation: Puertos del Estado, Madrid + family-names: Manzano + given-names: Fernando +- affiliation: SMHI Rossby Centre, Swedish Meteorological and Hydrological Institute + family-names: "B\xE4rring" + given-names: Lars + orcid: 0000-0001-7280-2502 +- affiliation: NOAA + family-names: Barker + given-names: Christopher +- affiliation: National Centre for Atmospheric Science and University of Reading + family-names: Bartholomew + given-names: Sadie L. + orcid: 0000-0002-6180-3603 diff --git a/Makefile b/Makefile index 7f142aa2..5ded29b2 100644 --- a/Makefile +++ b/Makefile @@ -35,7 +35,13 @@ DATE_FORMAT := +%d&\#160;%B,&\#160;%Y FINAL_TAG := -a final else DATE_FORMAT ?= +%d&\#160;%B,&\#160;%Y&\#160;%H:%M:%SZ -FINAL_TAG ?= -a draft +LOCAL_BRANCH=`git name-rev --name-only HEAD` +TRACKING_BRANCH=`git config branch.$LOCAL_BRANCH.merge` +TRACKING_REMOTE=`git config branch.$LOCAL_BRANCH.remote` +REMOTE_URL=`git config remote.$TRACKING_REMOTE.url` +#git config branch.$(git name-rev --name-only HEAD).remote +#git name-rev --name-only HEAD +FINAL_TAG ?= -a draft -a revnumber=v1.12.0-rc7-24-gb724218 -a revremark=${LOCAL_BRANCH} endif DATE_DOCPROD != LC_ALL=C date -u "$(DATE_FORMAT)" diff --git a/cf-conventions.adoc b/cf-conventions.adoc index 01e32322..c24300a2 100644 --- a/cf-conventions.adoc +++ b/cf-conventions.adoc @@ -1,13 +1,36 @@ include::version.adoc[] = NetCDF Climate and Forecast (CF) Metadata Conventions -Brian{nbsp}Eaton; Jonathan{nbsp}Gregory; Bob{nbsp}Drach; Karl{nbsp}Taylor; Steve{nbsp}Hankin; Jon{nbsp}Blower; John{nbsp}Caron; Rich{nbsp}Signell; Phil{nbsp}Bentley; Greg{nbsp}Rappa; Heinke{nbsp}Höck; Alison{nbsp}Pamment; Martin{nbsp}Juckes; Martin{nbsp}Raspaud; Randy{nbsp}Horne; Timothy{nbsp}Whiteaker; David{nbsp}Blodgett; Charlie{nbsp}Zender; Daniel{nbsp}Lee; David{nbsp}Hassell; Alan{nbsp}D.{nbsp}Snow; Tobias{nbsp}Kölling; Dave{nbsp}Allured; Aleksandar{nbsp}Jelenak; Anders{nbsp}Meier{nbsp}Soerensen; Lucile{nbsp}Gaultier; Sylvain{nbsp}Herlédan; Fernando{nbsp}Manzano; Lars{nbsp}Bärring; Christopher{nbsp}Barker; Sadie{nbsp}Bartholomew -Version{nbsp}{current-version},{nbsp}{nbsp}{docprodtime}: See{nbsp}https://cfconventions.org{nbsp}for{nbsp}further{nbsp}information. +Brian Eaton; Jonathan Gregory; Bob Drach; Karl Taylor; Steve Hankin; Jon Blower; John Caron; Rich Signell; Phil Bentley; Greg Rappa; Heinke Höck; Alison Pamment; Martin Juckes; Martin Raspaud; Randy Horne; Timothy Whiteaker; David Blodgett; Charlie Zender; Daniel Lee; David Hassell; Alan D. Snow; Tobias Kölling; Dave Allured; Aleksandar Jelenak; Anders Meier Soerensen; Lucile Gaultier; Sylvain Herlédan; Fernando Manzano; Lars Bärring; Christopher Barker; Sadie Bartholomew +:revnumber: {current-version} +:revdate: {docprodtime} :doctype: book :pdf-folio-placement: physical :sectanchors: :toc: macro :toclevels: 3 +<<< +Climate and Forecast Conventions version {current-version} {doi-text} + +image:images/cc-zero.svg[, 10%] +This document is dedicated to the public domain following the link:https://creativecommons.org/publicdomain/zero/1.0/[Creative Commons Zero v1.0 Universal] Deed. + +The Climate and Forecasting Conventions website https://cfconventions.org/ contains additional resources and provides further information. +ifdef::final[] + + + + + _Use the following reference to cite this version of the document:_ + +Eaton, B., Gregory, J., Drach, B., Taylor, K., Hankin, S. et al. (2023). NetCDF Climate and Forecast (CF) Metadata Conventions ({current-version}). CF Community. https://doi.org/10.5072/zenodo.130529 +endif::[] +ifndef::final[] + + + + + _DON’T use the following reference to cite this version of the document, as it is only shown as a draft:_ + +Eaton, B., Gregory, J., Drach, B., Taylor, K., Hankin, S. et al. (2023). NetCDF Climate and Forecast (CF) Metadata Conventions ({current-version}). CF Community. https://doi.org/10.5072/zenodo.130529 +endif::[] + +''' + toc::[] :numbered!: diff --git a/default-theme-CF-version.yml b/default-theme-CF-version.yml index 6983f21b..f1952798 100644 --- a/default-theme-CF-version.yml +++ b/default-theme-CF-version.yml @@ -21,6 +21,8 @@ page: margin_inner: 0.75in margin_outer: 0.59in size: A4 + numbering: + start-at: after-toc base: text_align: justify font_color: 333333 @@ -274,3 +276,7 @@ footer: content: '*{page-number}*' right: content: 'See https://cfconventions.org for further information' + +running-content: + start-at: toc + \ No newline at end of file diff --git a/images/cc-zero.svg b/images/cc-zero.svg new file mode 100644 index 00000000..195592b7 --- /dev/null +++ b/images/cc-zero.svg @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/version.adoc b/version.adoc index be4d63de..49a834bf 100644 --- a/version.adoc +++ b/version.adoc @@ -12,8 +12,10 @@ or with the commandline switch `-a final`. ifdef::final[] :current-version: {version} :current-version-as-attribute: {version} +:doi-text: {nbsp}{nbsp}{nbsp}DOI: link:https://doi.org/{doi}[{doi}] endif::[] ifndef::final[] :current-version: {version} draft :current-version-as-attribute: {version}-draft +:doi-text: has not yet a DOI assigned. endif::[]