This is an automated email from the ASF dual-hosted git repository. Cole-Greer pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/tinkerpop.git
commit b6840b6f4f074177021cebe487f15c09915a266a Merge: 0e8b8b8071 893f7e2b3c Author: Cole Greer <[email protected]> AuthorDate: Thu Jul 23 16:17:49 2026 -0700 Merge branch '3.8-dev' docs/src/dev/developer/release.asciidoc | 6 +- gremlin-js/gremlin-javascript/pom.xml | 18 ------ gremlin-js/gremlin-mcp/pom.xml | 41 ------------- gremlin-js/gremlint/pom.xml | 46 --------------- gremlin-js/pom.xml | 67 +++++++++++++++++++++- gremlin-python/pom.xml | 41 +++++++++++++ .../src/main/python/gremlin_python/__init__.py | 2 +- 7 files changed, 111 insertions(+), 110 deletions(-) diff --cc docs/src/dev/developer/release.asciidoc index aa049e76b5,5c8fe93478..e5384c07cc --- a/docs/src/dev/developer/release.asciidoc +++ b/docs/src/dev/developer/release.asciidoc @@@ -156,23 -150,23 +156,23 @@@ might be high. Release candidates do no deployment. . `mvn clean install` -. `docker/build.sh -t -i -n` +. `docker/build.sh -t -i` . `bin/publish-docs.sh <username>` - note that under a release candidate the documentation is published as SNAPSHOT . `mvn versions:set -DnewVersion=xx.yy.zz -DgenerateBackupPoms=false` to update the project files to reference a non-SNAPSHOT version - .. Manually update the `__version__` for `gremlin-python` in `gremlin-python/src/main/python/gremlin_python/__init__.py` . `mvn clean install -DskipTests` to update GLV versions + .. Review `__init__.py` in `gremlin-python` .. Review `Gremlin.Net.csproj`, `Gremlin.Net.Template.csproj` and `Gremlin.Net.Template.nuspec` in `gremlin-dotnet` -.. Review `package.json` and `package-lock.json` in `gremlin-javascript` and in `gremlint` +.. Review `package.json` in `gremlin-javascript`, `gremlint`, and `gremlin-mcp` under `gremlin-js/`; the `package-lock.json` lives at `gremlin-js/` — run `npm install` from there to regenerate it after version changes and review it . `pushd gremlin-console/bin; ln -fs ../target/apache-tinkerpop-gremlin-console-xx.yy.zz-standalone/bin/gremlin.sh gremlin.sh; popd` . `git diff` and review the updated files . `git commit -a -m "TinkerPop xx.yy.zz release"` and `git push` . `git tag -a -m "TinkerPop xx.yy.zz release" xx.yy.zz` and `git push --tags` . `mvn clean install` . `mvn versions:set -DnewVersion=xx.yy.zz-SNAPSHOT -DgenerateBackupPoms=false` to go back to SNAPSHOT - .. Manually update the `__version__` for `gremlin-python` in `gremlin-python/src/main/python/gremlin_python/__init__.py` to a dev version like `xx.yy.zz.dev1` . `mvn clean install -DskipTests` to update GLV versions + .. Review `__init__.py` in `gremlin-python` .. Review `Gremlin.Net.csproj`, `Gremlin.Net.Template.csproj` and `Gremlin.Net.Template.nuspec` in `gremlin-dotnet` -.. Review `package.json` and `package-lock.json` in `gremlin-javascript` and in `gremlint` +.. Review `package.json` in `gremlin-javascript`, `gremlint`, and `gremlin-mcp` under `gremlin-js/`; the `package-lock.json` lives at `gremlin-js/` — run `npm install` from there to regenerate it after version changes and review it . `pushd gremlin-console/bin; ln -fs ../target/apache-tinkerpop-gremlin-console-xx.yy.zz-SNAPSHOT-standalone/bin/gremlin.sh gremlin.sh; popd` . `git commit -a -m "Returned to xx.yy.zz-SNAPSHOT"` and `git push` . Announce the release candidate to `dev` mailing list and await feedback @@@ -221,8 -215,9 +221,9 @@@ current release was under development a .. Update the link to `CHANGELOG.asciidoc` - this link may already be correct but will not exist until the repository is tagged. . `mvn versions:set -DnewVersion=xx.yy.zz -DgenerateBackupPoms=false` to update project files to reference the non-SNAPSHOT version . `mvn clean install -DskipTests` to update GLV versions + .. Review `__init__.py` in `gremlin-python` .. Review `Gremlin.Net.csproj`, `Gremlin.Net.Template.csproj` and `Gremlin.Net.Template.nuspec` in `gremlin-dotnet` -.. Review `package.json` and `package-lock.json` in `gremlin-javascript`, `gremlint`, and `gremlin-mcp` +.. Review `package.json` in `gremlin-javascript`, `gremlint`, and `gremlin-mcp` under `gremlin-js/`; the `package-lock.json` lives at `gremlin-js/` — run `npm install` from there to regenerate it after version changes and review it . `pushd gremlin-console/bin; ln -fs ../target/apache-tinkerpop-gremlin-console-xx.yy.zz-standalone/bin/gremlin.sh gremlin.sh; popd` . `git diff` and review the updated files . `mvn clean install` - need to build first so that the right version of the console is used with `bin/publish-docs.sh` @@@ -337,13 -328,11 +338,14 @@@ the help of a PMC member for those step .. Make the appropriate branching changes as required by the release and bump the version to `SNAPSHOT` with `mvn versions:set -DnewVersion=xx.yy.zz-SNAPSHOT -DgenerateBackupPoms=false`. . `mvn clean install -DskipTests` to update GLV versions + .. Review `__init__.py` in `gremlin-python` .. Review `Gremlin.Net.csproj`, `Gremlin.Net.Template.csproj` and `Gremlin.Net.Template.nuspec` in `gremlin-dotnet` -.. Review `package.json` and `package-lock.json` in `gremlin-javascript` and in `gremlint` +.. Review `package.json` in `gremlin-javascript`, `gremlint`, and `gremlin-mcp` under `gremlin-js/`; the `package-lock.json` lives at `gremlin-js/` — run `npm install` from there to regenerate it after version changes and review it .. `pushd gremlin-console/bin; ln -fs ../target/apache-tinkerpop-gremlin-console-xx.yy.zz-SNAPSHOT-standalone/bin/gremlin.sh gremlin.sh; popd` -.. Update CHANGELOG and upgrade docs to have the appropriate headers for the next version. +.. Update CHANGELOG and upgrade docs to have the appropriate headers for the next version. If a major line will no longer be under development, archive the CHANGELOG entries for it as follows: +... Create a new `changelog-x.x.x.asciidoc` in the `docs/archive/changelogs` folder. +... Copy all CHANGELOG entries of the major version into the file (refer to previous files). +... Replace the CHANGELOG entries under each minor releases with an archived notice containing link to the archived changelog file (refer to previous links inside CHANGELOG). .. `mvn clean install -DskipTests` - need to build first so that the right version of the console is used with `bin/publish-docs.sh` .. `mvn deploy -DskipTests` - deploy the new `SNAPSHOT` .. `bin/process-docs.sh` and validate the generated `SNAPSHOT` documentation locally and then `bin/publish-docs.sh <username>` diff --cc gremlin-js/gremlin-javascript/pom.xml index 017b3595d7,0000000000..05aa0fa61f mode 100644,000000..100644 --- a/gremlin-js/gremlin-javascript/pom.xml +++ b/gremlin-js/gremlin-javascript/pom.xml @@@ -1,348 -1,0 +1,330 @@@ +<!-- +Licensed to the Apache Software Foundation (ASF) under one or more +contributor license agreements. See the NOTICE file distributed with +this work for additional information regarding copyright ownership. +The ASF licenses this file to You under the Apache License, Version 2.0 +(the "License"); you may not use this file except in compliance with +the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +--> +<project xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + <parent> + <groupId>org.apache.tinkerpop</groupId> + <artifactId>gremlin-js</artifactId> + <version>4.0.0-beta.3</version> + <relativePath>../pom.xml</relativePath> + </parent> + <artifactId>gremlin-javascript</artifactId> + <name>Apache TinkerPop :: Gremlin Javascript</name> + <properties> + <maven.test.skip>false</maven.test.skip> + <skipTests>${maven.test.skip}</skipTests> + </properties> + <build> + <directory>${basedir}/target</directory> + <finalName>${project.artifactId}-${project.version}</finalName> + <pluginManagement> + <plugins> + <plugin> + <groupId>com.github.eirslett</groupId> + <artifactId>frontend-maven-plugin</artifactId> + <version>2.0.1</version> + </plugin> + </plugins> + </pluginManagement> + <plugins> + <plugin> + <!-- + Use gmavenplus-plugin to: + - Generate js sources + --> + <groupId>org.codehaus.gmavenplus</groupId> + <artifactId>gmavenplus-plugin</artifactId> + <dependencies> + <dependency> + <groupId>org.apache.tinkerpop</groupId> + <artifactId>gremlin-server</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>org.apache.tinkerpop</groupId> + <artifactId>gremlin-test</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>commons-io</groupId> + <artifactId>commons-io</artifactId> + <version>${commons.io.version}</version> + </dependency> + <dependency> + <groupId>ch.qos.logback</groupId> + <artifactId>logback-classic</artifactId> + <version>${logback.version}</version> + <scope>runtime</scope> + </dependency> + <dependency> + <groupId>org.apache.groovy</groupId> + <artifactId>groovy-all</artifactId> + <version>${groovy.version}</version> + <type>pom</type> + <scope>runtime</scope> + </dependency> + </dependencies> + <executions> + <execution> + <id>generate-radish-support</id> + <phase>generate-sources</phase> + <goals> + <goal>execute</goal> + </goals> + <configuration> + <properties> + <property> + <name>projectBaseDir</name> + <value>${project.basedir}/../../</value> + </property> + </properties> + <scripts> + <script>${project.basedir}/scripts/groovy/generate.groovy</script> + </scripts> + </configuration> - </execution> - <execution> - <id>update-version</id> - <phase>generate-sources</phase> - <goals> - <goal>execute</goal> - </goals> - <configuration> - <scripts> - <script> - def mavenVersion = "${project.version}" - def versionForJs = mavenVersion.replace("-SNAPSHOT", "-alpha1") - def platformAgnosticBaseDirPath = project.basedir.getAbsolutePath().replace("\\", "/") - def file = new File(platformAgnosticBaseDirPath + "/package.json") - file.write(file.getText("UTF-8").replaceFirst(/"version": "(.*)",/, "\"version\": \"" + versionForJs + "\",")) - </script> - </scripts> - </configuration> + </execution> + </executions> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-clean-plugin</artifactId> + <executions> + <execution> + <goals> + <goal>clean</goal> + </goals> + </execution> + </executions> + <configuration> + <filesets> + <fileset> + <directory>build</directory> + </fileset> + </filesets> + </configuration> + </plugin> + <plugin> + <groupId>com.github.eirslett</groupId> + <artifactId>frontend-maven-plugin</artifactId> + <executions> + <execution> + <id>install node and npm at workspace root</id> + <phase>validate</phase> + <goals> + <goal>install-node-and-npm</goal> + </goals> + <configuration> + <workingDirectory>${project.basedir}/..</workingDirectory> + </configuration> + </execution> + <execution> + <id>npm workspace install</id> + <phase>validate</phase> + <goals> + <goal>npm</goal> + </goals> + <configuration> + <arguments>ci</arguments> + <workingDirectory>${project.basedir}/..</workingDirectory> + </configuration> + </execution> + <execution> + <id>install node and npm</id> + <phase>validate</phase> + <goals> + <goal>install-node-and-npm</goal> + </goals> + </execution> + <execution> + <id>npm lint</id> + <phase>validate</phase> + <goals> + <goal>npm</goal> + </goals> + <configuration> + <skip>${skipTests}</skip> + <arguments>run lint</arguments> + </configuration> + </execution> + <execution> + <id>npm jsdoc</id> + <goals> + <goal>npm</goal> + </goals> + <phase>generate-resources</phase> + <configuration> + <arguments>run doc</arguments> + </configuration> + </execution> + </executions> + <configuration> + <workingDirectory>.</workingDirectory> + <nodeVersion>${runtime.node.version}</nodeVersion> + <npmVersion>${runtime.npm.version}</npmVersion> + </configuration> + </plugin> + <!-- + there is no point to building/deploying the jvm stuff - there is no java source really - just poms + --> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-javadoc-plugin</artifactId> + <configuration> + <skip>true</skip> + </configuration> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-source-plugin</artifactId> + <configuration> + <skipSource>true</skipSource> + </configuration> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-install-plugin</artifactId> + <configuration> + <skip>true</skip> + </configuration> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-deploy-plugin</artifactId> + <configuration> + <skip>true</skip> + </configuration> + </plugin> + <plugin> + <groupId>com.google.code.maven-replacer-plugin</groupId> + <artifactId>replacer</artifactId> + <configuration> + <file>lib/utils.ts</file> + <replacements> + <replacement> + <token>gremlinVersion = '.*'</token> + <value>gremlinVersion = '${project.version}'</value> + </replacement> + </replacements> + </configuration> + </plugin> + </plugins> + </build> + <profiles> + <!-- Test gremlin-javascript in Docker --> + <profile> + <id>glv-js</id> + <activation> + <activeByDefault>true</activeByDefault> + </activation> + <build> + <finalName>${project.artifactId}-${project.version}</finalName> + <plugins> + <plugin> + <artifactId>exec-maven-plugin</artifactId> + <groupId>org.codehaus.mojo</groupId> + <version>3.5.0</version> + <executions> + <execution> + <id>run-tests</id> + <phase>integration-test</phase> + <goals> + <goal>exec</goal> + </goals> + <configuration> + <skip>${skipTests}</skip> + <environmentVariables> + <GREMLIN_SERVER>${project.version}</GREMLIN_SERVER> + <ABS_PROJECT_HOME>${project.basedir}/../../</ABS_PROJECT_HOME> + <!-- setting this env variable is needed to be cross-platform compatible --> + <HOME>${user.home}</HOME> + <NODE_VERSION>${node.test.version}</NODE_VERSION> + </environmentVariables> + <executable>bash</executable> + <!-- + Command breakdown: + compose down (first) - remove any containers left over from a previously failed run + compose up - build images, start the server and test containers, + and wait for the test container to finish + compose down (second) - tear down this run's containers and network + port-wait loop - wait up to 30 s for ports 45940 and 45941 to be released by + the Docker daemon before returning to Maven; all GLV modules share + these host ports and run sequentially, so the next module would + fail to bind them if docker-proxy has not fully exited yet + image prune - remove dangling test images to reclaim disk space + --> + <arguments> + <argument>-c</argument> + <argument>export HOST_UID=$(id -u) HOST_GID=$(id -g); docker compose down; docker compose up --build --exit-code-from gremlin-js-integration-tests; EXIT=$?; docker compose down; for i in $(seq 1 30); do ss -tlnp | grep -qE ':(45940|45941) ' || break; sleep 1; done; docker image prune --filter [email protected] -f; exit $EXIT</argument> + </arguments> + <workingDirectory>.</workingDirectory> + </configuration> + </execution> + </executions> + </plugin> + </plugins> + </build> + </profile> + <!-- + Provides a way to deploy the gremlin-javascript GLV to npm. This cannot be part of the standard maven execution + because npm does not have a staging environment like sonatype for releases. As soon as the release is + published it is public. In our release workflow, deploy occurs prior to vote on the release and we can't + make this stuff public until the vote is over. + --> + <profile> + <id>glv-javascript-deploy</id> + <activation> + <activeByDefault>false</activeByDefault> + <property> + <name>npm</name> + </property> + </activation> + <build> + <plugins> + <plugin> + <groupId>com.github.eirslett</groupId> + <artifactId>frontend-maven-plugin</artifactId> + <executions> + <execution> + <id>npm publish</id> + <phase>deploy</phase> + <goals> + <goal>npm</goal> + </goals> + <configuration> + <arguments>publish</arguments> + </configuration> + </execution> + </executions> + <configuration> + <!-- + skip needs to be overridden given how the <configuration> is specified in the main build. + it should be fine to just always deploy because this <profile> needs to be manually + activated and that should be good enough given our deployment process. + --> + <skip>false</skip> + <workingDirectory>.</workingDirectory> + <nodeVersion>${runtime.node.version}</nodeVersion> + <npmVersion>${runtime.npm.version}</npmVersion> + </configuration> + </plugin> + </plugins> + </build> + </profile> + </profiles> +</project> diff --cc gremlin-js/gremlin-mcp/pom.xml index 8a2ab9d058,0000000000..11cb20888a mode 100644,000000..100644 --- a/gremlin-js/gremlin-mcp/pom.xml +++ b/gremlin-js/gremlin-mcp/pom.xml @@@ -1,257 -1,0 +1,216 @@@ +<!-- +Licensed to the Apache Software Foundation (ASF) under one or more +contributor license agreements. See the NOTICE file distributed with +this work for additional information regarding copyright ownership. +The ASF licenses this file to You under the Apache License, Version 2.0 +(the "License"); you may not use this file except in compliance with +the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +--> +<project xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + + <parent> + <groupId>org.apache.tinkerpop</groupId> + <artifactId>gremlin-js</artifactId> + <version>4.0.0-beta.3</version> + <relativePath>../pom.xml</relativePath> + </parent> + + <artifactId>gremlin-mcp</artifactId> + <name>Apache TinkerPop :: Gremlin MCP</name> + + <properties> + <maven.test.skip>false</maven.test.skip> + <skipTests>${maven.test.skip}</skipTests> + </properties> + + <build> + <directory>${basedir}/target</directory> + <finalName>${project.artifactId}-${project.version}</finalName> + <plugins> - <plugin> - <!-- - Use gmavenplus-plugin to: - - Update the package version and gremlin dependency version - --> - <groupId>org.codehaus.gmavenplus</groupId> - <artifactId>gmavenplus-plugin</artifactId> - <dependencies> - <dependency> - <groupId>org.apache.groovy</groupId> - <artifactId>groovy-all</artifactId> - <version>${groovy.version}</version> - <type>pom</type> - <scope>runtime</scope> - </dependency> - </dependencies> - <executions> - <execution> - <id>update-version</id> - <phase>generate-sources</phase> - <goals> - <goal>execute</goal> - </goals> - <configuration> - <scripts> - <script> - def mavenVersion = "${project.version}" - def versionForJs = mavenVersion.replace("-SNAPSHOT", "-alpha1") - def platformAgnosticBaseDirPath = project.basedir.getAbsolutePath().replace("\\", "/") - def file = new File(platformAgnosticBaseDirPath + "/package.json") - def content = file.getText("UTF-8") - content = content.replaceFirst(/"version": "(.*)",/, "\"version\": \"" + versionForJs + "\",") - content = content.replaceFirst(/"gremlin": "[^"]+"/, "\"gremlin\": \"" + versionForJs + "\"") - content = content.replaceFirst(/"gremlint": "[^"]+"/, "\"gremlint\": \"" + versionForJs + "\"") - file.write(content) - </script> - </scripts> - </configuration> - </execution> - </executions> - </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-clean-plugin</artifactId> + <executions> + <execution> + <goals> + <goal>clean</goal> + </goals> + </execution> + </executions> + <configuration> + <filesets> + <fileset> + <directory>dist</directory> + </fileset> + <fileset> + <directory>node_modules</directory> + </fileset> + </filesets> + </configuration> + </plugin> + <plugin> + <groupId>com.github.eirslett</groupId> + <artifactId>frontend-maven-plugin</artifactId> + <version>2.0.1</version> + <executions> + <execution> + <id>install node and npm at workspace root</id> + <phase>validate</phase> + <goals> + <goal>install-node-and-npm</goal> + </goals> + <configuration> + <workingDirectory>${project.basedir}/..</workingDirectory> + </configuration> + </execution> + <execution> + <id>npm workspace install</id> + <phase>validate</phase> + <goals> + <goal>npm</goal> + </goals> + <configuration> + <arguments>ci</arguments> + <workingDirectory>${project.basedir}/..</workingDirectory> + </configuration> + </execution> + <execution> + <id>install node and npm</id> + <phase>validate</phase> + <goals> + <goal>install-node-and-npm</goal> + </goals> + </execution> + <execution> + <id>npm validate</id> + <phase>generate-resources</phase> + <goals> + <goal>npm</goal> + </goals> + <configuration> + <skip>${skipTests}</skip> + <arguments>run validate</arguments> + </configuration> + </execution> + <execution> + <id>npm build</id> + <phase>generate-resources</phase> + <goals> + <goal>npm</goal> + </goals> + <configuration> + <arguments>run build</arguments> + </configuration> + </execution> + </executions> + <configuration> + <workingDirectory>.</workingDirectory> + <nodeVersion>${runtime.node.version}</nodeVersion> + <npmVersion>${runtime.npm.version}</npmVersion> + </configuration> + </plugin> + + <!-- There is no JVM code/artifacts to publish for this module --> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-javadoc-plugin</artifactId> + <configuration> + <skip>true</skip> + </configuration> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-source-plugin</artifactId> + <configuration> + <skipSource>true</skipSource> + </configuration> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-install-plugin</artifactId> + <configuration> + <skip>true</skip> + </configuration> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-deploy-plugin</artifactId> + <configuration> + <skip>true</skip> + </configuration> + </plugin> + <plugin> + <groupId>com.google.code.maven-replacer-plugin</groupId> + <artifactId>replacer</artifactId> + <configuration> + <file>src/constants.ts</file> + <replacements> + <replacement> + <token>GREMLIN_VERSION = '.*'</token> + <value>GREMLIN_VERSION = '${project.version}'</value> + </replacement> + </replacements> + </configuration> + </plugin> + </plugins> + </build> + <profiles> + <!-- + Provides a way to deploy the gremlin-mcp to npm. This cannot be part of the standard maven execution + because npm does not have a staging environment like sonatype for releases. As soon as the release is + published it is public. In our release workflow, deploy occurs prior to vote on the release and we can't + make this stuff public until the vote is over. + --> + <profile> + <id>gremlin-mcp-deploy</id> + <activation> + <activeByDefault>false</activeByDefault> + <property> + <name>npm</name> + </property> + </activation> + <build> + <plugins> + <plugin> + <groupId>com.github.eirslett</groupId> + <artifactId>frontend-maven-plugin</artifactId> + <executions> + <execution> + <id>npm publish</id> + <phase>deploy</phase> + <goals> + <goal>npm</goal> + </goals> + <configuration> + <arguments>publish</arguments> + </configuration> + </execution> + </executions> + <configuration> + <!-- + skip needs to be overridden given how the <configuration> is specified in the main build. + it should be fine to just always deploy because this <profile> needs to be manually + activated and that should be good enough given our deployment process. + --> + <skip>false</skip> + <workingDirectory>.</workingDirectory> + <nodeVersion>${runtime.node.version}</nodeVersion> + <npmVersion>${runtime.npm.version}</npmVersion> + </configuration> + </plugin> + </plugins> + </build> + </profile> + </profiles> +</project> diff --cc gremlin-js/gremlint/pom.xml index b128b4c0a6,0000000000..997a9a66d0 mode 100644,000000..100644 --- a/gremlin-js/gremlint/pom.xml +++ b/gremlin-js/gremlint/pom.xml @@@ -1,232 -1,0 +1,186 @@@ +<!-- +Licensed to the Apache Software Foundation (ASF) under one or more +contributor license agreements. See the NOTICE file distributed with +this work for additional information regarding copyright ownership. +The ASF licenses this file to You under the Apache License, Version 2.0 +(the "License"); you may not use this file except in compliance with +the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +--> +<project xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + <parent> + <groupId>org.apache.tinkerpop</groupId> + <artifactId>gremlin-js</artifactId> + <version>4.0.0-beta.3</version> + <relativePath>../pom.xml</relativePath> + </parent> + <artifactId>gremlint</artifactId> + <name>Apache TinkerPop :: Gremlint</name> + <properties> + <maven.test.skip>false</maven.test.skip> + <skipTests>${maven.test.skip}</skipTests> + </properties> + <build> + <directory>${basedir}/target</directory> + <finalName>${project.artifactId}-${project.version}</finalName> + <pluginManagement> + <plugins> + <plugin> + <groupId>com.github.eirslett</groupId> + <artifactId>frontend-maven-plugin</artifactId> + <version>2.0.1</version> + </plugin> + </plugins> + </pluginManagement> + <plugins> - <plugin> - <!-- - Use gmavenplus-plugin to: - - Update version number - --> - <groupId>org.codehaus.gmavenplus</groupId> - <artifactId>gmavenplus-plugin</artifactId> - <dependencies> - <dependency> - <groupId>org.apache.groovy</groupId> - <artifactId>groovy-all</artifactId> - <version>${groovy.version}</version> - <type>pom</type> - <scope>runtime</scope> - </dependency> - </dependencies> - <executions> - <execution> - <id>update-version</id> - <phase>generate-sources</phase> - <goals> - <goal>execute</goal> - </goals> - <configuration> - <properties> - <property> - <name>projectBaseDir</name> - <value>${project.basedir}</value> - </property> - <property> - <name>mavenVersion</name> - <value>${project.version}</value> - </property> - </properties> - <scripts> - <script> - def versionForJs = mavenVersion.replace("-SNAPSHOT", "-alpha1") - def platformAgnosticBaseDirPath = project.basedir.getAbsolutePath().replace("\\","/") - def file = new File(platformAgnosticBaseDirPath + "/package.json") - file.write(file.getText("UTF-8").replaceFirst(/"version": "(.*)",/, "\"version\": \"" + versionForJs + "\",")) - </script> - </scripts> - </configuration> - </execution> - </executions> - </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-clean-plugin</artifactId> + <executions> + <execution> + <goals> + <goal>clean</goal> + </goals> + </execution> + </executions> + </plugin> + <plugin> + <groupId>com.github.eirslett</groupId> + <artifactId>frontend-maven-plugin</artifactId> + <executions> + <execution> + <id>install node and npm at workspace root</id> + <phase>validate</phase> + <goals> + <goal>install-node-and-npm</goal> + </goals> + <configuration> + <workingDirectory>${project.basedir}/..</workingDirectory> + </configuration> + </execution> + <execution> + <id>npm workspace install</id> + <phase>validate</phase> + <goals> + <goal>npm</goal> + </goals> + <configuration> + <arguments>ci</arguments> + <workingDirectory>${project.basedir}/..</workingDirectory> + </configuration> + </execution> + <execution> + <id>install node and npm</id> + <phase>generate-resources</phase> + <goals> + <goal>install-node-and-npm</goal> + </goals> + </execution> + <execution> + <id>npm test</id> + <phase>test</phase> + <goals> + <goal>npm</goal> + </goals> + <configuration> + <skip>${skipTests}</skip> + <arguments>test --exit</arguments> + </configuration> + </execution> + </executions> + <configuration> + <nodeVersion>${runtime.node.version}</nodeVersion> + <npmVersion>${runtime.npm.version}</npmVersion> + </configuration> + </plugin> + <!-- + there is no point to building/deploying the jvm stuff - there is no java source really - just poms + --> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-javadoc-plugin</artifactId> + <configuration> + <skip>true</skip> + </configuration> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-source-plugin</artifactId> + <configuration> + <skipSource>true</skipSource> + </configuration> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-install-plugin</artifactId> + <configuration> + <skip>true</skip> + </configuration> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-deploy-plugin</artifactId> + <configuration> + <skip>true</skip> + </configuration> + </plugin> + </plugins> + </build> + <profiles> + <!-- + Provides a way to deploy gremlint to npm. This cannot be part of the standard maven execution + because npm does not have a staging environment like sonatype for releases. As soon as the release is + published it is public. In our release workflow, deploy occurs prior to vote on the release and we can't + make this stuff public until the vote is over. + --> + <profile> + <id>gremlint-deploy</id> + <activation> + <activeByDefault>false</activeByDefault> + <property> + <name>npm</name> + </property> + </activation> + <build> + <plugins> + <plugin> + <groupId>com.github.eirslett</groupId> + <artifactId>frontend-maven-plugin</artifactId> + <executions> + <execution> + <id>npm publish</id> + <phase>deploy</phase> + <goals> + <goal>npm</goal> + </goals> + <configuration> + <arguments>publish</arguments> + </configuration> + </execution> + </executions> + <configuration> + <!-- + skip needs to be overridden given how the <configuration> is specified in the main build. + it should be fine to just always deploy because this <profile> needs to be manually + activated and that should be good enough given our deployment process. + --> + <skip>false</skip> + <nodeVersion>${runtime.node.version}</nodeVersion> + <npmVersion>${runtime.npm.version}</npmVersion> + </configuration> + </plugin> + </plugins> + </build> + </profile> + </profiles> +</project> diff --cc gremlin-js/pom.xml index 25c130e50b,0000000000..a94e4dab30 mode 100644,000000..100644 --- a/gremlin-js/pom.xml +++ b/gremlin-js/pom.xml @@@ -1,108 -1,0 +1,171 @@@ +<!-- +Licensed to the Apache Software Foundation (ASF) under one or more +contributor license agreements. See the NOTICE file distributed with +this work for additional information regarding copyright ownership. +The ASF licenses this file to You under the Apache License, Version 2.0 +(the "License"); you may not use this file except in compliance with +the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +--> +<project xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + + <parent> + <groupId>org.apache.tinkerpop</groupId> + <artifactId>tinkerpop</artifactId> + <version>4.0.0-beta.3</version> + <relativePath>../pom.xml</relativePath> + </parent> + + <artifactId>gremlin-js</artifactId> + <name>Apache TinkerPop :: Gremlin JS</name> + <packaging>pom</packaging> + + <modules> + <module>gremlin-javascript</module> + <module>gremlint</module> + <module>gremlin-mcp</module> + </modules> + + <build> + <plugins> ++ <!-- ++ Centralized version propagation for the JS workspace. This pom builds first in the ++ gremlin-js reactor, so the version bump completes before any child module builds. ++ gmavenplus computes the npm-compatible version (translating Maven's "-SNAPSHOT" to a ++ valid semver pre-release tag) and keeps gremlin-mcp's references to its sibling ++ workspace packages (gremlin, gremlint) in lockstep. The "npm version" execution in the ++ frontend-maven-plugin below then bumps every workspace member's version and the root ++ package-lock.json in a single pass. ++ --> ++ <plugin> ++ <groupId>org.codehaus.gmavenplus</groupId> ++ <artifactId>gmavenplus-plugin</artifactId> ++ <inherited>false</inherited> ++ <dependencies> ++ <dependency> ++ <groupId>org.apache.groovy</groupId> ++ <artifactId>groovy-all</artifactId> ++ <version>${groovy.version}</version> ++ <type>pom</type> ++ <scope>runtime</scope> ++ </dependency> ++ </dependencies> ++ <executions> ++ <execution> ++ <id>compute-js-version</id> ++ <phase>validate</phase> ++ <goals> ++ <goal>execute</goal> ++ </goals> ++ <configuration> ++ <scripts> ++ <script> ++ // npm doesn't understand Maven's "-SNAPSHOT" suffix, so translate it to a ++ // valid semver pre-release tag for use by the "npm version" execution below. ++ def versionForJs = "${project.version}".replace("-SNAPSHOT", "-alpha1") ++ project.properties.setProperty("versionForJs", versionForJs) ++ // gremlin-mcp depends on its sibling workspace packages at an exact version. ++ // "npm version" won't rewrite those references, so keep them in lockstep here ++ // before it regenerates the lockfile (otherwise npm fails with ETARGET). ++ def mcpPackageJson = new File(project.basedir.getAbsolutePath().replace("\\", "/") + "/gremlin-mcp/package.json") ++ def content = mcpPackageJson.getText("UTF-8") ++ content = content.replaceFirst(/"gremlin": "[^"]+"/, "\"gremlin\": \"" + versionForJs + "\"") ++ content = content.replaceFirst(/"gremlint": "[^"]+"/, "\"gremlint\": \"" + versionForJs + "\"") ++ mcpPackageJson.write(content, "UTF-8") ++ </script> ++ </scripts> ++ </configuration> ++ </execution> ++ </executions> ++ </plugin> + <!-- + Install node/npm and run npm ci from the workspace root so that all JS workspace + members (gremlin-javascript, gremlin-mcp, gremlint) share a single node_modules + installation with workspace symlinks in place before any child module builds. - This pom runs first in the gremlin-js reactor, ensuring this completes before - any child module begins its own build lifecycle. + --> + <plugin> + <groupId>com.github.eirslett</groupId> + <artifactId>frontend-maven-plugin</artifactId> + <version>2.0.1</version> + <inherited>false</inherited> + <executions> + <execution> + <id>install node and npm</id> + <phase>validate</phase> + <goals> + <goal>install-node-and-npm</goal> + </goals> + </execution> ++ <execution> ++ <id>npm version</id> ++ <phase>validate</phase> ++ <goals> ++ <goal>npm</goal> ++ </goals> ++ <configuration> ++ <!-- ++ Update the TinkerPop version in every workspace member's package.json ++ (gremlin-javascript, gremlint, gremlin-mcp) and the root package-lock.json ++ in a single pass. ++ --> ++ <arguments>version ${versionForJs} --workspaces --no-git-tag-version --allow-same-version --ignore-scripts</arguments> ++ </configuration> ++ </execution> + <execution> + <id>npm workspace install</id> + <phase>validate</phase> + <goals> + <goal>npm</goal> + </goals> + <configuration> + <arguments>ci</arguments> + </configuration> + </execution> + </executions> + <configuration> + <nodeVersion>${runtime.node.version}</nodeVersion> + <npmVersion>${runtime.npm.version}</npmVersion> + </configuration> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-javadoc-plugin</artifactId> + <configuration> + <skip>true</skip> + </configuration> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-source-plugin</artifactId> + <configuration> + <skipSource>true</skipSource> + </configuration> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-install-plugin</artifactId> + <configuration> + <skip>true</skip> + </configuration> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-deploy-plugin</artifactId> + <configuration> + <skip>true</skip> + </configuration> + </plugin> + </plugins> + </build> + +</project> diff --cc gremlin-python/src/main/python/gremlin_python/__init__.py index 8040ed37a2,42df32bd5d..368aaa0f3e --- a/gremlin-python/src/main/python/gremlin_python/__init__.py +++ b/gremlin-python/src/main/python/gremlin_python/__init__.py @@@ -18,4 -18,4 +18,4 @@@ # __author__ = 'Marko A. Rodriguez (http://markorodriguez.com)' - __version__ = '4.0.0.dev1' -__version__ = '3.8.2.dev1' # Do not touch, updated automatically from maven ++__version__ = '4.0.0-beta.3' # Do not touch, updated automatically from maven
