Skip to content
Draft
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
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -25,3 +25,6 @@ allure-results
.DS_Store
.env
assets/
.cachebro/
CLAUDE.md
PLAN-*.md
37 changes: 31 additions & 6 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ def devkitmanVersion = '0.3.3'
def junitBomVersion = '5.14.1'
def testcontainersVersion = '2.0.2'
def jlineVersion = '3.30.5'
def tambouiVersion = '0.4.0-SNAPSHOT'
def wiremockVersion = '3.13.2'

configurations {
Expand Down Expand Up @@ -155,8 +156,11 @@ dependencies {
implementation 'org.jspecify:jspecify:1.0.0'
implementation 'org.apache.commons:commons-text:1.15.0'
implementation 'org.apache.commons:commons-compress:1.27.1'
implementation 'info.picocli:picocli:4.7.7'
annotationProcessor 'info.picocli:picocli-codegen:4.7.7'
implementation('org.aesh:aesh:3.7') {
exclude group: 'org.aesh', module: 'readline'
}
implementation 'org.aesh:readline-api:3.7'
annotationProcessor 'org.aesh:aesh-processor:3.7'
implementation 'io.quarkus.qute:qute-core:1.13.7.Final'
implementation 'org.codehaus.plexus:plexus-java:1.2.0'
implementation 'com.google.code.gson:gson:2.13.2'
Expand All @@ -171,8 +175,8 @@ dependencies {
runtimeOnly "eu.maveniverse.maven.mima.runtime:standalone-static:2.4.36"
implementation "org.apache.maven:maven-model:3.9.11"

implementation "org.jline:jline-console-ui:$jlineVersion"
implementation "org.jline:jline-terminal-jni:$jlineVersion"
implementation "dev.tamboui:tamboui-toolkit:$tambouiVersion"
implementation "dev.tamboui:tamboui-aesh-backend:$tambouiVersion"

implementation "eu.maveniverse.maven.nisse:core:0.6.2"
implementation "eu.maveniverse.maven.nisse.sources:os-source:0.6.2"
Expand Down Expand Up @@ -352,7 +356,9 @@ shadowJar {
}

test {
useJUnitPlatform()
useJUnitPlatform() {
excludeTags 'benchmark'
}
javaLauncher = testExecutionToolchain
def jvmArgsList = ["-javaagent:${configurations.agent.singleFile}"] // for allure reporting
if (testJavaVersion.asInt() >= 9) {
Expand All @@ -378,6 +384,25 @@ test {
systemProperty('jbang.test.wiremock.enable', project.findProperty('disableWiremock') == 'true' ? 'false' : 'true')
}

task benchmark(type: Test) {
description = 'Run startup benchmark tests'
group = 'verification'
useJUnitPlatform() {
includeTags 'benchmark'
}
javaLauncher = testExecutionToolchain
def jvmArgsList = []
if (testJavaVersion.asInt() >= 9) {
jvmArgsList.addAll([
"--add-opens", "java.base/java.lang=ALL-UNNAMED",
"--add-opens", "java.base/java.util=ALL-UNNAMED"
])
}
jvmArgs = jvmArgsList
testLogging.showStandardStreams = true
systemProperty('jbang.test.wiremock.enable', project.findProperty('disableWiremock') == 'true' ? 'false' : 'true')
}

jacoco {
toolVersion = '0.8.14' // 0.8.14 supports java 25
}
Expand Down Expand Up @@ -557,7 +582,7 @@ asciidoctor {
task clidoc(type: Exec) {
doFirst {
println 'Generating cli man pages'
commandLine 'build/install/jbang/bin/jbang', '--cp', 'build/install/jbang/bin/jbang.jar', '--deps','org.eclipse.sisu:org.eclipse.sisu.inject:0.3.5', 'docs/genadoc.java', '-d', 'docs/modules/cli', '--force', 'dev.jbang.cli.JBang'
commandLine 'build/install/jbang/bin/jbang', '--cp', 'build/install/jbang/bin/jbang.jar', 'docs/genadoc.java', '-d', 'docs/modules/cli', '--force', 'dev.jbang.cli.JBang'
}
}

Expand Down
1,094 changes: 254 additions & 840 deletions docs/genadoc.java

Large diffs are not rendered by default.

68 changes: 63 additions & 5 deletions docs/modules/cli/nav.adoc
Original file line number Diff line number Diff line change
@@ -1,5 +1,63 @@
* CLI Reference
+
--
include::partial$nav-jbang.adoc[]
--
* xref:jbang:cli:jbang.adoc[jbang]
** xref:jbang:cli:jbang-template.adoc[template]
*** xref:jbang:cli:jbang-template-add.adoc[add]
*** xref:jbang:cli:jbang-template-list.adoc[list]
*** xref:jbang:cli:jbang-template-remove.adoc[remove]
** xref:jbang:cli:jbang-trust.adoc[trust]
*** xref:jbang:cli:jbang-trust-add.adoc[add]
*** xref:jbang:cli:jbang-trust-list.adoc[list]
*** xref:jbang:cli:jbang-trust-remove.adoc[remove]
** xref:jbang:cli:jbang-app.adoc[app]
*** xref:jbang:cli:jbang-app-uninstall.adoc[uninstall]
*** xref:jbang:cli:jbang-app-install.adoc[install]
*** xref:jbang:cli:jbang-app-setup.adoc[setup]
*** xref:jbang:cli:jbang-app-list.adoc[list]
** xref:jbang:cli:jbang-init.adoc[init]
** xref:jbang:cli:jbang-completion.adoc[completion]
** xref:jbang:cli:jbang-cache.adoc[cache]
*** xref:jbang:cli:jbang-cache-clear.adoc[clear]
** xref:jbang:cli:jbang-edit.adoc[edit]
** xref:jbang:cli:jbang-catalog.adoc[catalog]
*** xref:jbang:cli:jbang-catalog-add.adoc[add]
*** xref:jbang:cli:jbang-catalog-update.adoc[update]
*** xref:jbang:cli:jbang-catalog-list.adoc[list]
*** xref:jbang:cli:jbang-catalog-remove.adoc[remove]
** xref:jbang:cli:jbang-run.adoc[run]
** xref:jbang:cli:jbang-wrapper.adoc[wrapper]
*** xref:jbang:cli:jbang-wrapper-install.adoc[install]
** xref:jbang:cli:jbang-deps.adoc[deps]
*** xref:jbang:cli:jbang-deps-add.adoc[add]
*** xref:jbang:cli:jbang-deps-search.adoc[search]
** xref:jbang:cli:jbang-version.adoc[version]
** xref:jbang:cli:jbang-jdk.adoc[jdk]
*** xref:jbang:cli:jbang-jdk-default.adoc[default]
*** xref:jbang:cli:jbang-jdk-java-env.adoc[java-env]
*** xref:jbang:cli:jbang-jdk-uninstall.adoc[uninstall]
*** xref:jbang:cli:jbang-jdk-install.adoc[install]
*** xref:jbang:cli:jbang-jdk-list.adoc[list]
*** xref:jbang:cli:jbang-jdk-exec.adoc[exec]
*** xref:jbang:cli:jbang-jdk-home.adoc[home]
** xref:jbang:cli:jbang-build.adoc[build]
** xref:jbang:cli:jbang-alias.adoc[alias]
*** xref:jbang:cli:jbang-alias-add.adoc[add]
*** xref:jbang:cli:jbang-alias-list.adoc[list]
*** xref:jbang:cli:jbang-alias-remove.adoc[remove]
** xref:jbang:cli:jbang-export.adoc[export]
*** xref:jbang:cli:jbang-export-gradle.adoc[gradle]
*** xref:jbang:cli:jbang-export-native.adoc[native]
*** xref:jbang:cli:jbang-export-maven.adoc[maven]
*** xref:jbang:cli:jbang-export-fatjar.adoc[fatjar]
*** xref:jbang:cli:jbang-export-portable.adoc[portable]
*** xref:jbang:cli:jbang-export-mavenrepo.adoc[mavenrepo]
*** xref:jbang:cli:jbang-export-jlink.adoc[jlink]
*** xref:jbang:cli:jbang-export-local.adoc[local]
** xref:jbang:cli:jbang-config.adoc[config]
*** xref:jbang:cli:jbang-config-set.adoc[set]
*** xref:jbang:cli:jbang-config-get.adoc[get]
*** xref:jbang:cli:jbang-config-list.adoc[list]
*** xref:jbang:cli:jbang-config-unset.adoc[unset]
** xref:jbang:cli:jbang-info.adoc[info]
*** xref:jbang:cli:jbang-info-docs.adoc[docs]
*** xref:jbang:cli:jbang-info-classpath.adoc[classpath]
*** xref:jbang:cli:jbang-info-jar.adoc[jar]
*** xref:jbang:cli:jbang-info-tools.adoc[tools]
131 changes: 62 additions & 69 deletions docs/modules/cli/pages/jbang-alias-add.adoc
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
// This is a generated documentation file based on picocli
// To change it update the picocli code or the genrator
// This is a generated documentation file based on aesh
// To change it update the aesh code or the generator
// tag::picocli-generated-full-manpage[]
// tag::picocli-generated-man-section-header[]
:doctype: manpage
:manmanual: jbang Manual
:manmanual: alias Manual
:man-linkstyle: pass:[blue R < >]
= jbang-alias-add(1)

Expand All @@ -12,27 +12,14 @@
// tag::picocli-generated-man-section-name[]
== Name

jbang-alias-add - Add alias for script reference.
alias-add - Add alias for script reference.

// end::picocli-generated-man-section-name[]

// tag::picocli-generated-man-section-synopsis[]
== Synopsis

*jbang alias add* *-o* [*-ghin*] [*--[no-]cds*] [*--ea*] [*--enable-preview*] [*--esa*]
[*--force*] *--fresh* [*--insecure*] [*--[no-]integrations*] [*--itr*]
[*--jsh*] *--quiet* *--verbose* [*--jfr*[=_<flightRecorderString>_]]
[*--module*[=_<module>_]] [*-d*[=_<String=String>_]]...
[*--catalog*=_<catalog>_] [*--config*=_<config>_]
[*--description*=_<description>_] [*-f*=_<catalogFile>_]
[*-j*=_<javaVersion>_] [*-m*=_<main>_] [*--name*=_<name>_] [*-T*=_<forceType>_]
[*-C*=_<compileOptions>_]... [*--cp*=_<classpaths>_]...
[*-D*=_<String=String>_]... [*--deps*=_<dependencies>_]...
[*--docs*=_<docs>_]... [*--files*=_<resources>_]...
[*--javaagent*=_<String=String>_]...
[*--manifest*=_<String=String>_]... [*-N*=_<nativeOptions>_]...
[*-R*=_<javaRuntimeOptions>_]... [*--repos*=_<repositories>_]...
[*-s*=_<sources>_]... [_<scriptOrFile>_] [_params_...]
*alias add* [*--catalog*=_catalog_] [*--cds*] [*-C*=_compile-option_] [*--config*=_config_] [*--cp*=_cp_] [*-d*=_debug_] [*--deps*=_deps_] [*--description*=_description_] [*--docs*=_docs_] [*--enable-preview*] [*--enableassertions*] [*--enablesystemassertions*] [*-f*=_file_] [*--files*=_files_] [*--force*] [*--fresh*] [*-g*] [*-h*=_help_] [*--ignore-transitive-repositories*] [*--insecure*] [*--integrations*] [*-i*] [*-j*=_java_] [*--javaagent*=_javaagent_] [*--jfr*=_jfr_] [*--jsh*] [*-m*=_main_] [*--manifest*=_manifest_] [*--module*=_module_] [*--name*=_name_] [*-n*] [*-N*=_native-option_] [*-o*] [*--preview*] [*-D*=_properties_] [*--quiet*] [*--repos*=_repos_] [*-R*=_runtime-option_] [*-T*=_source-type_] [*-s*=_sources_] [*-x*] [*--verbose*] [__] [__...]

// end::picocli-generated-man-section-synopsis[]

Expand All @@ -46,49 +33,46 @@ Add alias for script reference.
// tag::picocli-generated-man-section-options[]
== Options

*-C*, *--compile-option*=_<compileOptions>_::
Options to pass to the compiler

*--catalog*=_<catalog>_::
*--catalog*=_catalog_::
Path to catalog file to be used instead of the default

*--[no-]cds*::
*--cds*::
If specified Class Data Sharing (CDS) will be used for building and running (requires Java 13+)

*--config*=_<config>_::
*-C*, *--compile-option*=_compile-option_::
Options to pass to the compiler

*--config*=_config_::
Path to config file to be used instead of the default

*--cp, --class-path*=_<classpaths>_::
*--cp*=_cp_::
Add class path entries.

*-d*, *--debug*[=_<String=String>_]::
Launch with java debug enabled. Set host/port or provide key/value list of JPDA options (default: null)
*-d*, *--debug*=_debug_::
Launch with java debug enabled.

*-D*, _<String=String>_::
set a system property

*--deps*=_<dependencies>_::
*--deps*=_deps_::
Add additional dependencies (Use commas to separate them).

*--description*=_<description>_::
*--description*=_description_::
A description for the alias

*--docs*=_<docs>_::
*--docs*=_docs_::
Documentation reference for the alias

*--ea, --enableassertions*::
Enable assertions

*--enable-preview*::
Activate Java preview features

*--esa, --enablesystemassertions*::
*--enableassertions*::
Enable assertions

*--enablesystemassertions*::
Enable system assertions

*-f*, *--file*=_<catalogFile>_::
*-f*, *--file*=_file_::
Path to the catalog file to use

*--files*=_<resources>_::
*--files*=_files_::
Add additional files.

*--force*::
Expand All @@ -100,68 +84,77 @@ Add alias for script reference.
*-g*, *--global*::
Use the global (user) catalog file

*-h*, *--help*::
Display help/info. Use 'jbang <command> -h' for detailed usage.
*-h*, *--help*=_help_::
Display help (use --help=all for all options)

*-i*, *--interactive*::
Activate interactive mode
*--ignore-transitive-repositories*::
Ignore remote repositories found in transitive dependencies

*--insecure*::
Enable insecure trust of all SSL certificates.

*--[no-]integrations*::
Enable integration execution (default: true)
*--integrations*::
Enable or disable integration execution (default: true)

*--itr, --ignore-transitive-repositories*::
Ignore remote repositories found in transitive dependencies
*-i*, *--interactive*::
Activate interactive mode

*-j*, *--java*=_<javaVersion>_::
*-j*, *--java*=_java_::
JDK version to use for running the script.

*--javaagent*=_<String=String>_::
*--javaagent*=_javaagent_::


*--jfr*[=_<flightRecorderString>_]::
*--jfr*=_jfr_::
Launch with Java Flight Recorder enabled.

*--jsh*::
Force input to be interpreted with jsh/jshell. Deprecated: use '--source-type jshell'

*-m*, *--main*=_<main>_::
Main class to use when running. Used primarily for running jar's.
*-m*, *--main*=_main_::
Main class to use when running. Used primarily for running jar's. Can be a glob pattern using ? and *.

*--manifest*=_<String=String>_::
*--manifest*=_manifest_::


*--module*[=_<module>_]::
*--module*=_module_::
Treat resource as a module. Optionally with the given module name

*--name*=_name_::
A name for the alias

*-n*, *--native*::
Build using native-image

*-N*, *--native-option*=_<nativeOptions>_::
*-N*, *--native-option*=_native-option_::
Options to pass to the native image tool

*--name*=_<name>_::
A name for the alias

*-o*, *--offline*::
Work offline. Fail-fast if dependencies are missing. No connections will be attempted
Work offline. Fail-fast if dependencies are missing.

*--preview*::
Enable jbang preview features

*-D*, *--properties*=_properties_::
set a system property

*--quiet*::
jbang will be quiet, only print when error occurs.

*-R*, *--java-options, --runtime-option*=_<javaRuntimeOptions>_::
*--repos*=_repos_::
Add additional repositories.

*-R*, *--runtime-option*=_runtime-option_::
Options to pass to the Java runtime

*--repos*=_<repositories>_::
Add additional repositories.
*-T*, *--source-type*=_source-type_::
Force input to be interpreted as the given type. Can be: java, jshell, groovy, kotlin, or markdown

*-s*, *--sources*=_<sources>_::
*-s*, *--sources*=_sources_::
Add additional sources.

*-T*, *--source-type*=_<forceType>_::
Force input to be interpreted as the given type. Can be: java, jshell, groovy, kotlin, or markdown
*-x*, *--stacktrace*::
Print exceptions stacktraces to stderr (even when quiet).

*--verbose*::
jbang will be verbose on what it does.
Expand All @@ -171,11 +164,11 @@ Add alias for script reference.
// tag::picocli-generated-man-section-arguments[]
== Arguments

[_<scriptOrFile>_]::
A reference to a source file
_arg_::
A file or URL to a Java code file

[_params_...]::
Parameters to pass on to the script
_arg_::
Parameters for the script

// end::picocli-generated-man-section-arguments[]

Expand Down
Loading