Skip to content

Commit

Permalink
fix: allow just h2@
Browse files Browse the repository at this point in the history
  • Loading branch information
maxandersen committed Jan 23, 2024
1 parent 74777f1 commit 94080d6
Show file tree
Hide file tree
Showing 4 changed files with 48 additions and 6 deletions.
3 changes: 3 additions & 0 deletions src/main/java/dev/jbang/catalog/Alias.java
Original file line number Diff line number Diff line change
Expand Up @@ -190,6 +190,9 @@ private static Alias merge(Alias a1, String name, Function<String, Alias> findUn
if (parts.length > 2 || parts[0].isEmpty()) {
throw new RuntimeException("Invalid alias name '" + name + "'");
}
if (parts.length == 1 && name.endsWith("@")) {
parts = new String[] { parts[0], "jbangdev" };
}
Alias a2;
if (parts.length == 1) {
a2 = findUnqualifiedAlias.apply(name);
Expand Down
10 changes: 8 additions & 2 deletions src/main/java/dev/jbang/catalog/Catalog.java
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,8 @@
import dev.jbang.util.Util;

public class Catalog {
public static final String JBANG_DEFAULT_CATALOG = "jbangapp";

public static final String JBANG_CATALOG_JSON = "jbang-catalog.json";
public static final String JBANG_IMPLICIT_CATALOG_JSON = "implicit-catalog.json";

Expand Down Expand Up @@ -415,10 +417,14 @@ public static boolean isValidName(String name) {

public static boolean isValidCatalogReference(String name) {
String[] parts = name.split("@");
if (parts.length != 2 || parts[0].isEmpty() || parts[1].isEmpty()) {
switch (parts.length) {
case 1:
return isValidName(parts[0]);
case 2:
return isValidName(parts[0]); // should validate catalog ref is valid?
default:
return false;
}
return isValidName(parts[0]);
}

}
5 changes: 3 additions & 2 deletions src/main/java/dev/jbang/catalog/ImplicitCatalogRef.java
Original file line number Diff line number Diff line change
Expand Up @@ -53,10 +53,11 @@ public static ImplicitCatalogRef parse(String name) {
return null;
}
String org = null;
if (names.length > 2) {
if (names.length >= 1) {
org = names[0];
} else {
org = Catalog.JBANG_DEFAULT_CATALOG; // TODO: should global default be controllable by config?
}
org = "jbangapp"; // TODO: should global default be controllable by config?
String repo;
if (names.length >= 2 && !names[1].isEmpty()) {
repo = names[1];
Expand Down
36 changes: 34 additions & 2 deletions src/test/java/dev/jbang/TestImplicitAlias.java
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import org.junit.jupiter.api.Test;

import dev.jbang.catalog.Alias;
import dev.jbang.catalog.Catalog;
import dev.jbang.catalog.ImplicitCatalogRef;
import dev.jbang.cli.ExitException;

Expand All @@ -18,6 +19,16 @@
*/
public class TestImplicitAlias extends BaseTest {

@Test
public void testValidity() {
assertThat(Catalog.isValidCatalogReference("h2@org/repo"), Matchers.is(true));
assertThat(Catalog.isValidCatalogReference("h2@org"), Matchers.is(true));
assertThat(Catalog.isValidCatalogReference("h2@/org"), Matchers.is(true));
assertThat(Catalog.isValidCatalogReference("h2@"), Matchers.is(true));
assertThat(Catalog.isValidCatalogReference("h2@/"), Matchers.is(false));

}

@Test
public void testGitImplicitCatalog() {
assertThat(ImplicitCatalogRef.getImplicitCatalogUrl("jbangdev").get(),
Expand All @@ -32,6 +43,7 @@ public void testDefaultImplicitCatalog() {
Matchers.equalTo("https://github.com/jbangapp/jbang-catalog/blob/HEAD/jbang-catalog.json"));
assertThat(ImplicitCatalogRef.getImplicitCatalogUrl("/sqlline").get(),
Matchers.equalTo("https://github.com/jbangapp/sqlline/blob/HEAD/jbang-catalog.json"));

}

@Test
Expand All @@ -46,11 +58,31 @@ public void testDefaultCatalogGet() {
}

@Test
public void testImplictURLAlias() {
public void testjbangapph2atapp() {
Alias url = Alias.get("h2@jbangapp");
assertThat(url.catalog.catalogRef.getOriginalResource(),
Matchers.equalTo("https://github.com/jbangapp/jbang-catalog/blob/HEAD/jbang-catalog.json"));
}

@Test
public void testjbangapph2at() {
Alias url = Alias.get("h2@");
assertThat(url.catalog.catalogRef.getOriginalResource(),
Matchers.equalTo("https://github.com/jbangapp/jbang-catalog/blob/HEAD/jbang-catalog.json"));

}

@Test
public void testjbangappsqlline() {
Alias url = Alias.get("sqlline@/sqlline");
assertThat(url.catalog.catalogRef.getOriginalResource(),
Matchers.equalTo("https://github.com/jbangapp/sqlline/blob/HEAD/jbang-catalog.json"));
}

@Test
public void testImplictURLAlias() {
Alias url = Alias.get("[email protected]");
assertThat(url.scriptRef, Matchers.equalTo("tree/main.java"));

}

@Test
Expand Down

0 comments on commit 94080d6

Please sign in to comment.