1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package io.wcm.devops.conga.plugins.aem.maven;
21
22 import static io.wcm.devops.conga.generator.util.FileUtil.getCanonicalPath;
23
24 import java.io.File;
25 import java.util.Arrays;
26 import java.util.Collections;
27 import java.util.List;
28 import java.util.Set;
29 import java.util.stream.Collectors;
30
31 import org.apache.maven.plugin.AbstractMojo;
32 import org.apache.maven.plugin.MojoExecutionException;
33 import org.apache.maven.plugins.annotations.Parameter;
34
35
36
37
38 abstract class AbstractCloudManagerMojo extends AbstractMojo {
39
40
41
42
43 @Parameter(property = "conga.environments")
44 private String[] environments;
45
46
47
48
49 @Parameter(property = "conga.nodes")
50 private String[] nodes;
51
52
53
54
55 @Parameter(defaultValue = "${project.build.directory}/configuration")
56 private File configurationDir;
57
58
59
60
61 @Parameter(defaultValue = "${project.build.directory}")
62 private File target;
63
64
65
66
67 protected File getTargetDir() {
68
69 if (!target.exists() && !target.mkdirs()) {
70 throw new IllegalStateException("Unable to create target dir: " + getCanonicalPath(target));
71 }
72 return target;
73 }
74
75
76
77
78
79
80 protected List<File> getEnvironmentDir() throws MojoExecutionException {
81 List<File> directories = null;
82 Set<String> selectedEnvironments = toSet(this.environments);
83 if (configurationDir.exists() && configurationDir.isDirectory()) {
84 File[] files = configurationDir.listFiles();
85 if (files != null) {
86 directories = Arrays.stream(files)
87 .filter(File::isDirectory)
88 .filter(dir -> (selectedEnvironments.isEmpty() || selectedEnvironments.contains(dir.getName())))
89 .collect(Collectors.toList());
90 }
91 }
92 if (directories == null || directories.isEmpty()) {
93 throw new MojoExecutionException("No matching environment directory found in " + getCanonicalPath(configurationDir));
94 }
95 return directories;
96 }
97
98
99
100
101
102
103 protected boolean isEnvironmentConfiguredExplicitely(String environment) {
104 Set<String> selectedEnvironments = toSet(this.environments);
105 return selectedEnvironments.contains(environment);
106 }
107
108
109
110
111
112
113 protected List<File> getNodeDirs(File environmentDir) {
114 Set<String> selectedNodes = toSet(this.nodes);
115 File[] files = environmentDir.listFiles();
116 if (files != null) {
117 return Arrays.stream(files)
118 .filter(File::isDirectory)
119 .filter(dir -> selectedNodes.isEmpty() || selectedNodes.contains(dir.getName()))
120 .collect(Collectors.toList());
121 }
122 else {
123 return Collections.emptyList();
124 }
125 }
126
127 private static Set<String> toSet(String[] values) {
128 if (values != null) {
129 return Set.of(values);
130 }
131 else {
132 return Set.of();
133 }
134 }
135
136 }