com.mooltiverse.oss.nyx.configuration.presets.Substitutions Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of main Show documentation
Show all versions of main Show documentation
com.mooltiverse.oss.nyx:main:3.0.7 null
/*
* Copyright 2020 Mooltiverse
*
* Licensed 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.
*/
package com.mooltiverse.oss.nyx.configuration.presets;
import com.mooltiverse.oss.nyx.entities.Substitution;
/**
* This class provides reusable configuration chunks for substitutions.
*/
public class Substitutions {
/**
* The Cargo (Rust) version substitution configuration
* that replaces the version number inside Cargo.toml files within the project.
*/
public static final Substitution CARGO_VERSION = new Substitution() {
{
// Capture all Cargo.toml files in the project directory in any folder
setFiles("**/Cargo.toml");
// Capture any string like version = "SEMANTIC_VERSION", tolerating extra spaces and using single or double quotes for the version value
setMatch("version(\\s)*=(\\s)*(\"|')?(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?(\"|')?");
// Replace with the current version
setReplace("version = \"{{version}}\"");
}
};
/**
* The Composer (PHP) version substitution configuration
* that replaces the version number inside composer.json files within the project.
*/
public static final Substitution COMPOSER_VERSION = new Substitution() {
{
// Capture all composer.json files in the project directory in any folder
setFiles("**/composer.json");
// Capture any string like "version": "SEMANTIC_VERSION", tolerating extra spaces
setMatch("\"version\"(\\s)*:(\\s)*\"(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?\"");
// Replace with the current version
setReplace("\"version\": \"{{version}}\"");
}
};
/**
* The Dart (Flutter) version substitution configuration
* that replaces the version number inside pubspec.yaml files within the project.
*/
public static final Substitution DART_VERSION = new Substitution() {
{
// Capture all pubspec.yaml files in the project directory in any folder
setFiles("**/pubspec.yaml");
// Capture any string like version = "SEMANTIC_VERSION", tolerating extra spaces and using single, double or no quotes for the the attribute name ("version") and the version value
setMatch("(\"|')?version(\"|')?(\\s)*:(\\s)*(\"|')?(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?(\"|')?");
// Replace with the current version
setReplace("version: \"{{version}}\"");
}
};
/**
* The Elixir version substitution configuration
* that replaces the version number inside mix.exs files within the project.
*/
public static final Substitution ELIXIR_VERSION = new Substitution() {
{
// Capture all mix.exs files in the project directory in any folder
setFiles("**/mix.exs");
// Capture any string like version: "SEMANTIC_VERSION", tolerating extra spaces
setMatch("version(\\s)*:(\\s)*\"(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?\"");
// Replace with the current version
setReplace("version: \"{{version}}\"");
}
};
/**
* The Expo (React) version substitution configuration
* that replaces the version number inside app.json and app.config.json files within the project.
*/
public static final Substitution EXPO_VERSION = new Substitution() {
{
// Capture all app.json and app.config.json files in the project directory in any folder
setFiles("**/{app,app.config}.json");
// Capture any string like "version": "SEMANTIC_VERSION", tolerating extra spaces
setMatch("\"version\"(\\s)*:(\\s)*\"(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?\"");
// Replace with the current version
setReplace("\"version\": \"{{version}}\"");
}
};
/**
* The Helm version substitution configuration
* that replaces the version number inside Chart.yaml files within the project.
*/
public static final Substitution HELM_VERSION = new Substitution() {
{
// Capture all Chart.yaml files in the project directory in any folder
setFiles("**/Chart.yaml");
// Capture any string like version = "SEMANTIC_VERSION", tolerating extra spaces and using single, double or no quotes for the the attribute name ("version") and the version value
setMatch("(\"|')?version(\"|')?(\\s)*:(\\s)*(\"|')?(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?(\"|')?");
// Replace with the current version
setReplace("version: \"{{version}}\"");
}
};
/**
* The Node version substitution configuration
* that replaces the version number inside package.json files within the project.
*/
public static final Substitution NODE_VERSION = new Substitution() {
{
// Capture all package.json files in the project directory in any folder
setFiles("**/package.json");
// Capture any string like "version": "SEMANTIC_VERSION", tolerating extra spaces
setMatch("\"version\"(\\s)*:(\\s)*\"(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?\"");
// Replace with the current version
setReplace("\"version\": \"{{version}}\"");
}
};
/**
* The version substitution configuration that replaces the contents of any version.txt file within the project with the version number.
*/
public static final Substitution TEXT_VERSION = new Substitution() {
{
// Capture all version.txt files in the project directory in any folder
setFiles("**/version.txt");
// Capture anything to replace the whole content
setMatch("(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?");
// Replace with the current version
setReplace("{{version}}");
}
};
/**
* Default constructor is hidden on purpose.
*/
public Substitutions() {
super();
}
}