Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: add --no-integrations option #1875

Merged
merged 3 commits into from
Dec 10, 2024
Merged
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
8 changes: 8 additions & 0 deletions itests/noints.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
///usr/bin/env jbang "$0" "$@" ; exit $?
//NOINTEGRATIONS

public class noints {
public static void main(String... args) {
System.out.println("No integrations here");
}
}
19 changes: 10 additions & 9 deletions src/main/java/dev/jbang/catalog/Alias.java
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ public class Alias extends CatalogItem {
public final Boolean nativeImage;
@SerializedName(value = "native-options")
public final List<String> nativeOptions;
public final Boolean integrations;
public final String jfr;
public final Map<String, String> debug;
public final Boolean cds;
Expand Down Expand Up @@ -87,8 +88,7 @@ public int hashCode() {

public Alias() {
this(null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
null,
null, null, null, null, null, null, null);
null, null, null, null, null, null, null, null, null);
}

public Alias(String scriptRef,
Expand All @@ -107,6 +107,7 @@ public Alias(String scriptRef,
List<String> compileOptions,
Boolean nativeImage,
List<String> nativeOptions,
Boolean integrations,
String jfr,
Map<String, String> debug,
Boolean cds,
Expand Down Expand Up @@ -134,6 +135,7 @@ public Alias(String scriptRef,
this.compileOptions = compileOptions;
this.nativeImage = nativeImage;
this.nativeOptions = nativeOptions;
this.integrations = integrations;
this.jfr = jfr;
this.debug = debug;
this.cds = cds;
Expand Down Expand Up @@ -226,6 +228,7 @@ private static Alias merge(Alias a1, String name, Function<String, Alias> findUn
List<String> nopts = a1.nativeOptions != null && !a1.nativeOptions.isEmpty() ? a1.nativeOptions
: a2.nativeOptions;
Boolean nimg = a1.nativeImage != null ? a1.nativeImage : a2.nativeImage;
Boolean ints = a1.integrations != null ? a1.integrations : a2.integrations;
String jfr = a1.jfr != null ? a1.jfr : a2.jfr;
Map<String, String> debug = a1.debug != null ? a1.debug : a2.debug;
Boolean cds = a1.cds != null ? a1.cds : a2.cds;
Expand All @@ -238,7 +241,7 @@ private static Alias merge(Alias a1, String name, Function<String, Alias> findUn
List<JavaAgent> jags = a1.javaAgents != null && !a1.javaAgents.isEmpty() ? a1.javaAgents : a2.javaAgents;
Catalog catalog = a2.catalog != null ? a2.catalog : a1.catalog;
return new Alias(a2.scriptRef, desc, args, jopts, srcs, ress, deps, repos, cpaths, props, javaVersion,
mainClass, moduleName, copts, nimg, nopts, jfr, debug, cds, inter, ep, ea, esa, mopts, jags,
mainClass, moduleName, copts, nimg, nopts, ints, jfr, debug, cds, inter, ep, ea, esa, mopts, jags,
catalog);
} else {
return a1;
Expand Down Expand Up @@ -283,16 +286,14 @@ private static Alias fromCatalog(String catalogName, String aliasName) {
public Alias withCatalog(Catalog catalog) {
return new Alias(scriptRef, description, arguments, runtimeOptions, sources, resources, dependencies,
repositories, classpaths, properties, javaVersion, mainClass, moduleName, compileOptions, nativeImage,
nativeOptions, jfr, debug, cds, interactive, enablePreview, enableAssertions, enableSystemAssertions,
manifestOptions,
javaAgents, catalog);
nativeOptions, integrations, jfr, debug, cds, interactive, enablePreview, enableAssertions,
enableSystemAssertions, manifestOptions, javaAgents, catalog);
}

public Alias withScriptRef(String scriptRef) {
return new Alias(scriptRef, description, arguments, runtimeOptions, sources, resources, dependencies,
repositories, classpaths, properties, javaVersion, mainClass, moduleName, compileOptions, nativeImage,
nativeOptions, jfr, debug, cds, interactive, enablePreview, enableAssertions, enableSystemAssertions,
manifestOptions,
javaAgents, catalog);
nativeOptions, integrations, jfr, debug, cds, interactive, enablePreview, enableAssertions,
enableSystemAssertions, manifestOptions, javaAgents, catalog);
}
}
8 changes: 4 additions & 4 deletions src/main/java/dev/jbang/cli/Alias.java
Original file line number Diff line number Diff line change
Expand Up @@ -115,11 +115,10 @@ public Integer doCall() {
dependencyInfoMixin.getDependencies(),
dependencyInfoMixin.getRepositories(), dependencyInfoMixin.getClasspaths(),
dependencyInfoMixin.getProperties(), buildMixin.javaVersion, buildMixin.main, buildMixin.module,
buildMixin.compileOptions, nativeMixin.nativeImage, nativeMixin.nativeOptions,
buildMixin.compileOptions, nativeMixin.nativeImage, nativeMixin.nativeOptions, buildMixin.integrations,
runMixin.flightRecorderString, runMixin.debugString, runMixin.cds, runMixin.interactive,
enablePreviewRequested,
runMixin.enableAssertions, runMixin.enableSystemAssertions, buildMixin.manifestOptions,
createJavaAgents(), null);
enablePreviewRequested, runMixin.enableAssertions, runMixin.enableSystemAssertions,
buildMixin.manifestOptions, createJavaAgents(), null);
Path catFile = getCatalog(false);
if (catFile == null) {
catFile = Catalog.getCatalogFile(null);
Expand Down Expand Up @@ -149,6 +148,7 @@ ProjectBuilder createProjectBuilder() {
.compileOptions(buildMixin.compileOptions)
.nativeImage(nativeMixin.nativeImage)
.nativeOptions(nativeMixin.nativeOptions)
.integrations(buildMixin.integrations)
.enablePreview(enablePreviewRequested);
Path cat = getCatalog(false);
if (cat != null) {
Expand Down
1 change: 1 addition & 0 deletions src/main/java/dev/jbang/cli/BaseBuildCommand.java
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@ protected ProjectBuilder createBaseProjectBuilder() {
.manifestOptions(buildMixin.manifestOptions)
.nativeImage(nativeMixin.nativeImage)
.nativeOptions(nativeMixin.nativeOptions)
.integrations(buildMixin.integrations)
.enablePreview(enablePreviewRequested);

// NB: Do not put `.mainClass(buildMixin.main)` here
Expand Down
10 changes: 10 additions & 0 deletions src/main/java/dev/jbang/cli/BuildMixin.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import java.util.Map;

import picocli.CommandLine;
import picocli.CommandLine.Option;

public class BuildMixin {
public String javaVersion;
Expand Down Expand Up @@ -33,6 +34,10 @@ void setJavaVersion(String javaVersion) {
@CommandLine.Option(names = { "--manifest" }, parameterConsumer = KeyValueConsumer.class)
public Map<String, String> manifestOptions;

@Option(names = {
"--integrations" }, description = "Enable integration execution (default: true)", negatable = true)
public Boolean integrations;

public List<String> opts() {
List<String> opts = new ArrayList<>();
if (javaVersion != null) {
Expand All @@ -47,6 +52,11 @@ public List<String> opts() {
opts.add("--module");
opts.add(module);
}
if (Boolean.TRUE.equals(integrations)) {
opts.add("--integrations");
} else if (Boolean.FALSE.equals(integrations)) {
opts.add("--no-integrations");
}
if (compileOptions != null) {
for (String c : compileOptions) {
opts.add("-C");
Expand Down
4 changes: 3 additions & 1 deletion src/main/java/dev/jbang/source/AppBuilder.java
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,9 @@ public CmdGeneratorBuilder build() throws IOException {
// do the actual building
try {
getCompileBuildStep().build();
integrationResult = getIntegrationBuildStep().build();
if (!project.disableIntegrations()) {
integrationResult = getIntegrationBuildStep().build();
}
getJarBuildStep().build();
} finally {
if (!keepClasses()) {
Expand Down
17 changes: 13 additions & 4 deletions src/main/java/dev/jbang/source/Project.java
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ public class Project {
private String mainClass;
private String moduleName;
private boolean nativeImage;
private boolean integrations = true;
private boolean enablePreviewRequested;

private final List<Project> subProjects = new ArrayList<>();
Expand All @@ -49,10 +50,6 @@ public class Project {
public static final String ATTR_PREMAIN_CLASS = "Premain-Class";
public static final String ATTR_AGENT_CLASS = "Agent-Class";

public boolean enablePreview() {
return enablePreviewRequested || (mainSource != null && mainSource.enablePreview());
}

public enum BuildFile {
jbang("build.jbang");

Expand Down Expand Up @@ -197,6 +194,10 @@ public void setMainClass(String mainClass) {
this.mainClass = mainClass;
}

public boolean enablePreview() {
return enablePreviewRequested || (mainSource != null && mainSource.enablePreview());
}

public void setEnablePreviewRequested(boolean enablePreview) {
this.enablePreviewRequested = enablePreview;
}
Expand All @@ -220,6 +221,14 @@ public void setNativeImage(boolean isNative) {
this.nativeImage = isNative;
}

public boolean disableIntegrations() {
return !integrations || (mainSource != null && mainSource.disableIntegrations());
}

public void setIntegrations(boolean integrations) {
this.integrations = integrations;
}

public boolean enableCDS() {
return mainSource != null && mainSource.enableCDS();
}
Expand Down
12 changes: 12 additions & 0 deletions src/main/java/dev/jbang/source/ProjectBuilder.java
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@ public class ProjectBuilder {
private Map<String, String> manifestOptions = new HashMap<>();
private File catalogFile;
private Boolean nativeImage;
private Boolean integrations;
private String javaVersion;
private Boolean enablePreview;

Expand Down Expand Up @@ -172,6 +173,11 @@ public ProjectBuilder nativeImage(Boolean nativeImage) {
return this;
}

public ProjectBuilder integrations(Boolean integrations) {
this.integrations = integrations;
return this;
}

public ProjectBuilder enablePreview(Boolean enablePreviewRequested) {
this.enablePreview = enablePreviewRequested;
return this;
Expand Down Expand Up @@ -429,6 +435,9 @@ private Project updateProject(Project prj) {
if (nativeImage != null) {
prj.setNativeImage(nativeImage);
}
if (integrations != null) {
prj.setIntegrations(integrations);
}
if (enablePreview != null) {
prj.setEnablePreviewRequested(enablePreview);
}
Expand Down Expand Up @@ -591,6 +600,9 @@ private void updateFromAlias(Alias alias) {
if (nativeOptions.isEmpty()) {
nativeOptions(alias.nativeOptions);
}
if (integrations == null) {
integrations(alias.integrations);
}
if (manifestOptions.isEmpty()) {
manifestOptions(alias.manifestOptions);
}
Expand Down
4 changes: 4 additions & 0 deletions src/main/java/dev/jbang/source/Source.java
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,10 @@ public boolean enablePreview() {
return !tagReader.collectRawOptions("PREVIEW").isEmpty();
}

public boolean disableIntegrations() {
return !tagReader.collectRawOptions("NOINTEGRATIONS").isEmpty();
}

// Used only by tests
static Source forResource(String resource, Function<String, String> replaceProperties) {
return forResource(ResourceResolver.forResources(), resource, replaceProperties);
Expand Down
3 changes: 1 addition & 2 deletions src/test/java/dev/jbang/cli/TestRun.java
Original file line number Diff line number Diff line change
Expand Up @@ -2528,8 +2528,7 @@ void testAliasArguments() throws IOException {
File f = examplesTestFolder.resolve("echo.java").toFile();
List<String> args = Arrays.asList("foo", "bar");
Alias alias = new Alias(f.toString(), null, args, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null,
null, null, null, null, null, null, null, null);
null, null, null, null, null, null, null, null, null, null, null, null, null, null);
CatalogUtil.addNearestAlias("echo", alias);

CommandLine.ParseResult pr = JBang .getCommandLine()
Expand Down
Loading
Loading