All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.apache.logging.log4j.changelog.ChangelogFiles Maven / Gradle / Ivy

/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements. See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache license, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License. You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the license for the specific language governing permissions and
 * limitations under the license.
 */
package org.apache.logging.log4j.changelog;

import java.nio.file.Path;
import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
import java.util.stream.Stream;

import org.apache.logging.log4j.changelog.util.FileUtils;

public final class ChangelogFiles {

    private ChangelogFiles() {}

    public static Path unreleasedDirectory(final Path changelogDirectory, final int versionMajor) {
        final String filename = String.format(".%d.x.x", versionMajor);
        return changelogDirectory.resolve(filename);
    }

    public static Set unreleasedDirectoryVersionMajors(final Path changelogDirectory) {
        return FileUtils.findAdjacentFiles(changelogDirectory, false, paths -> paths
                .flatMap(path -> {

                    // Only select directories matching with the `^\.(\d+)\.x\.x$` pattern
                    final Pattern versionPattern = Pattern.compile("^\\.(\\d+)\\.x\\.x$");
                    final Matcher versionMatcher = versionPattern.matcher(path.getFileName().toString());
                    if (!versionMatcher.matches()) {
                        return Stream.empty();
                    }
                    final String versionMajorString = versionMatcher.group(1);
                    final int versionMajor = Integer.parseInt(versionMajorString);
                    return Stream.of(versionMajor);

                })
                .collect(Collectors.toSet()));
    }

    public static Path indexTemplateFile(final Path changelogDirectory) {
        return changelogDirectory.resolve(".index.adoc.ftl");
    }

    public static Path releaseDirectory(final Path changelogDirectory, final String releaseVersion) {
        return changelogDirectory.resolve(releaseVersion);
    }

    public static Path releaseXmlFile(final Path releaseDirectory) {
        return releaseDirectory.resolve(".release.xml");
    }

    public static Path releaseChangelogTemplateFile(final Path releaseDirectory) {
        return releaseDirectory.resolve(".changelog.adoc.ftl");
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy