@@ -0,0 +1,2414 @@
+/*%0A * Bach - Java Shell Builder%0A * Copyright (C) 2019 Christian Stein%0A *%0A * Licensed under the Apache License, Version 2.0 (the %22License%22);%0A * you may not use this file except in compliance with the License.%0A * You may obtain a copy of the License at%0A *%0A *     https://www.apache.org/licenses/LICENSE-2.0%0A *%0A * Unless required by applicable law or agreed to in writing, software%0A * distributed under the License is distributed on an %22AS IS%22 BASIS,%0A * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.%0A * See the License for the specific language governing permissions and%0A * limitations under the License.%0A */%0A%0Aimport java.nio.file.Files;%0Aimport java.nio.file.Path;%0Aimport java.util.List;%0Aimport java.util.Properties;%0A%0A/** Set various version values to the one of this program's first argument. */%0Apublic class Version %7B%0A%0A  private static final Path PROPERTIES = Path.of(%22.bach/bach.properties%22);%0A%0A  public static void main(String... args) throws Exception %7B%0A    if (args.length == 0) %7B%0A      var properties = new Properties();%0A      try (var reader = Files.newBufferedReader(PROPERTIES)) %7B%0A        properties.load(reader);%0A      %7D%0A      var version = properties.getProperty(%22version%22);%0A      if (version == null) throw new Error(%22Key 'version' not found in: %22 + PROPERTIES.toUri());%0A      System.out.println(version);%0A      return;%0A    %7D%0A%0A    if (args.length %3E 1) %7B%0A      throw new Error(%22Exactly one argument, the new version, expected! args=%22 + List.of(args));%0A    %7D%0A    var version = args%5B0%5D;%0A    var readmeMd = Path.of(%22README.md%22);%0A    var mavenPom = Path.of(%22src/de.sormuras.bach/main/maven/pom.xml%22);%0A    var bachJava = Path.of(%22src/bach/Bach.java%22);%0A    // var mergedBach = Path.of(%22src/bach/MergedBach.java%22);%0A%0A    sed(PROPERTIES, %22version=.+%22, %22version=%22 + version);%0A    sed(readmeMd, %22# Bach.java .+ -%22, %22# Bach.java %22 + version + %22 -%22);%0A    sed(mavenPom, %22%3Cversion%3E.+%3C/version%3E%22, %22%3Cversion%3E%22 + version + %22%3C/version%3E%22);%0A    sed(bachJava, %22String VERSION = %5C%22.+%5C%22;%22, %22String VERSION = %5C%22%22 + version + %22%5C%22;%22);%0A    // mergedBach.toFile().setWritable(true);%0A    // sed(mergedBach, %22String VERSION = %5C%22.+%5C%22;%22, %22String VERSION = %5C%22%22 + version + %22%5C%22;%22);%0A    // mergedBach.toFile().setWritable(false);%0A  %7D%0A%0A  private static void sed(Path path, String regex, String replacement) throws Exception %7B%0A    Files.writeString(path, Files.readString(path).replaceAll(regex, replacement));%0A  %7D%0A%7D%0A

Introduce version getter and setter program