Skip to content
Open
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 26 additions & 0 deletions .github/workflows/citation-cff.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
name: CITATION.cff validation

on:
push:
paths:
- CITATION.cff
- .github/workflows/citation-cff.yml
pull_request:
paths:
- CITATION.cff
- .github/workflows/citation-cff.yml
workflow_dispatch:

permissions:
contents: read

jobs:
validate-citation-cff:
name: Validate CITATION.cff
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- name: Validate CITATION.cff schema
uses: citation-file-format/cffconvert-github-action@2.0.0
with:
args: "--validate"
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -29,3 +29,6 @@ plans/

# Debug logs (e.g. from reindex investigation)
reindex-dbg.log

# Temporary files occasionally created by Ant replaceregexp
/tmp*tmp
29 changes: 29 additions & 0 deletions CITATION.cff
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
# This CITATION.cff file was generated with cffinit.
# Visit https://bit.ly/cffinit to generate yours today!

cff-version: 1.2.0
title: eXist-db
message: Native XML Database
type: software
authors:
- name: The eXist-db authors
identifiers:
- type: url
value: >-
https://github.com/eXist-db/exist/releases/tag/eXist-6.4.1
description: The GitHub release URL of latest stable release
Comment thread
duncdrum marked this conversation as resolved.
Outdated
repository-code: 'https://github.com/eXist-db/exist'
url: 'https://exist-db.org/'
repository-artifact: 'https://central.sonatype.com/artifact/org.exist-db/exist'
abstract: >-
eXist-db is a high-performance open source native XML
database—a NoSQL document database and application
Comment thread
duncdrum marked this conversation as resolved.
Outdated
platform built entirely around XML technologies.
keywords:
- xquery
- xml
- database
license: LGPL-2.1
commit: facea6b4c49004848f918480351a18b8f9a8128a
version: 6.4.1
date-released: '2026-03-05'
6 changes: 6 additions & 0 deletions exist-parent/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -609,6 +609,11 @@
<artifactId>find-and-replace-maven-plugin</artifactId>
<version>1.0.5</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>3.2.0</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-clean-plugin</artifactId>
Expand Down Expand Up @@ -933,6 +938,7 @@
<configuration>
<autoVersionSubmodules>true</autoVersionSubmodules>
<tagNameFormat>eXist-@{project.version}</tagNameFormat>
<preparationGoals>clean verify -P citation-release-metadata -DupdateCff=true</preparationGoals>
<useReleaseProfile>true</useReleaseProfile>
<releaseProfiles>exist-release</releaseProfiles>
</configuration>
Expand Down
113 changes: 113 additions & 0 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,119 @@
</modules>
</profile>

<profile>
<id>citation-release-metadata</id>
<activation>
<property>
<name>updateCff</name>
<value>true</value>
</property>
</activation>
<properties>
<maven.build.timestamp.format>yyyy-MM-dd</maven.build.timestamp.format>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
<executions>
<execution>
<id>require-release-version-for-citation-update</id>
<phase>validate</phase>
<goals>
<goal>enforce</goal>
</goals>
<configuration>
<rules>
<requireProperty>
<property>project.version</property>
<regex>^(?!.*-SNAPSHOT$).+$</regex>
<regexMessage>The citation-release-metadata profile can only run for release versions (non-SNAPSHOT).</regexMessage>
</requireProperty>
</rules>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<!--
git-commit-id-maven-plugin already sets git.commit.id, but Ant replaceregexp's
replace= attribute is not re-interpolated with those runtime Maven properties
before Ant applies it (literal ${git.commit.id} can end up in CITATION.cff).
Export commitLine from Ant (git rev-parse) then use ${commitLine} in a second execution.
-->
<execution>
<id>citation-cff-resolve-commit</id>
<phase>validate</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<exportAntProperties>true</exportAntProperties>
<target>
<mkdir dir="${project.build.directory}"/>
<exec executable="git" dir="${project.basedir}" failonerror="true" output="${project.build.directory}/cff-commit.tmp">
<arg value="rev-parse"/>
<arg value="HEAD"/>
</exec>
<replaceregexp file="${project.build.directory}/cff-commit.tmp"
match="^([0-9a-f]{7,40})\s*$"
replace="\1"
byline="true"/>
<loadfile property="cff.head" srcFile="${project.build.directory}/cff-commit.tmp" encoding="UTF-8">
<filterchain>
<striplinebreaks/>
</filterchain>
</loadfile>
<property name="commitLine" value="commit: ${cff.head}"/>
<delete file="${project.build.directory}/cff-commit.tmp" failonerror="false" quiet="true"/>
</target>
</configuration>
</execution>
<execution>
<id>update-citation-cff</id>
<phase>validate</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<target>
<!-- Guard against stale temp files left by interrupted text replacements -->
<delete failonerror="false" quiet="true">
<fileset dir="${project.basedir}" includes="tmp*tmp"/>
</delete>
<replaceregexp file="${project.basedir}/CITATION.cff"
match="^version:\s*.*$"
replace="version: ${project.version}"
byline="true"/>
<replaceregexp file="${project.basedir}/CITATION.cff"
match="^date-released:\s*.*$"
replace="date-released: '${maven.build.timestamp}'"
byline="true"/>
<replaceregexp file="${project.basedir}/CITATION.cff"
match="https://github\.com/eXist-db/exist/releases/tag/eXist-[^ '\&quot;]+"
replace="https://github.com/eXist-db/exist/releases/tag/eXist-${project.version}"
byline="true"/>
<replaceregexp file="${project.basedir}/CITATION.cff"
match="^commit:\s*.*$"
replace="${commitLine}"
byline="true"/>
<delete failonerror="false" quiet="true">
<fileset dir="${project.basedir}" includes="tmp*tmp"/>
</delete>
</target>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>

</profiles>

</project>