mirror of
https://github.com/rife2/bld
synced 2026-06-20 19:27:47 +02:00
Merge f1468a24c6 into 45c86e7efa
This commit is contained in:
commit
0b9647cee6
36
.github/workflows/bld.yml
vendored
36
.github/workflows/bld.yml
vendored
|
|
@ -94,19 +94,27 @@ jobs:
|
|||
|
||||
steps:
|
||||
- name: Checkout source repository
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v6
|
||||
with:
|
||||
clean: true
|
||||
submodules: 'true'
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Set up JDK ${{ matrix.java-version }}
|
||||
uses: actions/setup-java@v4
|
||||
uses: actions/setup-java@v5
|
||||
with:
|
||||
distribution: 'corretto'
|
||||
java-version: ${{ matrix.java-version }}
|
||||
check-latest: true
|
||||
|
||||
- name: Cache bld dependencies
|
||||
id: cache-bld
|
||||
uses: actions/cache@v5
|
||||
with:
|
||||
path: lib
|
||||
key: ${{ runner.os }}-bld-java${{ matrix.java-version}}-lib
|
||||
restore-keys: ${{ runner.os }}-bld-java${{ matrix.java-version}}-lib
|
||||
|
||||
- name: Download dependencies
|
||||
run: ./bld clean download
|
||||
|
||||
|
|
@ -135,19 +143,27 @@ jobs:
|
|||
|
||||
steps:
|
||||
- name: Checkout source repository
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v6
|
||||
with:
|
||||
clean: true
|
||||
submodules: 'true'
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Set up JDK ${{ matrix.java-version }}
|
||||
uses: actions/setup-java@v4
|
||||
uses: actions/setup-java@v5
|
||||
with:
|
||||
distribution: 'corretto'
|
||||
java-version: ${{ matrix.java-version }}
|
||||
check-latest: true
|
||||
|
||||
- name: Cache bld dependencies
|
||||
id: cache-bld
|
||||
uses: actions/cache@v5
|
||||
with:
|
||||
path: lib
|
||||
key: ${{ runner.os }}-bld-java${{ matrix.java-version}}-lib
|
||||
restore-keys: ${{ runner.os }}-bld-java${{ matrix.java-version}}-lib
|
||||
|
||||
- name: Download dependencies
|
||||
run: ./bld clean download
|
||||
|
||||
|
|
@ -174,19 +190,27 @@ jobs:
|
|||
run: git config --global core.autocrlf input
|
||||
|
||||
- name: Checkout source repository
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v6
|
||||
with:
|
||||
clean: true
|
||||
submodules: 'true'
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Set up JDK ${{ matrix.java-version }}
|
||||
uses: actions/setup-java@v4
|
||||
uses: actions/setup-java@v5
|
||||
with:
|
||||
distribution: 'corretto'
|
||||
java-version: ${{ matrix.java-version }}
|
||||
check-latest: true
|
||||
|
||||
- name: Cache bld dependencies
|
||||
id: cache-bld
|
||||
uses: actions/cache@v5
|
||||
with:
|
||||
path: lib
|
||||
key: ${{ runner.os }}-bld-java${{ matrix.java-version}}-lib
|
||||
restore-keys: ${{ runner.os }}-bld-java${{ matrix.java-version}}-lib
|
||||
|
||||
- name: Download dependencies
|
||||
run: .\bld.bat clean download
|
||||
|
||||
|
|
|
|||
11
.github/workflows/pages.yml
vendored
11
.github/workflows/pages.yml
vendored
|
|
@ -22,6 +22,7 @@ concurrency:
|
|||
jobs:
|
||||
# Single deploy job since we're just deploying
|
||||
deploy:
|
||||
if: github.repository == 'rife2/bld'
|
||||
environment:
|
||||
name: github-pages
|
||||
url: ${{ steps.deployment.outputs.page_url }}
|
||||
|
|
@ -30,14 +31,14 @@ jobs:
|
|||
|
||||
steps:
|
||||
- name: Checkout source repository
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v6
|
||||
with:
|
||||
clean: true
|
||||
submodules: 'true'
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Set up JDK 17
|
||||
uses: actions/setup-java@v4
|
||||
uses: actions/setup-java@v5
|
||||
with:
|
||||
distribution: 'corretto'
|
||||
java-version: 17
|
||||
|
|
@ -46,14 +47,14 @@ jobs:
|
|||
run: ./bld clean download clean compile javadoc
|
||||
|
||||
- name: Setup Pages
|
||||
uses: actions/configure-pages@v5
|
||||
uses: actions/configure-pages@v6
|
||||
|
||||
- name: Upload artifact
|
||||
uses: actions/upload-pages-artifact@v3
|
||||
uses: actions/upload-pages-artifact@v5
|
||||
with:
|
||||
# Upload generated Javadocs repository
|
||||
path: 'build/javadoc/'
|
||||
|
||||
- name: Deploy to GitHub Pages
|
||||
id: deployment
|
||||
uses: actions/deploy-pages@v4
|
||||
uses: actions/deploy-pages@v5
|
||||
49
.github/workflows/publish.yml
vendored
Normal file
49
.github/workflows/publish.yml
vendored
Normal file
|
|
@ -0,0 +1,49 @@
|
|||
name: publish-snapshots
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
build-bld-project:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Checkout source repository
|
||||
uses: actions/checkout@v6
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Check version is SNAPSHOT
|
||||
shell: bash
|
||||
run: |
|
||||
VERSION=$(tr -d '[:space:]' < src/main/resources/BLD_VERSION)
|
||||
echo "Current version: $VERSION"
|
||||
if ! echo "$VERSION" | grep -q 'SNAPSHOT$'; then
|
||||
echo "::error:: Version '$VERSION' is not a SNAPSHOT. Aborting publish."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
- name: Set up JDK
|
||||
uses: actions/setup-java@v5
|
||||
with:
|
||||
distribution: "temurin"
|
||||
java-version: 17
|
||||
|
||||
- name: Download dependencies
|
||||
run: ./bld download
|
||||
|
||||
- name: Import key
|
||||
run: echo "${{ secrets.SIGN_SECRET_KEY }}" | gpg --batch --import
|
||||
|
||||
- name: Publish
|
||||
run: >-
|
||||
./bld compile test publish
|
||||
-Drife2Username=${{ secrets.RIFE2_USERNAME }}
|
||||
-Drife2Password=${{ secrets.RIFE2_PASSWORD }}
|
||||
-DsonatypeUser=${{ secrets.SONATYPE_USER }}
|
||||
-DsonatypePassword=${{ secrets.SONATYPE_PASSWORD }}
|
||||
-DsignKey=${{ secrets.SIGN_KEY }}
|
||||
-DsignPassphrase=${{ secrets.SIGN_PASSPHRASE }}
|
||||
|
||||
- name: Delete GnuPG data
|
||||
run: rm -rfv $HOME/.gnupg
|
||||
27
.github/workflows/purge-cache.yml
vendored
Normal file
27
.github/workflows/purge-cache.yml
vendored
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
name: purge-cache
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
confirm:
|
||||
description: 'Type "yes" to confirm purging all bld caches'
|
||||
required: true
|
||||
default: 'no'
|
||||
|
||||
jobs:
|
||||
clear-cache:
|
||||
if: github.event.inputs.confirm == 'yes'
|
||||
strategy:
|
||||
matrix:
|
||||
os: [ubuntu-latest, windows-latest, macos-latest]
|
||||
runs-on: ${{ matrix.os }}
|
||||
permissions:
|
||||
actions: write
|
||||
steps:
|
||||
- name: Purge bld caches for ${{ runner.os }}
|
||||
env:
|
||||
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
run: |
|
||||
echo "Purging all caches with key ${{ runner.os }}-bld-"
|
||||
gh cache delete --all --key "${{ runner.os }}-bld-"
|
||||
echo "Done for ${{ runner.os }}"
|
||||
|
|
@ -3,10 +3,10 @@ bld.downloadExtensionSources=true
|
|||
bld.downloadLocation=
|
||||
bld.extension-antlr=com.uwyn.rife2:bld-antlr4:1.4.3
|
||||
bld.extension-archive=com.uwyn.rife2:bld-archive:0.6.3
|
||||
bld.extension-reporter=com.uwyn.rife2:bld-junit-reporter:0.9.2
|
||||
bld.extension-reporter=com.uwyn.rife2:bld-junit-reporter:1.2.0-SNAPSHOT
|
||||
bld.extension-tests=com.uwyn.rife2:bld-tests-badge:1.6.3
|
||||
bld.javaOptions=
|
||||
bld.javacOptions=
|
||||
bld.repositories=MAVEN_CENTRAL,RIFE2_RELEASES
|
||||
bld.repositories=MAVEN_CENTRAL,RIFE2_RELEASES,RIFE2_SNAPSHOTS
|
||||
bld.sourceDirectories=core/src/bld/java
|
||||
bld.version=2.3.0
|
||||
bld.version=2.3.1-SNAPSHOT
|
||||
|
|
@ -534,7 +534,22 @@ public class BaseProject extends BuildExecutor {
|
|||
@BuildCommand(help = DownloadHelp.class)
|
||||
public void download()
|
||||
throws Exception {
|
||||
downloadOperation().executeOnce(() -> downloadOperation().fromProject(this));
|
||||
var auto = false;
|
||||
var arguments = this.arguments();
|
||||
while (!arguments.isEmpty()) {
|
||||
var argument = arguments.get(0);
|
||||
if (DownloadOperation.AUTO_OPTION.equals(argument)) {
|
||||
arguments.remove(0);
|
||||
auto = true;
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (auto) {
|
||||
performAutoDownloadPurge();
|
||||
} else {
|
||||
downloadOperation().executeOnce(() -> downloadOperation().fromProject(this));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -25,6 +25,9 @@ public record Repository(String location, String username, String password) {
|
|||
public static Repository MAVEN_LOCAL = null;
|
||||
public static final Repository APACHE = new Repository("https://repo.maven.apache.org/maven2/");
|
||||
public static final Repository GOOGLE = new Repository("https://maven.google.com/");
|
||||
public static final Repository GOOGLE_MAVEN_CENTRAL = new Repository("https://maven-central.storage-download.googleapis.com/maven2/");
|
||||
public static final Repository GOOGLE_MAVEN_CENTRAL_EU = new Repository("https://maven-central-eu.storage-download.googleapis.com/maven2/");
|
||||
public static final Repository GOOGLE_MAVEN_CENTRAL_ASIA = new Repository("https://maven-central-asia.storage-download.googleapis.com/maven2/");
|
||||
public static final Repository MAVEN_CENTRAL = new Repository("https://repo1.maven.org/maven2/");
|
||||
public static final Repository SECURECHAIN_REBUILT = new Repository("https://nexus-repo.corp.cloudlinux.com/repository/tuxcare_rebuilt");
|
||||
public static final Repository SECURECHAIN_VETTED = new Repository("https://nexus-repo.corp.cloudlinux.com/repository/tuxcare_vetted");
|
||||
|
|
@ -91,6 +94,9 @@ public record Repository(String location, String username, String password) {
|
|||
return switch (locationOrName) {
|
||||
case "APACHE" -> Repository.APACHE;
|
||||
case "GOOGLE" -> Repository.GOOGLE;
|
||||
case "GOOGLE_MAVEN_CENTRAL" -> Repository.GOOGLE_MAVEN_CENTRAL;
|
||||
case "GOOGLE_MAVEN_CENTRAL_EU" -> Repository.GOOGLE_MAVEN_CENTRAL_EU;
|
||||
case "GOOGLE_MAVEN_CENTRAL_ASIA" -> Repository.GOOGLE_MAVEN_CENTRAL_ASIA;
|
||||
case "MAVEN_CENTRAL" -> Repository.MAVEN_CENTRAL;
|
||||
case "MAVEN_LOCAL" -> Repository.MAVEN_LOCAL;
|
||||
case "RIFE2_RELEASES" -> Repository.RIFE2_RELEASES;
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
package rife.bld.help;
|
||||
|
||||
import rife.bld.CommandHelp;
|
||||
import rife.tools.StringUtils;
|
||||
import rife.bld.operations.DownloadOperation;
|
||||
|
||||
/**
|
||||
* Provides help for the download command.
|
||||
|
|
@ -15,13 +15,13 @@ import rife.tools.StringUtils;
|
|||
*/
|
||||
public class DownloadHelp implements CommandHelp {
|
||||
public String getSummary() {
|
||||
return "Downloads all dependencies of the project";
|
||||
return "Downloads all dependencies of the project (take option)";
|
||||
}
|
||||
|
||||
public String getDescription(String topic) {
|
||||
return StringUtils.replace("""
|
||||
Downloads all dependencies of the project
|
||||
|
||||
Usage : ${topic}""", "${topic}", topic);
|
||||
return String.format("""
|
||||
Downloads all dependencies of the project
|
||||
|
||||
Usage : %s [%s]""", topic, DownloadOperation.AUTO_OPTION);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -25,6 +25,7 @@ import static rife.bld.dependencies.Dependency.CLASSIFIER_SOURCES;
|
|||
* @since 1.5
|
||||
*/
|
||||
public class DownloadOperation extends AbstractOperation<DownloadOperation> {
|
||||
public static final String AUTO_OPTION = "--auto";
|
||||
private boolean offline_ = false;
|
||||
private HierarchicalProperties properties_ = null;
|
||||
private ArtifactRetriever retriever_ = null;
|
||||
|
|
|
|||
|
|
@ -0,0 +1,50 @@
|
|||
/*
|
||||
* Copyright 2026 Erik C. Thauvin (https://erik.thauvin.net/)
|
||||
* Licensed under the Apache License, Version 2.0 (the "License")
|
||||
*/
|
||||
package rife.bld.dependencies;
|
||||
|
||||
import java.security.SecureRandom;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import static rife.bld.dependencies.Repository.*;
|
||||
|
||||
public final class RepositoryTestHelper {
|
||||
public static final List<Repository> MAVEN_CENTRAL_REPOSITORIES = List.of(
|
||||
MAVEN_CENTRAL,
|
||||
APACHE,
|
||||
GOOGLE_MAVEN_CENTRAL,
|
||||
GOOGLE_MAVEN_CENTRAL_EU,
|
||||
GOOGLE_MAVEN_CENTRAL_ASIA
|
||||
);
|
||||
|
||||
private static final SecureRandom SECURE_RANDOM = new SecureRandom();
|
||||
|
||||
private RepositoryTestHelper() {
|
||||
}
|
||||
|
||||
public static Repository getRandomRepository() {
|
||||
int index = SECURE_RANDOM.nextInt(MAVEN_CENTRAL_REPOSITORIES.size());
|
||||
return MAVEN_CENTRAL_REPOSITORIES.get(index);
|
||||
}
|
||||
|
||||
public static List<Repository> getRandomRepositories(int count) {
|
||||
if (count < 0) {
|
||||
throw new IllegalArgumentException("count cannot be negative");
|
||||
}
|
||||
if (count > MAVEN_CENTRAL_REPOSITORIES.size()) {
|
||||
throw new IllegalArgumentException("count cannot exceed repository list size: "
|
||||
+ MAVEN_CENTRAL_REPOSITORIES.size());
|
||||
}
|
||||
|
||||
List<Repository> shuffled = new ArrayList<>(MAVEN_CENTRAL_REPOSITORIES);
|
||||
Collections.shuffle(shuffled, SECURE_RANDOM);
|
||||
return Collections.unmodifiableList(shuffled.subList(0, count));
|
||||
}
|
||||
|
||||
public static List<Repository> getRandomRepositories() {
|
||||
return getRandomRepositories(2);
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load diff
|
|
@ -5,13 +5,13 @@
|
|||
package rife.bld.dependencies;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
import rife.ioc.HierarchicalProperties;
|
||||
import rife.tools.StringUtils;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
import static rife.bld.dependencies.Repository.*;
|
||||
import static rife.bld.dependencies.RepositoryTestHelper.getRandomRepository;
|
||||
import static rife.bld.dependencies.Scope.compile;
|
||||
import static rife.bld.dependencies.Scope.runtime;
|
||||
|
||||
|
|
@ -92,7 +92,7 @@ public class TestDependencySet {
|
|||
│ └─ org.eclipse.jetty:jetty-io:11.0.14
|
||||
└─ org.slf4j:slf4j-simple:2.0.6
|
||||
└─ org.slf4j:slf4j-api:2.0.6
|
||||
"""), dependencies.generateTransitiveDependencyTree(VersionResolution.dummy(), ArtifactRetriever.instance(), List.of(MAVEN_CENTRAL), compile));
|
||||
"""), dependencies.generateTransitiveDependencyTree(VersionResolution.dummy(), ArtifactRetriever.instance(), List.of(getRandomRepository()), compile));
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
@ -118,7 +118,7 @@ public class TestDependencySet {
|
|||
├─ org.springframework:spring-core:6.0.6
|
||||
│ └─ org.springframework:spring-jcl:6.0.6
|
||||
└─ org.yaml:snakeyaml:1.33
|
||||
"""), dependencies.generateTransitiveDependencyTree(VersionResolution.dummy(), ArtifactRetriever.instance(), List.of(MAVEN_CENTRAL), compile));
|
||||
"""), dependencies.generateTransitiveDependencyTree(VersionResolution.dummy(), ArtifactRetriever.instance(), List.of(getRandomRepository()), compile));
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
@ -158,7 +158,7 @@ public class TestDependencySet {
|
|||
├─ org.codehaus.plexus:plexus-component-annotations:2.1.0
|
||||
├─ org.apache.commons:commons-lang3:3.8.1
|
||||
└─ org.slf4j:slf4j-api:1.7.36
|
||||
"""), dependencies.generateTransitiveDependencyTree(VersionResolution.dummy(), ArtifactRetriever.instance(), List.of(MAVEN_CENTRAL), compile));
|
||||
"""), dependencies.generateTransitiveDependencyTree(VersionResolution.dummy(), ArtifactRetriever.instance(), List.of(getRandomRepository()), compile));
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
@ -214,7 +214,7 @@ public class TestDependencySet {
|
|||
├─ org.scala-lang.modules:scala-java8-compat_2.13:1.0.2
|
||||
├─ com.typesafe:ssl-config-core_2.13:0.4.3
|
||||
└─ org.scala-lang.modules:scala-parser-combinators_2.13:1.1.2
|
||||
"""), dependencies.generateTransitiveDependencyTree(VersionResolution.dummy(), ArtifactRetriever.instance(), List.of(MAVEN_CENTRAL), compile));
|
||||
"""), dependencies.generateTransitiveDependencyTree(VersionResolution.dummy(), ArtifactRetriever.instance(), List.of(getRandomRepository()), compile));
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
@ -310,7 +310,7 @@ public class TestDependencySet {
|
|||
│ ├─ net.java.dev.jna:jna:5.11.0
|
||||
│ └─ net.java.dev.jna:jna-platform:5.11.0
|
||||
└─ com.auth0:java-jwt:3.19.2
|
||||
"""), dependencies.generateTransitiveDependencyTree(VersionResolution.dummy(), ArtifactRetriever.instance(), List.of(MAVEN_CENTRAL), compile));
|
||||
"""), dependencies.generateTransitiveDependencyTree(VersionResolution.dummy(), ArtifactRetriever.instance(), List.of(getRandomRepository()), compile));
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
@ -353,7 +353,7 @@ public class TestDependencySet {
|
|||
└─ com.google.zxing:javase:3.5.1
|
||||
├─ com.google.zxing:core:3.5.1
|
||||
└─ com.beust:jcommander:1.82
|
||||
"""), dependencies.generateTransitiveDependencyTree(VersionResolution.dummy(), ArtifactRetriever.instance(), List.of(MAVEN_CENTRAL), compile));
|
||||
"""), dependencies.generateTransitiveDependencyTree(VersionResolution.dummy(), ArtifactRetriever.instance(), List.of(getRandomRepository()), compile));
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
|
|||
Loading…
Reference in a new issue