Merge pull request #1805 from yueh/feature-recipes-refactoring
Reorganizes the recipes in a more reasonable way.
This commit is contained in:
@@ -22,6 +22,7 @@ package appeng.core;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.net.URISyntaxException;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
import com.google.common.base.Preconditions;
|
||||
@@ -29,7 +30,6 @@ import com.google.common.base.Preconditions;
|
||||
import org.apache.commons.io.FileUtils;
|
||||
|
||||
import appeng.api.recipes.IRecipeHandler;
|
||||
import appeng.api.recipes.IRecipeLoader;
|
||||
import appeng.recipes.loader.ConfigLoader;
|
||||
import appeng.recipes.loader.JarLoader;
|
||||
import appeng.recipes.loader.RecipeResourceCopier;
|
||||
@@ -69,11 +69,7 @@ public class RecipeLoader implements Runnable
|
||||
final File readmeGenDest = new File( generatedRecipesDir, "README.html" );
|
||||
final File readmeUserDest = new File( userRecipesDir, "README.html" );
|
||||
|
||||
final IRecipeLoader oreDictLoader = new JarLoader( "/assets/appliedenergistics2/oredict/" );
|
||||
this.handler.parseRecipes( oreDictLoader, "vanilla.oredict" );
|
||||
this.handler.parseRecipes( oreDictLoader, "ae2.oredict" );
|
||||
|
||||
// generates generated and user recipes dir
|
||||
// generates generated and user recipes dir
|
||||
// will clean the generated every time to keep it up to date
|
||||
// copies over the recipes in the jar over to the generated folder
|
||||
// copies over the readmes
|
||||
|
||||
@@ -88,22 +88,60 @@ public class RecipeResourceCopier
|
||||
Preconditions.checkNotNull( destination );
|
||||
Preconditions.checkArgument( destination.isDirectory() );
|
||||
|
||||
final String[] listing = this.getResourceListing( this.getClass(), this.root );
|
||||
this.copyTo( destination, this.root );
|
||||
}
|
||||
|
||||
/**
|
||||
* @see {RecipeResourceCopier#copyTo(File)}
|
||||
*
|
||||
* @param destination destination folder to which the recipes are copied to
|
||||
* @param directory the folder to copy.
|
||||
*
|
||||
* @throws URISyntaxException {@see #getResourceListing}
|
||||
* @throws IOException {@see #getResourceListing} and if copying the detected resource to file is not possible
|
||||
*/
|
||||
private void copyTo( File destination, String directory ) throws URISyntaxException, IOException
|
||||
{
|
||||
assert destination != null;
|
||||
assert directory != null;
|
||||
|
||||
final String[] listing = this.getResourceListing( this.getClass(), directory );
|
||||
for( String list : listing )
|
||||
{
|
||||
if( list.endsWith( ".recipe" ) || list.endsWith( ".html" ) )
|
||||
{
|
||||
final InputStream inStream = this.getClass().getResourceAsStream( '/' + this.root + list );
|
||||
final File outFile = new File( destination, list );
|
||||
if( !outFile.exists() )
|
||||
{
|
||||
if( inStream != null )
|
||||
{
|
||||
FileUtils.copyInputStreamToFile( inStream, outFile );
|
||||
inStream.close();
|
||||
}
|
||||
}
|
||||
this.copyFile( destination, directory, list );
|
||||
}
|
||||
else if( !list.contains( "." ) )
|
||||
{
|
||||
final File subDirectory = new File( destination, list );
|
||||
FileUtils.forceMkdir( subDirectory );
|
||||
this.copyTo( subDirectory, directory + list + "/" );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Copies a single file inside a folder to the destination.
|
||||
*
|
||||
* @param destination folder to which the file is copied to
|
||||
* @param directory the directory containing the file
|
||||
* @param fileName the fily to copy
|
||||
*
|
||||
* @throws IOException if copying the file is not possible
|
||||
*/
|
||||
private void copyFile( File destination, String directory, String fileName ) throws IOException
|
||||
{
|
||||
assert destination != null;
|
||||
assert fileName != null;
|
||||
|
||||
final InputStream inStream = this.getClass().getResourceAsStream( '/' + directory + fileName );
|
||||
final File outFile = new File( destination, fileName );
|
||||
|
||||
if( !outFile.exists() && inStream != null )
|
||||
{
|
||||
FileUtils.copyInputStreamToFile( inStream, outFile );
|
||||
inStream.close();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user