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

de.saumya.mojo.gems.gem.Gem Maven / Gradle / Ivy

There is a newer version: 3.0.5
Show newest version
package de.saumya.mojo.gems.gem;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

import de.saumya.mojo.gems.spec.GemSpecification;

/**
 * A Gem with specification and list of files.
 * 
 * @author mkristian
 */
public class Gem {

    private final List files = new ArrayList();

    private final GemSpecification   spec;

    public Gem(final GemSpecification spec) {
        this.spec = spec;
    }

    public static String constructGemFileName(final String gemName,
            final String gemVersion, final String platform) {
        final StringBuilder sb = new StringBuilder();

        // gemspec.name - gemspec.version - gemspec.platform ".gem"
        sb.append(gemName).append("-").append(gemVersion);

        if (platform != null && !"ruby".equals(platform)) {
            // only non Ruby platform should be appended
            sb.append("-").append(platform);
        }

        // extension
        sb.append(".gem");

        return sb.toString();
    }

    private String add(final File source, final String path) {
        if (!source.isFile()) {
            throw new RuntimeException("only files are implemented: " + source);
        }
        this.files.add(new GemFileEntry(source, path));
        return path;
    }

    public List getGemFiles() {
        return this.files;
    }

    public void addFile(final File source) {
        addFile(source, source.getPath());
    }

    public void addFile(final File source, final String path) {
        this.spec.addFile(add(source, path));
    }

    public void addTestFile(final File source) {
        addTestFile(source, source.getPath());
    }

    public void addTestFile(final File source, final String path) {
        this.spec.addTestFile(add(source, path));
    }

    public void addExtraRdocFile(final File source) {
        addExtraRdocFile(source, source.getPath());
    }

    public void addExtraRdocFile(final File source, final String path) {
        this.spec.addExtraRdocFile(add(source, path));
    }

    public GemSpecification getSpecification() {
        return this.spec;
    }

    public String getGemFilename() {
        return constructGemFileName(this.spec.getName(), this.spec.getVersion()
                .toString(), this.spec.getPlatform());
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy