package com.github.signed.changelog; import static java.util.stream.Collectors.toList; import java.util.ArrayList; import java.util.List; import java.util.function.Supplier; public class ChangeLogBuilder { private final HeaderBuilder header = new HeaderBuilder(); private final List<Supplier<Version>> versions = new ArrayList<>(); public HeaderBuilder header() { return header; } public VersionBuilder version() { VersionBuilder versionBuilder = new VersionBuilder(); version(versionBuilder::build); return versionBuilder; } public ChangeLogBuilder version(Supplier<Version> versionSupplier) { versions.add(versionSupplier); return this; } public ChangeLog build() { return new ChangeLog(header.build(), versions.stream().map(Supplier::get).collect(toList())); } }