• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2021 The Dagger Authors.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package buildtests;
18 
19 import java.io.BufferedWriter;
20 import java.io.File;
21 import java.io.FileWriter;
22 import java.io.IOException;
23 import java.nio.file.Path;
24 
25 /** Used to create files for a Gradle module in a particular directory. */
26 public final class GradleModule {
create(File moduleDir)27   public static GradleModule create(File moduleDir) {
28     return new GradleModule(moduleDir);
29   }
30 
create(File projectDir, String moduleName)31   public static GradleModule create(File projectDir, String moduleName) {
32     return new GradleModule(new File(projectDir, moduleName));
33   }
34 
35   private final File moduleDir;
36   private final File moduleSrcDir;
37 
GradleModule(File moduleDir)38   private GradleModule(File moduleDir) {
39     this.moduleDir = moduleDir;
40     this.moduleSrcDir = new File(moduleDir, "src/main/java/");
41   }
42 
getDir()43   public Path getDir() {
44     return moduleDir.toPath();
45   }
46 
addBuildFile(String... content)47   public GradleModule addBuildFile(String... content) throws IOException {
48     writeFile(createFile(moduleDir, "build.gradle"), content);
49     return this;
50   }
51 
addSettingsFile(String... content)52   public GradleModule addSettingsFile(String... content) throws IOException {
53     writeFile(createFile(moduleDir, "settings.gradle"), content);
54     return this;
55   }
56 
addFile(GradleFile gradleFile)57   public GradleModule addFile(GradleFile gradleFile) throws IOException {
58     return addFile(gradleFile.fileName(), gradleFile.fileContent());
59   }
60 
addFile(String fileName, String... content)61   public GradleModule addFile(String fileName, String... content) throws IOException {
62     writeFile(createFile(moduleDir, fileName), content);
63     return this;
64   }
65 
addSrcFiles(GradleFile... gradleFiles)66   public GradleModule addSrcFiles(GradleFile... gradleFiles) throws IOException {
67     for (GradleFile gradleFile : gradleFiles) {
68       addSrcFile(gradleFile.fileName(), gradleFile.fileContent());
69     }
70     return this;
71   }
72 
addSrcFile(GradleFile gradleFile)73   public GradleModule addSrcFile(GradleFile gradleFile) throws IOException {
74     return addSrcFile(gradleFile.fileName(), gradleFile.fileContent());
75   }
76 
addSrcFile(String fileName, String... content)77   public GradleModule addSrcFile(String fileName, String... content) throws IOException {
78     writeFile(createFile(moduleSrcDir, fileName), content);
79     return this;
80   }
81 
createFile(File dir, String fileName)82   private static File createFile(File dir, String fileName) {
83     File file = new File(dir, fileName);
84     file.getParentFile().mkdirs();
85     return file;
86   }
87 
writeFile(File destination, String... content)88   private static void writeFile(File destination, String... content) throws IOException {
89     BufferedWriter output = null;
90     try {
91       output = new BufferedWriter(new FileWriter(destination));
92       for (String line : content) {
93         output.write(line + "\n");
94       }
95     } finally {
96       if (output != null) {
97         output.close();
98       }
99     }
100   }
101 }
102