Skip to content

Commit

Permalink
feat: enable jbang [email protected] and jbang tree@https:/jbang.dev
Browse files Browse the repository at this point in the history
  • Loading branch information
maxandersen committed Mar 9, 2022
1 parent 238ef90 commit 8c959d7
Show file tree
Hide file tree
Showing 3 changed files with 83 additions and 11 deletions.
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ dependencies {
//implementation 'com.google.guava:guava:28.2-jre'


testCompile "com.github.tomakehurst:wiremock-jre8:2.27.2"
testCompile "com.github.tomakehurst:wiremock-jre8:2.32.0"

testImplementation "org.junit.jupiter:junit-jupiter:5.7.1"
testRuntimeOnly('org.junit.jupiter:junit-jupiter-engine:5.7.1')
Expand Down
29 changes: 19 additions & 10 deletions src/main/java/dev/jbang/catalog/ImplicitCatalogRef.java
Original file line number Diff line number Diff line change
Expand Up @@ -62,16 +62,25 @@ public static ImplicitCatalogRef parse(String name) {
return new ImplicitCatalogRef(org, repo, ref, path);
}

static Optional<String> getImplicitCatalogUrl(String catalogName) {
ImplicitCatalogRef icr = parse(catalogName);
Optional<String> url = chain(
() -> tryDownload(icr.url(GITHUB_URL, "/blob/")),
() -> icr.isPossibleCommit() ? tryDownload(icr.url(GITHUB_URL, "/blob/")) : Optional.empty(),
() -> tryDownload(icr.url(GITLAB_URL, "/-/blob/")),
() -> icr.isPossibleCommit() ? tryDownload(icr.url(GITLAB_URL, "/-/blob/")) : Optional.empty(),
() -> tryDownload(icr.url(BITBUCKET_URL, "/src/")),
() -> icr.isPossibleCommit() ? tryDownload(icr.url(BITBUCKET_URL, "/src/")) : Optional.empty())
.findFirst();
public static Optional<String> getImplicitCatalogUrl(String catalogName) {
Optional<String> url = null;

if (catalogName.startsWith("https://") || catalogName.startsWith("http://")
|| catalogName.startsWith("file://")) {
url = tryDownload(catalogName);
} else if (catalogName.contains(".")) {
url = tryDownload("https://" + catalogName);
} else {
ImplicitCatalogRef icr = parse(catalogName);
url = chain(
() -> tryDownload(icr.url(GITHUB_URL, "/blob/")),
() -> icr.isPossibleCommit() ? tryDownload(icr.url(GITHUB_URL, "/blob/")) : Optional.empty(),
() -> tryDownload(icr.url(GITLAB_URL, "/-/blob/")),
() -> icr.isPossibleCommit() ? tryDownload(icr.url(GITLAB_URL, "/-/blob/")) : Optional.empty(),
() -> tryDownload(icr.url(BITBUCKET_URL, "/src/")),
() -> icr.isPossibleCommit() ? tryDownload(icr.url(BITBUCKET_URL, "/src/")) : Optional.empty())
.findFirst();
}
return url;
}

Expand Down
63 changes: 63 additions & 0 deletions src/test/java/dev/jbang/TestImplicitAlias.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
package dev.jbang;

import static org.hamcrest.MatcherAssert.assertThat;

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;

import org.hamcrest.Matchers;
import org.junit.jupiter.api.Test;

import dev.jbang.catalog.Alias;
import dev.jbang.catalog.ImplicitCatalogRef;

/**
* TODO: use mock to handle https lookups instead of jbang.dev
*/
public class TestImplicitAlias extends BaseTest {

@Test
public void testGitImplicitCatalog() {
assertThat(ImplicitCatalogRef.getImplicitCatalogUrl("jbangdev").get(),
Matchers.equalTo("https://github.com/jbangdev/jbang-catalog/blob/HEAD/jbang-catalog.json"));
assertThat(ImplicitCatalogRef.getImplicitCatalogUrl("jbangdev/jbang-examples").get(),
Matchers.equalTo("https://github.com/jbangdev/jbang-examples/blob/HEAD/jbang-catalog.json"));
}

@Test
public void testImplictURLAlias() {

Alias url = Alias.get("[email protected]");
assertThat(url.scriptRef, Matchers.equalTo("tree/main.java"));

}

@Test
public void testImplictExplicitURLAlias() {

Alias url = Alias.get("tree@https://jbang.dev");
assertThat(url.scriptRef, Matchers.equalTo("tree/main.java"));

}

// @Test needs fixing to not generate absolute paths but instead relative paths.
public void testFileURLAlias() throws IOException {

assertThat(jbangTempDir.resolve("inner").toFile().mkdirs(), Matchers.is(true));

Files.copy(examplesTestFolder.resolve("helloworld.java"), jbangTempDir.resolve("inner/helloworld.java"));
String src = jbangTempDir.resolve("inner/helloworld.java").toString();
Path path = jbangTempDir.resolve("jbang-catalog.json");

checkedRun(null, "alias", "add", "-f", path.toString(), "--name=apptest", src);

String url = "apptest@" + path.toUri();
assertThat(url, Matchers.stringContainsInOrder("file://"));

Alias alias = Alias.get(url);

assertThat(alias.scriptRef, Matchers.equalTo("helloworld.java"));

}
}

0 comments on commit 8c959d7

Please sign in to comment.