Skip to content

Commit

Permalink
feat: add --no-integrations option
Browse files Browse the repository at this point in the history
  • Loading branch information
maxandersen authored and quintesse committed Dec 2, 2024
1 parent ae55c05 commit a1c48c3
Show file tree
Hide file tree
Showing 9 changed files with 51 additions and 17 deletions.
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.isIntegrations()) {
integrationResult = getIntegrationBuildStep().build();
}
getJarBuildStep().build();
} finally {
if (!keepClasses()) {
Expand Down
9 changes: 9 additions & 0 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 Down Expand Up @@ -220,6 +221,14 @@ public void setNativeImage(boolean isNative) {
this.nativeImage = isNative;
}

public boolean isIntegrations() {
return integrations;
}

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
2 changes: 1 addition & 1 deletion src/main/java/dev/jbang/util/Util.java
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ public class Util {
Pattern.MULTILINE);

public static final Pattern mainClassMethod = Pattern.compile(
"(?<=\\n|\\A)(?:public\\s)\\s*(class)\\s*([^\\n\\s]*)");
"(?<=\n|\\A)(?:public\\s)\\s*(class)\\s*([^\\n\\s]*)");

public static final Pattern patternFQCN = Pattern.compile(
"^([a-z][a-z0-9]*\\.)*[a-zA-Z][a-zA-Z0-9_]*$");
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

0 comments on commit a1c48c3

Please sign in to comment.