#include <iostream>
#include <componentThread.h>
#include <marionette/marionette.h>


int main(int argc, char *argv[], char *envp[])
{
	/* We don't do anything inside of main()
	 * Main merely waits for the marionette thread to exit.
	 */
	std::cout << "CRT:" << __func__ << ": about to JOLT Mrntt with cmdline args"
		<< '\n';
	smo::mrntt::thread->getIoService().post(
		[argc, argv, envp]()
		{
			std::cout << "Mrntt:" << __func__ << ":JOLTED: setting cmdline args"
				<< '\n';
			smo::CrtCommandLineArgs::set(argc, argv, envp);
			smo::mrntt::thread->getIoService().stop();
		}
	);

	smo::mrntt::thread->thread.join();
	std::cout << "CRT:" << __func__ << ": Mrntt exited with code '"
		<< smo::mrntt::exitCode << "'\n";
	return smo::mrntt::exitCode;
}
