|
1 | 1 | /* |
2 | | - * Copyright 2021 DiffPlug |
| 2 | + * Copyright 2021-2024 DiffPlug |
3 | 3 | * |
4 | 4 | * Licensed under the Apache License, Version 2.0 (the "License"); |
5 | 5 | * you may not use this file except in compliance with the License. |
@@ -35,24 +35,37 @@ private NativeCmdStep() {} |
35 | 35 | public static FormatterStep create(String name, File pathToExe, List<String> arguments) { |
36 | 36 | Objects.requireNonNull(name, "name"); |
37 | 37 | Objects.requireNonNull(pathToExe, "pathToExe"); |
38 | | - return FormatterStep.createLazy(name, () -> new State(FileSignature.signAsList(pathToExe), arguments), State::toFunc); |
| 38 | + return FormatterStep.createLazy(name, () -> new State(FileSignature.promise(pathToExe), arguments), State::toRuntime, Runtime::toFunc); |
39 | 39 | } |
40 | 40 |
|
41 | 41 | static class State implements Serializable { |
42 | | - private static final long serialVersionUID = 1L; |
| 42 | + private static final long serialVersionUID = 2L; |
| 43 | + final FileSignature.Promised pathToExe; |
| 44 | + final List<String> arguments; |
43 | 45 |
|
44 | | - final FileSignature pathToExe; |
| 46 | + State(FileSignature.Promised pathToExe, List<String> arguments) { |
| 47 | + this.pathToExe = pathToExe; |
| 48 | + this.arguments = arguments; |
| 49 | + } |
| 50 | + |
| 51 | + Runtime toRuntime() { |
| 52 | + return new Runtime(pathToExe.get().getOnlyFile(), arguments); |
| 53 | + } |
| 54 | + } |
45 | 55 |
|
| 56 | + static class Runtime implements Serializable { |
| 57 | + private static final long serialVersionUID = 2L; |
| 58 | + final File pathToExe; |
46 | 59 | final List<String> arguments; |
47 | 60 |
|
48 | | - State(FileSignature pathToExe, List<String> arguments) { |
| 61 | + Runtime(File pathToExe, List<String> arguments) { |
49 | 62 | this.pathToExe = pathToExe; |
50 | 63 | this.arguments = arguments; |
51 | 64 | } |
52 | 65 |
|
53 | 66 | String format(ProcessRunner runner, String input) throws IOException, InterruptedException { |
54 | 67 | List<String> argumentsWithPathToExe = new ArrayList<>(); |
55 | | - argumentsWithPathToExe.add(pathToExe.getOnlyFile().getAbsolutePath()); |
| 68 | + argumentsWithPathToExe.add(pathToExe.getAbsolutePath()); |
56 | 69 | if (arguments != null) { |
57 | 70 | argumentsWithPathToExe.addAll(arguments); |
58 | 71 | } |
|
0 commit comments