Пример #1
0
bool rab::RollABall::ProcessData( Options const& options, Config& config, DiffEncoders const& diffEncoders, LogOutput_t& out )
{
	bool result = true;

	if( diffEncoders.Empty() )
	{
		out << "No encoders added!" << std::endl;
		return false;
	}

	out << "Building optimized regular expressions..." << std::endl;
	config.BuildRegexps();

	FolderInfo rootFolder;
	BuildFileTree( options, config, rootFolder, out );

	zip::ZipArchiveOutput zipOut;
	if( !zipOut.Open( options.packageFile, true, config.zipCompressionLevel ) )
	{
		out << "Can't open zip archive " << options.packageFile << " zip error: " << zipOut.ErrorMessage() << std::endl;
		return false;
	}

	result &= BuildTempCopies( options, config, rootFolder, zipOut, out );
	result &= BuildDiffs( options, config, diffEncoders, rootFolder, zipOut, out );
	result &= GatherSha1( options, config, rootFolder, out );

	result &= WriteRegistry( options, config, rootFolder, zipOut, out );	

	if( !zipOut.Close() )
	{
		out << "Can't close zip archive " << options.packageFile << " zip error: " << zipOut.ErrorMessage() << std::endl;
		result = false;
	}

	if( result )
		out << "Successfully done!" << std::endl;
	else
		out << "FAILED." << std::endl;

	return result;
}