/* * Copyright 2017 ThoughtWorks, Inc. * * Licensed 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 com.thoughtworks.go.helper; import java.util.Arrays; import java.util.List; import com.thoughtworks.go.config.CaseInsensitiveString; import com.thoughtworks.go.config.materials.*; import com.thoughtworks.go.config.materials.dependency.DependencyMaterial; import com.thoughtworks.go.config.materials.git.GitMaterial; import com.thoughtworks.go.config.materials.mercurial.HgMaterial; import com.thoughtworks.go.config.materials.perforce.P4Material; import com.thoughtworks.go.config.materials.svn.SvnMaterial; import com.thoughtworks.go.config.materials.tfs.TfsMaterial; import com.thoughtworks.go.domain.materials.Material; import com.thoughtworks.go.domain.config.Configuration; import com.thoughtworks.go.domain.config.ConfigurationProperty; import com.thoughtworks.go.domain.packagerepository.ConfigurationPropertyMother; import com.thoughtworks.go.domain.packagerepository.PackageDefinition; import com.thoughtworks.go.domain.packagerepository.PackageDefinitionMother; import com.thoughtworks.go.domain.packagerepository.PackageRepository; import com.thoughtworks.go.domain.packagerepository.PackageRepositoryMother; import com.thoughtworks.go.domain.scm.SCM; import com.thoughtworks.go.domain.scm.SCMMother; import com.thoughtworks.go.security.GoCipher; import com.thoughtworks.go.util.command.UrlArgument; public class MaterialsMother { public static Materials defaultMaterials() { return defaultSvnMaterialsWithUrl("http://some/svn/url"); } public static Materials defaultSvnMaterialsWithUrl(String svnUrl) { return new Materials(svnMaterial(svnUrl, "svnDir", null, null, false, null)); } public static Materials multipleMaterials() { Materials materials = new Materials(); materials.add(svnMaterial("http://svnurl")); materials.add(hgMaterial("http://hgurl", "hgdir")); materials.add(dependencyMaterial("cruise", "dev")); return materials; } public static Materials twoMaterials() { Materials materials = new Materials(); materials.add(svnMaterial("http://svnurl")); materials.add(hgMaterial("http://hgurl", "hgdir")); return materials; } public static PackageMaterial packageMaterial(){ PackageMaterial material = new PackageMaterial("p-id"); material.setId(1); PackageRepository repository = PackageRepositoryMother.create("repo-id", "repo-name", "pluginid", "version", new Configuration(ConfigurationPropertyMother.create("k1", false, "repo-v1"), ConfigurationPropertyMother.create("k2", false, "repo-v2"))); PackageDefinition packageDefinition = PackageDefinitionMother.create("p-id", "package-name", new Configuration(ConfigurationPropertyMother.create("k3", false, "package-v1")), repository); material.setPackageDefinition(packageDefinition); repository.getPackages().add(packageDefinition); return material; } public static PackageMaterial packageMaterial(String repoId, String repoName, String pkgId, String pkgName, ConfigurationProperty... properties) { return packageMaterial(repoId, repoName, pkgId, pkgName, "pluginid", "version", Arrays.asList(properties), Arrays.asList(properties)); } public static PackageMaterial packageMaterial(String repoId, String repoName, String pkgId, String pkgName, final String pluginid, final String version, List<ConfigurationProperty> repoProperties, List<ConfigurationProperty> packageProperties) { PackageRepository repository = PackageRepositoryMother.create(repoId, repoName, pluginid, version, new Configuration((ConfigurationProperty[]) repoProperties.toArray())); PackageDefinition packageDefinition = PackageDefinitionMother.create(pkgId, pkgName, new Configuration((ConfigurationProperty[]) packageProperties.toArray()), repository); repository.getPackages().add(packageDefinition); PackageMaterial material = new PackageMaterial(pkgId); material.setId(1); material.setPackageDefinition(packageDefinition); return material; } public static PluggableSCMMaterial pluggableSCMMaterial() { ConfigurationProperty k1 = ConfigurationPropertyMother.create("k1", false, "v1"); ConfigurationProperty k2 = ConfigurationPropertyMother.create("k2", false, "v2"); return pluggableSCMMaterial("scm-id", "scm-name", k1, k2); } public static PluggableSCMMaterial pluggableSCMMaterial(String scmId, String scmName, ConfigurationProperty... properties) { return pluggableSCMMaterial(scmId, scmName, "pluginid", "version", Arrays.asList(properties)); } public static PluggableSCMMaterial pluggableSCMMaterial(String scmId, String scmName, final String pluginid, final String version, List<ConfigurationProperty> properties) { PluggableSCMMaterial material = new PluggableSCMMaterial(scmId); material.setId(1); SCM scmConfig = SCMMother.create(scmId, scmName, pluginid, version, new Configuration((ConfigurationProperty[]) properties.toArray())); material.setSCMConfig(scmConfig); return material; } public static DependencyMaterial dependencyMaterial(String pipelineName, String stageName) { return new DependencyMaterial(new CaseInsensitiveString(pipelineName), new CaseInsensitiveString(stageName)); } public static DependencyMaterial dependencyMaterial() { return new DependencyMaterial(new CaseInsensitiveString("pipeline-name"), new CaseInsensitiveString("stage-name")); } public static Materials hgMaterials(String url) { return hgMaterials(url, null); } public static Materials hgMaterials(String url, String folder) { return new Materials(hgMaterial(url, folder)); } public static HgMaterial hgMaterial(String url, String folder) { final HgMaterial material = new HgMaterial(url, folder); material.setAutoUpdate(true); return material; } public static HgMaterial hgMaterial() { return new HgMaterial("hg-url", null); } public static HgMaterial hgMaterial(String url) { return hgMaterial(url, null); } public static Materials gitMaterials(String url) { return gitMaterials(url, null, null); } public static Materials gitMaterials(String url, String branch) { return gitMaterials(url, null, branch); } public static Materials gitMaterials(String url, String submoduleFolder, String branch) { return new Materials(gitMaterial(url, submoduleFolder, branch)); } public static ScmMaterial gitMaterial(String url) { return gitMaterial(url, null, null); } public static GitMaterial gitMaterial(String url, String submoduleFolder, String branch) { GitMaterial gitMaterial = new GitMaterial(url, branch); gitMaterial.setSubmoduleFolder(submoduleFolder); return gitMaterial; } public static Materials p4Materials(String view) { P4Material material = p4Material("localhost:1666", "user", "password", view, true); return new Materials(material); } public static P4Material p4Material() { return p4Material("serverAndPort", null, null, "view", false); } public static P4Material p4Material(String serverAndPort, String userName, String password, String view, boolean useTickets) { final P4Material material = new P4Material(serverAndPort, view, userName); material.setAutoUpdate(true); material.setPassword(password); material.setUseTickets(useTickets); return material; } public static TfsMaterial tfsMaterial(String url) { return new TfsMaterial(new GoCipher(), new UrlArgument(url), "username", "domain", "password", "project-path"); } public static SvnMaterial svnMaterial(String svnUrl, String folder) { return svnMaterial(svnUrl, folder, "user", "pass", true, "*.doc"); } public static SvnMaterial svnMaterial(String svnUrl, String folder, String userName, String password, boolean checkExternals, String filterPattern) { SvnMaterial svnMaterial = new SvnMaterial(svnUrl, userName, password, checkExternals, folder); if (filterPattern != null) svnMaterial.setFilter(new Filter(new IgnoredFiles(filterPattern))); return svnMaterial; } public static SvnMaterial svnMaterial(String svnUrl) { return svnMaterial(svnUrl, "svnDir"); } public static SvnMaterial svnMaterial() { return svnMaterial("url"); } public static Material filteredHgMaterial(String pattern) { HgMaterial material = hgMaterial(); material.setFilter(new Filter(new IgnoredFiles(pattern))); return material; } }