/*
 *  JoeyDev
 *  Copyright (C) 2018-2023 Scott Duensing <scott@kangaroopunch.com>
 *
 *  This software is provided 'as-is', without any express or implied
 *  warranty.  In no event will the authors be held liable for any damages
 *  arising from the use of this software.
 *
 *  Permission is granted to anyone to use this software for any purpose,
 *  including commercial applications, and to alter it and redistribute it
 *  freely, subject to the following restrictions:
 *
 *  1. The origin of this software must not be misrepresented; you must not
 *     claim that you wrote the original software. If you use this software
 *     in a product, an acknowledgment in the product documentation would be
 *     appreciated but is not required.
 *  2. Altered source versions must be plainly marked as such, and must not be
 *     misrepresented as being the original software.
 *  3. This notice may not be removed or altered from any source distribution.
*/


#include "stddclmr.h"
#include "common.h"
#include "scintillaHeaders.h"
#include "joeydev.h"
#include "http.h"
#include "ssh.h"
#include "utils.h"


char *__resourcePath = NULL;


int main(int argc, char **argv) {

#ifdef DEBUG_MODE
	unlink("memwatch.log");
#endif

	gtk_init(&argc, &argv);

	// Make sure we have a config & resources folder.
	__resourcePath = utilCreateString("%s%cjoeydev%cresources%c", g_get_user_config_dir(), UTIL_PATH_CHAR, UTIL_PATH_CHAR, UTIL_PATH_CHAR);
	utilMkDirP(__resourcePath, 0777);

	httpStartup();
	sshStartup();

	// Extract files we need later.
	utilExtractResource("/com/kangaroopunch/joeydev/resources/libtcc.a");
	utilExtractResource("/com/kangaroopunch/joeydev/resources/libtcc1.a");
	utilExtractResource("/com/kangaroopunch/joeydev/resources/float.h");
	utilExtractResource("/com/kangaroopunch/joeydev/resources/stdalign.h");
	utilExtractResource("/com/kangaroopunch/joeydev/resources/stdarg.h");
	utilExtractResource("/com/kangaroopunch/joeydev/resources/stdatomic.h");
	utilExtractResource("/com/kangaroopunch/joeydev/resources/stdbool.h");
	utilExtractResource("/com/kangaroopunch/joeydev/resources/stddef.h");
	utilExtractResource("/com/kangaroopunch/joeydev/resources/stdnoreturn.h");
	utilExtractResource("/com/kangaroopunch/joeydev/resources/tccdefs.h");
	utilExtractResource("/com/kangaroopunch/joeydev/resources/tcclib.h");
	utilExtractResource("/com/kangaroopunch/joeydev/resources/missing.h");
	utilExtractResource("/com/kangaroopunch/joeydev/resources/recipe.h");
	utilExtractResource("/com/kangaroopunch/joeydev/resources/recipe.c");
	utilExtractResource("/com/kangaroopunch/joeydev/resources/gitignore");
	utilExtractResource("/com/kangaroopunch/joeydev/resources/gitattributes");

	winJoeyDevCreate();
	gtk_main();

	scintilla_release_resources();
	sshShutdown();
	httpShutdown();

	DEL(__resourcePath);

	return 0;
}
