
net.minecraftforge.gradle.patcher.TaskProcessJson Maven / Gradle / Ivy
/*
* A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins.
* Copyright (C) 2013-2019 Minecraft Forge
* Copyright (C) 2020-2021 anatawa12 and other contributors
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
* USA
*/
package net.minecraftforge.gradle.patcher;
import java.io.File;
import java.io.IOException;
import java.util.Map;
import java.util.Map.Entry;
import net.minecraftforge.gradle.common.Constants;
import org.gradle.api.DefaultTask;
import org.gradle.api.tasks.InputFile;
import org.gradle.api.tasks.OutputFile;
import org.gradle.api.tasks.TaskAction;
import com.google.common.collect.Maps;
import com.google.common.io.Files;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
class TaskProcessJson extends DefaultTask
{
private Map replacements = Maps.newHashMap();
@InputFile
private Object releaseJson;
@OutputFile
private Object installerJson;
@OutputFile
private Object universalJson;
//@formatter:off
public TaskProcessJson() {}
//@formatter:on
@TaskAction
public void doTask() throws IOException
{
File inputFile = getReleaseJson();
File outFile = getInstallerJson();
File truncatedFile = getUniversalJson();
String input = Files.toString(inputFile, Constants.CHARSET);
for (Entry e : replacements.entrySet())
{
input = input.replace(e.getKey(), Constants.resolveString(e.getValue()));
}
// write the replaced output
Files.write(input.getBytes(Constants.CHARSET), outFile);
// get just the useful data
Gson gson = (new GsonBuilder()).setPrettyPrinting().create();
input = gson.toJson(gson.fromJson(input, Map.class).get("versionInfo"));
// write the useful truncated data
Files.write(input.getBytes(Constants.CHARSET), truncatedFile);
}
public Map getReplacements()
{
return replacements;
}
public void addReplacement(Object key, Object value)
{
replacements.put(Constants.resolveString(key), value);
}
public void addReplacements(Map things)
{
replacements.putAll(things);
}
public File getReleaseJson()
{
return getProject().file(releaseJson);
}
public void setReleaseJson(Object releaseJson)
{
this.releaseJson = releaseJson;
}
protected boolean isReleaseJsonNull()
{
return releaseJson == null;
}
protected File getInstallerJson()
{
return getProject().file(installerJson);
}
protected void setInstallerJson(Object installerJson)
{
this.installerJson = installerJson;
}
protected File getUniversalJson()
{
return getProject().file(universalJson);
}
protected void setUniversalJson(Object universalJson)
{
this.universalJson = universalJson;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy