diff options
| author | Matthias Andreas Benkard <code@mail.matthias.benkard.de> | 2024-03-02 13:48:04 +0100 | 
|---|---|---|
| committer | Matthias Andreas Benkard <code@mail.matthias.benkard.de> | 2024-03-02 13:48:04 +0100 | 
| commit | ec2c34a3431835a34f88e5967a774f80c3e21d7d (patch) | |
| tree | 29bb0027cf86b7ee967e73fe2b777e18903a5178 | |
| parent | 08ecdd63d09161e0da02f47a055dda5ca7562bcc (diff) | |
jgvariant-tool: Factor out generic read command.
Change-Id: I977a3a36ae5dec7e5a2847b2d0558dd7026184b1
| -rw-r--r-- | jgvariant-tool/src/main/java/eu/mulk/jgvariant/tool/MainCommand.java | 19 | ||||
| -rw-r--r-- | jgvariant-tool/src/main/java/module-info.java | 2 | 
2 files changed, 14 insertions, 7 deletions
| diff --git a/jgvariant-tool/src/main/java/eu/mulk/jgvariant/tool/MainCommand.java b/jgvariant-tool/src/main/java/eu/mulk/jgvariant/tool/MainCommand.java index 7b25dfc..fe8211e 100644 --- a/jgvariant-tool/src/main/java/eu/mulk/jgvariant/tool/MainCommand.java +++ b/jgvariant-tool/src/main/java/eu/mulk/jgvariant/tool/MainCommand.java @@ -6,6 +6,7 @@ package eu.mulk.jgvariant.tool;  import static java.util.logging.Level.*; +import eu.mulk.jgvariant.core.Decoder;  import eu.mulk.jgvariant.ostree.Summary;  import eu.mulk.jgvariant.tool.jsonb.*;  import jakarta.json.bind.Jsonb; @@ -72,15 +73,11 @@ final class MainCommand {          name = "summary",          mixinStandardHelpOptions = true,          description = "Manipulate OSTree summary files.") -    static final class SummaryCommand extends BaseCommand { +    static final class SummaryCommand extends BaseDecoderCommand<Summary> {        @Command(mixinStandardHelpOptions = true)        void read(@Parameters(paramLabel = "<file>") File file) throws IOException { -        LOG.fine(() -> "Reading file %s".formatted(file)); -        var fileBytes = ByteBuffer.wrap(Files.readAllBytes(fs().getPath(file.getPath()))); -        var decoder = Summary.decoder(); -        var thing = decoder.decode(fileBytes); -        out().println(jsonb.toJson(thing)); +        read(file, Summary.decoder());        }        SummaryCommand() {} @@ -111,5 +108,15 @@ final class MainCommand {      }    } +  abstract static class BaseDecoderCommand<T> extends BaseCommand { + +    protected final void read(File file, Decoder<T> decoder) throws IOException { +      LOG.fine(() -> "Reading file %s".formatted(file)); +      var fileBytes = ByteBuffer.wrap(Files.readAllBytes(fs().getPath(file.getPath()))); +      var thing = decoder.decode(fileBytes); +      out().println(jsonb.toJson(thing)); +    } +  } +    MainCommand() {}  } diff --git a/jgvariant-tool/src/main/java/module-info.java b/jgvariant-tool/src/main/java/module-info.java index 3f457ea..1e9cdf1 100644 --- a/jgvariant-tool/src/main/java/module-info.java +++ b/jgvariant-tool/src/main/java/module-info.java @@ -53,7 +53,7 @@   * }   * }   */ - module eu.mulk.jgvariant.tool { +module eu.mulk.jgvariant.tool {    requires transitive eu.mulk.jgvariant.ostree;    requires info.picocli;    requires jakarta.json; | 
