Skip to content
Open
Show file tree
Hide file tree
Changes from all 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 URL of the latest GitHub release
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
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'
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
[![Code of Conduct](https://img.shields.io/badge/code%20of%20conduct-contributor%20covenant-%235e0d73.svg)](https://contributor-covenant.org/version/1/4/)
[![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/eXist-db/exist)

eXist-db is a high-performance open source native XML databasea NoSQL document database and application platform built entirely around XML technologies. The main homepage for eXist-db can be found at [exist-db.org](https://exist-db.org "eXist Homepage"). This is the GitHub repository of eXist source code, and this page links to resources for downloading, building, and contributing to eXist-db, below.
eXist-db is a high-performance open source native XML databasea NoSQL document database and application platform built entirely around XML technologies. The main homepage for eXist-db can be found at [exist-db.org](https://exist-db.org "eXist Homepage"). This is the GitHub repository of eXist source code, and this page links to resources for downloading, building, and contributing to eXist-db, below.

The eXist-db community has adopted the [Contributor Covenant](https://www.contributor-covenant.org/) [Code of Conduct](https://www.contributor-covenant.org/version/1/4/code-of-conduct).

Expand Down
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>