Skip to content

Commit

Permalink
Predictable artifact order (#58)
Browse files Browse the repository at this point in the history
* remove unused logger

* remove unused import

* remove unused method

* order dependencies alphabetically

* remove unused method

* add test and comment mentioning the artifact ordering

* update cachix/install-nix-action

* remove install url from install-nix-action
  • Loading branch information
jvierling committed Dec 5, 2023
1 parent ea21cfe commit e27562c
Show file tree
Hide file tree
Showing 7 changed files with 965 additions and 937 deletions.
10 changes: 4 additions & 6 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2.3.2
- uses: cachix/install-nix-action@v12
- uses: cachix/install-nix-action@v20
- uses: cachix/cachix-action@v8
with:
name: fzakaria
Expand All @@ -21,7 +21,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2.3.2
- uses: cachix/install-nix-action@v12
- uses: cachix/install-nix-action@v20
- uses: cachix/cachix-action@v8
with:
name: fzakaria
Expand All @@ -33,9 +33,8 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: cachix/install-nix-action@v12
- uses: cachix/install-nix-action@v20
with:
install_url: https://github.com/numtide/nix-flakes-installer/releases/download/nix-2.4pre20201221_9fab14a/install
extra_nix_config: experimental-features = nix-command flakes
- uses: cachix/cachix-action@v8
with:
Expand All @@ -47,9 +46,8 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2.3.2
- uses: cachix/install-nix-action@v12
- uses: cachix/install-nix-action@v20
with:
install_url: https://github.com/numtide/nix-flakes-installer/releases/download/nix-2.4pre20201221_9fab14a/install
extra_nix_config: experimental-features = nix-command flakes
- uses: cachix/cachix-action@v8
with:
Expand Down
2 changes: 2 additions & 0 deletions src/main/java/com/fzakaria/mvn2nix/cmd/Maven2nix.java
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,8 @@ public Integer call() throws Exception {

/**
* Convert this object to a pretty JSON representation.
*
* The artifacts will appear in the order induced by {@link String#compareTo(String)}.
*/
public static String toPrettyJson(MavenNixInformation information) {
final Moshi moshi = new Moshi.Builder()
Expand Down
5 changes: 0 additions & 5 deletions src/main/java/com/fzakaria/mvn2nix/maven/Maven.java
Original file line number Diff line number Diff line change
Expand Up @@ -12,13 +12,10 @@
import org.apache.maven.shared.invoker.Invoker;
import org.apache.maven.shared.invoker.MavenInvocationException;
import org.apache.maven.shared.invoker.PrintStreamHandler;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.io.File;
import java.io.IOException;
import java.io.UncheckedIOException;
import java.net.URL;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.Arrays;
Expand All @@ -34,8 +31,6 @@
*/
public class Maven {

private static final Logger LOGGER = LoggerFactory.getLogger(Maven.class);

private final Invoker invoker;
private final File localRepository;

Expand Down
4 changes: 0 additions & 4 deletions src/main/java/com/fzakaria/mvn2nix/model/MavenArtifact.java
Original file line number Diff line number Diff line change
Expand Up @@ -23,10 +23,6 @@ public URL getUrl() {
return url;
}

public String getLayout() {
return layout;
}

public String getSha256() {
return sha256;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,18 +6,19 @@
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
import java.util.TreeMap;

@Immutable
public class MavenNixInformation {

private final Map<String, MavenArtifact> dependencies;

/**
* Stores the given dependencies in a tree map to get the artifacts in alphabetic order when this
* object is converted to json by {@link com.fzakaria.mvn2nix.cmd.Maven2nix#toPrettyJson}.
*/
public MavenNixInformation(Map<String, MavenArtifact> dependencies) {
this.dependencies = new HashMap<>(dependencies);
}

public Map<String, MavenArtifact> getDependencies() {
return new HashMap<>(dependencies);
this.dependencies = new TreeMap<>(dependencies);
}

@Override
Expand Down
36 changes: 36 additions & 0 deletions src/test/java/com/fzakaria/mvn2nix/cmd/Maven2nixTest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
package com.fzakaria.mvn2nix.cmd;

import com.fzakaria.mvn2nix.model.MavenArtifact;
import com.fzakaria.mvn2nix.model.MavenNixInformation;
import org.junit.jupiter.api.Test;

import java.net.MalformedURLException;
import java.net.URL;
import java.util.Map;

import static org.junit.jupiter.api.Assertions.*;

class Maven2nixTest {

@Test
void artifactsInJsonShouldBeInAlphabeticOrder() throws MalformedURLException {
var artifacts = new MavenNixInformation(Map.of(
"artifact-b", new MavenArtifact(new URL("https://dummy/url/b"), "b", "sha256-b"),
"artifact-a", new MavenArtifact(new URL("https://dummy/url/a"), "a", "sha256-a")));
assertEquals("{\n" +
" \"dependencies\": {\n" +
" \"artifact-a\": {\n" +
" \"layout\": \"a\",\n" +
" \"sha256\": \"sha256-a\",\n" +
" \"url\": \"https://dummy/url/a\"\n" +
" },\n" +
" \"artifact-b\": {\n" +
" \"layout\": \"b\",\n" +
" \"sha256\": \"sha256-b\",\n" +
" \"url\": \"https://dummy/url/b\"\n" +
" }\n" +
" }\n" +
"}", Maven2nix.toPrettyJson(artifacts));
}

}
Loading

0 comments on commit e27562c

Please sign in to comment.