org.gradle.nativeplatform.fixtures.app.HelloWorldApp Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of gradle-api Show documentation
Show all versions of gradle-api Show documentation
Gradle 6.9.1 API redistribution.
/*
* Copyright 2013 the original author or authors.
*
* 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 org.gradle.nativeplatform.fixtures.app;
import org.apache.commons.io.FilenameUtils;
import org.gradle.api.Transformer;
import org.gradle.util.CollectionUtils;
import java.util.Collections;
import java.util.List;
public abstract class HelloWorldApp extends TestApp {
public static final String HELLO_WORLD = "Hello, World!";
public static final String HELLO_WORLD_FRENCH = "Bonjour, Monde!";
public String getEnglishOutput() {
return HELLO_WORLD + "\n12";
}
public String getFrenchOutput() {
return HELLO_WORLD_FRENCH + "\n12";
}
public String getCustomOutput(String value) {
return value + "\n12";
}
public String getExtraConfiguration() {
return "";
}
public String getExtraConfiguration(String binaryName) {
return "";
}
public String getSourceType() {
return getMainSource().getPath();
}
public String getSourceExtension() {
return FilenameUtils.getExtension(getMainSource().getName());
}
public List getPluginList() {
return Collections.singletonList(getNormalizedPluginName());
}
private String getNormalizedPluginName() {
return getSourceType().replaceAll("([a-z])([A-Z])", "$1-$2").toLowerCase();
}
public String getPluginScript() {
StringBuilder builder = new StringBuilder();
for (String plugin : getPluginList()) {
builder.append("apply plugin: '").append(plugin).append("'\n");
}
return builder.toString();
}
public String compilerArgs(String arg) {
return compilerConfig("args", arg);
}
public String compilerDefine(String define) {
return compilerConfig("define", define);
}
public String compilerDefine(String define, String value) {
return compilerConfig("define", define, value);
}
private String compilerConfig(String action, String... args) {
String quotedArgs = CollectionUtils.join(",", CollectionUtils.collect(args, new SingleQuotingTransformer()));
StringBuilder builder = new StringBuilder();
for (String plugin : getPluginList()) {
String compilerPrefix = getCompilerPrefix(plugin);
if (compilerPrefix == null) {
continue;
}
builder.append(compilerPrefix).append("Compiler.").append(action).append(" ").append(quotedArgs).append("\n");
}
return builder.toString();
}
private String getCompilerPrefix(String plugin) {
if (plugin.equals("c")) {
return "c";
}
if (plugin.equals("cpp")) {
return "cpp";
}
if (plugin.equals("objective-c")) {
return "objc";
}
if (plugin.equals("objective-cpp")) {
return "objcpp";
}
return null;
}
private static class SingleQuotingTransformer implements Transformer
© 2015 - 2025 Weber Informatics LLC | Privacy Policy