diff --git a/.idea/bld.xml b/.idea/bld.xml new file mode 100644 index 0000000..6600cee --- /dev/null +++ b/.idea/bld.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/libraries/bld.xml b/.idea/libraries/bld.xml index 722b42e..867d049 100644 --- a/.idea/libraries/bld.xml +++ b/.idea/libraries/bld.xml @@ -2,11 +2,12 @@ - + - + + diff --git a/.idea/libraries/compile.xml b/.idea/libraries/compile.xml index 9bd86aa..143dc93 100644 --- a/.idea/libraries/compile.xml +++ b/.idea/libraries/compile.xml @@ -2,12 +2,16 @@ + + + + \ No newline at end of file diff --git a/.idea/libraries/runtime.xml b/.idea/libraries/runtime.xml index 81feb0b..2ae5c4b 100644 --- a/.idea/libraries/runtime.xml +++ b/.idea/libraries/runtime.xml @@ -2,6 +2,7 @@ + diff --git a/.idea/libraries/test.xml b/.idea/libraries/test.xml index 13b6513..68ef884 100644 --- a/.idea/libraries/test.xml +++ b/.idea/libraries/test.xml @@ -2,12 +2,16 @@ + + + + \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json index 5dd7145..904ca0b 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -7,7 +7,7 @@ ], "java.configuration.updateBuildConfiguration": "automatic", "java.project.referencedLibraries": [ - "${HOME}bld-1.7.0-SNAPSHOT.jar", + "${HOME}/.bld/dist/bld-2.0.1.jar", "lib/compile/*.jar", "lib/runtime/*.jar", "lib/test/*.jar" diff --git a/README.md b/README.md index 90406e2..943cde8 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,7 @@ [![License](https://img.shields.io/badge/license-Apache%20License%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) [![Java](https://img.shields.io/badge/java-17%2B-blue)](https://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html) +[![bld](https://img.shields.io/badge/2.0.1-FA9052?label=bld&labelColor=2392FF)](https://rife2.com/bld) [![Release](https://flat.badgen.net/maven/v/metadata-url/https:/repo.rife2.com/releases/com/uwyn/rife2/bld-archive/maven-metadata.xml)](https://repo.rife2.com/#/releases/com/uwyn/rife2/bld-archive) [![GitHub CI](https://github.com/rife2/bld-archive/actions/workflows/bld.yml/badge.svg)](https://github.com/rife2/bld-archive/actions/workflows/bld.yml) diff --git a/lib/bld/bld-wrapper.jar b/lib/bld/bld-wrapper.jar index 08d88ee..161546a 100644 Binary files a/lib/bld/bld-wrapper.jar and b/lib/bld/bld-wrapper.jar differ diff --git a/lib/bld/bld-wrapper.properties b/lib/bld/bld-wrapper.properties index 7253ed9..1fc0978 100644 --- a/lib/bld/bld-wrapper.properties +++ b/lib/bld/bld-wrapper.properties @@ -3,4 +3,4 @@ bld.downloadExtensionSources=true bld.extensions= bld.repositories=MAVEN_CENTRAL,RIFE2_RELEASES bld.downloadLocation= -bld.version=1.7.2 +bld.version=2.0.1 diff --git a/local.properties b/local.properties new file mode 100644 index 0000000..f9361d4 --- /dev/null +++ b/local.properties @@ -0,0 +1 @@ +bld.repo.github=https://maven.pkg.github.com/rife2/bld-archive \ No newline at end of file diff --git a/src/bld/java/rife/bld/extension/ArchiveBuild.java b/src/bld/java/rife/bld/extension/ArchiveBuild.java index c54d26b..5b88a50 100644 --- a/src/bld/java/rife/bld/extension/ArchiveBuild.java +++ b/src/bld/java/rife/bld/extension/ArchiveBuild.java @@ -19,7 +19,7 @@ public class ArchiveBuild extends Project { public ArchiveBuild() { pkg = "rife.bld.extension"; name = "Archive"; - version = version(0,4,2); + version = version(0,5,0); archiveBaseName = "bld-archive"; javaRelease = 17; @@ -28,11 +28,11 @@ public class ArchiveBuild extends Project { repositories = List.of(MAVEN_CENTRAL, RIFE2_RELEASES); scope(compile) - .include(dependency("com.uwyn.rife2", "bld", version(1,7,2))) - .include(dependency("org.apache.commons", "commons-compress", version(1,23,0))); + .include(dependency("com.uwyn.rife2", "bld", version(2,0,1))) + .include(dependency("org.apache.commons", "commons-compress", version(1,27,1))); scope(test) - .include(dependency("org.junit.jupiter", "junit-jupiter", version(5,9,3))) - .include(dependency("org.junit.platform", "junit-platform-console-standalone", version(1,9,3))); + .include(dependency("org.junit.jupiter", "junit-jupiter", version(5,11,0))) + .include(dependency("org.junit.platform", "junit-platform-console-standalone", version(1,11,0))); javadocOperation() .javadocOptions() @@ -41,6 +41,7 @@ public class ArchiveBuild extends Project { publishOperation() .repository(version.isSnapshot() ? repository("rife2-snapshots") : repository("rife2-releases")) + .repository(repository("github")) .info() .groupId("com.uwyn.rife2") .artifactId("bld-archive") diff --git a/src/main/java/rife/bld/extension/ZipOperation.java b/src/main/java/rife/bld/extension/ZipOperation.java index b06d79a..5578d10 100644 --- a/src/main/java/rife/bld/extension/ZipOperation.java +++ b/src/main/java/rife/bld/extension/ZipOperation.java @@ -7,15 +7,20 @@ package rife.bld.extension; import org.apache.commons.compress.archivers.zip.UnixStat; import org.apache.commons.compress.archivers.zip.ZipArchiveEntry; import org.apache.commons.compress.archivers.zip.ZipArchiveOutputStream; -import org.apache.commons.compress.utils.IOUtils; +import org.apache.commons.io.IOUtils; import rife.bld.NamedFile; import rife.bld.operations.AbstractOperation; import rife.tools.FileUtils; import rife.tools.StringUtils; -import java.io.*; +import java.io.File; +import java.io.IOException; +import java.io.InputStream; import java.nio.file.Files; -import java.util.*; +import java.nio.file.Path; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; import java.util.regex.Pattern; /** @@ -135,10 +140,49 @@ public class ZipOperation extends AbstractOperation { * * @param directories source directories * @return this operation instance + * @see #sourceDirectories(List) * @since 1.0 */ public ZipOperation sourceDirectories(File... directories) { - sourceDirectories_.addAll(List.of(directories)); + return sourceDirectories(List.of(directories)); + } + + /** + * Provides source directories that will be used for the zip archive creation. + * + * @param directories source directories + * @return this operation instance + * @see #sourceDirectoriesPaths(List) + * @since 1.0 + */ + public ZipOperation sourceDirectories(Path... directories) { + return sourceDirectoriesPaths(List.of(directories)); + } + + /** + * Provides source directories that will be used for the zip archive creation. + * + * @param directories source directories + * @return this operation instance + * @see #sourceDirectoriesStrings(List) + * @since 1.0 + */ + public ZipOperation sourceDirectories(String... directories) { + return sourceDirectoriesStrings(List.of(directories)); + } + + /** + * Provides a list of source directories that will be used for the zip archive creation. + *

+ * A copy will be created to allow this list to be independently modifiable. + * + * @param directories a list of source directories + * @return this operation instance + * @see #sourceDirectories(File...) + * @since 1.0 + */ + public ZipOperation sourceDirectories(List directories) { + sourceDirectories_.addAll(directories); return this; } @@ -149,11 +193,25 @@ public class ZipOperation extends AbstractOperation { * * @param directories a list of source directories * @return this operation instance + * @see #sourceDirectories(Path...) * @since 1.0 */ - public ZipOperation sourceDirectories(List directories) { - sourceDirectories_.addAll(directories); - return this; + public ZipOperation sourceDirectoriesPaths(List directories) { + return sourceDirectories(directories.stream().map(Path::toFile).toList()); + } + + /** + * Provides a list of source directories that will be used for the zip archive creation. + *

+ * A copy will be created to allow this list to be independently modifiable. + * + * @param directories a list of source directories + * @return this operation instance + * @see #sourceDirectories(String...) + * @since 1.0 + */ + public ZipOperation sourceDirectoriesStrings(List directories) { + return sourceDirectories(directories.stream().map(File::new).toList()); } /** @@ -194,6 +252,28 @@ public class ZipOperation extends AbstractOperation { return this; } + /** + * Provides the destination directory in which the zip archive will be created. + * + * @param directory the zip destination directory + * @return this operation instance + * @since 1.0 + */ + public ZipOperation destinationDirectory(Path directory) { + return destinationDirectory(directory.toFile()); + } + + /** + * Provides the destination directory in which the zip archive will be created. + * + * @param directory the zip destination directory + * @return this operation instance + * @since 1.0 + */ + public ZipOperation destinationDirectory(String directory) { + return destinationDirectory(new File(directory)); + } + /** * Provides the destination file name that will be used for the zip archive creation. *