package org.bndtools.versioncontrol.ignores.manager.api; import java.io.File; import java.util.List; import org.bndtools.api.NamedPlugin; import org.osgi.annotation.versioning.ConsumerType; /** * <p> * The interface of a version control ignores plugin. * </p> * <p> * A version control ignores plugin can apply ignore globs (in Git format) to a directory that is under version control * of a certain version control system. * </p> * <p> * Bndtools internally always works with ignore globs in Git format. It is the responsibility of the plugin to interpret * those globs and translate them into the appropriate format. * </p> */ @ConsumerType public interface VersionControlIgnoresPlugin { /** * @return generic plugin information */ NamedPlugin getInformation(); /** * @return true when the version control system can store empty directories, false otherwise */ boolean canStoreEmptyDirectories(); /** * @param repositoryProviderId * the Eclipse plugin id that provides version control for a project * @return true when this plugin provides can apply version control ignore globs for the specified * repositoryProviderId */ boolean matchesRepositoryProviderId(String repositoryProviderId); /** * Apply version control ignore globs to a directory. * * @param dstDir * the destination directory * @param ignores * a list of ignore globs (in Git format). Can be empty, which specifically is the case when the * destination directory contains no files and when {@link #canStoreEmptyDirectories()} returned false. * @throws Exception * upon error(s) */ void addIgnores(File dstDir, List<String> ignores) throws Exception; }