From 1cd69667ea0ecaabaccc8dbd22698448d7f05d2a Mon Sep 17 00:00:00 2001 From: Thevakumar-Luheerathan Date: Tue, 21 Nov 2023 11:33:23 +0530 Subject: [PATCH 1/8] Add push,pull support --- .../io/ballerina/cli/cmd/PushCommand.java | 54 +++++++++++ .../io/ballerina/cli/cmd/ToolCommand.java | 96 ++++++++++++++++--- .../cli/launcher/util/BalToolsUtil.java | 5 +- .../ballerina/projects/BalToolsManifest.java | 47 +++++---- .../io/ballerina/projects/BalToolsToml.java | 28 ++++-- .../internal/BalToolsManifestBuilder.java | 13 ++- 6 files changed, 198 insertions(+), 45 deletions(-) diff --git a/cli/ballerina-cli/src/main/java/io/ballerina/cli/cmd/PushCommand.java b/cli/ballerina-cli/src/main/java/io/ballerina/cli/cmd/PushCommand.java index 82359f1ab2cc..d2c8bd343d08 100644 --- a/cli/ballerina-cli/src/main/java/io/ballerina/cli/cmd/PushCommand.java +++ b/cli/ballerina-cli/src/main/java/io/ballerina/cli/cmd/PushCommand.java @@ -17,6 +17,9 @@ */ package io.ballerina.cli.cmd; +import com.google.gson.Gson; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; import io.ballerina.cli.BLauncherCmd; import io.ballerina.cli.utils.FileUtils; import io.ballerina.projects.DependencyManifest; @@ -44,9 +47,12 @@ import org.wso2.ballerinalang.util.RepoUtils; import picocli.CommandLine; +import java.io.BufferedReader; import java.io.File; +import java.io.FileWriter; import java.io.IOException; import java.io.PrintStream; +import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; @@ -387,6 +393,7 @@ private void pushBalaToCustomRepo(Path balaFilePath) { ProjectUtils.deleteDirectory(balaCachesPath); } ProjectUtils.extractBala(balaFilePath, balaDestPath); + handleLocalTools(balaDestPath, org, packageName, repoPath.resolve(ProjectConstants.BALA_DIR_NAME)); } catch (IOException e) { throw new ProjectException("error while pushing bala file '" + balaFilePath + "' to '" + ProjectConstants.LOCAL_REPOSITORY_NAME + "' repository. " + e.getMessage()); @@ -402,6 +409,53 @@ private void pushBalaToCustomRepo(Path balaFilePath) { + " to '" + repositoryName + "' repository."); } + private void handleLocalTools(Path balaDestPath, String org, String packageName, Path localRepoBalaPath) { + Path balToolJsonPath = balaDestPath.resolve("tool").resolve("bal-tool.json"); + String toolId = null; + JsonObject balToolJson; + JsonObject localToolJson; + Gson gson = new Gson(); + if (!balToolJsonPath.toFile().exists()) { + return; + } + try (BufferedReader bufferedReader = Files.newBufferedReader(balToolJsonPath, StandardCharsets.UTF_8)) { + balToolJson = gson.fromJson(bufferedReader, JsonObject.class); + } catch (IOException e) { + throw new ProjectException("Failed to read bal-tools.json file: " + e.getMessage()); + } + toolId = balToolJson.get("tool_id").getAsString(); + + if (toolId == null) { + return; + } + + JsonObject packageDesc = new JsonObject(); + packageDesc.addProperty("org", org); + packageDesc.addProperty("name", packageName); + Path localToolJsonPath = localRepoBalaPath.resolve("local-tools.json"); + if (localToolJsonPath.toFile().exists()) { + try (BufferedReader bufferedReader = Files.newBufferedReader(localToolJsonPath, + StandardCharsets.UTF_8)) { + localToolJson = gson.fromJson(bufferedReader, JsonObject.class); + if (localToolJson.has(toolId)) { + localToolJson.remove(toolId); + } + localToolJson.add(toolId, packageDesc); + } catch (IOException e) { + throw new ProjectException("Failed to read local-tools.json file: " + e.getMessage()); + } + } else { + localToolJson = new JsonObject(); + localToolJson.add(toolId, packageDesc); + } + + try (FileWriter writer = new FileWriter(localToolJsonPath.toFile())) { + writer.write(gson.toJson(localToolJson)); + } catch (IOException e) { + throw new ProjectException("Failed to write local-tools.json file: " + e.getMessage()); + } + } + /** * Push a bala file to remote repository. * diff --git a/cli/ballerina-cli/src/main/java/io/ballerina/cli/cmd/ToolCommand.java b/cli/ballerina-cli/src/main/java/io/ballerina/cli/cmd/ToolCommand.java index 7ee599ae54fd..96f74892b4b4 100644 --- a/cli/ballerina-cli/src/main/java/io/ballerina/cli/cmd/ToolCommand.java +++ b/cli/ballerina-cli/src/main/java/io/ballerina/cli/cmd/ToolCommand.java @@ -18,6 +18,8 @@ package io.ballerina.cli.cmd; +import com.google.gson.Gson; +import com.google.gson.JsonObject; import io.ballerina.cli.BLauncherCmd; import io.ballerina.cli.utils.PrintUtils; import io.ballerina.projects.BalToolsManifest; @@ -42,8 +44,10 @@ import org.wso2.ballerinalang.util.RepoUtils; import picocli.CommandLine; +import java.io.BufferedReader; import java.io.IOException; import java.io.PrintStream; +import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Path; import java.util.ArrayList; @@ -89,6 +93,7 @@ public class ToolCommand implements BLauncherCmd { private static final String TOOL_REMOVE_USAGE_TEXT = "bal tool remove :[]"; private static final String TOOL_SEARCH_USAGE_TEXT = "bal tool search [|]"; private static final String TOOL_UPDATE_USAGE_TEXT = "bal tool update "; + private static final String EMPTY_STRING = ""; private final boolean exitWhenFinish; private final PrintStream outStream; @@ -103,6 +108,9 @@ public class ToolCommand implements BLauncherCmd { @CommandLine.Option(names = {"--help", "-h"}, hidden = true) private boolean helpFlag; + @CommandLine.Option(names = "--repository") + private String repositoryName; + private String toolId; private String org; private String name; @@ -153,6 +161,14 @@ public void execute() { return; } + if (repositoryName != null && !repositoryName.equals(ProjectConstants.LOCAL_REPOSITORY_NAME)) { + String errMsg = "unsupported repository '" + repositoryName + "' found. Only '" + + ProjectConstants.LOCAL_REPOSITORY_NAME + "' repository is supported."; + CommandUtil.printError(this.errStream, errMsg, null, false); + CommandUtil.exitError(this.exitWhenFinish); + return; + } + String command = argList.get(0); switch (command) { case TOOL_PULL_COMMAND -> handlePullCommand(); @@ -210,6 +226,13 @@ private void handlePullCommand() { return; } + if (ProjectConstants.LOCAL_REPOSITORY_NAME.equals(repositoryName) && EMPTY_STRING.equals(version)) { + CommandUtil.printError(errStream, "a version should be provided when pulling a tool from local " + + "repository", null, false); + CommandUtil.exitError(this.exitWhenFinish); + return; + } + if (!validateToolName(toolId)) { CommandUtil.printError(errStream, "invalid tool id.", TOOL_PULL_USAGE_TEXT, false); CommandUtil.exitError(this.exitWhenFinish); @@ -271,7 +294,7 @@ private void handleUseCommand() { BalToolsToml balToolsToml = BalToolsToml.from(balToolsTomlPath); BalToolsManifest balToolsManifest = BalToolsManifestBuilder.from(balToolsToml).build(); - Optional tool = balToolsManifest.getTool(toolId, version); + Optional tool = balToolsManifest.getTool(toolId, version, repositoryName); if (tool.isEmpty()) { CommandUtil.printError(errStream, "tool '" + toolId + ":" + version + "' is not found. " + "Run 'bal tool pull " + toolId + ":" + version @@ -294,7 +317,7 @@ private void handleUseCommand() { return; } - balToolsManifest.setActiveToolVersion(toolId, version); + balToolsManifest.setActiveToolVersion(toolId, version, repositoryName); balToolsToml.modify(balToolsManifest); outStream.println("tool '" + toolId + ":" + version + "' successfully set as the active version."); } @@ -415,6 +438,15 @@ public void pullToolAndUpdateBalToolsToml(String toolIdArg, String versionArg) { String supportedPlatform = Arrays.stream(JvmTarget.values()) .map(JvmTarget::code) .collect(Collectors.joining(",")); + if (ProjectConstants.LOCAL_REPOSITORY_NAME.equals(repositoryName)) { + if (!isToolAvailableInLocalRepo(toolId, version)) { + errStream.println("tool '" + toolId + ":" + version + "' is not available in local repository.\nPlease " + + "publish it first with 'bal push --repository=local' command."); + CommandUtil.exitError(this.exitWhenFinish); + } + addToBalToolsToml(); + return; + } try { if (isToolAvailableLocally(toolId, version)) { outStream.println("tool " + toolId + ":" + version + " is already available locally."); @@ -432,6 +464,31 @@ public void pullToolAndUpdateBalToolsToml(String toolIdArg, String versionArg) { } } + private boolean isToolAvailableInLocalRepo(String toolId, String version) { + JsonObject localToolJson; + Gson gson = new Gson(); + Path localBalaPath = RepoUtils.createAndGetHomeReposPath().resolve(Path.of(REPOSITORIES_DIR, + ProjectConstants.LOCAL_REPOSITORY_NAME, BALA_DIR_NAME)); + Path localToolJsonPath = localBalaPath.resolve("local-tools.json"); + + if (!Files.exists(localToolJsonPath)) { + return false; + } + + try (BufferedReader bufferedReader = Files.newBufferedReader(localToolJsonPath, StandardCharsets.UTF_8)) { + localToolJson = gson.fromJson(bufferedReader, JsonObject.class); + JsonObject pkgDesc = localToolJson.get(toolId).getAsJsonObject(); + if (pkgDesc.isEmpty()) { + return false; + } + org = pkgDesc.get("org").getAsString(); + name = pkgDesc.get("name").getAsString(); + return Files.exists(localBalaPath.resolve(org).resolve(name).resolve(version)); + } catch (IOException e) { + throw new ProjectException("Failed to read local-tools.json file: " + e.getMessage()); + } + } + private void pullToolFromCentral(String supportedPlatform, Path balaCacheDirPath) throws CentralClientException { Settings settings; try { @@ -477,7 +534,7 @@ private void addToBalToolsToml() { return; } - balToolsManifest.addTool(toolId, org, name, version, true); + balToolsManifest.addTool(toolId, org, name, version, true, repositoryName); balToolsToml.modify(balToolsManifest); outStream.println("tool '" + toolId + ":" + version + "' successfully set as the active version."); } @@ -487,7 +544,7 @@ private List listBalToolsTomlFile() { BalToolsManifest balToolsManifest = BalToolsManifestBuilder.from(balToolsToml).build(); List flattenedTools = new ArrayList<>(); balToolsManifest.tools().values().stream() - .flatMap(map -> map.values().stream()) + .flatMap(map -> map.values().stream()).flatMap(map -> map.values().stream()) .sorted(Comparator.comparing(BalToolsManifest.Tool::id) .thenComparing(BalToolsManifest.Tool::version).reversed()) .forEach(flattenedTools::add); @@ -498,7 +555,7 @@ private void removeAllToolVersions() { BalToolsToml balToolsToml = BalToolsToml.from(balToolsTomlPath); BalToolsManifest balToolsManifest = BalToolsManifestBuilder.from(balToolsToml).build(); - Optional> toolVersions = + Optional>> toolVersions = Optional.ofNullable(balToolsManifest.tools().get(toolId)); if (toolVersions.isEmpty() || toolVersions.get().isEmpty()) { CommandUtil.printError(errStream, "tool " + toolId + " not found.", null, false); @@ -508,7 +565,8 @@ private void removeAllToolVersions() { balToolsManifest.removeTool(toolId); balToolsToml.modify(balToolsManifest); - Optional tool = toolVersions.get().values().stream().findAny(); + Optional tool = toolVersions.get().values().stream().findAny() + .flatMap(value -> value.values().stream().findAny()); tool.ifPresent(value -> deleteAllCachedToolVersions(value.org(), value.name())); outStream.println("tool '" + toolId + "' successfully removed."); } @@ -517,7 +575,7 @@ private void removeSpecificToolVersion() { BalToolsToml balToolsToml = BalToolsToml.from(balToolsTomlPath); BalToolsManifest balToolsManifest = BalToolsManifestBuilder.from(balToolsToml).build(); - Optional tool = balToolsManifest.getTool(toolId, version); + Optional tool = balToolsManifest.getTool(toolId, version, repositoryName); if (tool.isEmpty()) { CommandUtil.printError(errStream, "tool " + toolId + ":" + version + " not found.", null, false); CommandUtil.exitError(this.exitWhenFinish); @@ -529,7 +587,7 @@ private void removeSpecificToolVersion() { return; } - balToolsManifest.removeToolVersion(toolId, version); + balToolsManifest.removeToolVersion(toolId, version, repositoryName); balToolsToml.modify(balToolsManifest); deleteCachedToolVersion(tool.get().org(), tool.get().name(), version); outStream.println("tool '" + toolId + ":" + version + "' successfully removed."); @@ -590,7 +648,7 @@ private void searchToolsInCentral(String keyword) { } } catch (CentralClientException e) { String errorMessage = e.getMessage(); - if (null != errorMessage && !"".equals(errorMessage.trim())) { + if (null != errorMessage && !EMPTY_STRING.equals(errorMessage.trim())) { // removing the error stack if (errorMessage.contains("\n\tat")) { errorMessage = errorMessage.substring(0, errorMessage.indexOf("\n\tat")); @@ -610,7 +668,7 @@ private boolean isToolAvailableLocally(String toolId, String version) { } BalToolsToml balToolsToml = BalToolsToml.from(balToolsTomlPath); BalToolsManifest balToolsManifest = BalToolsManifestBuilder.from(balToolsToml).build(); - Optional toolOptional = balToolsManifest.getTool(toolId, version); + Optional toolOptional = balToolsManifest.getTool(toolId, version, repositoryName); if (toolOptional.isEmpty()) { return false; } @@ -633,7 +691,9 @@ private boolean isToolAvailableLocally(String toolId, String version) { private boolean checkToolDistCompatibility() { SemanticVersion currentDistVersion = SemanticVersion.from(RepoUtils.getBallerinaShortVersion()); - SemanticVersion toolDistVersion = getToolDistVersionFromCentralCache(); + SemanticVersion toolDistVersion = ProjectConstants.LOCAL_REPOSITORY_NAME.equals(repositoryName) + ? getToolDistVersionFromLocalCache() + : getToolDistVersionFromCentralCache(); if (!isCompatibleWithLocalDistVersion(currentDistVersion, toolDistVersion)) { CommandUtil.printError(errStream, "tool '" + toolId + ":" + version + "' is not compatible with the " + "current Ballerina distribution '" + RepoUtils.getBallerinaShortVersion() + @@ -653,6 +713,15 @@ private SemanticVersion getToolDistVersionFromCentralCache() { return SemanticVersion.from(packageJson.getBallerinaVersion()); } + private SemanticVersion getToolDistVersionFromLocalCache() { + Path localBalaDirPath = ProjectUtils.createAndGetHomeReposPath() + .resolve(REPOSITORIES_DIR).resolve(ProjectConstants.LOCAL_REPOSITORY_NAME) + .resolve(ProjectConstants.BALA_DIR_NAME); + Path balaPath = CommandUtil.getPlatformSpecificBalaPath(org, name, version, localBalaDirPath); + PackageJson packageJson = BalaFiles.readPackageJson(balaPath); + return SemanticVersion.from(packageJson.getBallerinaVersion()); + } + private boolean isCompatibleWithLocalDistVersion(SemanticVersion localDistVersion, SemanticVersion toolDistVersion) { return localDistVersion.major() == toolDistVersion.major() @@ -666,8 +735,9 @@ private boolean isToolVersionAlreadyActive(String toolId, String version) { BalToolsToml balToolsToml = BalToolsToml.from(balToolsTomlPath); BalToolsManifest balToolsManifest = BalToolsManifestBuilder.from(balToolsToml).build(); if (balToolsManifest.tools().containsKey(toolId)) { - Map toolVersions = balToolsManifest.tools().get(toolId); - return toolVersions.containsKey(version) && toolVersions.get(version).active(); + Map> toolVersions = balToolsManifest.tools().get(toolId); + return toolVersions.containsKey(version) && toolVersions.get(version).containsKey(repositoryName) && + toolVersions.get(version).get(repositoryName).active(); } return false; } diff --git a/cli/ballerina-cli/src/main/java/io/ballerina/cli/launcher/util/BalToolsUtil.java b/cli/ballerina-cli/src/main/java/io/ballerina/cli/launcher/util/BalToolsUtil.java index cb49ecb7dcd7..546ce77a39bd 100644 --- a/cli/ballerina-cli/src/main/java/io/ballerina/cli/launcher/util/BalToolsUtil.java +++ b/cli/ballerina-cli/src/main/java/io/ballerina/cli/launcher/util/BalToolsUtil.java @@ -175,6 +175,7 @@ private static List getToolCommandJarAndDependencyJars(String commandName) // we load all tool jars for the help, default commands and --help, -h options if (HELP_COMMAND.equals(commandName)) { return balToolsManifest.tools().values().stream() + .flatMap(map -> map.values().stream()) .flatMap(map -> map.values().stream()) .filter(BalToolsManifest.Tool::active) .map(tool1 -> findJarFiles(CommandUtil.getPlatformSpecificBalaPath( @@ -271,8 +272,8 @@ public static void updateOldBalToolsToml() { boolean isActive = balToolsManifest.getActiveTool(tool.id()).isEmpty() && latestVersion.isPresent() && latestVersion.get().equals(version); - if (balToolsManifest.getTool(tool.id(), version).isEmpty()) { - balToolsManifest.addTool(tool.id(), tool.org(), tool.name(), version, isActive); + if (balToolsManifest.getTool(tool.id(), version, null).isEmpty()) { + balToolsManifest.addTool(tool.id(), tool.org(), tool.name(), version, isActive, null); } }); } diff --git a/compiler/ballerina-lang/src/main/java/io/ballerina/projects/BalToolsManifest.java b/compiler/ballerina-lang/src/main/java/io/ballerina/projects/BalToolsManifest.java index fecdb77a02e9..4c5a7df6696c 100644 --- a/compiler/ballerina-lang/src/main/java/io/ballerina/projects/BalToolsManifest.java +++ b/compiler/ballerina-lang/src/main/java/io/ballerina/projects/BalToolsManifest.java @@ -17,7 +17,10 @@ */ package io.ballerina.projects; +import java.util.ArrayList; +import java.util.Collection; import java.util.HashMap; +import java.util.List; import java.util.Map; import java.util.Optional; @@ -27,9 +30,9 @@ * @since 2201.6.0 */ public class BalToolsManifest { - private final Map> tools; + private final Map>> tools; - private BalToolsManifest(Map> tools) { + private BalToolsManifest(Map>> tools) { this.tools = tools; } @@ -37,42 +40,46 @@ public static BalToolsManifest from() { return new BalToolsManifest(new HashMap<>()); } - public static BalToolsManifest from(Map> tools) { + public static BalToolsManifest from(Map>>tools) { return new BalToolsManifest(tools); } - public Map> tools() { + public Map>> tools() { return tools; } - public void addTool(String id, String org, String name, String version, Boolean active) { + public void addTool(String id, String org, String name, String version, Boolean active, String repository) { if (!tools.containsKey(id)) { tools.put(id, new HashMap<>()); } + if (!tools.get(id).containsKey(version)) { + tools.get(id).put(version, new HashMap<>()); + } + if (active) { flipCurrentActiveToolVersion(id); } - tools.get(id).put(version, new Tool(id, org, name, version, active)); + tools.get(id).get(version).put(repository, new Tool(id, org, name, version, active, repository)); } - public Optional getTool(String id, String version) { - if (tools.containsKey(id)) { - return Optional.ofNullable(tools.get(id).get(version)); + public Optional getTool(String id, String version, String repository) { + if (tools.containsKey(id) && tools.get(id).containsKey(version)) { + return Optional.ofNullable(tools.get(id).get(version).get(repository)); } return Optional.empty(); } public Optional getActiveTool(String id) { if (tools.containsKey(id)) { - return tools.get(id).values().stream().filter(Tool::active).findFirst(); + tools.get(id).values().stream().flatMap(v -> v.values().stream()).filter(Tool::active).findFirst(); } return Optional.empty(); } - public void setActiveToolVersion(String id, String version) { + public void setActiveToolVersion(String id, String version, String repository) { if (tools.containsKey(id)) { flipCurrentActiveToolVersion(id); - tools.get(id).get(version).setActive(true); + tools.get(id).get(version).get(repository).setActive(true); } } @@ -83,14 +90,14 @@ public void removeTool(String id) { tools.remove(id); } - public void removeToolVersion(String id, String version) { - if (tools.containsKey(id)) { - tools.get(id).remove(version); + public void removeToolVersion(String id, String version, String repository) { + if (tools.containsKey(id) && tools.get(id).containsKey(version)) { + tools.get(id).get(version).remove(repository); } } private void flipCurrentActiveToolVersion(String id) { - tools.get(id).forEach((k, v) -> v.setActive(false)); + tools.get(id).forEach((k, v) -> v.forEach((k1, v1) -> v1.setActive(false))); } /** @@ -104,13 +111,15 @@ public static class Tool { private final String name; private final String version; private Boolean active; + private String repository; - public Tool(String id, String org, String name, String version, Boolean active) { + public Tool(String id, String org, String name, String version, Boolean active, String repository) { this.id = id; this.org = org; this.name = name; this.version = version; this.active = active; + this.repository = repository; } public String id() { @@ -133,6 +142,10 @@ public Boolean active() { return active; } + public String repository() { + return repository; + } + public void setActive(boolean active) { this.active = active; } diff --git a/compiler/ballerina-lang/src/main/java/io/ballerina/projects/BalToolsToml.java b/compiler/ballerina-lang/src/main/java/io/ballerina/projects/BalToolsToml.java index 34515b7ec492..e1c52b342006 100644 --- a/compiler/ballerina-lang/src/main/java/io/ballerina/projects/BalToolsToml.java +++ b/compiler/ballerina-lang/src/main/java/io/ballerina/projects/BalToolsToml.java @@ -29,6 +29,7 @@ import java.nio.file.Files; import java.nio.file.Path; import java.util.Map; +import java.util.Set; import static io.ballerina.projects.util.ProjectConstants.BAL_TOOLS_TOML; @@ -102,17 +103,26 @@ public void modify(BalToolsManifest balToolsManifest) { private String generateContent(BalToolsManifest balToolsManifest) { StringBuilder content = new StringBuilder(); content.append(getAutoGenCode()); - for (Map.Entry> toolVersions: balToolsManifest.tools().entrySet()) { - for (Map.Entry tool : toolVersions.getValue().entrySet()) { - content.append("[[tool]]\n"); - content.append("id = \"").append(tool.getValue().id()).append("\"\n"); - content.append("org = \"").append(tool.getValue().org()).append("\"\n"); - content.append("name = \"").append(tool.getValue().name()).append("\"\n"); - content.append("version = \"").append(tool.getValue().version()).append("\"\n"); - content.append("active = ").append(tool.getValue().active()).append("\n"); - content.append("\n"); + for (Map.Entry>> toolEntry : balToolsManifest.tools() + .entrySet()) { + for (Map.Entry> toolVersions : toolEntry.getValue().entrySet()) { + for (Map.Entry tool : toolVersions.getValue().entrySet()) { + content.append("[[tool]]\n"); + content.append("id = \"").append(tool.getValue().id()).append("\"\n"); + content.append("org = \"").append(tool.getValue().org()).append("\"\n"); + content.append("name = \"").append(tool.getValue().name()).append("\"\n"); + content.append("version = \"").append(tool.getValue().version()).append("\"\n"); + content.append("active = ").append(tool.getValue().active()).append("\n"); + if (tool.getValue().repository() != null) { + content.append("repository = \"").append(tool.getValue().repository()).append("\"\n"); + } + content.append("\n"); + } } } + + + return String.valueOf(content); } diff --git a/compiler/ballerina-lang/src/main/java/io/ballerina/projects/internal/BalToolsManifestBuilder.java b/compiler/ballerina-lang/src/main/java/io/ballerina/projects/internal/BalToolsManifestBuilder.java index dd16749c360a..0ec73e7c110f 100644 --- a/compiler/ballerina-lang/src/main/java/io/ballerina/projects/internal/BalToolsManifestBuilder.java +++ b/compiler/ballerina-lang/src/main/java/io/ballerina/projects/internal/BalToolsManifestBuilder.java @@ -84,7 +84,7 @@ private BalToolsManifest parseAsBalToolsManifest() { return BalToolsManifest.from(); } validateBalToolsTomlAgainstSchema(); - Map> tools = getTools(); + Map>> tools = getTools(); return BalToolsManifest.from(tools); } @@ -102,7 +102,7 @@ private void validateBalToolsTomlAgainstSchema() { balToolsTomlValidator.validate(balToolsToml.get().toml()); } - private Map> getTools() { + private Map>> getTools() { if (balToolsToml.isEmpty()) { return new HashMap<>(); } @@ -118,7 +118,7 @@ private Map> getTools() { return new HashMap<>(); } - Map> tools = new HashMap<>(); + Map>> tools = new HashMap<>(); if (toolEntries.kind() == TomlType.TABLE_ARRAY) { TomlTableArrayNode toolTableArray = (TomlTableArrayNode) toolEntries; @@ -128,6 +128,7 @@ private Map> getTools() { String name = getStringValueFromToolNode(toolNode, "name"); String version = getStringValueFromToolNode(toolNode, "version"); Optional active = getBooleanFromToolNode(toolNode, "active"); + String repository = getStringValueFromToolNode(toolNode, "repository"); // If id, org or name, one of the value is null, ignore tool record if (id == null || org == null || name == null) { @@ -148,7 +149,11 @@ private Map> getTools() { if (!tools.containsKey(id)) { tools.put(id, new HashMap<>()); } - tools.get(id).put(version, new BalToolsManifest.Tool(id, org, name, version, active.get())); + if (!tools.get(id).containsKey(version)) { + tools.get(id).put(version, new HashMap<>()); + } + tools.get(id).get(version).put(repository, new BalToolsManifest.Tool(id, org, name, version, + active.get(), repository)); } } return tools; From 5b285dceef700f370e8b7c5c2da49857d463c098 Mon Sep 17 00:00:00 2001 From: Thevakumar-Luheerathan Date: Wed, 22 Nov 2023 08:46:42 +0530 Subject: [PATCH 2/8] Add use, remove support for local repo --- .../main/java/io/ballerina/cli/cmd/ToolCommand.java | 12 +++++++++++- .../java/io/ballerina/projects/BalToolsManifest.java | 2 +- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/cli/ballerina-cli/src/main/java/io/ballerina/cli/cmd/ToolCommand.java b/cli/ballerina-cli/src/main/java/io/ballerina/cli/cmd/ToolCommand.java index 96f74892b4b4..0430ceb15de4 100644 --- a/cli/ballerina-cli/src/main/java/io/ballerina/cli/cmd/ToolCommand.java +++ b/cli/ballerina-cli/src/main/java/io/ballerina/cli/cmd/ToolCommand.java @@ -55,6 +55,7 @@ import java.util.Comparator; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.Optional; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -306,7 +307,8 @@ private void handleUseCommand() { this.name = tool.get().name(); Optional currentActiveTool = balToolsManifest.getActiveTool(toolId); - if (currentActiveTool.isPresent() && currentActiveTool.get().version().equals(tool.get().version())) { + if (currentActiveTool.isPresent() && currentActiveTool.get().version().equals(tool.get().version()) && + Objects.equals(currentActiveTool.get().repository(), tool.get().repository())) { outStream.println("tool '" + toolId + ":" + version + "' is the current active version."); return; } @@ -565,6 +567,10 @@ private void removeAllToolVersions() { balToolsManifest.removeTool(toolId); balToolsToml.modify(balToolsManifest); + if (repositoryName != null) { + outStream.println("tool '" + toolId + "' successfully removed."); + return; + } Optional tool = toolVersions.get().values().stream().findAny() .flatMap(value -> value.values().stream().findAny()); tool.ifPresent(value -> deleteAllCachedToolVersions(value.org(), value.name())); @@ -589,6 +595,10 @@ private void removeSpecificToolVersion() { balToolsManifest.removeToolVersion(toolId, version, repositoryName); balToolsToml.modify(balToolsManifest); + if (repositoryName != null) { + outStream.println("tool '" + toolId + ":" + version + "' successfully removed."); + return; + } deleteCachedToolVersion(tool.get().org(), tool.get().name(), version); outStream.println("tool '" + toolId + ":" + version + "' successfully removed."); } diff --git a/compiler/ballerina-lang/src/main/java/io/ballerina/projects/BalToolsManifest.java b/compiler/ballerina-lang/src/main/java/io/ballerina/projects/BalToolsManifest.java index 4c5a7df6696c..b0a0ba71bf30 100644 --- a/compiler/ballerina-lang/src/main/java/io/ballerina/projects/BalToolsManifest.java +++ b/compiler/ballerina-lang/src/main/java/io/ballerina/projects/BalToolsManifest.java @@ -71,7 +71,7 @@ public Optional getTool(String id, String version, String repository) { public Optional getActiveTool(String id) { if (tools.containsKey(id)) { - tools.get(id).values().stream().flatMap(v -> v.values().stream()).filter(Tool::active).findFirst(); + return tools.get(id).values().stream().flatMap(v -> v.values().stream()).filter(Tool::active).findFirst(); } return Optional.empty(); } From a5929ed79fd534f0baf684562df931b15e27f388 Mon Sep 17 00:00:00 2001 From: Thevakumar-Luheerathan Date: Thu, 23 Nov 2023 09:43:35 +0530 Subject: [PATCH 3/8] Modify help text --- .../ballerina/cli/launcher/LauncherUtils.java | 27 ++++++++++++++++--- .../cli/launcher/util/BalToolsUtil.java | 24 +++++++++++------ .../io/ballerina/cli/utils/PrintUtils.java | 11 ++++++-- 3 files changed, 49 insertions(+), 13 deletions(-) diff --git a/cli/ballerina-cli/src/main/java/io/ballerina/cli/launcher/LauncherUtils.java b/cli/ballerina-cli/src/main/java/io/ballerina/cli/launcher/LauncherUtils.java index 06e98741e9b4..23a8b0ba1c92 100644 --- a/cli/ballerina-cli/src/main/java/io/ballerina/cli/launcher/LauncherUtils.java +++ b/cli/ballerina-cli/src/main/java/io/ballerina/cli/launcher/LauncherUtils.java @@ -19,7 +19,11 @@ import io.ballerina.cli.BLauncherCmd; import io.ballerina.cli.launcher.util.BalToolsUtil; +import io.ballerina.projects.BalToolsManifest; +import io.ballerina.projects.BalToolsToml; +import io.ballerina.projects.internal.BalToolsManifestBuilder; import io.ballerina.runtime.api.values.BError; +import org.wso2.ballerinalang.util.RepoUtils; import picocli.CommandLine; import java.io.IOException; @@ -28,10 +32,13 @@ import java.nio.file.LinkOption; import java.nio.file.Path; import java.nio.file.Paths; +import java.util.HashMap; import java.util.List; import java.util.Map; import static io.ballerina.cli.launcher.BallerinaCliCommands.HELP; +import static io.ballerina.projects.util.ProjectConstants.BAL_TOOLS_TOML; +import static io.ballerina.projects.util.ProjectConstants.CONFIG_DIR; /** * Contains utility methods for executing a Ballerina program. @@ -103,13 +110,26 @@ static String generateGeneralHelp(Map subCommands) { StringBuilder helpBuilder = new StringBuilder(); helpBuilder.append(BLauncherCmd.getCommandUsageInfo(HELP)); + Path balToolsTomlPath = RepoUtils.createAndGetHomeReposPath().resolve(Path.of(CONFIG_DIR, BAL_TOOLS_TOML)); + BalToolsToml balToolsToml = BalToolsToml.from(balToolsTomlPath); + BalToolsManifest balToolsManifest = BalToolsManifestBuilder.from(balToolsToml).build(); + Map activeToolsVsRepos = new HashMap<>(); + // if there are any tools, add Tool Commands section List toolNames = subCommands.keySet().stream() .filter(BalToolsUtil::isNonBuiltInToolCommand) .sorted().toList(); + if (!toolNames.isEmpty()) { + toolNames.forEach(toolName -> { + balToolsManifest.getActiveTool(toolName).ifPresent(tool -> { + activeToolsVsRepos.put(toolName, tool.repository() == null ? "" : "[" + tool.repository() + .toUpperCase() + "] "); + }); + }); helpBuilder.append("\n\n Tool Commands:"); - toolNames.forEach(key -> generateCommandDescription(subCommands.get(key), helpBuilder)); + toolNames.forEach(key -> generateCommandDescription(subCommands.get(key), helpBuilder, + activeToolsVsRepos.get(key))); } return helpBuilder.toString(); } @@ -124,7 +144,8 @@ static String generateCommandHelp(String commandName, Map s return commandUsageInfo.toString(); } - private static void generateCommandDescription(CommandLine command, StringBuilder stringBuilder) { + private static void generateCommandDescription(CommandLine command, StringBuilder stringBuilder, + String repository) { String commandName = command.getCommandName(); BLauncherCmd bLauncherCmd = (BLauncherCmd) command.getCommandSpec().userObject(); CommandLine.Command annotation = bLauncherCmd.getClass().getAnnotation(CommandLine.Command.class); @@ -138,7 +159,7 @@ private static void generateCommandDescription(CommandLine command, StringBuilde } stringBuilder.append("\n") .append(" ") - .append(String.format("%-15s %s", commandName, commandDescription)); + .append(String.format("%-15s %s", commandName, repository + commandDescription)); } static String wrapString(String str, int wrapLength, int indent) { diff --git a/cli/ballerina-cli/src/main/java/io/ballerina/cli/launcher/util/BalToolsUtil.java b/cli/ballerina-cli/src/main/java/io/ballerina/cli/launcher/util/BalToolsUtil.java index 546ce77a39bd..a74816987955 100644 --- a/cli/ballerina-cli/src/main/java/io/ballerina/cli/launcher/util/BalToolsUtil.java +++ b/cli/ballerina-cli/src/main/java/io/ballerina/cli/launcher/util/BalToolsUtil.java @@ -117,9 +117,9 @@ public class BalToolsUtil { // if a command is a built-in tool command, add it to this list private static final List builtInToolCommands = Arrays.asList(); - private static final Path balToolsTomlPath = Path.of( - System.getProperty(CommandUtil.USER_HOME), HOME_REPO_DEFAULT_DIRNAME, CONFIG_DIR, BAL_TOOLS_TOML); - private static Path balaCacheDirPath = ProjectUtils.createAndGetHomeReposPath() + private static final Path balToolsTomlPath = RepoUtils.createAndGetHomeReposPath().resolve( + Path.of(CONFIG_DIR, BAL_TOOLS_TOML)); + private static final Path balaCacheDirPath = ProjectUtils.createAndGetHomeReposPath() .resolve(REPOSITORIES_DIR).resolve(CENTRAL_REPOSITORY_CACHE_NAME) .resolve(ProjectConstants.BALA_DIR_NAME); @@ -165,10 +165,12 @@ public static void addToolIfCommandIsABuiltInTool(String commandName) { } private static List getToolCommandJarAndDependencyJars(String commandName) { - Path userHomeDirPath = Path.of(System.getProperty(CommandUtil.USER_HOME), HOME_REPO_DEFAULT_DIRNAME); + Path userHomeDirPath = RepoUtils.createAndGetHomeReposPath(); Path balToolsTomlPath = userHomeDirPath.resolve(Path.of(CONFIG_DIR, BAL_TOOLS_TOML)); Path centralBalaDirPath = userHomeDirPath.resolve( Path.of(REPOSITORIES_DIR, CENTRAL_REPOSITORY_CACHE_NAME, BALA_DIR_NAME)); + Path localBalaDirPath = userHomeDirPath.resolve( + Path.of(REPOSITORIES_DIR, ProjectConstants.LOCAL_REPOSITORY_NAME, BALA_DIR_NAME)); BalToolsToml balToolsToml = BalToolsToml.from(balToolsTomlPath); BalToolsManifest balToolsManifest = BalToolsManifestBuilder.from(balToolsToml).build(); @@ -179,8 +181,10 @@ private static List getToolCommandJarAndDependencyJars(String commandName) .flatMap(map -> map.values().stream()) .filter(BalToolsManifest.Tool::active) .map(tool1 -> findJarFiles(CommandUtil.getPlatformSpecificBalaPath( - tool1.org(), tool1.name(), tool1.version(), centralBalaDirPath).resolve(TOOL).resolve(LIBS) - .toFile())) + tool1.org(), tool1.name(), tool1.version(), ProjectConstants.LOCAL_REPOSITORY_NAME + .equals(tool1.repository()) ? localBalaDirPath : centralBalaDirPath) + .resolve(TOOL).resolve(LIBS) + .toFile())) .flatMap(List::stream) .collect(Collectors.toList()); } @@ -197,7 +201,8 @@ private static List getToolCommandJarAndDependencyJars(String commandName) throw LauncherUtils.createLauncherException(errMsg); } Path platformPath = CommandUtil.getPlatformSpecificBalaPath( - tool.org(), tool.name(), tool.version(), centralBalaDirPath); + tool.org(), tool.name(), tool.version(), ProjectConstants.LOCAL_REPOSITORY_NAME + .equals(tool.repository()) ? localBalaDirPath : centralBalaDirPath); File libsDir = platformPath.resolve(Path.of(TOOL, LIBS)).toFile(); return findJarFiles(libsDir); } @@ -213,8 +218,11 @@ private static boolean isToolDistCompatibilityWithCurrentDist(BalToolsManifest.T private static SemanticVersion getToolDistVersionFromCentralCache(BalToolsManifest.Tool tool) { Path centralBalaDirPath = ProjectUtils.createAndGetHomeReposPath().resolve( Path.of(REPOSITORIES_DIR, CENTRAL_REPOSITORY_CACHE_NAME, ProjectConstants.BALA_DIR_NAME)); + Path localBalaPath = ProjectUtils.createAndGetHomeReposPath().resolve( + Path.of(REPOSITORIES_DIR, ProjectConstants.LOCAL_REPOSITORY_NAME, ProjectConstants.BALA_DIR_NAME)); Path balaPath = CommandUtil.getPlatformSpecificBalaPath( - tool.org(), tool.name(), tool.version(), centralBalaDirPath); + tool.org(), tool.name(), tool.version(), ProjectConstants.LOCAL_REPOSITORY_NAME + .equals(tool.repository()) ? localBalaPath : centralBalaDirPath); PackageJson packageJson = BalaFiles.readPackageJson(balaPath); return SemanticVersion.from(packageJson.getBallerinaVersion()); } diff --git a/cli/ballerina-cli/src/main/java/io/ballerina/cli/utils/PrintUtils.java b/cli/ballerina-cli/src/main/java/io/ballerina/cli/utils/PrintUtils.java index 9668dd7a2158..34eb56bc09d6 100644 --- a/cli/ballerina-cli/src/main/java/io/ballerina/cli/utils/PrintUtils.java +++ b/cli/ballerina-cli/src/main/java/io/ballerina/cli/utils/PrintUtils.java @@ -19,6 +19,7 @@ package io.ballerina.cli.utils; import io.ballerina.projects.BalToolsManifest; +import io.ballerina.projects.util.ProjectConstants; import org.ballerinalang.central.client.model.Package; import org.ballerinalang.central.client.model.Tool; @@ -56,30 +57,36 @@ public static void printLocalTools(List tools, String ter } } int versionColWidth = 15; + int repositoryColWidth = 10; int padding = 2; int minimumToolIdColWidth = 20; int remainingWidth = Math.max(minimumToolIdColWidth, width - versionColWidth); int toolIdColWidth = Math.max(minimumToolIdColWidth, Math.min(maxToolIdNameLength, remainingWidth)) + padding; - printListLocalTableHeader(toolIdColWidth, versionColWidth); + printListLocalTableHeader(toolIdColWidth, versionColWidth, repositoryColWidth); for (BalToolsManifest.Tool tool: tools) { + String repository = ProjectConstants.LOCAL_REPOSITORY_NAME.equals(tool.repository()) ? "local" : "central"; + tool.repository(); String activeIndicator = tool.active() ? "* " : " "; printInCLI("|" + tool.id(), toolIdColWidth); printInCLI(activeIndicator + tool.version(), versionColWidth); + printInCLI(repository, repositoryColWidth); outStream.println(); } outStream.println(); outStream.println(tools.size() + " tools found."); } - private static void printListLocalTableHeader(int toolIdColWidth, int versionColWidth) { + private static void printListLocalTableHeader(int toolIdColWidth, int versionColWidth, int repositoryColWidth) { printInCLI("|TOOL ID", toolIdColWidth); printInCLI("VERSION", versionColWidth); + printInCLI("REPO", repositoryColWidth); outStream.println(); printCharacter("|-", toolIdColWidth, "-", true); printCharacter("-", versionColWidth, "-", true); + printCharacter("-", repositoryColWidth, "-", true); outStream.println(); } From d177f4c57dead70c95c5686a3911ed449b7d4c77 Mon Sep 17 00:00:00 2001 From: Thevakumar-Luheerathan Date: Fri, 24 Nov 2023 14:53:03 +0530 Subject: [PATCH 4/8] Add tests --- .../io/ballerina/cli/cmd/PushCommand.java | 3 +- .../io/ballerina/cli/cmd/ToolCommand.java | 35 +++- .../io/ballerina/cli/utils/PrintUtils.java | 1 - .../cli-help/ballerina-tool-pull.help | 7 + .../cli-help/ballerina-tool-remove.help | 7 + .../cli-help/ballerina-tool-use.help | 7 + .../io/ballerina/cli/cmd/PushCommandTest.java | 57 +++++++ .../io/ballerina/cli/cmd/ToolCommandTest.java | 153 ++++++++++++++++++ .../command-outputs/unix/tool-help.txt | 55 ++++--- .../unix/tool-search-with-no-args.txt | 2 +- .../unix/tool-search-with-too-many-args.txt | 2 +- .../command-outputs/windows/tool-help.txt | 55 ++++--- .../windows/tool-search-with-no-args.txt | 2 +- .../tool-search-with-too-many-args.txt | 2 +- .../tool_gayal/1.1.0/java17/bala.json | 4 + .../compiler-plugin/compiler-plugin.json | 6 + .../1.1.0/java17/dependency-graph.json | 88 ++++++++++ .../tool_gayal/1.1.0/java17/docs/Package.md | 4 + .../1.1.0/java17/modules/tool_gayal/main.bal | 5 + .../tool_gayal/1.1.0/java17/package.json | 14 ++ .../1.1.0/java17/tool/bal-tool.json | 6 + .../tool_gayal/1.2.0/java17/bala.json | 4 + .../compiler-plugin/compiler-plugin.json | 6 + .../1.2.0/java17/dependency-graph.json | 88 ++++++++++ .../tool_gayal/1.2.0/java17/docs/Package.md | 4 + .../1.2.0/java17/modules/tool_gayal/main.bal | 5 + .../tool_gayal/1.2.0/java17/package.json | 14 ++ .../1.2.0/java17/tool/bal-tool.json | 6 + .../tool_gayal/1.3.0/java17/bala.json | 4 + .../compiler-plugin/compiler-plugin.json | 6 + .../1.3.0/java17/dependency-graph.json | 88 ++++++++++ .../tool_gayal/1.3.0/java17/docs/Package.md | 4 + .../1.3.0/java17/modules/tool_gayal/main.bal | 5 + .../tool_gayal/1.3.0/java17/package.json | 14 ++ .../1.3.0/java17/tool/bal-tool.json | 6 + .../tool_gayal/2.2.4/java17/bala.json | 4 + .../compiler-plugin/compiler-plugin.json | 6 + .../2.2.4/java17/dependency-graph.json | 88 ++++++++++ .../tool_gayal/2.2.4/java17/docs/Package.md | 4 + .../2.2.4/java17/modules/tool_gayal/main.bal | 5 + .../tool_gayal/2.2.4/java17/package.json | 14 ++ .../2.2.4/java17/tool/bal-tool.json | 6 + .../tool_gayal/2.2.5/java17/bala.json | 4 + .../compiler-plugin/compiler-plugin.json | 6 + .../2.2.5/java17/dependency-graph.json | 88 ++++++++++ .../tool_gayal/2.2.5/java17/docs/Package.md | 4 + .../2.2.5/java17/modules/tool_gayal/main.bal | 5 + .../tool_gayal/2.2.5/java17/package.json | 14 ++ .../2.2.5/java17/tool/bal-tool.json | 6 + .../repositories/local/bala/local-tools.json | 1 + .../ballerina/projects/BalToolsManifest.java | 5 +- .../io/ballerina/projects/BalToolsToml.java | 1 - 52 files changed, 962 insertions(+), 68 deletions(-) create mode 100644 cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/1.1.0/java17/bala.json create mode 100644 cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/1.1.0/java17/compiler-plugin/compiler-plugin.json create mode 100644 cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/1.1.0/java17/dependency-graph.json create mode 100644 cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/1.1.0/java17/docs/Package.md create mode 100644 cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/1.1.0/java17/modules/tool_gayal/main.bal create mode 100644 cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/1.1.0/java17/package.json create mode 100644 cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/1.1.0/java17/tool/bal-tool.json create mode 100644 cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/1.2.0/java17/bala.json create mode 100644 cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/1.2.0/java17/compiler-plugin/compiler-plugin.json create mode 100644 cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/1.2.0/java17/dependency-graph.json create mode 100644 cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/1.2.0/java17/docs/Package.md create mode 100644 cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/1.2.0/java17/modules/tool_gayal/main.bal create mode 100644 cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/1.2.0/java17/package.json create mode 100644 cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/1.2.0/java17/tool/bal-tool.json create mode 100644 cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/1.3.0/java17/bala.json create mode 100644 cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/1.3.0/java17/compiler-plugin/compiler-plugin.json create mode 100644 cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/1.3.0/java17/dependency-graph.json create mode 100644 cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/1.3.0/java17/docs/Package.md create mode 100644 cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/1.3.0/java17/modules/tool_gayal/main.bal create mode 100644 cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/1.3.0/java17/package.json create mode 100644 cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/1.3.0/java17/tool/bal-tool.json create mode 100644 cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/2.2.4/java17/bala.json create mode 100644 cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/2.2.4/java17/compiler-plugin/compiler-plugin.json create mode 100644 cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/2.2.4/java17/dependency-graph.json create mode 100644 cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/2.2.4/java17/docs/Package.md create mode 100644 cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/2.2.4/java17/modules/tool_gayal/main.bal create mode 100644 cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/2.2.4/java17/package.json create mode 100644 cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/2.2.4/java17/tool/bal-tool.json create mode 100644 cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/2.2.5/java17/bala.json create mode 100644 cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/2.2.5/java17/compiler-plugin/compiler-plugin.json create mode 100644 cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/2.2.5/java17/dependency-graph.json create mode 100644 cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/2.2.5/java17/docs/Package.md create mode 100644 cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/2.2.5/java17/modules/tool_gayal/main.bal create mode 100644 cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/2.2.5/java17/package.json create mode 100644 cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/2.2.5/java17/tool/bal-tool.json create mode 100644 cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/local-tools.json diff --git a/cli/ballerina-cli/src/main/java/io/ballerina/cli/cmd/PushCommand.java b/cli/ballerina-cli/src/main/java/io/ballerina/cli/cmd/PushCommand.java index d2c8bd343d08..766154249d13 100644 --- a/cli/ballerina-cli/src/main/java/io/ballerina/cli/cmd/PushCommand.java +++ b/cli/ballerina-cli/src/main/java/io/ballerina/cli/cmd/PushCommand.java @@ -18,7 +18,6 @@ package io.ballerina.cli.cmd; import com.google.gson.Gson; -import com.google.gson.JsonElement; import com.google.gson.JsonObject; import io.ballerina.cli.BLauncherCmd; import io.ballerina.cli.utils.FileUtils; @@ -449,7 +448,7 @@ private void handleLocalTools(Path balaDestPath, String org, String packageName, localToolJson.add(toolId, packageDesc); } - try (FileWriter writer = new FileWriter(localToolJsonPath.toFile())) { + try (FileWriter writer = new FileWriter(localToolJsonPath.toFile(), StandardCharsets.UTF_8)) { writer.write(gson.toJson(localToolJson)); } catch (IOException e) { throw new ProjectException("Failed to write local-tools.json file: " + e.getMessage()); diff --git a/cli/ballerina-cli/src/main/java/io/ballerina/cli/cmd/ToolCommand.java b/cli/ballerina-cli/src/main/java/io/ballerina/cli/cmd/ToolCommand.java index 0430ceb15de4..5f13facb2a95 100644 --- a/cli/ballerina-cli/src/main/java/io/ballerina/cli/cmd/ToolCommand.java +++ b/cli/ballerina-cli/src/main/java/io/ballerina/cli/cmd/ToolCommand.java @@ -299,7 +299,8 @@ private void handleUseCommand() { if (tool.isEmpty()) { CommandUtil.printError(errStream, "tool '" + toolId + ":" + version + "' is not found. " + "Run 'bal tool pull " + toolId + ":" + version - + "' to fetch and set as the active version.", null, false); + + "' or 'bal tool pull " + toolId + ":" + version + + " --repository=local' to fetch and set as the active version.", null, false); CommandUtil.exitError(this.exitWhenFinish); return; } @@ -351,6 +352,12 @@ private void handleSearchCommand() { CommandUtil.exitError(this.exitWhenFinish); return; } + if (ProjectConstants.LOCAL_REPOSITORY_NAME.equals(repositoryName)) { + CommandUtil.printError(errStream, "tool search command is not supported for local repository.", + null, false); + CommandUtil.exitError(this.exitWhenFinish); + return; + } String searchArgs = argList.get(1); searchToolsInCentral(searchArgs); @@ -419,6 +426,12 @@ private void handleUpdateCommand() { CommandUtil.exitError(this.exitWhenFinish); return; } + if (ProjectConstants.LOCAL_REPOSITORY_NAME.equals(repositoryName)) { + CommandUtil.printError(errStream, "tool update command is not supported for local repository.", + null, false); + CommandUtil.exitError(this.exitWhenFinish); + return; + } toolId = argList.get(1); @@ -433,7 +446,7 @@ private void handleUpdateCommand() { public void pullToolAndUpdateBalToolsToml(String toolIdArg, String versionArg) { toolId = toolIdArg; version = versionArg; - Path balaCacheDirPath = ProjectUtils.createAndGetHomeReposPath() + Path balaCacheDirPath = RepoUtils.createAndGetHomeReposPath() .resolve(REPOSITORIES_DIR).resolve(CENTRAL_REPOSITORY_CACHE_NAME) .resolve(ProjectConstants.BALA_DIR_NAME); @@ -442,8 +455,8 @@ public void pullToolAndUpdateBalToolsToml(String toolIdArg, String versionArg) { .collect(Collectors.joining(",")); if (ProjectConstants.LOCAL_REPOSITORY_NAME.equals(repositoryName)) { if (!isToolAvailableInLocalRepo(toolId, version)) { - errStream.println("tool '" + toolId + ":" + version + "' is not available in local repository.\nPlease " + - "publish it first with 'bal push --repository=local' command."); + errStream.println("tool '" + toolId + ":" + version + "' is not available in local repository." + + "\nPlease publish it first with 'bal push --repository=local' command."); CommandUtil.exitError(this.exitWhenFinish); } addToBalToolsToml(); @@ -686,7 +699,7 @@ private boolean isToolAvailableLocally(String toolId, String version) { org = tool.org(); name = tool.name(); - Path toolCacheDir = ProjectUtils.createAndGetHomeReposPath() + Path toolCacheDir = RepoUtils.createAndGetHomeReposPath() .resolve(REPOSITORIES_DIR).resolve(CENTRAL_REPOSITORY_CACHE_NAME) .resolve(ProjectConstants.BALA_DIR_NAME).resolve(tool.org()).resolve(tool.name()); if (toolCacheDir.toFile().isDirectory()) { @@ -715,7 +728,7 @@ private boolean checkToolDistCompatibility() { } private SemanticVersion getToolDistVersionFromCentralCache() { - Path centralBalaDirPath = ProjectUtils.createAndGetHomeReposPath() + Path centralBalaDirPath = RepoUtils.createAndGetHomeReposPath() .resolve(REPOSITORIES_DIR).resolve(CENTRAL_REPOSITORY_CACHE_NAME) .resolve(ProjectConstants.BALA_DIR_NAME); Path balaPath = CommandUtil.getPlatformSpecificBalaPath(org, name, version, centralBalaDirPath); @@ -724,7 +737,7 @@ private SemanticVersion getToolDistVersionFromCentralCache() { } private SemanticVersion getToolDistVersionFromLocalCache() { - Path localBalaDirPath = ProjectUtils.createAndGetHomeReposPath() + Path localBalaDirPath = RepoUtils.createAndGetHomeReposPath() .resolve(REPOSITORIES_DIR).resolve(ProjectConstants.LOCAL_REPOSITORY_NAME) .resolve(ProjectConstants.BALA_DIR_NAME); Path balaPath = CommandUtil.getPlatformSpecificBalaPath(org, name, version, localBalaDirPath); @@ -762,7 +775,13 @@ private void updateToolToLatestVersion() { return; } - Path balaCacheDirPath = ProjectUtils.createAndGetHomeReposPath() + if (ProjectConstants.LOCAL_REPOSITORY_NAME.equals(tool.get().repository())) { + CommandUtil.printError(errStream, "tools from local repository can not be updated. ", + null, false); + CommandUtil.exitError(this.exitWhenFinish); + } + + Path balaCacheDirPath = RepoUtils.createAndGetHomeReposPath() .resolve(REPOSITORIES_DIR).resolve(CENTRAL_REPOSITORY_CACHE_NAME) .resolve(ProjectConstants.BALA_DIR_NAME); diff --git a/cli/ballerina-cli/src/main/java/io/ballerina/cli/utils/PrintUtils.java b/cli/ballerina-cli/src/main/java/io/ballerina/cli/utils/PrintUtils.java index 34eb56bc09d6..54ae8cda1855 100644 --- a/cli/ballerina-cli/src/main/java/io/ballerina/cli/utils/PrintUtils.java +++ b/cli/ballerina-cli/src/main/java/io/ballerina/cli/utils/PrintUtils.java @@ -67,7 +67,6 @@ public static void printLocalTools(List tools, String ter for (BalToolsManifest.Tool tool: tools) { String repository = ProjectConstants.LOCAL_REPOSITORY_NAME.equals(tool.repository()) ? "local" : "central"; - tool.repository(); String activeIndicator = tool.active() ? "* " : " "; printInCLI("|" + tool.id(), toolIdColWidth); printInCLI(activeIndicator + tool.version(), versionColWidth); diff --git a/cli/ballerina-cli/src/main/resources/cli-help/ballerina-tool-pull.help b/cli/ballerina-cli/src/main/resources/cli-help/ballerina-tool-pull.help index f04ba3388a98..4d1362429601 100644 --- a/cli/ballerina-cli/src/main/resources/cli-help/ballerina-tool-pull.help +++ b/cli/ballerina-cli/src/main/resources/cli-help/ballerina-tool-pull.help @@ -8,6 +8,9 @@ OPTIONS -h, --help Print the usage details of tool pull command. + --repository + Pull a tool from a custom repository. + DESCRIPTION Fetch a given tool from the Ballerina Central and install it as a Ballerina CLI command. @@ -16,3 +19,7 @@ DESCRIPTION distribution version. If the tool version is not specified, the latest version compatible with the current distribution will be fetched. + +EXAMPLES + Pull the '1.1.0' version of the 'eod' tool from local repository. + $ bal tool pull eod:1.1.0 --repository=local diff --git a/cli/ballerina-cli/src/main/resources/cli-help/ballerina-tool-remove.help b/cli/ballerina-cli/src/main/resources/cli-help/ballerina-tool-remove.help index 18671ce2ae0b..962c53e53d8f 100644 --- a/cli/ballerina-cli/src/main/resources/cli-help/ballerina-tool-remove.help +++ b/cli/ballerina-cli/src/main/resources/cli-help/ballerina-tool-remove.help @@ -8,6 +8,9 @@ OPTIONS -h, --help Print the usage details of tool remove command. + --repository + Remove a tool from a custom repository. + DESCRIPTION Remove a tool that was installed into to the local environment. @@ -16,3 +19,7 @@ DESCRIPTION If the version is not specified, all versions of the tool will be removed including the active version. + +EXAMPLES + Remove the '1.1.0' version of the 'eod' tool from local repository. + $ bal tool remove eod:1.1.0 --repository=local diff --git a/cli/ballerina-cli/src/main/resources/cli-help/ballerina-tool-use.help b/cli/ballerina-cli/src/main/resources/cli-help/ballerina-tool-use.help index 737351170118..012a4dfc3a47 100644 --- a/cli/ballerina-cli/src/main/resources/cli-help/ballerina-tool-use.help +++ b/cli/ballerina-cli/src/main/resources/cli-help/ballerina-tool-use.help @@ -8,6 +8,9 @@ OPTIONS -h, --help Print the usage details of tool use command. + --repository + Use a tool from a custom repository. + DESCRIPTION Mark a specified version of a tool available in the local environment as the active version. @@ -17,3 +20,7 @@ DESCRIPTION EXAMPLES Change the active version of a tool. $ bal tool use health:1.0.0 + + Change the active version to a local repository tool. + $ bal tool use eod:1.1.0 --repository=local + diff --git a/cli/ballerina-cli/src/test/java/io/ballerina/cli/cmd/PushCommandTest.java b/cli/ballerina-cli/src/test/java/io/ballerina/cli/cmd/PushCommandTest.java index 7227393ee132..182fb176fae6 100644 --- a/cli/ballerina-cli/src/test/java/io/ballerina/cli/cmd/PushCommandTest.java +++ b/cli/ballerina-cli/src/test/java/io/ballerina/cli/cmd/PushCommandTest.java @@ -18,6 +18,8 @@ package io.ballerina.cli.cmd; +import com.google.gson.Gson; +import com.google.gson.JsonObject; import io.ballerina.projects.ProjectException; import io.ballerina.projects.Settings; import io.ballerina.projects.TomlDocument; @@ -34,9 +36,11 @@ import org.wso2.ballerinalang.util.RepoUtils; import picocli.CommandLine; +import java.io.BufferedReader; import java.io.IOException; import java.net.URI; import java.net.URISyntaxException; +import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; @@ -203,6 +207,59 @@ public void testPushWithCustomPath() throws IOException { } + @Test(description = "Push a tool to local repository") + public void testPushToolToLocal() throws IOException { + Path validBalProject = Paths.get("build").resolve("tool-gayals"); + + FileUtils.copyDirectory( + this.testResources.resolve("tool-gayals").toFile(), validBalProject.toFile()); + FileUtils.moveDirectory( + validBalProject.resolve("target-dir").toFile(), validBalProject.resolve("custom").toFile()); + + Path customTargetDirBalaPath = validBalProject.resolve("custom").resolve("bala") + .resolve("gayaldassanayake-tool_gayal-java17-1.1.0.bala"); + PushCommand pushCommand = new PushCommand(validBalProject, printStream, printStream, false, + customTargetDirBalaPath); + String[] args = { "--repository=local" }; + new CommandLine(pushCommand).parse(args); + + Path mockRepo = Paths.get("build").resolve("ballerina-home"); + + try (MockedStatic repoUtils = Mockito.mockStatic(RepoUtils.class)) { + repoUtils.when(RepoUtils::createAndGetHomeReposPath).thenReturn(mockRepo); + repoUtils.when(RepoUtils::getBallerinaShortVersion).thenReturn("1.0.0"); + repoUtils.when(RepoUtils::readSettings).thenReturn(Settings.from()); + pushCommand.execute(); + } + + String buildLog = readOutput(true); + String actual = buildLog.replaceAll("\r", ""); + String expected = "Successfully pushed " + customTargetDirBalaPath.toString() + " to 'local' repository."; + Assert.assertTrue(actual.contains(expected)); + + try { + ProjectFiles.validateBalaProjectPath(mockRepo.resolve("repositories").resolve("local") + .resolve("bala").resolve("gayaldassanayake").resolve("tool_gayal") + .resolve("1.1.0").resolve("java17")); + } catch (ProjectException e) { + Assert.fail(e.getMessage()); + } + + Path localToolJsonPath = mockRepo.resolve("repositories").resolve("local").resolve("bala") + .resolve("local-tools.json"); + + Assert.assertTrue(Files.exists(localToolJsonPath)); + + try (BufferedReader bufferedReader = Files.newBufferedReader(localToolJsonPath, StandardCharsets.UTF_8)) { + JsonObject localToolJson = new Gson().fromJson(bufferedReader, JsonObject.class); + JsonObject pkgDesc = localToolJson.get("luhee").getAsJsonObject(); + + Assert.assertEquals(pkgDesc.get("org").getAsString(), "gayaldassanayake"); + Assert.assertEquals(pkgDesc.get("name").getAsString(), "tool_gayal"); + } + + } + @Test(description = "Push package without bala directory") public void testPushWithoutBalaDir() throws IOException { String expected = "cannot find bala file for the package: winery. Run " diff --git a/cli/ballerina-cli/src/test/java/io/ballerina/cli/cmd/ToolCommandTest.java b/cli/ballerina-cli/src/test/java/io/ballerina/cli/cmd/ToolCommandTest.java index 79949bab2a2c..cc57ff9fdc56 100644 --- a/cli/ballerina-cli/src/test/java/io/ballerina/cli/cmd/ToolCommandTest.java +++ b/cli/ballerina-cli/src/test/java/io/ballerina/cli/cmd/ToolCommandTest.java @@ -18,12 +18,27 @@ package io.ballerina.cli.cmd; +import io.ballerina.projects.BalToolsManifest; +import io.ballerina.projects.BalToolsToml; +import io.ballerina.projects.Settings; +import io.ballerina.projects.internal.BalToolsManifestBuilder; +import org.mockito.MockedStatic; +import org.mockito.Mockito; import org.testng.Assert; +import org.testng.annotations.BeforeClass; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; +import org.wso2.ballerinalang.util.RepoUtils; import picocli.CommandLine; import java.io.IOException; +import java.net.URI; +import java.net.URISyntaxException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.Objects; +import java.util.Optional; import static io.ballerina.cli.cmd.CommandOutputUtils.getOutput; @@ -33,6 +48,144 @@ * @since 2201.6.0 */ public class ToolCommandTest extends BaseCommandTest { + + private Path testResources; + + @BeforeClass + public void setup() throws IOException { + super.setup(); + try { + this.testResources = super.tmpDir.resolve("build-test-resources"); + URI testResourcesURI = Objects.requireNonNull(getClass().getClassLoader().getResource("test-resources")) + .toURI(); + Files.walkFileTree(Paths.get(testResourcesURI), + new BuildCommandTest.Copy(Paths.get(testResourcesURI), this.testResources)); + } catch (URISyntaxException e) { + Assert.fail("error loading resources"); + } + } + + @Test(description = "Pull a tool from local repository") + public void testPullToolFromLocal() throws IOException { + Path mockHomeRepo = testResources.resolve("local-tool-test").resolve("ballerina-cache"); + try (MockedStatic repoUtils = Mockito.mockStatic(RepoUtils.class)) { + repoUtils.when(RepoUtils::createAndGetHomeReposPath).thenReturn(mockHomeRepo); + repoUtils.when(RepoUtils::getBallerinaShortVersion).thenReturn("2201.9.0"); + repoUtils.when(RepoUtils::readSettings).thenReturn(Settings.from()); + + ToolCommand toolCommand = new ToolCommand(printStream, printStream, false); + new CommandLine(toolCommand).parseArgs("pull", "luhee:1.1.0", "--repository=local"); + toolCommand.execute(); + } + + String buildLog = readOutput(true); + Assert.assertEquals(buildLog, "tool 'luhee:1.1.0' successfully set as the active version.\n"); + Assert.assertTrue(Files.exists(mockHomeRepo.resolve(".config").resolve("bal-tools.toml"))); + BalToolsToml balToolsToml = BalToolsToml.from(mockHomeRepo.resolve(".config").resolve("bal-tools.toml")); + BalToolsManifest balToolsManifest = BalToolsManifestBuilder.from(balToolsToml).build(); + Optional tool = balToolsManifest.getActiveTool("luhee"); + Assert.assertTrue(tool.isPresent()); + Assert.assertEquals(tool.get().version(), "1.1.0"); + Assert.assertEquals(tool.get().repository(), "local"); + Assert.assertEquals(tool.get().org(), "gayaldassanayake"); + Assert.assertEquals(tool.get().name(), "tool_gayal"); + } + + @Test(description = "Switch active version from local") + public void testUseToolFromLocal() throws IOException { + Path mockHomeRepo = testResources.resolve("local-tool-test").resolve("ballerina-cache"); + try (MockedStatic repoUtils = Mockito.mockStatic(RepoUtils.class)) { + repoUtils.when(RepoUtils::createAndGetHomeReposPath).thenReturn(mockHomeRepo); + repoUtils.when(RepoUtils::getBallerinaShortVersion).thenReturn("2201.9.0"); + repoUtils.when(RepoUtils::readSettings).thenReturn(Settings.from()); + + ToolCommand toolCommand = new ToolCommand(printStream, printStream, false); + new CommandLine(toolCommand).parseArgs("pull", "luhee:1.1.0", "--repository=local"); + toolCommand.execute(); + new CommandLine(toolCommand).parseArgs("pull", "luhee:1.2.0", "--repository=local"); + toolCommand.execute(); + + String buildLog = readOutput(true); + Assert.assertTrue(buildLog.contains("tool 'luhee:1.2.0' successfully set as the active version.\n")); + Assert.assertTrue(Files.exists(mockHomeRepo.resolve(".config").resolve("bal-tools.toml"))); + BalToolsToml balToolsToml = BalToolsToml.from(mockHomeRepo.resolve(".config").resolve("bal-tools.toml")); + BalToolsManifest balToolsManifest = BalToolsManifestBuilder.from(balToolsToml).build(); + Optional tool = balToolsManifest.getActiveTool("luhee"); + Assert.assertTrue(tool.isPresent()); + Assert.assertEquals(tool.get().version(), "1.2.0"); + Assert.assertEquals(tool.get().repository(), "local"); + Assert.assertEquals(tool.get().org(), "gayaldassanayake"); + Assert.assertEquals(tool.get().name(), "tool_gayal"); + + toolCommand = new ToolCommand(printStream, printStream, false); + new CommandLine(toolCommand).parseArgs("use", "luhee:1.1.0", "--repository=local"); + toolCommand.execute(); + buildLog = readOutput(true); + Assert.assertTrue(buildLog.contains("tool 'luhee:1.1.0' successfully set as the active version.\n")); + balToolsToml = BalToolsToml.from(mockHomeRepo.resolve(".config").resolve("bal-tools.toml")); + balToolsManifest = BalToolsManifestBuilder.from(balToolsToml).build(); + tool = balToolsManifest.getActiveTool("luhee"); + Assert.assertTrue(tool.isPresent()); + Assert.assertEquals(tool.get().version(), "1.1.0"); + Assert.assertEquals(tool.get().repository(), "local"); + Assert.assertEquals(tool.get().org(), "gayaldassanayake"); + Assert.assertEquals(tool.get().name(), "tool_gayal"); + } + } + + @Test(description = "Remove a tool from local repository") + public void testRemoveToolFromLocal() throws IOException { + Path mockHomeRepo = testResources.resolve("local-tool-test").resolve("ballerina-cache"); + try (MockedStatic repoUtils = Mockito.mockStatic(RepoUtils.class)) { + repoUtils.when(RepoUtils::createAndGetHomeReposPath).thenReturn(mockHomeRepo); + repoUtils.when(RepoUtils::getBallerinaShortVersion).thenReturn("2201.9.0"); + repoUtils.when(RepoUtils::readSettings).thenReturn(Settings.from()); + + ToolCommand toolCommand = new ToolCommand(printStream, printStream, false); + new CommandLine(toolCommand).parseArgs("pull", "luhee:1.1.0", "--repository=local"); + toolCommand.execute(); + new CommandLine(toolCommand).parseArgs("pull", "luhee:1.2.0", "--repository=local"); + toolCommand.execute(); + + String buildLog = readOutput(true); + Assert.assertTrue(buildLog.contains("tool 'luhee:1.2.0' successfully set as the active version.\n")); + Assert.assertTrue(Files.exists(mockHomeRepo.resolve(".config").resolve("bal-tools.toml"))); + BalToolsToml balToolsToml = BalToolsToml.from(mockHomeRepo.resolve(".config") + .resolve("bal-tools.toml")); + BalToolsManifest balToolsManifest = BalToolsManifestBuilder.from(balToolsToml).build(); + Optional tool = balToolsManifest.getActiveTool("luhee"); + Assert.assertTrue(tool.isPresent()); + Assert.assertEquals(tool.get().version(), "1.2.0"); + Assert.assertEquals(tool.get().repository(), "local"); + Assert.assertEquals(tool.get().org(), "gayaldassanayake"); + Assert.assertEquals(tool.get().name(), "tool_gayal"); + + toolCommand = new ToolCommand(printStream, printStream, false); + new CommandLine(toolCommand).parseArgs("use", "luhee:1.1.0", "--repository=local"); + toolCommand.execute(); + buildLog = readOutput(true); + Assert.assertTrue(buildLog.contains("tool 'luhee:1.1.0' successfully set as the active version.\n")); + balToolsToml = BalToolsToml.from(mockHomeRepo.resolve(".config").resolve("bal-tools.toml")); + balToolsManifest = BalToolsManifestBuilder.from(balToolsToml).build(); + tool = balToolsManifest.getActiveTool("luhee"); + Assert.assertTrue(tool.isPresent()); + Assert.assertEquals(tool.get().version(), "1.1.0"); + Assert.assertEquals(tool.get().repository(), "local"); + Assert.assertEquals(tool.get().org(), "gayaldassanayake"); + Assert.assertEquals(tool.get().name(), "tool_gayal"); + + toolCommand = new ToolCommand(printStream, printStream, false); + new CommandLine(toolCommand).parseArgs("remove", "luhee:1.2.0", "--repository=local"); + toolCommand.execute(); + buildLog = readOutput(true); + Assert.assertTrue(buildLog.contains("tool 'luhee:1.2.0' successfully removed.\n")); + balToolsToml = BalToolsToml.from(mockHomeRepo.resolve(".config").resolve("bal-tools.toml")); + balToolsManifest = BalToolsManifestBuilder.from(balToolsToml).build(); + tool = balToolsManifest.getTool("luhee", "1.2.0", "local"); + Assert.assertTrue(tool.isEmpty()); + } + } + @Test(description = "Test tool command with the help flag") public void testToolCommandWithHelpFlag() throws IOException { String expected = getOutput("tool-help.txt"); diff --git a/cli/ballerina-cli/src/test/resources/test-resources/command-outputs/unix/tool-help.txt b/cli/ballerina-cli/src/test/resources/test-resources/command-outputs/unix/tool-help.txt index 831c6a3e49c2..fd0068a761de 100644 --- a/cli/ballerina-cli/src/test/resources/test-resources/command-outputs/unix/tool-help.txt +++ b/cli/ballerina-cli/src/test/resources/test-resources/command-outputs/unix/tool-help.txt @@ -1,48 +1,55 @@ NAME - ballerina-tool - Manage the tools provided by Ballerina + ballerina-tool - Extend the Ballerina CLI with custom commands. SYNOPSIS bal tool [<-h> |<--help>] bal tool [args] DESCRIPTION - Manage Ballerina command line tools via bal tool chain. + Register and manage custom commands for the Ballerina CLI. - Facilitate pulling tools from Ballerina Central and removing - previously pulled tools. + This command facilitates searching, pulling, and updating tools from the + Ballerina Central, switching between installed versions, and listing and + removing installed tools. - Provide subcommands to list all the locally available tools and search - for tools that are available in Ballerina Central. OPTIONS -h, --help Print the usage details of all tool commands. -TOOL COMMANDS +SUBCOMMANDS The following is a list of available subcommands: - pull Pull a tool from Ballerina Central. - list List all the tools available locally. - search Search Ballerina Central for tools. - remove Remove a tool. + pull Pull a tool from the Ballerina Central. + remove Remove a tool from the local environment. + update Update a tool to the latest version. + use Set a tool version as the active version. + list List all tools available in the local environment. + search Search the Ballerina Central for tools. EXAMPLES - Pull a tool from Ballerina Central. - $ bal tool pull openapi + Pull a tool from the Ballerina Central. + $ bal tool pull health - Pull a specific version of a tool from Ballerina Central. - $ bal tool pull openapi:1.5.0 + Pull a specific version of a tool from the Ballerina Central. + $ bal tool pull health:1.0.0 - List all the tools available locally. - $ bal tool list + Remove a specific version of an installed tool. + $ bal tool remove health:1.0.0 + + Remove all the versions of an installed tool. + $ bal tool remove health - Search Ballerina Central for tools. - $ bal tool search openapi + Update a tool to the latest version compatible with the current distribution. + $ bal tool update health - Remove a specific version of previously pulled tool. - $ bal tool remove openapi:1.5.0 + Change the active version of a tool. + $ bal tool use health:1.0.0 + + List all tools available in the local environment. + $ bal tool list - Remove all the versions of a previously pulled tool. - $ bal tool remove openapi + Search the Ballerina Central for tools. + $ bal tool search health -Use 'bal tool --help' for more information on a specific command. +Use 'bal tool --help' for more information on a specific tool subcommand. diff --git a/cli/ballerina-cli/src/test/resources/test-resources/command-outputs/unix/tool-search-with-no-args.txt b/cli/ballerina-cli/src/test/resources/test-resources/command-outputs/unix/tool-search-with-no-args.txt index d8786ac17268..2e97de5247d3 100644 --- a/cli/ballerina-cli/src/test/resources/test-resources/command-outputs/unix/tool-search-with-no-args.txt +++ b/cli/ballerina-cli/src/test/resources/test-resources/command-outputs/unix/tool-search-with-no-args.txt @@ -1,4 +1,4 @@ ballerina: no keyword given. USAGE: - bal tool search [|||] + bal tool search [|] diff --git a/cli/ballerina-cli/src/test/resources/test-resources/command-outputs/unix/tool-search-with-too-many-args.txt b/cli/ballerina-cli/src/test/resources/test-resources/command-outputs/unix/tool-search-with-too-many-args.txt index 88756253cc5e..5edd841119c7 100644 --- a/cli/ballerina-cli/src/test/resources/test-resources/command-outputs/unix/tool-search-with-too-many-args.txt +++ b/cli/ballerina-cli/src/test/resources/test-resources/command-outputs/unix/tool-search-with-too-many-args.txt @@ -1,4 +1,4 @@ ballerina: too many arguments. USAGE: - bal tool search [|||] + bal tool search [|] diff --git a/cli/ballerina-cli/src/test/resources/test-resources/command-outputs/windows/tool-help.txt b/cli/ballerina-cli/src/test/resources/test-resources/command-outputs/windows/tool-help.txt index 831c6a3e49c2..fd0068a761de 100644 --- a/cli/ballerina-cli/src/test/resources/test-resources/command-outputs/windows/tool-help.txt +++ b/cli/ballerina-cli/src/test/resources/test-resources/command-outputs/windows/tool-help.txt @@ -1,48 +1,55 @@ NAME - ballerina-tool - Manage the tools provided by Ballerina + ballerina-tool - Extend the Ballerina CLI with custom commands. SYNOPSIS bal tool [<-h> |<--help>] bal tool [args] DESCRIPTION - Manage Ballerina command line tools via bal tool chain. + Register and manage custom commands for the Ballerina CLI. - Facilitate pulling tools from Ballerina Central and removing - previously pulled tools. + This command facilitates searching, pulling, and updating tools from the + Ballerina Central, switching between installed versions, and listing and + removing installed tools. - Provide subcommands to list all the locally available tools and search - for tools that are available in Ballerina Central. OPTIONS -h, --help Print the usage details of all tool commands. -TOOL COMMANDS +SUBCOMMANDS The following is a list of available subcommands: - pull Pull a tool from Ballerina Central. - list List all the tools available locally. - search Search Ballerina Central for tools. - remove Remove a tool. + pull Pull a tool from the Ballerina Central. + remove Remove a tool from the local environment. + update Update a tool to the latest version. + use Set a tool version as the active version. + list List all tools available in the local environment. + search Search the Ballerina Central for tools. EXAMPLES - Pull a tool from Ballerina Central. - $ bal tool pull openapi + Pull a tool from the Ballerina Central. + $ bal tool pull health - Pull a specific version of a tool from Ballerina Central. - $ bal tool pull openapi:1.5.0 + Pull a specific version of a tool from the Ballerina Central. + $ bal tool pull health:1.0.0 - List all the tools available locally. - $ bal tool list + Remove a specific version of an installed tool. + $ bal tool remove health:1.0.0 + + Remove all the versions of an installed tool. + $ bal tool remove health - Search Ballerina Central for tools. - $ bal tool search openapi + Update a tool to the latest version compatible with the current distribution. + $ bal tool update health - Remove a specific version of previously pulled tool. - $ bal tool remove openapi:1.5.0 + Change the active version of a tool. + $ bal tool use health:1.0.0 + + List all tools available in the local environment. + $ bal tool list - Remove all the versions of a previously pulled tool. - $ bal tool remove openapi + Search the Ballerina Central for tools. + $ bal tool search health -Use 'bal tool --help' for more information on a specific command. +Use 'bal tool --help' for more information on a specific tool subcommand. diff --git a/cli/ballerina-cli/src/test/resources/test-resources/command-outputs/windows/tool-search-with-no-args.txt b/cli/ballerina-cli/src/test/resources/test-resources/command-outputs/windows/tool-search-with-no-args.txt index d8786ac17268..2e97de5247d3 100644 --- a/cli/ballerina-cli/src/test/resources/test-resources/command-outputs/windows/tool-search-with-no-args.txt +++ b/cli/ballerina-cli/src/test/resources/test-resources/command-outputs/windows/tool-search-with-no-args.txt @@ -1,4 +1,4 @@ ballerina: no keyword given. USAGE: - bal tool search [|||] + bal tool search [|] diff --git a/cli/ballerina-cli/src/test/resources/test-resources/command-outputs/windows/tool-search-with-too-many-args.txt b/cli/ballerina-cli/src/test/resources/test-resources/command-outputs/windows/tool-search-with-too-many-args.txt index 88756253cc5e..5edd841119c7 100644 --- a/cli/ballerina-cli/src/test/resources/test-resources/command-outputs/windows/tool-search-with-too-many-args.txt +++ b/cli/ballerina-cli/src/test/resources/test-resources/command-outputs/windows/tool-search-with-too-many-args.txt @@ -1,4 +1,4 @@ ballerina: too many arguments. USAGE: - bal tool search [|||] + bal tool search [|] diff --git a/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/1.1.0/java17/bala.json b/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/1.1.0/java17/bala.json new file mode 100644 index 000000000000..fd0a01921270 --- /dev/null +++ b/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/1.1.0/java17/bala.json @@ -0,0 +1,4 @@ +{ + "bala_version": "2.0.0", + "built_by": "WSO2" +} \ No newline at end of file diff --git a/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/1.1.0/java17/compiler-plugin/compiler-plugin.json b/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/1.1.0/java17/compiler-plugin/compiler-plugin.json new file mode 100644 index 000000000000..66bfe83d52a2 --- /dev/null +++ b/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/1.1.0/java17/compiler-plugin/compiler-plugin.json @@ -0,0 +1,6 @@ +{ + "plugin_class": "io.gayal.combined.CombinedCompilerPlugin", + "dependency_paths": [ + "compiler-plugin/libs/compiler-plugin-with-analyzer-generator-modifier-1.0.0.jar" + ] +} \ No newline at end of file diff --git a/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/1.1.0/java17/dependency-graph.json b/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/1.1.0/java17/dependency-graph.json new file mode 100644 index 000000000000..f4a609f60ccb --- /dev/null +++ b/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/1.1.0/java17/dependency-graph.json @@ -0,0 +1,88 @@ +{ + "packages": [ + { + "org": "gayaldassanayake", + "name": "tool_gayal", + "version": "1.1.0", + "transitive": false, + "dependencies": [ + { + "org": "ballerina", + "name": "io", + "version": "1.6.0", + "transitive": false, + "dependencies": [], + "modules": [] + } + ], + "modules": [] + }, + { + "org": "ballerina", + "name": "io", + "version": "1.6.0", + "transitive": false, + "dependencies": [ + { + "org": "ballerina", + "name": "jballerina.java", + "version": "0.0.0", + "transitive": false, + "dependencies": [], + "modules": [] + }, + { + "org": "ballerina", + "name": "lang.value", + "version": "0.0.0", + "transitive": false, + "dependencies": [], + "modules": [] + } + ], + "modules": [] + }, + { + "org": "ballerina", + "name": "jballerina.java", + "version": "0.0.0", + "transitive": false, + "dependencies": [], + "modules": [] + }, + { + "org": "ballerina", + "name": "lang.value", + "version": "0.0.0", + "transitive": false, + "dependencies": [ + { + "org": "ballerina", + "name": "jballerina.java", + "version": "0.0.0", + "transitive": false, + "dependencies": [], + "modules": [] + } + ], + "modules": [] + } + ], + "modules": [ + { + "org": "gayaldassanayake", + "package_name": "tool_gayal", + "version": "1.1.0", + "module_name": "tool_gayal", + "dependencies": [ + { + "org": "ballerina", + "package_name": "io", + "version": "1.6.0", + "module_name": "io", + "dependencies": [] + } + ] + } + ] +} \ No newline at end of file diff --git a/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/1.1.0/java17/docs/Package.md b/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/1.1.0/java17/docs/Package.md new file mode 100644 index 000000000000..43fd57fbd954 --- /dev/null +++ b/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/1.1.0/java17/docs/Package.md @@ -0,0 +1,4 @@ +# Gayals Tool + +1. Run `bal pack` with the provided ballerina distribution pack +2. Extract the .bala file to `~.ballerina/repositories/central.ballerina.io/bala/ballerina/gayalstool/0.1.0/any/` diff --git a/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/1.1.0/java17/modules/tool_gayal/main.bal b/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/1.1.0/java17/modules/tool_gayal/main.bal new file mode 100644 index 000000000000..31e8785bf98f --- /dev/null +++ b/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/1.1.0/java17/modules/tool_gayal/main.bal @@ -0,0 +1,5 @@ +import ballerina/io; + +public function main() { + io:println("Hello, World!"); +} diff --git a/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/1.1.0/java17/package.json b/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/1.1.0/java17/package.json new file mode 100644 index 000000000000..25e7a82eb4cf --- /dev/null +++ b/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/1.1.0/java17/package.json @@ -0,0 +1,14 @@ +{ + "organization": "gayaldassanayake", + "name": "tool_gayal", + "version": "1.1.0", + "export": [ + "tool_gayal" + ], + "ballerina_version": "2201.9.0-SNAPSHOT", + "implementation_vendor": "WSO2", + "language_spec_version": "2023R1", + "platform": "java17", + "graalvmCompatible": true, + "template": false +} \ No newline at end of file diff --git a/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/1.1.0/java17/tool/bal-tool.json b/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/1.1.0/java17/tool/bal-tool.json new file mode 100644 index 000000000000..bb78684d86b9 --- /dev/null +++ b/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/1.1.0/java17/tool/bal-tool.json @@ -0,0 +1,6 @@ +{ + "tool_id": "luhee", + "dependency_paths": [ + "tool/libs/GayalsCommand-1.0-SNAPSHOT.jar" + ] +} \ No newline at end of file diff --git a/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/1.2.0/java17/bala.json b/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/1.2.0/java17/bala.json new file mode 100644 index 000000000000..fd0a01921270 --- /dev/null +++ b/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/1.2.0/java17/bala.json @@ -0,0 +1,4 @@ +{ + "bala_version": "2.0.0", + "built_by": "WSO2" +} \ No newline at end of file diff --git a/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/1.2.0/java17/compiler-plugin/compiler-plugin.json b/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/1.2.0/java17/compiler-plugin/compiler-plugin.json new file mode 100644 index 000000000000..66bfe83d52a2 --- /dev/null +++ b/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/1.2.0/java17/compiler-plugin/compiler-plugin.json @@ -0,0 +1,6 @@ +{ + "plugin_class": "io.gayal.combined.CombinedCompilerPlugin", + "dependency_paths": [ + "compiler-plugin/libs/compiler-plugin-with-analyzer-generator-modifier-1.0.0.jar" + ] +} \ No newline at end of file diff --git a/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/1.2.0/java17/dependency-graph.json b/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/1.2.0/java17/dependency-graph.json new file mode 100644 index 000000000000..5956fbe2398c --- /dev/null +++ b/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/1.2.0/java17/dependency-graph.json @@ -0,0 +1,88 @@ +{ + "packages": [ + { + "org": "ballerina", + "name": "jballerina.java", + "version": "0.0.0", + "transitive": false, + "dependencies": [], + "modules": [] + }, + { + "org": "ballerina", + "name": "io", + "version": "1.6.0", + "transitive": false, + "dependencies": [ + { + "org": "ballerina", + "name": "jballerina.java", + "version": "0.0.0", + "transitive": false, + "dependencies": [], + "modules": [] + }, + { + "org": "ballerina", + "name": "lang.value", + "version": "0.0.0", + "transitive": false, + "dependencies": [], + "modules": [] + } + ], + "modules": [] + }, + { + "org": "gayaldassanayake", + "name": "tool_gayal", + "version": "1.2.0", + "transitive": false, + "dependencies": [ + { + "org": "ballerina", + "name": "io", + "version": "1.6.0", + "transitive": false, + "dependencies": [], + "modules": [] + } + ], + "modules": [] + }, + { + "org": "ballerina", + "name": "lang.value", + "version": "0.0.0", + "transitive": false, + "dependencies": [ + { + "org": "ballerina", + "name": "jballerina.java", + "version": "0.0.0", + "transitive": false, + "dependencies": [], + "modules": [] + } + ], + "modules": [] + } + ], + "modules": [ + { + "org": "gayaldassanayake", + "package_name": "tool_gayal", + "version": "1.2.0", + "module_name": "tool_gayal", + "dependencies": [ + { + "org": "ballerina", + "package_name": "io", + "version": "1.6.0", + "module_name": "io", + "dependencies": [] + } + ] + } + ] +} \ No newline at end of file diff --git a/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/1.2.0/java17/docs/Package.md b/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/1.2.0/java17/docs/Package.md new file mode 100644 index 000000000000..43fd57fbd954 --- /dev/null +++ b/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/1.2.0/java17/docs/Package.md @@ -0,0 +1,4 @@ +# Gayals Tool + +1. Run `bal pack` with the provided ballerina distribution pack +2. Extract the .bala file to `~.ballerina/repositories/central.ballerina.io/bala/ballerina/gayalstool/0.1.0/any/` diff --git a/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/1.2.0/java17/modules/tool_gayal/main.bal b/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/1.2.0/java17/modules/tool_gayal/main.bal new file mode 100644 index 000000000000..31e8785bf98f --- /dev/null +++ b/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/1.2.0/java17/modules/tool_gayal/main.bal @@ -0,0 +1,5 @@ +import ballerina/io; + +public function main() { + io:println("Hello, World!"); +} diff --git a/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/1.2.0/java17/package.json b/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/1.2.0/java17/package.json new file mode 100644 index 000000000000..03ed7d045493 --- /dev/null +++ b/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/1.2.0/java17/package.json @@ -0,0 +1,14 @@ +{ + "organization": "gayaldassanayake", + "name": "tool_gayal", + "version": "1.2.0", + "export": [ + "tool_gayal" + ], + "ballerina_version": "2201.9.0-SNAPSHOT", + "implementation_vendor": "WSO2", + "language_spec_version": "2023R1", + "platform": "java17", + "graalvmCompatible": true, + "template": false +} \ No newline at end of file diff --git a/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/1.2.0/java17/tool/bal-tool.json b/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/1.2.0/java17/tool/bal-tool.json new file mode 100644 index 000000000000..bb78684d86b9 --- /dev/null +++ b/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/1.2.0/java17/tool/bal-tool.json @@ -0,0 +1,6 @@ +{ + "tool_id": "luhee", + "dependency_paths": [ + "tool/libs/GayalsCommand-1.0-SNAPSHOT.jar" + ] +} \ No newline at end of file diff --git a/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/1.3.0/java17/bala.json b/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/1.3.0/java17/bala.json new file mode 100644 index 000000000000..fd0a01921270 --- /dev/null +++ b/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/1.3.0/java17/bala.json @@ -0,0 +1,4 @@ +{ + "bala_version": "2.0.0", + "built_by": "WSO2" +} \ No newline at end of file diff --git a/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/1.3.0/java17/compiler-plugin/compiler-plugin.json b/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/1.3.0/java17/compiler-plugin/compiler-plugin.json new file mode 100644 index 000000000000..66bfe83d52a2 --- /dev/null +++ b/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/1.3.0/java17/compiler-plugin/compiler-plugin.json @@ -0,0 +1,6 @@ +{ + "plugin_class": "io.gayal.combined.CombinedCompilerPlugin", + "dependency_paths": [ + "compiler-plugin/libs/compiler-plugin-with-analyzer-generator-modifier-1.0.0.jar" + ] +} \ No newline at end of file diff --git a/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/1.3.0/java17/dependency-graph.json b/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/1.3.0/java17/dependency-graph.json new file mode 100644 index 000000000000..d79edcfd7999 --- /dev/null +++ b/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/1.3.0/java17/dependency-graph.json @@ -0,0 +1,88 @@ +{ + "packages": [ + { + "org": "gayaldassanayake", + "name": "tool_gayal", + "version": "1.3.0", + "transitive": false, + "dependencies": [ + { + "org": "ballerina", + "name": "io", + "version": "1.6.0", + "transitive": false, + "dependencies": [], + "modules": [] + } + ], + "modules": [] + }, + { + "org": "ballerina", + "name": "jballerina.java", + "version": "0.0.0", + "transitive": false, + "dependencies": [], + "modules": [] + }, + { + "org": "ballerina", + "name": "io", + "version": "1.6.0", + "transitive": false, + "dependencies": [ + { + "org": "ballerina", + "name": "jballerina.java", + "version": "0.0.0", + "transitive": false, + "dependencies": [], + "modules": [] + }, + { + "org": "ballerina", + "name": "lang.value", + "version": "0.0.0", + "transitive": false, + "dependencies": [], + "modules": [] + } + ], + "modules": [] + }, + { + "org": "ballerina", + "name": "lang.value", + "version": "0.0.0", + "transitive": false, + "dependencies": [ + { + "org": "ballerina", + "name": "jballerina.java", + "version": "0.0.0", + "transitive": false, + "dependencies": [], + "modules": [] + } + ], + "modules": [] + } + ], + "modules": [ + { + "org": "gayaldassanayake", + "package_name": "tool_gayal", + "version": "1.3.0", + "module_name": "tool_gayal", + "dependencies": [ + { + "org": "ballerina", + "package_name": "io", + "version": "1.6.0", + "module_name": "io", + "dependencies": [] + } + ] + } + ] +} \ No newline at end of file diff --git a/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/1.3.0/java17/docs/Package.md b/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/1.3.0/java17/docs/Package.md new file mode 100644 index 000000000000..43fd57fbd954 --- /dev/null +++ b/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/1.3.0/java17/docs/Package.md @@ -0,0 +1,4 @@ +# Gayals Tool + +1. Run `bal pack` with the provided ballerina distribution pack +2. Extract the .bala file to `~.ballerina/repositories/central.ballerina.io/bala/ballerina/gayalstool/0.1.0/any/` diff --git a/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/1.3.0/java17/modules/tool_gayal/main.bal b/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/1.3.0/java17/modules/tool_gayal/main.bal new file mode 100644 index 000000000000..31e8785bf98f --- /dev/null +++ b/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/1.3.0/java17/modules/tool_gayal/main.bal @@ -0,0 +1,5 @@ +import ballerina/io; + +public function main() { + io:println("Hello, World!"); +} diff --git a/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/1.3.0/java17/package.json b/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/1.3.0/java17/package.json new file mode 100644 index 000000000000..3854d0043286 --- /dev/null +++ b/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/1.3.0/java17/package.json @@ -0,0 +1,14 @@ +{ + "organization": "gayaldassanayake", + "name": "tool_gayal", + "version": "1.3.0", + "export": [ + "tool_gayal" + ], + "ballerina_version": "2201.9.0-SNAPSHOT", + "implementation_vendor": "WSO2", + "language_spec_version": "2023R1", + "platform": "java17", + "graalvmCompatible": true, + "template": false +} \ No newline at end of file diff --git a/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/1.3.0/java17/tool/bal-tool.json b/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/1.3.0/java17/tool/bal-tool.json new file mode 100644 index 000000000000..bb78684d86b9 --- /dev/null +++ b/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/1.3.0/java17/tool/bal-tool.json @@ -0,0 +1,6 @@ +{ + "tool_id": "luhee", + "dependency_paths": [ + "tool/libs/GayalsCommand-1.0-SNAPSHOT.jar" + ] +} \ No newline at end of file diff --git a/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/2.2.4/java17/bala.json b/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/2.2.4/java17/bala.json new file mode 100644 index 000000000000..fd0a01921270 --- /dev/null +++ b/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/2.2.4/java17/bala.json @@ -0,0 +1,4 @@ +{ + "bala_version": "2.0.0", + "built_by": "WSO2" +} \ No newline at end of file diff --git a/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/2.2.4/java17/compiler-plugin/compiler-plugin.json b/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/2.2.4/java17/compiler-plugin/compiler-plugin.json new file mode 100644 index 000000000000..66bfe83d52a2 --- /dev/null +++ b/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/2.2.4/java17/compiler-plugin/compiler-plugin.json @@ -0,0 +1,6 @@ +{ + "plugin_class": "io.gayal.combined.CombinedCompilerPlugin", + "dependency_paths": [ + "compiler-plugin/libs/compiler-plugin-with-analyzer-generator-modifier-1.0.0.jar" + ] +} \ No newline at end of file diff --git a/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/2.2.4/java17/dependency-graph.json b/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/2.2.4/java17/dependency-graph.json new file mode 100644 index 000000000000..0ea50a01b58a --- /dev/null +++ b/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/2.2.4/java17/dependency-graph.json @@ -0,0 +1,88 @@ +{ + "packages": [ + { + "org": "ballerina", + "name": "jballerina.java", + "version": "0.0.0", + "transitive": false, + "dependencies": [], + "modules": [] + }, + { + "org": "ballerina", + "name": "lang.value", + "version": "0.0.0", + "transitive": false, + "dependencies": [ + { + "org": "ballerina", + "name": "jballerina.java", + "version": "0.0.0", + "transitive": false, + "dependencies": [], + "modules": [] + } + ], + "modules": [] + }, + { + "org": "gayaldassanayake", + "name": "tool_gayal", + "version": "2.2.4", + "transitive": false, + "dependencies": [ + { + "org": "ballerina", + "name": "io", + "version": "1.6.0", + "transitive": false, + "dependencies": [], + "modules": [] + } + ], + "modules": [] + }, + { + "org": "ballerina", + "name": "io", + "version": "1.6.0", + "transitive": false, + "dependencies": [ + { + "org": "ballerina", + "name": "jballerina.java", + "version": "0.0.0", + "transitive": false, + "dependencies": [], + "modules": [] + }, + { + "org": "ballerina", + "name": "lang.value", + "version": "0.0.0", + "transitive": false, + "dependencies": [], + "modules": [] + } + ], + "modules": [] + } + ], + "modules": [ + { + "org": "gayaldassanayake", + "package_name": "tool_gayal", + "version": "2.2.4", + "module_name": "tool_gayal", + "dependencies": [ + { + "org": "ballerina", + "package_name": "io", + "version": "1.6.0", + "module_name": "io", + "dependencies": [] + } + ] + } + ] +} \ No newline at end of file diff --git a/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/2.2.4/java17/docs/Package.md b/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/2.2.4/java17/docs/Package.md new file mode 100644 index 000000000000..43fd57fbd954 --- /dev/null +++ b/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/2.2.4/java17/docs/Package.md @@ -0,0 +1,4 @@ +# Gayals Tool + +1. Run `bal pack` with the provided ballerina distribution pack +2. Extract the .bala file to `~.ballerina/repositories/central.ballerina.io/bala/ballerina/gayalstool/0.1.0/any/` diff --git a/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/2.2.4/java17/modules/tool_gayal/main.bal b/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/2.2.4/java17/modules/tool_gayal/main.bal new file mode 100644 index 000000000000..31e8785bf98f --- /dev/null +++ b/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/2.2.4/java17/modules/tool_gayal/main.bal @@ -0,0 +1,5 @@ +import ballerina/io; + +public function main() { + io:println("Hello, World!"); +} diff --git a/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/2.2.4/java17/package.json b/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/2.2.4/java17/package.json new file mode 100644 index 000000000000..32939af72c39 --- /dev/null +++ b/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/2.2.4/java17/package.json @@ -0,0 +1,14 @@ +{ + "organization": "gayaldassanayake", + "name": "tool_gayal", + "version": "2.2.4", + "export": [ + "tool_gayal" + ], + "ballerina_version": "2201.9.0-SNAPSHOT", + "implementation_vendor": "WSO2", + "language_spec_version": "2023R1", + "platform": "java17", + "graalvmCompatible": true, + "template": false +} \ No newline at end of file diff --git a/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/2.2.4/java17/tool/bal-tool.json b/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/2.2.4/java17/tool/bal-tool.json new file mode 100644 index 000000000000..300d1b1a0c10 --- /dev/null +++ b/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/2.2.4/java17/tool/bal-tool.json @@ -0,0 +1,6 @@ +{ + "tool_id": "gayals", + "dependency_paths": [ + "tool/libs/GayalsCommand-1.0-SNAPSHOT.jar" + ] +} \ No newline at end of file diff --git a/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/2.2.5/java17/bala.json b/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/2.2.5/java17/bala.json new file mode 100644 index 000000000000..fd0a01921270 --- /dev/null +++ b/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/2.2.5/java17/bala.json @@ -0,0 +1,4 @@ +{ + "bala_version": "2.0.0", + "built_by": "WSO2" +} \ No newline at end of file diff --git a/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/2.2.5/java17/compiler-plugin/compiler-plugin.json b/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/2.2.5/java17/compiler-plugin/compiler-plugin.json new file mode 100644 index 000000000000..66bfe83d52a2 --- /dev/null +++ b/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/2.2.5/java17/compiler-plugin/compiler-plugin.json @@ -0,0 +1,6 @@ +{ + "plugin_class": "io.gayal.combined.CombinedCompilerPlugin", + "dependency_paths": [ + "compiler-plugin/libs/compiler-plugin-with-analyzer-generator-modifier-1.0.0.jar" + ] +} \ No newline at end of file diff --git a/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/2.2.5/java17/dependency-graph.json b/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/2.2.5/java17/dependency-graph.json new file mode 100644 index 000000000000..67966f371406 --- /dev/null +++ b/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/2.2.5/java17/dependency-graph.json @@ -0,0 +1,88 @@ +{ + "packages": [ + { + "org": "ballerina", + "name": "lang.value", + "version": "0.0.0", + "transitive": false, + "dependencies": [ + { + "org": "ballerina", + "name": "jballerina.java", + "version": "0.0.0", + "transitive": false, + "dependencies": [], + "modules": [] + } + ], + "modules": [] + }, + { + "org": "gayaldassanayake", + "name": "tool_gayal", + "version": "2.2.5", + "transitive": false, + "dependencies": [ + { + "org": "ballerina", + "name": "io", + "version": "1.6.0", + "transitive": false, + "dependencies": [], + "modules": [] + } + ], + "modules": [] + }, + { + "org": "ballerina", + "name": "io", + "version": "1.6.0", + "transitive": false, + "dependencies": [ + { + "org": "ballerina", + "name": "lang.value", + "version": "0.0.0", + "transitive": false, + "dependencies": [], + "modules": [] + }, + { + "org": "ballerina", + "name": "jballerina.java", + "version": "0.0.0", + "transitive": false, + "dependencies": [], + "modules": [] + } + ], + "modules": [] + }, + { + "org": "ballerina", + "name": "jballerina.java", + "version": "0.0.0", + "transitive": false, + "dependencies": [], + "modules": [] + } + ], + "modules": [ + { + "org": "gayaldassanayake", + "package_name": "tool_gayal", + "version": "2.2.5", + "module_name": "tool_gayal", + "dependencies": [ + { + "org": "ballerina", + "package_name": "io", + "version": "1.6.0", + "module_name": "io", + "dependencies": [] + } + ] + } + ] +} \ No newline at end of file diff --git a/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/2.2.5/java17/docs/Package.md b/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/2.2.5/java17/docs/Package.md new file mode 100644 index 000000000000..43fd57fbd954 --- /dev/null +++ b/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/2.2.5/java17/docs/Package.md @@ -0,0 +1,4 @@ +# Gayals Tool + +1. Run `bal pack` with the provided ballerina distribution pack +2. Extract the .bala file to `~.ballerina/repositories/central.ballerina.io/bala/ballerina/gayalstool/0.1.0/any/` diff --git a/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/2.2.5/java17/modules/tool_gayal/main.bal b/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/2.2.5/java17/modules/tool_gayal/main.bal new file mode 100644 index 000000000000..31e8785bf98f --- /dev/null +++ b/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/2.2.5/java17/modules/tool_gayal/main.bal @@ -0,0 +1,5 @@ +import ballerina/io; + +public function main() { + io:println("Hello, World!"); +} diff --git a/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/2.2.5/java17/package.json b/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/2.2.5/java17/package.json new file mode 100644 index 000000000000..959fd9a8722b --- /dev/null +++ b/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/2.2.5/java17/package.json @@ -0,0 +1,14 @@ +{ + "organization": "gayaldassanayake", + "name": "tool_gayal", + "version": "2.2.5", + "export": [ + "tool_gayal" + ], + "ballerina_version": "2201.9.0-SNAPSHOT", + "implementation_vendor": "WSO2", + "language_spec_version": "2023R1", + "platform": "java17", + "graalvmCompatible": true, + "template": false +} \ No newline at end of file diff --git a/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/2.2.5/java17/tool/bal-tool.json b/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/2.2.5/java17/tool/bal-tool.json new file mode 100644 index 000000000000..bb78684d86b9 --- /dev/null +++ b/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/2.2.5/java17/tool/bal-tool.json @@ -0,0 +1,6 @@ +{ + "tool_id": "luhee", + "dependency_paths": [ + "tool/libs/GayalsCommand-1.0-SNAPSHOT.jar" + ] +} \ No newline at end of file diff --git a/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/local-tools.json b/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/local-tools.json new file mode 100644 index 000000000000..3e8e08bb5768 --- /dev/null +++ b/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/local-tools.json @@ -0,0 +1 @@ +{"gayal":{"org":"gayaldassanayake","name":"tool_gayal"},"gayals":{"org":"gayaldassanayake","name":"tool_gayal"},"luhee":{"org":"gayaldassanayake","name":"tool_gayal"}} \ No newline at end of file diff --git a/compiler/ballerina-lang/src/main/java/io/ballerina/projects/BalToolsManifest.java b/compiler/ballerina-lang/src/main/java/io/ballerina/projects/BalToolsManifest.java index b0a0ba71bf30..8164aece980f 100644 --- a/compiler/ballerina-lang/src/main/java/io/ballerina/projects/BalToolsManifest.java +++ b/compiler/ballerina-lang/src/main/java/io/ballerina/projects/BalToolsManifest.java @@ -17,10 +17,7 @@ */ package io.ballerina.projects; -import java.util.ArrayList; -import java.util.Collection; import java.util.HashMap; -import java.util.List; import java.util.Map; import java.util.Optional; @@ -40,7 +37,7 @@ public static BalToolsManifest from() { return new BalToolsManifest(new HashMap<>()); } - public static BalToolsManifest from(Map>>tools) { + public static BalToolsManifest from(Map>> tools) { return new BalToolsManifest(tools); } diff --git a/compiler/ballerina-lang/src/main/java/io/ballerina/projects/BalToolsToml.java b/compiler/ballerina-lang/src/main/java/io/ballerina/projects/BalToolsToml.java index e1c52b342006..10820cd1d1ac 100644 --- a/compiler/ballerina-lang/src/main/java/io/ballerina/projects/BalToolsToml.java +++ b/compiler/ballerina-lang/src/main/java/io/ballerina/projects/BalToolsToml.java @@ -29,7 +29,6 @@ import java.nio.file.Files; import java.nio.file.Path; import java.util.Map; -import java.util.Set; import static io.ballerina.projects.util.ProjectConstants.BAL_TOOLS_TOML; From f6d98a99d272dbec9afb293777e775eb2b8bcc97 Mon Sep 17 00:00:00 2001 From: Thevakumar-Luheerathan Date: Wed, 20 Dec 2023 11:35:31 +0530 Subject: [PATCH 5/8] Address the review --- .../io/ballerina/cli/cmd/PushCommand.java | 34 +++--- .../io/ballerina/cli/cmd/ToolCommand.java | 105 +++++++++--------- .../ballerina/cli/launcher/LauncherUtils.java | 2 +- .../cli-help/ballerina-tool-pull.help | 2 +- .../io/ballerina/cli/cmd/PushCommandTest.java | 1 - .../projects/util/ProjectConstants.java | 3 + 6 files changed, 77 insertions(+), 70 deletions(-) diff --git a/cli/ballerina-cli/src/main/java/io/ballerina/cli/cmd/PushCommand.java b/cli/ballerina-cli/src/main/java/io/ballerina/cli/cmd/PushCommand.java index 766154249d13..4438925cdf76 100644 --- a/cli/ballerina-cli/src/main/java/io/ballerina/cli/cmd/PushCommand.java +++ b/cli/ballerina-cli/src/main/java/io/ballerina/cli/cmd/PushCommand.java @@ -57,6 +57,7 @@ import java.nio.file.Paths; import java.nio.file.StandardOpenOption; import java.util.Arrays; +import java.util.Optional; import java.util.stream.Collectors; import java.util.zip.ZipEntry; import java.util.zip.ZipInputStream; @@ -65,6 +66,7 @@ import static io.ballerina.cli.utils.CentralUtils.authenticate; import static io.ballerina.cli.utils.CentralUtils.getBallerinaCentralCliTokenUrl; import static io.ballerina.cli.utils.CentralUtils.getCentralPackageURL; +import static io.ballerina.projects.util.ProjectConstants.LOCAL_TOOLS_JSON; import static io.ballerina.projects.util.ProjectConstants.SETTINGS_FILE_NAME; import static io.ballerina.projects.util.ProjectUtils.getAccessTokenOfCLI; import static io.ballerina.projects.util.ProjectUtils.initializeProxy; @@ -78,6 +80,11 @@ @CommandLine.Command(name = PUSH_COMMAND, description = "Publish a package to Ballerina Central") public class PushCommand implements BLauncherCmd { + private static final String TOOL_DIR = "tool"; + private static final String BAL_TOOL_JSON = "bal-tool.json"; + private static final String TOOL_ID = "tool_id"; + private static final String ORG = "org"; + private static final String PACKAGE_NAME = "name"; @CommandLine.Parameters (arity = "0..1") private Path balaPath; @@ -392,10 +399,11 @@ private void pushBalaToCustomRepo(Path balaFilePath) { ProjectUtils.deleteDirectory(balaCachesPath); } ProjectUtils.extractBala(balaFilePath, balaDestPath); - handleLocalTools(balaDestPath, org, packageName, repoPath.resolve(ProjectConstants.BALA_DIR_NAME)); + createLocalToolsJsonIfLocalTool(balaDestPath, org, packageName, repoPath.resolve( + ProjectConstants.BALA_DIR_NAME)); } catch (IOException e) { throw new ProjectException("error while pushing bala file '" + balaFilePath + "' to '" - + ProjectConstants.LOCAL_REPOSITORY_NAME + "' repository. " + e.getMessage()); + + ProjectConstants.LOCAL_REPOSITORY_NAME + "' repository: " + e.getMessage()); } Path relativePathToBalaFile; @@ -408,9 +416,9 @@ private void pushBalaToCustomRepo(Path balaFilePath) { + " to '" + repositoryName + "' repository."); } - private void handleLocalTools(Path balaDestPath, String org, String packageName, Path localRepoBalaPath) { - Path balToolJsonPath = balaDestPath.resolve("tool").resolve("bal-tool.json"); - String toolId = null; + private void createLocalToolsJsonIfLocalTool(Path balaDestPath, String org, String packageName, + Path localRepoBalaPath) { + Path balToolJsonPath = balaDestPath.resolve(TOOL_DIR).resolve(BAL_TOOL_JSON); JsonObject balToolJson; JsonObject localToolJson; Gson gson = new Gson(); @@ -422,19 +430,17 @@ private void handleLocalTools(Path balaDestPath, String org, String packageName, } catch (IOException e) { throw new ProjectException("Failed to read bal-tools.json file: " + e.getMessage()); } - toolId = balToolJson.get("tool_id").getAsString(); - - if (toolId == null) { + Optional optionalToolId = Optional.ofNullable(balToolJson.get(TOOL_ID).getAsString()); + if (optionalToolId.isEmpty()) { return; } - + String toolId = optionalToolId.get(); JsonObject packageDesc = new JsonObject(); - packageDesc.addProperty("org", org); - packageDesc.addProperty("name", packageName); - Path localToolJsonPath = localRepoBalaPath.resolve("local-tools.json"); + packageDesc.addProperty(ORG, org); + packageDesc.addProperty(PACKAGE_NAME, packageName); + Path localToolJsonPath = localRepoBalaPath.resolve(LOCAL_TOOLS_JSON); if (localToolJsonPath.toFile().exists()) { - try (BufferedReader bufferedReader = Files.newBufferedReader(localToolJsonPath, - StandardCharsets.UTF_8)) { + try (BufferedReader bufferedReader = Files.newBufferedReader(localToolJsonPath, StandardCharsets.UTF_8)) { localToolJson = gson.fromJson(bufferedReader, JsonObject.class); if (localToolJson.has(toolId)) { localToolJson.remove(toolId); diff --git a/cli/ballerina-cli/src/main/java/io/ballerina/cli/cmd/ToolCommand.java b/cli/ballerina-cli/src/main/java/io/ballerina/cli/cmd/ToolCommand.java index 5f13facb2a95..6c25147f7a64 100644 --- a/cli/ballerina-cli/src/main/java/io/ballerina/cli/cmd/ToolCommand.java +++ b/cli/ballerina-cli/src/main/java/io/ballerina/cli/cmd/ToolCommand.java @@ -66,6 +66,7 @@ import static io.ballerina.projects.util.ProjectConstants.BAL_TOOLS_TOML; import static io.ballerina.projects.util.ProjectConstants.CENTRAL_REPOSITORY_CACHE_NAME; import static io.ballerina.projects.util.ProjectConstants.CONFIG_DIR; +import static io.ballerina.projects.util.ProjectConstants.LOCAL_REPOSITORY_NAME; import static io.ballerina.projects.util.ProjectConstants.HOME_REPO_DEFAULT_DIRNAME; import static io.ballerina.projects.util.ProjectConstants.REPOSITORIES_DIR; import static io.ballerina.projects.util.ProjectUtils.getAccessTokenOfCLI; @@ -94,14 +95,13 @@ public class ToolCommand implements BLauncherCmd { private static final String TOOL_REMOVE_USAGE_TEXT = "bal tool remove :[]"; private static final String TOOL_SEARCH_USAGE_TEXT = "bal tool search [|]"; private static final String TOOL_UPDATE_USAGE_TEXT = "bal tool update "; - private static final String EMPTY_STRING = ""; + private static final String EMPTY_STRING = Names.EMPTY.getValue(); private final boolean exitWhenFinish; private final PrintStream outStream; private final PrintStream errStream; - Path balToolsTomlPath = Path.of( - System.getProperty(CommandUtil.USER_HOME), HOME_REPO_DEFAULT_DIRNAME, CONFIG_DIR, BAL_TOOLS_TOML); + Path balToolsTomlPath = RepoUtils.createAndGetHomeReposPath().resolve(Path.of(CONFIG_DIR, BAL_TOOLS_TOML)); @CommandLine.Parameters(description = "Manage ballerina tools") private List argList; @@ -162,9 +162,9 @@ public void execute() { return; } - if (repositoryName != null && !repositoryName.equals(ProjectConstants.LOCAL_REPOSITORY_NAME)) { + if (repositoryName != null && !repositoryName.equals(LOCAL_REPOSITORY_NAME)) { String errMsg = "unsupported repository '" + repositoryName + "' found. Only '" - + ProjectConstants.LOCAL_REPOSITORY_NAME + "' repository is supported."; + + LOCAL_REPOSITORY_NAME + "' repository is supported."; CommandUtil.printError(this.errStream, errMsg, null, false); CommandUtil.exitError(this.exitWhenFinish); return; @@ -227,8 +227,8 @@ private void handlePullCommand() { return; } - if (ProjectConstants.LOCAL_REPOSITORY_NAME.equals(repositoryName) && EMPTY_STRING.equals(version)) { - CommandUtil.printError(errStream, "a version should be provided when pulling a tool from local " + + if (LOCAL_REPOSITORY_NAME.equals(repositoryName) && EMPTY_STRING.equals(version)) { + CommandUtil.printError(errStream, "tool version should be provided when pulling a tool from local " + "repository", null, false); CommandUtil.exitError(this.exitWhenFinish); return; @@ -297,16 +297,23 @@ private void handleUseCommand() { BalToolsManifest balToolsManifest = BalToolsManifestBuilder.from(balToolsToml).build(); Optional tool = balToolsManifest.getTool(toolId, version, repositoryName); if (tool.isEmpty()) { + boolean isLocalTool = isToolAvailableInLocalRepo(toolId, version); + if (isLocalTool) { + CommandUtil.printError(errStream, "tool '" + toolId + ":" + version + "' is not found. " + + "Run 'bal tool pull " + toolId + ":" + version + + "' or 'bal tool pull " + toolId + ":" + version + + " --repository=local' to fetch and set as the active version.", null, false); + CommandUtil.exitError(this.exitWhenFinish); + return; + } CommandUtil.printError(errStream, "tool '" + toolId + ":" + version + "' is not found. " + - "Run 'bal tool pull " + toolId + ":" + version - + "' or 'bal tool pull " + toolId + ":" + version - + " --repository=local' to fetch and set as the active version.", null, false); + "Run 'bal tool pull " + toolId + ":" + version + + "' to fetch and set as the active version.", null, false); CommandUtil.exitError(this.exitWhenFinish); return; } this.org = tool.get().org(); this.name = tool.get().name(); - Optional currentActiveTool = balToolsManifest.getActiveTool(toolId); if (currentActiveTool.isPresent() && currentActiveTool.get().version().equals(tool.get().version()) && Objects.equals(currentActiveTool.get().repository(), tool.get().repository())) { @@ -352,8 +359,8 @@ private void handleSearchCommand() { CommandUtil.exitError(this.exitWhenFinish); return; } - if (ProjectConstants.LOCAL_REPOSITORY_NAME.equals(repositoryName)) { - CommandUtil.printError(errStream, "tool search command is not supported for local repository.", + if (LOCAL_REPOSITORY_NAME.equals(repositoryName)) { + CommandUtil.printError(errStream, "Local repository option is not supported with tool search command", null, false); CommandUtil.exitError(this.exitWhenFinish); return; @@ -426,7 +433,7 @@ private void handleUpdateCommand() { CommandUtil.exitError(this.exitWhenFinish); return; } - if (ProjectConstants.LOCAL_REPOSITORY_NAME.equals(repositoryName)) { + if (LOCAL_REPOSITORY_NAME.equals(repositoryName)) { CommandUtil.printError(errStream, "tool update command is not supported for local repository.", null, false); CommandUtil.exitError(this.exitWhenFinish); @@ -434,7 +441,6 @@ private void handleUpdateCommand() { } toolId = argList.get(1); - if (!validateToolName(toolId)) { CommandUtil.printError(errStream, "invalid tool id.", TOOL_UPDATE_USAGE_TEXT, false); CommandUtil.exitError(this.exitWhenFinish); @@ -453,10 +459,10 @@ public void pullToolAndUpdateBalToolsToml(String toolIdArg, String versionArg) { String supportedPlatform = Arrays.stream(JvmTarget.values()) .map(JvmTarget::code) .collect(Collectors.joining(",")); - if (ProjectConstants.LOCAL_REPOSITORY_NAME.equals(repositoryName)) { + if (LOCAL_REPOSITORY_NAME.equals(repositoryName)) { if (!isToolAvailableInLocalRepo(toolId, version)) { errStream.println("tool '" + toolId + ":" + version + "' is not available in local repository." + - "\nPlease publish it first with 'bal push --repository=local' command."); + "\nUse 'bal push --repository=local' to publish it."); CommandUtil.exitError(this.exitWhenFinish); } addToBalToolsToml(); @@ -464,7 +470,7 @@ public void pullToolAndUpdateBalToolsToml(String toolIdArg, String versionArg) { } try { if (isToolAvailableLocally(toolId, version)) { - outStream.println("tool " + toolId + ":" + version + " is already available locally."); + outStream.println("tool '" + toolId + ":" + version + "' is already available locally."); } else { pullToolFromCentral(supportedPlatform, balaCacheDirPath); } @@ -483,21 +489,19 @@ private boolean isToolAvailableInLocalRepo(String toolId, String version) { JsonObject localToolJson; Gson gson = new Gson(); Path localBalaPath = RepoUtils.createAndGetHomeReposPath().resolve(Path.of(REPOSITORIES_DIR, - ProjectConstants.LOCAL_REPOSITORY_NAME, BALA_DIR_NAME)); - Path localToolJsonPath = localBalaPath.resolve("local-tools.json"); - + LOCAL_REPOSITORY_NAME, BALA_DIR_NAME)); + Path localToolJsonPath = localBalaPath.resolve(ProjectConstants.LOCAL_TOOLS_JSON); if (!Files.exists(localToolJsonPath)) { return false; } - try (BufferedReader bufferedReader = Files.newBufferedReader(localToolJsonPath, StandardCharsets.UTF_8)) { localToolJson = gson.fromJson(bufferedReader, JsonObject.class); JsonObject pkgDesc = localToolJson.get(toolId).getAsJsonObject(); if (pkgDesc.isEmpty()) { return false; } - org = pkgDesc.get("org").getAsString(); - name = pkgDesc.get("name").getAsString(); + org = pkgDesc.get(ProjectConstants.ORG).getAsString(); + name = pkgDesc.get(ProjectConstants.PACKAGE_NAME).getAsString(); return Files.exists(localBalaPath.resolve(org).resolve(name).resolve(version)); } catch (IOException e) { throw new ProjectException("Failed to read local-tools.json file: " + e.getMessage()); @@ -548,7 +552,6 @@ private void addToBalToolsToml() { CommandUtil.exitError(this.exitWhenFinish); return; } - balToolsManifest.addTool(toolId, org, name, version, true, repositoryName); balToolsToml.modify(balToolsManifest); outStream.println("tool '" + toolId + ":" + version + "' successfully set as the active version."); @@ -573,11 +576,10 @@ private void removeAllToolVersions() { Optional>> toolVersions = Optional.ofNullable(balToolsManifest.tools().get(toolId)); if (toolVersions.isEmpty() || toolVersions.get().isEmpty()) { - CommandUtil.printError(errStream, "tool " + toolId + " not found.", null, false); + CommandUtil.printError(errStream, "tool '" + toolId + "' not found.", null, false); CommandUtil.exitError(this.exitWhenFinish); return; } - balToolsManifest.removeTool(toolId); balToolsToml.modify(balToolsManifest); if (repositoryName != null) { @@ -596,16 +598,23 @@ private void removeSpecificToolVersion() { Optional tool = balToolsManifest.getTool(toolId, version, repositoryName); if (tool.isEmpty()) { - CommandUtil.printError(errStream, "tool " + toolId + ":" + version + " not found.", null, false); + CommandUtil.printError(errStream, "tool '" + toolId + ":" + version + "' not found.", null, false); CommandUtil.exitError(this.exitWhenFinish); return; } if (tool.get().active()) { - CommandUtil.printError(errStream, "cannot remove active tool " + toolId + ":" + version + ".", null, false); + CommandUtil.printError(errStream, "cannot remove active tool '" + toolId + ":" + version + "'.", + null, false); + CommandUtil.exitError(this.exitWhenFinish); + return; + } + org = tool.get().org(); + name = tool.get().name(); + boolean isDistsCompatible = checkToolDistCompatibility(); + if (!isDistsCompatible) { CommandUtil.exitError(this.exitWhenFinish); return; } - balToolsManifest.removeToolVersion(toolId, version, repositoryName); balToolsToml.modify(balToolsManifest); if (repositoryName != null) { @@ -617,8 +626,8 @@ private void removeSpecificToolVersion() { } private void deleteAllCachedToolVersions(String org, String name) { - Path toolPath = Path.of(System.getProperty(CommandUtil.USER_HOME), HOME_REPO_DEFAULT_DIRNAME, REPOSITORIES_DIR, - CENTRAL_REPOSITORY_CACHE_NAME, BALA_DIR_NAME, org, name); + Path toolPath = RepoUtils.createAndGetHomeReposPath().resolve(Path.of(REPOSITORIES_DIR, + CENTRAL_REPOSITORY_CACHE_NAME, BALA_DIR_NAME, org, name)); if (!Files.isDirectory(toolPath)) { return; } @@ -626,8 +635,8 @@ private void deleteAllCachedToolVersions(String org, String name) { } private void deleteCachedToolVersion(String org, String name, String version) { - Path toolPath = Path.of(System.getProperty(CommandUtil.USER_HOME), HOME_REPO_DEFAULT_DIRNAME, REPOSITORIES_DIR, - CENTRAL_REPOSITORY_CACHE_NAME, BALA_DIR_NAME, org, name, version); + Path toolPath = RepoUtils.createAndGetHomeReposPath().resolve(Path.of(REPOSITORIES_DIR, + CENTRAL_REPOSITORY_CACHE_NAME, BALA_DIR_NAME, org, name, version)); if (!Files.isDirectory(toolPath)) { return; } @@ -714,9 +723,9 @@ private boolean isToolAvailableLocally(String toolId, String version) { private boolean checkToolDistCompatibility() { SemanticVersion currentDistVersion = SemanticVersion.from(RepoUtils.getBallerinaShortVersion()); - SemanticVersion toolDistVersion = ProjectConstants.LOCAL_REPOSITORY_NAME.equals(repositoryName) - ? getToolDistVersionFromLocalCache() - : getToolDistVersionFromCentralCache(); + SemanticVersion toolDistVersion = LOCAL_REPOSITORY_NAME.equals(repositoryName) + ? getToolDistVersionFromCache(LOCAL_REPOSITORY_NAME) + : getToolDistVersionFromCache(CENTRAL_REPOSITORY_CACHE_NAME); if (!isCompatibleWithLocalDistVersion(currentDistVersion, toolDistVersion)) { CommandUtil.printError(errStream, "tool '" + toolId + ":" + version + "' is not compatible with the " + "current Ballerina distribution '" + RepoUtils.getBallerinaShortVersion() + @@ -727,20 +736,11 @@ private boolean checkToolDistCompatibility() { return true; } - private SemanticVersion getToolDistVersionFromCentralCache() { - Path centralBalaDirPath = RepoUtils.createAndGetHomeReposPath() - .resolve(REPOSITORIES_DIR).resolve(CENTRAL_REPOSITORY_CACHE_NAME) + private SemanticVersion getToolDistVersionFromCache(String repositoryName) { + Path balaDirPath = RepoUtils.createAndGetHomeReposPath() + .resolve(REPOSITORIES_DIR).resolve(repositoryName) .resolve(ProjectConstants.BALA_DIR_NAME); - Path balaPath = CommandUtil.getPlatformSpecificBalaPath(org, name, version, centralBalaDirPath); - PackageJson packageJson = BalaFiles.readPackageJson(balaPath); - return SemanticVersion.from(packageJson.getBallerinaVersion()); - } - - private SemanticVersion getToolDistVersionFromLocalCache() { - Path localBalaDirPath = RepoUtils.createAndGetHomeReposPath() - .resolve(REPOSITORIES_DIR).resolve(ProjectConstants.LOCAL_REPOSITORY_NAME) - .resolve(ProjectConstants.BALA_DIR_NAME); - Path balaPath = CommandUtil.getPlatformSpecificBalaPath(org, name, version, localBalaDirPath); + Path balaPath = CommandUtil.getPlatformSpecificBalaPath(org, name, version, balaDirPath); PackageJson packageJson = BalaFiles.readPackageJson(balaPath); return SemanticVersion.from(packageJson.getBallerinaVersion()); } @@ -774,8 +774,7 @@ private void updateToolToLatestVersion() { CommandUtil.exitError(this.exitWhenFinish); return; } - - if (ProjectConstants.LOCAL_REPOSITORY_NAME.equals(tool.get().repository())) { + if (LOCAL_REPOSITORY_NAME.equals(tool.get().repository())) { CommandUtil.printError(errStream, "tools from local repository can not be updated. ", null, false); CommandUtil.exitError(this.exitWhenFinish); @@ -796,7 +795,7 @@ private void updateToolToLatestVersion() { return; } if (isToolAvailableLocally(toolId, version)) { - outStream.println("tool " + toolId + ":" + version + " is already available locally."); + outStream.println("tool '" + toolId + ":" + version + "' is already available locally."); } else { pullToolFromCentral(supportedPlatform, balaCacheDirPath); } diff --git a/cli/ballerina-cli/src/main/java/io/ballerina/cli/launcher/LauncherUtils.java b/cli/ballerina-cli/src/main/java/io/ballerina/cli/launcher/LauncherUtils.java index 23a8b0ba1c92..bec861a1fe25 100644 --- a/cli/ballerina-cli/src/main/java/io/ballerina/cli/launcher/LauncherUtils.java +++ b/cli/ballerina-cli/src/main/java/io/ballerina/cli/launcher/LauncherUtils.java @@ -110,7 +110,7 @@ static String generateGeneralHelp(Map subCommands) { StringBuilder helpBuilder = new StringBuilder(); helpBuilder.append(BLauncherCmd.getCommandUsageInfo(HELP)); - Path balToolsTomlPath = RepoUtils.createAndGetHomeReposPath().resolve(Path.of(CONFIG_DIR, BAL_TOOLS_TOML)); + Path balToolsTomlPath = RepoUtils.createAndGetHomeReposPath().resolve(CONFIG_DIR).resolve(BAL_TOOLS_TOML); BalToolsToml balToolsToml = BalToolsToml.from(balToolsTomlPath); BalToolsManifest balToolsManifest = BalToolsManifestBuilder.from(balToolsToml).build(); Map activeToolsVsRepos = new HashMap<>(); diff --git a/cli/ballerina-cli/src/main/resources/cli-help/ballerina-tool-pull.help b/cli/ballerina-cli/src/main/resources/cli-help/ballerina-tool-pull.help index 4d1362429601..90f2f61efa36 100644 --- a/cli/ballerina-cli/src/main/resources/cli-help/ballerina-tool-pull.help +++ b/cli/ballerina-cli/src/main/resources/cli-help/ballerina-tool-pull.help @@ -9,7 +9,7 @@ OPTIONS Print the usage details of tool pull command. --repository - Pull a tool from a custom repository. + Pull a tool from local repository. DESCRIPTION Fetch a given tool from the Ballerina Central and install it diff --git a/cli/ballerina-cli/src/test/java/io/ballerina/cli/cmd/PushCommandTest.java b/cli/ballerina-cli/src/test/java/io/ballerina/cli/cmd/PushCommandTest.java index 182fb176fae6..61375e568d5c 100644 --- a/cli/ballerina-cli/src/test/java/io/ballerina/cli/cmd/PushCommandTest.java +++ b/cli/ballerina-cli/src/test/java/io/ballerina/cli/cmd/PushCommandTest.java @@ -204,7 +204,6 @@ public void testPushWithCustomPath() throws IOException { } catch (ProjectException e) { Assert.fail(e.getMessage()); } - } @Test(description = "Push a tool to local repository") diff --git a/compiler/ballerina-lang/src/main/java/io/ballerina/projects/util/ProjectConstants.java b/compiler/ballerina-lang/src/main/java/io/ballerina/projects/util/ProjectConstants.java index 238be7b4b5ea..f4923e3c3ddd 100644 --- a/compiler/ballerina-lang/src/main/java/io/ballerina/projects/util/ProjectConstants.java +++ b/compiler/ballerina-lang/src/main/java/io/ballerina/projects/util/ProjectConstants.java @@ -131,4 +131,7 @@ private ProjectConstants() {} public static final String EXISTING_PACKAGE_FILES_DIR = "directories-with-existing-package-files-for-bal-new"; public static final String CONFIG_ARGS_PATTERN = "-C[\\w\\W]+=([\\w\\W]+)"; public static final String CONFIG_DIR = ".config"; + public static final String ORG = "org"; + public static final String PACKAGE_NAME = "name"; + public static final String LOCAL_TOOLS_JSON = "local-tools.json"; } From e97d1096b240b3f4a3c7991f2c752f74e3a6e603 Mon Sep 17 00:00:00 2001 From: Thevakumar-Luheerathan Date: Thu, 4 Jan 2024 14:32:29 +0530 Subject: [PATCH 6/8] Fix build failure --- ...with-analyzer-generator-modifier-1.0.0.jar | Bin 0 -> 6119 bytes .../tool/libs/GayalsCommand-1.0-SNAPSHOT.jar | Bin 0 -> 3932 bytes ...with-analyzer-generator-modifier-1.0.0.jar | Bin 0 -> 6119 bytes .../tool/libs/GayalsCommand-1.0-SNAPSHOT.jar | Bin 0 -> 3932 bytes ...with-analyzer-generator-modifier-1.0.0.jar | Bin 0 -> 6119 bytes .../tool/libs/GayalsCommand-1.0-SNAPSHOT.jar | Bin 0 -> 3932 bytes ...with-analyzer-generator-modifier-1.0.0.jar | Bin 0 -> 6119 bytes .../tool/libs/GayalsCommand-1.0-SNAPSHOT.jar | Bin 0 -> 2337 bytes ...with-analyzer-generator-modifier-1.0.0.jar | Bin 0 -> 6119 bytes .../tool/libs/GayalsCommand-1.0-SNAPSHOT.jar | Bin 0 -> 3932 bytes .../test-resources/tool-gayals/.DS_Store | Bin 0 -> 6148 bytes .../tool-gayals/.devcontainer.json | 4 ++ .../test-resources/tool-gayals/.gitignore | 3 ++ .../test-resources/tool-gayals/BalTool.toml | 5 ++ .../test-resources/tool-gayals/Ballerina.toml | 8 ++++ .../tool-gayals/CompilerPlugin.toml | 6 +++ .../tool-gayals/Dependencies.toml | 45 ++++++++++++++++++ .../test-resources/tool-gayals/Package.md | 4 ++ .../test-resources/tool-gayals/README.md | 4 ++ .../test-resources/tool-gayals/main.bal | 5 ++ .../tool-gayals/target-dir/.DS_Store | Bin 0 -> 6148 bytes ...with-analyzer-generator-modifier-1.0.0.jar | Bin 0 -> 6119 bytes ...aldassanayake-tool_gayal-java17-1.1.0.bala | Bin 0 -> 10608 bytes .../test-resources/tool-gayals/test.json | 10 ++++ .../tool/libs/GayalsCommand-1.0-SNAPSHOT.jar | Bin 0 -> 3932 bytes ...with-analyzer-generator-modifier-1.0.0.jar | Bin 0 -> 6119 bytes 26 files changed, 94 insertions(+) create mode 100644 cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/1.1.0/java17/compiler-plugin/libs/compiler-plugin-with-analyzer-generator-modifier-1.0.0.jar create mode 100644 cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/1.1.0/java17/tool/libs/GayalsCommand-1.0-SNAPSHOT.jar create mode 100644 cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/1.2.0/java17/compiler-plugin/libs/compiler-plugin-with-analyzer-generator-modifier-1.0.0.jar create mode 100644 cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/1.2.0/java17/tool/libs/GayalsCommand-1.0-SNAPSHOT.jar create mode 100644 cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/1.3.0/java17/compiler-plugin/libs/compiler-plugin-with-analyzer-generator-modifier-1.0.0.jar create mode 100644 cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/1.3.0/java17/tool/libs/GayalsCommand-1.0-SNAPSHOT.jar create mode 100644 cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/2.2.4/java17/compiler-plugin/libs/compiler-plugin-with-analyzer-generator-modifier-1.0.0.jar create mode 100644 cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/2.2.4/java17/tool/libs/GayalsCommand-1.0-SNAPSHOT.jar create mode 100644 cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/2.2.5/java17/compiler-plugin/libs/compiler-plugin-with-analyzer-generator-modifier-1.0.0.jar create mode 100644 cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/2.2.5/java17/tool/libs/GayalsCommand-1.0-SNAPSHOT.jar create mode 100644 cli/ballerina-cli/src/test/resources/test-resources/tool-gayals/.DS_Store create mode 100644 cli/ballerina-cli/src/test/resources/test-resources/tool-gayals/.devcontainer.json create mode 100644 cli/ballerina-cli/src/test/resources/test-resources/tool-gayals/.gitignore create mode 100644 cli/ballerina-cli/src/test/resources/test-resources/tool-gayals/BalTool.toml create mode 100644 cli/ballerina-cli/src/test/resources/test-resources/tool-gayals/Ballerina.toml create mode 100644 cli/ballerina-cli/src/test/resources/test-resources/tool-gayals/CompilerPlugin.toml create mode 100644 cli/ballerina-cli/src/test/resources/test-resources/tool-gayals/Dependencies.toml create mode 100644 cli/ballerina-cli/src/test/resources/test-resources/tool-gayals/Package.md create mode 100644 cli/ballerina-cli/src/test/resources/test-resources/tool-gayals/README.md create mode 100644 cli/ballerina-cli/src/test/resources/test-resources/tool-gayals/main.bal create mode 100644 cli/ballerina-cli/src/test/resources/test-resources/tool-gayals/target-dir/.DS_Store create mode 100644 cli/ballerina-cli/src/test/resources/test-resources/tool-gayals/target-dir/bala/compiler-plugin/libs/compiler-plugin-with-analyzer-generator-modifier-1.0.0.jar create mode 100644 cli/ballerina-cli/src/test/resources/test-resources/tool-gayals/target-dir/bala/gayaldassanayake-tool_gayal-java17-1.1.0.bala create mode 100644 cli/ballerina-cli/src/test/resources/test-resources/tool-gayals/test.json create mode 100644 cli/ballerina-cli/src/test/resources/test-resources/tool-gayals/tool/libs/GayalsCommand-1.0-SNAPSHOT.jar create mode 100644 cli/ballerina-cli/src/test/resources/test-resources/tool-gayals/tool/libs/compiler-plugin-with-analyzer-generator-modifier-1.0.0.jar diff --git a/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/1.1.0/java17/compiler-plugin/libs/compiler-plugin-with-analyzer-generator-modifier-1.0.0.jar b/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/1.1.0/java17/compiler-plugin/libs/compiler-plugin-with-analyzer-generator-modifier-1.0.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..5ed0821d57dd3a7ab50b2a816de3786418a26db9 GIT binary patch literal 6119 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 literal 0 HcmV?d00001 diff --git a/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/1.1.0/java17/tool/libs/GayalsCommand-1.0-SNAPSHOT.jar b/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/1.1.0/java17/tool/libs/GayalsCommand-1.0-SNAPSHOT.jar new file mode 100644 index 0000000000000000000000000000000000000000..dcb434b1ce56e06dea3ecd52f2a911b94d5764a4 GIT binary patch literal 3932 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 NA3t?fQu}vj{{dI~fg%6^ literal 0 HcmV?d00001 diff --git a/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/1.2.0/java17/compiler-plugin/libs/compiler-plugin-with-analyzer-generator-modifier-1.0.0.jar b/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/1.2.0/java17/compiler-plugin/libs/compiler-plugin-with-analyzer-generator-modifier-1.0.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..5ed0821d57dd3a7ab50b2a816de3786418a26db9 GIT binary patch literal 6119 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 literal 0 HcmV?d00001 diff --git a/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/1.2.0/java17/tool/libs/GayalsCommand-1.0-SNAPSHOT.jar b/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/1.2.0/java17/tool/libs/GayalsCommand-1.0-SNAPSHOT.jar new file mode 100644 index 0000000000000000000000000000000000000000..dcb434b1ce56e06dea3ecd52f2a911b94d5764a4 GIT binary patch literal 3932 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 NA3t?fQu}vj{{dI~fg%6^ literal 0 HcmV?d00001 diff --git a/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/1.3.0/java17/compiler-plugin/libs/compiler-plugin-with-analyzer-generator-modifier-1.0.0.jar b/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/1.3.0/java17/compiler-plugin/libs/compiler-plugin-with-analyzer-generator-modifier-1.0.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..5ed0821d57dd3a7ab50b2a816de3786418a26db9 GIT binary patch literal 6119 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 literal 0 HcmV?d00001 diff --git a/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/1.3.0/java17/tool/libs/GayalsCommand-1.0-SNAPSHOT.jar b/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/1.3.0/java17/tool/libs/GayalsCommand-1.0-SNAPSHOT.jar new file mode 100644 index 0000000000000000000000000000000000000000..dcb434b1ce56e06dea3ecd52f2a911b94d5764a4 GIT binary patch literal 3932 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 NA3t?fQu}vj{{dI~fg%6^ literal 0 HcmV?d00001 diff --git a/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/2.2.4/java17/compiler-plugin/libs/compiler-plugin-with-analyzer-generator-modifier-1.0.0.jar b/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/2.2.4/java17/compiler-plugin/libs/compiler-plugin-with-analyzer-generator-modifier-1.0.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..5ed0821d57dd3a7ab50b2a816de3786418a26db9 GIT binary patch literal 6119 zcmbtY2UJt(wx)M56oF6#L|W)22vQV~qVx_*F|^R7caRc_^dd-?D!qvWL^=#e6+DlobM{)<-~P@zXaD=`|I<>%#iPN(A|k?i=;dOFg)yA- z6UK-!hq|Jk9RD2+B|%&)t-l4nc!aaXhzS5<4h;OyKy^8dJ4%YWdIIW7yXr%OYO4GK z@5oj8K_f$N>ve?2MVD5WS8*;R!{C3i;$nQehyURFYsmSHVM3q~Ux?!`11bL+=;G)J zwR3j=C4k{y0W2RnS=c#STm1tm%)EEHiH(JI4-X4V;+IH;-&0_&E_ROAZd(6)FV{o` zEFB^4?m4&^g2_fGOKzZx2?67}J9W6M=hM)^ zxR=T@!4!zlZS!!5OX~E`lLod4V|(Q!#wX}mJrrpM^9S%I@VNn3_-P(cmaC0YUpYz@ zw3jPQD5h3MIg)PCQc7a1l&-{b$8-SLTFN(+KRI*Z8{ z5=m_Wg0KxWPCpWoSnsc8_q(&9qbk+)DO!sI_0AgPtJyVH=05Y4Ux_P0-p9GfY=@t5 zHet1I+Sb(N)C;h2)~WQSeJpG=saw3pgzs>>?tr!F`s=n2>nh(*;IRoW9Uzw(VRUB# zmf4OiiJwDamjjvW{3_OuDhH{xud!Ed4_W&jml~-(kFNrrk~R@{@x$TYv*%YT652w` z7n8nQSs3`JyOY(1&9w-S7rGF7V_OabZ`SQKP#RkH=$8gz2ll2uG&)d7yIwuj@+E9O|Kh{HFQfeN7iK&EpAr)Oql6qBsO4y6 z8r64AoYWiw$CazzaZ;*%ijlWxgGI~7A|ir=vK%8k2E1%$W}>#ud1N~-onk$D;^R$i z-$BJl=e0I6?>{25PqB}x`EnCWT9G46a;PNHr8f8)GDKvejh>`t!#}JI0pG~{P>pzD z=oCx75V+dE`%1plrT>Nt#yojZ{-G4kR!$IoI)0;2o8z`(M|x8vT!8%X;hV zSTUx(ztI>lnRHoqtyNA?k#y}BZ#4{8$bG!j1wAjKk>r+nHtF0ezV?yqCRZ)k_{3)x z8JN7SM`_=4d*<7jAU$vA73>~}P_}X*-wnNrz7JMX#uO2is?6a1d)ACfkvoC(4yJBr zUVtm7gp6$d4+uhdm7UCFO!rRMw>4ZIetY=|SmAM2Om<2AZKt{;0DflLdu_&wZ9VNJ z(%sUybywa2C?*Z5dTI0_Lv{B+Tb4zg`M&!x$^{=*;kdaY+1zii6^O0h#`aY>-gp(< zFWezsz1=Jl-Q_utW#Pc~jat>5(H-1t@@fD&%9VW-U3}AOW?KJ4AT(6STRy#;zfx2i zr_oZ4(%VN9O*5~^(`KwBxt34=k2-R?i)}YVh=p|n)AGdsi&pfbiheUR_NSf#1|>Mz zt!xJ~hbUOt+EY_m)p66?M&%@jc3Xhvmg49$n=IFj82B7|Y++8bV(OW&t)t{3Cq&K` zznw*xseH{5;h}=xglyp5MNx)+T3YFdtPKnJ!$<9#AHSTL9s)Z0wy!gLmQIa6U=7ae za2|};%$%w8sLTewmHLLC;X%3`08fXzh5OXVq%^8XZ?=-+J*#s|^Eb+qot31OS6P~9 z-40EOef?som)W>BMni{o`Hs1BL6NO|QrU!>MwXpqeyR09<*E(mPr=T0 zUVxasAV+G+iq|CCv&G-X-jZTGxX%wZaE$qFTlZAcSpNCsS0J4Q}^p9L>i zfZ2(tg8m8^t^Jbp3Y@ex4ZA!vmRzI1(0*u9<>V-@V6{~Sg-1ieC!c$U?*W|8x3?7ozO^7c+6R(a_dcBF(tr*^) zH@zqKE(RsWB$g$M z+%kTisfn*tX5n98U^5wnc$a`p9!8*15#Y>6Xw>xtFkDXf8`$cB5rC|uZo6V zr{#>HEhKkySG0st_e5XFPi^DKR=J5)lRQM+Lhwo}+Y}q4Ni!kX(kew~G@VsT8#HblV){ z=Hlqf0iJQdaMocw-JzU8f@!L%Vg=-*E4z^K4;-AgJt?@HL!HF5vNN8HM1go4oHmOx zm_?aYTaQ>6=VKK~P50Y{c`8P@ub?m0@~(p&ILupRFUclyM%b+FiacegQw>w;pY|j&o9B#f(E_L=PpS(O$+;5N(3w{ok#CL*o+Kcho2ZyF^SK1nZUO7Za5 z*JG@>jxD^xs;RM`<$JR*e+O8xtnP_hmLAbMY-}-mPpaKNmAkJO>#1G4o^_9iouvJo zbEoG}K)Z*iSNSMY4~xe!)oH57IgBocgIzy|(du8>o6$ z(@n7Mv-dSe|K{|XcirC9dx@{Tc_}o?L(4O9+M>-2-V3=ePTNLjE~sSsAGKHYQEJ zR^ybT!aQWno}DSZ{Xwn$-lT;!-IH`*58X4x zQFyd2YoM#|<<9y)PG0Sdf(O^Bpbd&3*eDwC(oJBrAeG*DM^%Nb!GL+*j-uLpf&MN- z{^m;EhH)-UJlbfy@5mt5%{u-84o{KqLpkiH5+6RbE?wGfr|`im>to%PQP==*M3h;> z{FKVS!PAtY zl_^e0J-Gtl4Il%bczcP(+jB>t;)6@=5d?ZyEWZ>cm8l6CmNh_gN^;<8f zRz3wKYOmU!sJ8?#*O>IBO3k0mQni_RnFFU)8dgK?3I$jPANmI6K=xPC-58}@>kweb z+gIK)Gao@HvGE+XttyY@DYK&!g7#IJ+Y`)s^RbJ*1Po~Z=r)w;;(j&h!q*#VDvKI^ z^^f3=yI+`31A*6FNt4d7|2}70lzSKTV>Wh?_*hun|Hph_Wv%DyV*O(xh|@jNrP8K3 zt(K;BQNKDC@KsB@!>u9UvJF*%aJ?LEFWJ|zP{ykI&o`tUk87x)<7H*rsMFHt?llfc z68J-(XWX~;15pk8eQyO9v8DUcU{@lDyA43I`8J>`$ z-q*+m={vcLk8xFuhe4~dqeIVgPdaL8>@2y|tIQG_@ps}fA^OXkz^33)mZz?C`}8di z5!PapKmzuhA&-}Uyj+$y=^fYNrV-`LU@5JeUFm5;?Chc33R+m1BnC-amVonqRdrYU)IM5_k-*~VB+^r z$+6az=#$56lR%rR@2bUB>YIz2d=vA{Ic`5U=3j4MuIlkOX|;)Zx7DLi5EE)3+VrH5 zZsSSe=ePud%gDEkmsK6a9ANH>1^63f1=mF^6x$kJtbg|WKJaa-nFpGKz}xYvH<)ZB zGkar;=uCWHqOuvcG~&7$=bQNn@ZM;@SExM<%edXr+BuB<7y;-~-PW%JobvcmTYVQC zm0u)w&Sl@rkdA=j^uO(bvB=GL3Kl5e#$}_G>Ryth@7q5PH!my+2)TNKTF#dB@N)~t zZ~AyirEaE9HaYq(b!@i>iRfj_ho(oje-wMH4$*DDAUH6l+9JMSwq54`?ap1~$MQ(k zopT<$1&|qQekBnR0T?JYxhpJohr>jXHIXFsE)9u}iuU83wmQQy-YJI}ih^hO%U8EM z2+`V6+ngZZD0$2N*Y#5FBiR`f$EUlybiq$;Y3g9B(qyE(Zzwa{+#;6M@HA**BZAT; zs&6nKZ3Ndkfm`|3!~NX1;s_Zi)SCw%jd zRL1kKJ`fIFHE`um0FzF+hSk>Fw!)&Lt^)mJJSFZHY9D3>!m4H!lc$bgCA;jntFZ)MfAEB}aEPq5Qi6_@q9Y$*2Z-|9 zt_*;iFQBH52!o~4vHf7%H~6HWHRClnkUc{Hbh z=U`wd{ehPYf8ETX8WEjTm^j{4?YLjOXjgH>i{!Yb9WGyPc`u(?4p`@9(-;^ zAv~D#PuO3y#furvqyG>t&n3hkc24YtaWQJ)uK?$Q;tx9qWMJH%^5U;x=P&(-ox{2? z?oZesV&kvi=VIdzJBROL+<(A-N{<)wT$CRF$W#=eQbsE|_Qh zAG7?fRb6Dcs9pTY(uA2-{!^A8OYb7b#rfw?j%o5=bNqE0x|sFiXXMYUD8R3?{!o-J n$icsVR4%ey>@$C|@KOJZuA`-jPjDVWhWVvnUX$#(JdgE1u)0jo literal 0 HcmV?d00001 diff --git a/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/2.2.4/java17/tool/libs/GayalsCommand-1.0-SNAPSHOT.jar b/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/2.2.4/java17/tool/libs/GayalsCommand-1.0-SNAPSHOT.jar new file mode 100644 index 0000000000000000000000000000000000000000..777a206b284eaf0356e0b6791e91aa53a04af8b6 GIT binary patch literal 2337 zcmaKtdpwkB8^_0>LRpJ(ezjO^VMY$i3@WF=9FSu~YmC9z8HRZo%AtuOMb2lDL)wyL z5E{1Aup=Qk%vxee8RtW5EMjN2%`5fp@A=%%b3dQY?{{7I^IU&??UDQf!T`X&eSnlu zk}H5KAn(SN5O<+1olLcCY~c`ofc+=Nni$}mJl7!0U6MPEXj5AoxTT{L7!6-WcRWKO zwZJb9Ahiy6c68Akw0m_&C&ng#yNYr1+g#40>r?#HYV~(<^B^J-6X*lR5-?r~2)S~TMl5RBBs@y?syTp(J1 zd(XW1tV33NRgKCBWi~(B>utGwkTM9~Yh7MT@{@Z|o&RThh#Ol*r@67Oo)-0E@~ycV z8x}CXj%}!M)_o6S0e(2s;{I{0TIv1V{r63V23JzlkpVfsy$9BBg80izx?5%~X!W(Z z71PH+-jU6dwCv+=Pq=DeP=tKm^XWnAO-9z(A)eJU0K)zx;Nw1ZZ^&gisazHOfSf{Cd zj0A$GQH5q=u8U%RL{;Az%h95%R$ng1%2g?!%3C?eWG1@iI6v~gR5%d))0m~L4H|kq zozjQzT2@I1MTNa-w|z7K>%%ai*QOfn`w3>vrj-2*Id6i%ln$*R({ZK|@!jQsf_Nb{ z^>A&rq=~FE(51xBSunoe_Xuh_4E; zAgpHxuhFL1X5F6Cs_%%9Sjl=Nr&@kKx4vK=)TNE-#}OgMbyedwvWpr`0w_bLuT8NO z+K@*a45sGD?@>DBa9WFAcSCa+wU$|2+^P^eEld|>FR;$)BOBuIQ681=7$T)%Cz<(| z)A)79)=$U?){O zEm)Z@DO|@r?WXXN0n<_Rx7{~>9;Cyj-c{uIL92|cyB1$>=!q+V;~Hefh#pPJHi}Cc zk2tu}5Jo~!*{WpG?U!Oouc!?DEy_Yv(hz1`*qU?f{Nxs>f8IaZtM;zEXH*aoZZd3e zV8MaG4M;jy^S(P4|bx?hUxl;JMO7Zdm(us4Q4z=hxgFDvd*6=j0PF4wJoiUx^Z5BeyvAYN?LRdAw-Aq}AH)k4a<~74cx>Gr z+|AaH(K6~Up9a4`+TFEy*^ejZP4a_yhq$q4$G30Kb$5RETt8MQqq4r3|JNzoBL%r3 R0AMfo>gEFgjQ;+Ye*x5Riv9oq literal 0 HcmV?d00001 diff --git a/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/2.2.5/java17/compiler-plugin/libs/compiler-plugin-with-analyzer-generator-modifier-1.0.0.jar b/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/2.2.5/java17/compiler-plugin/libs/compiler-plugin-with-analyzer-generator-modifier-1.0.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..5ed0821d57dd3a7ab50b2a816de3786418a26db9 GIT binary patch literal 6119 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 literal 0 HcmV?d00001 diff --git a/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/2.2.5/java17/tool/libs/GayalsCommand-1.0-SNAPSHOT.jar b/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/2.2.5/java17/tool/libs/GayalsCommand-1.0-SNAPSHOT.jar new file mode 100644 index 0000000000000000000000000000000000000000..dcb434b1ce56e06dea3ecd52f2a911b94d5764a4 GIT binary patch literal 3932 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 NA3t?fQu}vj{{dI~fg%6^ literal 0 HcmV?d00001 diff --git a/cli/ballerina-cli/src/test/resources/test-resources/tool-gayals/.DS_Store b/cli/ballerina-cli/src/test/resources/test-resources/tool-gayals/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..1ecf824cf4e05e598255d3e90ea6c3fc8470e6a1 GIT binary patch literal 6148 zcmeHK%}T>S5Z-NTlTd^n6nb3nTClbv6fYsx7cim+m70)HgE3p0)E-J9XMG``#OHBl zcXJ39youNu*!^bbXE*af_J=XXy=8R5SeG$oLqp`KY!NhXbu~;dB3E<7tO!^6JWOS{ zWum`m!f$W0f(2~BW~~1GAK^Sr@?tRffB_vS{A@{dQ7Ri+-msymnTwgmJ$9AUO-g-S8pY_FPG~V>Z zdORHT#p!ss**Ny$(ee4!^f`UWf03m!n}NN`sbUF<0b+m{ zAO?1i0dp4Eo!u*)DkcVqfgc#a{XsxObPbjo)z$$WUZ2t5LPP-_-x7$zplh(y2p$lw zQvr1y{s6(7< Xu+)gNpk1W{(nUZKLLD*i3k-Y#>hVlF literal 0 HcmV?d00001 diff --git a/cli/ballerina-cli/src/test/resources/test-resources/tool-gayals/.devcontainer.json b/cli/ballerina-cli/src/test/resources/test-resources/tool-gayals/.devcontainer.json new file mode 100644 index 000000000000..a78c901fb8f0 --- /dev/null +++ b/cli/ballerina-cli/src/test/resources/test-resources/tool-gayals/.devcontainer.json @@ -0,0 +1,4 @@ +{ + "image": "ballerina/ballerina-devcontainer:2201.4.0", + "extensions": ["WSO2.ballerina"], +} diff --git a/cli/ballerina-cli/src/test/resources/test-resources/tool-gayals/.gitignore b/cli/ballerina-cli/src/test/resources/test-resources/tool-gayals/.gitignore new file mode 100644 index 000000000000..7512ebe2325f --- /dev/null +++ b/cli/ballerina-cli/src/test/resources/test-resources/tool-gayals/.gitignore @@ -0,0 +1,3 @@ +target +generated +Config.toml diff --git a/cli/ballerina-cli/src/test/resources/test-resources/tool-gayals/BalTool.toml b/cli/ballerina-cli/src/test/resources/test-resources/tool-gayals/BalTool.toml new file mode 100644 index 000000000000..63969e4c3238 --- /dev/null +++ b/cli/ballerina-cli/src/test/resources/test-resources/tool-gayals/BalTool.toml @@ -0,0 +1,5 @@ +[tool] +id = "gayals" # should be the same as Picocli command name + +[[dependency]] +path = "./tool/libs/GayalsCommand-1.0-SNAPSHOT.jar" diff --git a/cli/ballerina-cli/src/test/resources/test-resources/tool-gayals/Ballerina.toml b/cli/ballerina-cli/src/test/resources/test-resources/tool-gayals/Ballerina.toml new file mode 100644 index 000000000000..b2803582a216 --- /dev/null +++ b/cli/ballerina-cli/src/test/resources/test-resources/tool-gayals/Ballerina.toml @@ -0,0 +1,8 @@ +[package] +org = "gayaldassanayake" +name = "tool_gayal" +version = "1.1.0" +distribution = "2201.4.0" + +[build-options] +observabilityIncluded = true diff --git a/cli/ballerina-cli/src/test/resources/test-resources/tool-gayals/CompilerPlugin.toml b/cli/ballerina-cli/src/test/resources/test-resources/tool-gayals/CompilerPlugin.toml new file mode 100644 index 000000000000..ae97900a6cd4 --- /dev/null +++ b/cli/ballerina-cli/src/test/resources/test-resources/tool-gayals/CompilerPlugin.toml @@ -0,0 +1,6 @@ +[plugin] +class = "io.gayal.combined.CombinedCompilerPlugin" + +[[dependency]] +path = "./tool/libs/compiler-plugin-with-analyzer-generator-modifier-1.0.0.jar" + diff --git a/cli/ballerina-cli/src/test/resources/test-resources/tool-gayals/Dependencies.toml b/cli/ballerina-cli/src/test/resources/test-resources/tool-gayals/Dependencies.toml new file mode 100644 index 000000000000..8919ebe4db37 --- /dev/null +++ b/cli/ballerina-cli/src/test/resources/test-resources/tool-gayals/Dependencies.toml @@ -0,0 +1,45 @@ +# AUTO-GENERATED FILE. DO NOT MODIFY. + +# This file is auto-generated by Ballerina for managing dependency versions. +# It should not be modified by hand. + +[ballerina] +dependencies-toml-version = "2" +distribution-version = "2201.9.0-SNAPSHOT" + +[[package]] +org = "ballerina" +name = "io" +version = "1.6.0" +dependencies = [ + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "lang.value"} +] +modules = [ + {org = "ballerina", packageName = "io", moduleName = "io"} +] + +[[package]] +org = "ballerina" +name = "jballerina.java" +version = "0.0.0" + +[[package]] +org = "ballerina" +name = "lang.value" +version = "0.0.0" +dependencies = [ + {org = "ballerina", name = "jballerina.java"} +] + +[[package]] +org = "gayaldassanayake" +name = "tool_gayal" +version = "1.1.0" +dependencies = [ + {org = "ballerina", name = "io"} +] +modules = [ + {org = "gayaldassanayake", packageName = "tool_gayal", moduleName = "tool_gayal"} +] + diff --git a/cli/ballerina-cli/src/test/resources/test-resources/tool-gayals/Package.md b/cli/ballerina-cli/src/test/resources/test-resources/tool-gayals/Package.md new file mode 100644 index 000000000000..43fd57fbd954 --- /dev/null +++ b/cli/ballerina-cli/src/test/resources/test-resources/tool-gayals/Package.md @@ -0,0 +1,4 @@ +# Gayals Tool + +1. Run `bal pack` with the provided ballerina distribution pack +2. Extract the .bala file to `~.ballerina/repositories/central.ballerina.io/bala/ballerina/gayalstool/0.1.0/any/` diff --git a/cli/ballerina-cli/src/test/resources/test-resources/tool-gayals/README.md b/cli/ballerina-cli/src/test/resources/test-resources/tool-gayals/README.md new file mode 100644 index 000000000000..43fd57fbd954 --- /dev/null +++ b/cli/ballerina-cli/src/test/resources/test-resources/tool-gayals/README.md @@ -0,0 +1,4 @@ +# Gayals Tool + +1. Run `bal pack` with the provided ballerina distribution pack +2. Extract the .bala file to `~.ballerina/repositories/central.ballerina.io/bala/ballerina/gayalstool/0.1.0/any/` diff --git a/cli/ballerina-cli/src/test/resources/test-resources/tool-gayals/main.bal b/cli/ballerina-cli/src/test/resources/test-resources/tool-gayals/main.bal new file mode 100644 index 000000000000..31e8785bf98f --- /dev/null +++ b/cli/ballerina-cli/src/test/resources/test-resources/tool-gayals/main.bal @@ -0,0 +1,5 @@ +import ballerina/io; + +public function main() { + io:println("Hello, World!"); +} diff --git a/cli/ballerina-cli/src/test/resources/test-resources/tool-gayals/target-dir/.DS_Store b/cli/ballerina-cli/src/test/resources/test-resources/tool-gayals/target-dir/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..9dae4ac68983e1797c8fec95574153d5ca473c0f GIT binary patch literal 6148 zcmeHK%}T>S5Z-O0O(;SR3Oz1(Em&I-f|n5M3mDOZN=-=7V9b^_HHT8jSzpK}@p+ut z-H63{6|pn0`_1oe_JiyXV~hv$bgvCHOfn+JG2(JIi8C34{bpi+ z9q`*N7PE+DEc*KW@gz%UMX&eH8%=9#yVY`9?bdDhAj`0biuo*vrq^g)NSVd89>tgG zxE#5=r!p_1G#^h@L7I#q<>o5Q6Iljwo+mR^8|r}L*v`o9EEaw5xGM$&Z`l(9A`0mEmOvB+eS?)oh=6ci3aCrD zd17!~4t`5TgtsV4@AfmH^Y+H~>!KZ9Rp?IVA+ zge+o!82D!laBCP216Y(fTfZ$2&sqWP4jKyPRj7b~zH$iw1NV`R3hKB(9rApGl|~!| S{i+<0E&_@W>WG0~VBiB0(Ml)) literal 0 HcmV?d00001 diff --git a/cli/ballerina-cli/src/test/resources/test-resources/tool-gayals/target-dir/bala/compiler-plugin/libs/compiler-plugin-with-analyzer-generator-modifier-1.0.0.jar b/cli/ballerina-cli/src/test/resources/test-resources/tool-gayals/target-dir/bala/compiler-plugin/libs/compiler-plugin-with-analyzer-generator-modifier-1.0.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..5ed0821d57dd3a7ab50b2a816de3786418a26db9 GIT binary patch literal 6119 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 literal 0 HcmV?d00001 diff --git a/cli/ballerina-cli/src/test/resources/test-resources/tool-gayals/target-dir/bala/gayaldassanayake-tool_gayal-java17-1.1.0.bala b/cli/ballerina-cli/src/test/resources/test-resources/tool-gayals/target-dir/bala/gayaldassanayake-tool_gayal-java17-1.1.0.bala new file mode 100644 index 0000000000000000000000000000000000000000..a16fe484cdc8f496c6a9e8378cffdd6e2bad0464 GIT binary patch literal 10608 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 NA3t?fQu}vj{{dI~fg%6^ literal 0 HcmV?d00001 diff --git a/cli/ballerina-cli/src/test/resources/test-resources/tool-gayals/tool/libs/compiler-plugin-with-analyzer-generator-modifier-1.0.0.jar b/cli/ballerina-cli/src/test/resources/test-resources/tool-gayals/tool/libs/compiler-plugin-with-analyzer-generator-modifier-1.0.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..5ed0821d57dd3a7ab50b2a816de3786418a26db9 GIT binary patch literal 6119 zcmbtY2UJt(wx)M56oF6#L|W)22vQV~qVx_*F|^R7caRc_^dd-?D!qvWL^=#e6+DlobM{)<-~P@zXaD=`|I<>%#iPN(A|k?i=;dOFg)yA- z6UK-!hq|Jk9RD2+B|%&)t-l4nc!aaXhzS5<4h;OyKy^8dJ4%YWdIIW7yXr%OYO4GK z@5oj8K_f$N>ve?2MVD5WS8*;R!{C3i;$nQehyURFYsmSHVM3q~Ux?!`11bL+=;G)J zwR3j=C4k{y0W2RnS=c#STm1tm%)EEHiH(JI4-X4V;+IH;-&0_&E_ROAZd(6)FV{o` zEFB^4?m4&^g2_fGOKzZx2?67}J9W6M=hM)^ zxR=T@!4!zlZS!!5OX~E`lLod4V|(Q!#wX}mJrrpM^9S%I@VNn3_-P(cmaC0YUpYz@ zw3jPQD5h3MIg)PCQc7a1l&-{b$8-SLTFN(+KRI*Z8{ z5=m_Wg0KxWPCpWoSnsc8_q(&9qbk+)DO!sI_0AgPtJyVH=05Y4Ux_P0-p9GfY=@t5 zHet1I+Sb(N)C;h2)~WQSeJpG=saw3pgzs>>?tr!F`s=n2>nh(*;IRoW9Uzw(VRUB# zmf4OiiJwDamjjvW{3_OuDhH{xud!Ed4_W&jml~-(kFNrrk~R@{@x$TYv*%YT652w` z7n8nQSs3`JyOY(1&9w-S7rGF7V_OabZ`SQKP#RkH=$8gz2ll2uG&)d7yIwuj@+E9O|Kh{HFQfeN7iK&EpAr)Oql6qBsO4y6 z8r64AoYWiw$CazzaZ;*%ijlWxgGI~7A|ir=vK%8k2E1%$W}>#ud1N~-onk$D;^R$i z-$BJl=e0I6?>{25PqB}x`EnCWT9G46a;PNHr8f8)GDKvejh>`t!#}JI0pG~{P>pzD z=oCx75V+dE`%1plrT>Nt#yojZ{-G4kR!$IoI)0;2o8z`(M|x8vT!8%X;hV zSTUx(ztI>lnRHoqtyNA?k#y}BZ#4{8$bG!j1wAjKk>r+nHtF0ezV?yqCRZ)k_{3)x z8JN7SM`_=4d*<7jAU$vA73>~}P_}X*-wnNrz7JMX#uO2is?6a1d)ACfkvoC(4yJBr zUVtm7gp6$d4+uhdm7UCFO!rRMw>4ZIetY=|SmAM2Om<2AZKt{;0DflLdu_&wZ9VNJ z(%sUybywa2C?*Z5dTI0_Lv{B+Tb4zg`M&!x$^{=*;kdaY+1zii6^O0h#`aY>-gp(< zFWezsz1=Jl-Q_utW#Pc~jat>5(H-1t@@fD&%9VW-U3}AOW?KJ4AT(6STRy#;zfx2i zr_oZ4(%VN9O*5~^(`KwBxt34=k2-R?i)}YVh=p|n)AGdsi&pfbiheUR_NSf#1|>Mz zt!xJ~hbUOt+EY_m)p66?M&%@jc3Xhvmg49$n=IFj82B7|Y++8bV(OW&t)t{3Cq&K` zznw*xseH{5;h}=xglyp5MNx)+T3YFdtPKnJ!$<9#AHSTL9s)Z0wy!gLmQIa6U=7ae za2|};%$%w8sLTewmHLLC;X%3`08fXzh5OXVq%^8XZ?=-+J*#s|^Eb+qot31OS6P~9 z-40EOef?som)W>BMni{o`Hs1BL6NO|QrU!>MwXpqeyR09<*E(mPr=T0 zUVxasAV+G+iq|CCv&G-X-jZTGxX%wZaE$qFTlZAcSpNCsS0J4Q}^p9L>i zfZ2(tg8m8^t^Jbp3Y@ex4ZA!vmRzI1(0*u9<>V-@V6{~Sg-1ieC!c$U?*W|8x3?7ozO^7c+6R(a_dcBF(tr*^) zH@zqKE(RsWB$g$M z+%kTisfn*tX5n98U^5wnc$a`p9!8*15#Y>6Xw>xtFkDXf8`$cB5rC|uZo6V zr{#>HEhKkySG0st_e5XFPi^DKR=J5)lRQM+Lhwo}+Y}q4Ni!kX(kew~G@VsT8#HblV){ z=Hlqf0iJQdaMocw-JzU8f@!L%Vg=-*E4z^K4;-AgJt?@HL!HF5vNN8HM1go4oHmOx zm_?aYTaQ>6=VKK~P50Y{c`8P@ub?m0@~(p&ILupRFUclyM%b+FiacegQw>w;pY|j&o9B#f(E_L=PpS(O$+;5N(3w{ok#CL*o+Kcho2ZyF^SK1nZUO7Za5 z*JG@>jxD^xs;RM`<$JR*e+O8xtnP_hmLAbMY-}-mPpaKNmAkJO>#1G4o^_9iouvJo zbEoG}K)Z*iSNSMY4~xe!)oH57IgBocgIzy|(du8>o6$ z(@n7Mv-dSe|K{|XcirC9dx@{Tc_}o?L(4O9+M>-2-V3=ePTNLjE~sSsAGKHYQEJ zR^ybT!aQWno}DSZ{Xwn$-lT;!-IH`*58X4x zQFyd2YoM#|<<9y)PG0Sdf(O^Bpbd&3*eDwC(oJBrAeG*DM^%Nb!GL+*j-uLpf&MN- z{^m;EhH)-UJlbfy@5mt5%{u-84o{KqLpkiH5+6RbE?wGfr|`im>to%PQP==*M3h;> z{FKVS!PAtY zl_^e0J-Gtl4Il%bczcP(+jB>t;)6@=5d?ZyEWZ>cm8l6CmNh_gN^;<8f zRz3wKYOmU!sJ8?#*O>IBO3k0mQni_RnFFU)8dgK?3I$jPANmI6K=xPC-58}@>kweb z+gIK)Gao@HvGE+XttyY@DYK&!g7#IJ+Y`)s^RbJ*1Po~Z=r)w;;(j&h!q*#VDvKI^ z^^f3=yI+`31A*6FNt4d7|2}70lzSKTV>Wh?_*hun|Hph_Wv%DyV*O(xh|@jNrP8K3 zt(K;BQNKDC@KsB@!>u9UvJF*%aJ?LEFWJ|zP{ykI&o`tUk87x)<7H*rsMFHt?llfc z68J-(XWX~;15pk8eQyO9v8DUcU{@lDyA43I`8J>`$ z-q*+m={vcLk8xFuhe4~dqeIVgPdaL8>@2y|tIQG_@ps}fA^OXkz^33)mZz?C`}8di z5!PapKmzuhA&-}Uyj+$y=^fYNrV-`LU@5JeUFm5;?Chc33R+m1BnC-amVonqRdrYU)IM5_k-*~VB+^r z$+6az=#$56lR%rR@2bUB>YIz2d=vA{Ic`5U=3j4MuIlkOX|;)Zx7DLi5EE)3+VrH5 zZsSSe=ePud%gDEkmsK6a9ANH>1^63f1=mF^6x$kJtbg|WKJaa-nFpGKz}xYvH<)ZB zGkar;=uCWHqOuvcG~&7$=bQNn@ZM;@SExM<%edXr+BuB<7y;-~-PW%JobvcmTYVQC zm0u)w&Sl@rkdA=j^uO(bvB=GL3Kl5e#$}_G>Ryth@7q5PH!my+2)TNKTF#dB@N)~t zZ~AyirEaE9HaYq(b!@i>iRfj_ho(oje-wMH4$*DDAUH6l+9JMSwq54`?ap1~$MQ(k zopT<$1&|qQekBnR0T?JYxhpJohr>jXHIXFsE)9u}iuU83wmQQy-YJI}ih^hO%U8EM z2+`V6+ngZZD0$2N*Y#5FBiR`f$EUlybiq$;Y3g9B(qyE(Zzwa{+#;6M@HA**BZAT; zs&6nKZ3Ndkfm`|3!~NX1;s_Zi)SCw%jd zRL1kKJ`fIFHE`um0FzF+hSk>Fw!)&Lt^)mJJSFZHY9D3>!m4H!lc$bgCA;jntFZ)MfAEB}aEPq5Qi6_@q9Y$*2Z-|9 zt_*;iFQBH52!o~4vHf7%H~6HWHRClnkUc{Hbh z=U`wd{ehPYf8ETX8WEjTm^j{4?YLjOXjgH>i{!Yb9WGyPc`u(?4p`@9(-;^ zAv~D#PuO3y#furvqyG>t&n3hkc24YtaWQJ)uK?$Q;tx9qWMJH%^5U;x=P&(-ox{2? z?oZesV&kvi=VIdzJBROL+<(A-N{<)wT$CRF$W#=eQbsE|_Qh zAG7?fRb6Dcs9pTY(uA2-{!^A8OYb7b#rfw?j%o5=bNqE0x|sFiXXMYUD8R3?{!o-J n$icsVR4%ey>@$C|@KOJZuA`-jPjDVWhWVvnUX$#(JdgE1u)0jo literal 0 HcmV?d00001 From 2f78c1d89be34c913fb07e4201a0d8bf6a835d38 Mon Sep 17 00:00:00 2001 From: Thevakumar-Luheerathan Date: Thu, 4 Jan 2024 14:46:20 +0530 Subject: [PATCH 7/8] Fix build failure --- .../java17/compiler-plugin/compiler-plugin.json | 2 +- ...in-with-analyzer-generator-modifier-1.0.0.jar | Bin 6119 -> 0 bytes .../java17/compiler-plugin/compiler-plugin.json | 2 +- ...in-with-analyzer-generator-modifier-1.0.0.jar | Bin 6119 -> 0 bytes .../java17/compiler-plugin/compiler-plugin.json | 2 +- ...in-with-analyzer-generator-modifier-1.0.0.jar | Bin 6119 -> 0 bytes .../java17/compiler-plugin/compiler-plugin.json | 2 +- ...in-with-analyzer-generator-modifier-1.0.0.jar | Bin 6119 -> 0 bytes .../java17/compiler-plugin/compiler-plugin.json | 2 +- ...in-with-analyzer-generator-modifier-1.0.0.jar | Bin 6119 -> 0 bytes 10 files changed, 5 insertions(+), 5 deletions(-) delete mode 100644 cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/1.1.0/java17/compiler-plugin/libs/compiler-plugin-with-analyzer-generator-modifier-1.0.0.jar delete mode 100644 cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/1.2.0/java17/compiler-plugin/libs/compiler-plugin-with-analyzer-generator-modifier-1.0.0.jar delete mode 100644 cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/1.3.0/java17/compiler-plugin/libs/compiler-plugin-with-analyzer-generator-modifier-1.0.0.jar delete mode 100644 cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/2.2.4/java17/compiler-plugin/libs/compiler-plugin-with-analyzer-generator-modifier-1.0.0.jar delete mode 100644 cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/2.2.5/java17/compiler-plugin/libs/compiler-plugin-with-analyzer-generator-modifier-1.0.0.jar diff --git a/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/1.1.0/java17/compiler-plugin/compiler-plugin.json b/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/1.1.0/java17/compiler-plugin/compiler-plugin.json index 66bfe83d52a2..d5949dc5f5e0 100644 --- a/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/1.1.0/java17/compiler-plugin/compiler-plugin.json +++ b/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/1.1.0/java17/compiler-plugin/compiler-plugin.json @@ -1,6 +1,6 @@ { "plugin_class": "io.gayal.combined.CombinedCompilerPlugin", "dependency_paths": [ - "compiler-plugin/libs/compiler-plugin-with-analyzer-generator-modifier-1.0.0.jar" + "compiler-plugin/libs/a.jar" ] } \ No newline at end of file diff --git a/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/1.1.0/java17/compiler-plugin/libs/compiler-plugin-with-analyzer-generator-modifier-1.0.0.jar b/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/1.1.0/java17/compiler-plugin/libs/compiler-plugin-with-analyzer-generator-modifier-1.0.0.jar deleted file mode 100644 index 5ed0821d57dd3a7ab50b2a816de3786418a26db9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6119 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 diff --git a/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/1.2.0/java17/compiler-plugin/compiler-plugin.json b/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/1.2.0/java17/compiler-plugin/compiler-plugin.json index 66bfe83d52a2..d5949dc5f5e0 100644 --- a/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/1.2.0/java17/compiler-plugin/compiler-plugin.json +++ b/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/1.2.0/java17/compiler-plugin/compiler-plugin.json @@ -1,6 +1,6 @@ { "plugin_class": "io.gayal.combined.CombinedCompilerPlugin", "dependency_paths": [ - "compiler-plugin/libs/compiler-plugin-with-analyzer-generator-modifier-1.0.0.jar" + "compiler-plugin/libs/a.jar" ] } \ No newline at end of file diff --git a/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/1.2.0/java17/compiler-plugin/libs/compiler-plugin-with-analyzer-generator-modifier-1.0.0.jar b/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/1.2.0/java17/compiler-plugin/libs/compiler-plugin-with-analyzer-generator-modifier-1.0.0.jar deleted file mode 100644 index 5ed0821d57dd3a7ab50b2a816de3786418a26db9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6119 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 diff --git a/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/1.3.0/java17/compiler-plugin/compiler-plugin.json b/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/1.3.0/java17/compiler-plugin/compiler-plugin.json index 66bfe83d52a2..d5949dc5f5e0 100644 --- a/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/1.3.0/java17/compiler-plugin/compiler-plugin.json +++ b/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/1.3.0/java17/compiler-plugin/compiler-plugin.json @@ -1,6 +1,6 @@ { "plugin_class": "io.gayal.combined.CombinedCompilerPlugin", "dependency_paths": [ - "compiler-plugin/libs/compiler-plugin-with-analyzer-generator-modifier-1.0.0.jar" + "compiler-plugin/libs/a.jar" ] } \ No newline at end of file diff --git a/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/1.3.0/java17/compiler-plugin/libs/compiler-plugin-with-analyzer-generator-modifier-1.0.0.jar b/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/1.3.0/java17/compiler-plugin/libs/compiler-plugin-with-analyzer-generator-modifier-1.0.0.jar deleted file mode 100644 index 5ed0821d57dd3a7ab50b2a816de3786418a26db9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6119 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 diff --git a/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/2.2.4/java17/compiler-plugin/compiler-plugin.json b/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/2.2.4/java17/compiler-plugin/compiler-plugin.json index 66bfe83d52a2..d5949dc5f5e0 100644 --- a/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/2.2.4/java17/compiler-plugin/compiler-plugin.json +++ b/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/2.2.4/java17/compiler-plugin/compiler-plugin.json @@ -1,6 +1,6 @@ { "plugin_class": "io.gayal.combined.CombinedCompilerPlugin", "dependency_paths": [ - "compiler-plugin/libs/compiler-plugin-with-analyzer-generator-modifier-1.0.0.jar" + "compiler-plugin/libs/a.jar" ] } \ No newline at end of file diff --git a/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/2.2.4/java17/compiler-plugin/libs/compiler-plugin-with-analyzer-generator-modifier-1.0.0.jar b/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/2.2.4/java17/compiler-plugin/libs/compiler-plugin-with-analyzer-generator-modifier-1.0.0.jar deleted file mode 100644 index 5ed0821d57dd3a7ab50b2a816de3786418a26db9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6119 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 diff --git a/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/2.2.5/java17/compiler-plugin/compiler-plugin.json b/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/2.2.5/java17/compiler-plugin/compiler-plugin.json index 66bfe83d52a2..d5949dc5f5e0 100644 --- a/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/2.2.5/java17/compiler-plugin/compiler-plugin.json +++ b/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/2.2.5/java17/compiler-plugin/compiler-plugin.json @@ -1,6 +1,6 @@ { "plugin_class": "io.gayal.combined.CombinedCompilerPlugin", "dependency_paths": [ - "compiler-plugin/libs/compiler-plugin-with-analyzer-generator-modifier-1.0.0.jar" + "compiler-plugin/libs/a.jar" ] } \ No newline at end of file diff --git a/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/2.2.5/java17/compiler-plugin/libs/compiler-plugin-with-analyzer-generator-modifier-1.0.0.jar b/cli/ballerina-cli/src/test/resources/test-resources/local-tool-test/ballerina-cache/repositories/local/bala/gayaldassanayake/tool_gayal/2.2.5/java17/compiler-plugin/libs/compiler-plugin-with-analyzer-generator-modifier-1.0.0.jar deleted file mode 100644 index 5ed0821d57dd3a7ab50b2a816de3786418a26db9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6119 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 From e7fd4a505f3e599cd0a77414ec2f78458d6b7860 Mon Sep 17 00:00:00 2001 From: Thevakumar-Luheerathan Date: Tue, 30 Jan 2024 11:32:39 +0530 Subject: [PATCH 8/8] Fix build failure --- .../src/main/java/io/ballerina/cli/cmd/ToolCommand.java | 1 - .../main/java/io/ballerina/cli/launcher/util/BalToolsUtil.java | 1 - 2 files changed, 2 deletions(-) diff --git a/cli/ballerina-cli/src/main/java/io/ballerina/cli/cmd/ToolCommand.java b/cli/ballerina-cli/src/main/java/io/ballerina/cli/cmd/ToolCommand.java index 6c25147f7a64..d8385e3a2b74 100644 --- a/cli/ballerina-cli/src/main/java/io/ballerina/cli/cmd/ToolCommand.java +++ b/cli/ballerina-cli/src/main/java/io/ballerina/cli/cmd/ToolCommand.java @@ -67,7 +67,6 @@ import static io.ballerina.projects.util.ProjectConstants.CENTRAL_REPOSITORY_CACHE_NAME; import static io.ballerina.projects.util.ProjectConstants.CONFIG_DIR; import static io.ballerina.projects.util.ProjectConstants.LOCAL_REPOSITORY_NAME; -import static io.ballerina.projects.util.ProjectConstants.HOME_REPO_DEFAULT_DIRNAME; import static io.ballerina.projects.util.ProjectConstants.REPOSITORIES_DIR; import static io.ballerina.projects.util.ProjectUtils.getAccessTokenOfCLI; import static io.ballerina.projects.util.ProjectUtils.initializeProxy; diff --git a/cli/ballerina-cli/src/main/java/io/ballerina/cli/launcher/util/BalToolsUtil.java b/cli/ballerina-cli/src/main/java/io/ballerina/cli/launcher/util/BalToolsUtil.java index a74816987955..59bb175aadbf 100644 --- a/cli/ballerina-cli/src/main/java/io/ballerina/cli/launcher/util/BalToolsUtil.java +++ b/cli/ballerina-cli/src/main/java/io/ballerina/cli/launcher/util/BalToolsUtil.java @@ -89,7 +89,6 @@ import static io.ballerina.projects.util.ProjectConstants.BAL_TOOLS_TOML; import static io.ballerina.projects.util.ProjectConstants.CENTRAL_REPOSITORY_CACHE_NAME; import static io.ballerina.projects.util.ProjectConstants.CONFIG_DIR; -import static io.ballerina.projects.util.ProjectConstants.HOME_REPO_DEFAULT_DIRNAME; import static io.ballerina.projects.util.ProjectConstants.REPOSITORIES_DIR; /**