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

com.github.jengelman.gradle.plugins.shadow.tasks.DefaultInheritManifest.groovy Maven / Gradle / Ivy

package com.github.jengelman.gradle.plugins.shadow.tasks

import org.gradle.api.Action
import org.gradle.api.Project
import org.gradle.api.internal.file.FileResolver
import org.gradle.api.java.archives.Attributes
import org.gradle.api.java.archives.Manifest
import org.gradle.api.java.archives.ManifestException
import org.gradle.api.java.archives.ManifestMergeSpec
import org.gradle.api.java.archives.internal.DefaultManifest
import org.gradle.api.java.archives.internal.DefaultManifestMergeSpec

class DefaultInheritManifest implements InheritManifest {

    private List inheritMergeSpecs = []

    private final transient Project project

    private final FileResolver fileResolver

    private final Manifest internalManifest

    DefaultInheritManifest(Project project, FileResolver fileResolver) {
        this.project = project
        this.internalManifest = new DefaultManifest(fileResolver)
        this.fileResolver = fileResolver
    }

    InheritManifest inheritFrom(Object... inheritPaths) {
        inheritFrom(inheritPaths, null)
        return this
    }

    InheritManifest inheritFrom(Object inheritPaths, Closure closure) {
        DefaultManifestMergeSpec mergeSpec = new DefaultManifestMergeSpec()
        mergeSpec.from(inheritPaths)
        inheritMergeSpecs.add(mergeSpec)
        project.configure(mergeSpec, closure)
        return this
    }

    @Override
    Attributes getAttributes() {
        return internalManifest.getAttributes()
    }

    @Override
    Map getSections() {
        return internalManifest.getSections()
    }

    @Override
    Manifest attributes(Map map) throws ManifestException {
        internalManifest.attributes(map)
        return this
    }

    @Override
    Manifest attributes(Map map, String s) throws ManifestException {
        internalManifest.attributes(map, s)
        return this
    }

    @Override
    DefaultManifest getEffectiveManifest() {
        DefaultManifest base = new DefaultManifest(fileResolver)
        inheritMergeSpecs.each {
            base = it.merge(base, fileResolver)
        }
        base.from internalManifest
        return base.getEffectiveManifest()
    }

    Manifest writeTo(Writer writer) {
        this.getEffectiveManifest().writeTo((Object) writer)
        return this
    }

    @Override
    Manifest writeTo(Object o) {
        this.getEffectiveManifest().writeTo(o)
        return this
    }

    @Override
    Manifest from(Object... objects) {
        internalManifest.from(objects)
        return this
    }

    @Override
    Manifest from(Object o, Closure closure) {
        internalManifest.from(o, closure)
        return this
    }

    @Override
    Manifest from(Object o, Action action) {
        internalManifest.from(o, action)
        return this
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy