
#ifndef DSR_BUILDER_ANALYZER_MODULE
#define DSR_BUILDER_ANALYZER_MODULE

#include "../../../DFPSR/api/fileAPI.h"
#include "builderTypes.h"

using namespace dsr;

// Analyze using calls from the machine
void analyzeFromFile(ProjectContext &context, ReadableString entryPath);
// Call from main when done analyzing source files
void resolveDependencies(ProjectContext &context);

// Visualize
void printDependencies(ProjectContext &context);

// Build anything in projectPath.
void buildFromFolder(SessionContext &output, ReadableString projectPath, Machine &sharedSettings);

// Create a project from crawling a single source file and build it.
void buildFromFile(SessionContext &output, ReadableString mainPath, Machine &sharedSettings);

// Build the project in projectFilePath.
// Settings must be taken by value to prevent side-effects from spilling over between different scripts.
void buildProject(SessionContext &output, ReadableString projectFilePath, Machine &sharedSettings);

// Build all projects in projectFolderPath.
void buildProjects(SessionContext &output, ReadableString projectFolderPath, Machine &sharedSettings);

void gatherBuildInstructions(SessionContext &output, ProjectContext &context, Machine &settings, ReadableString programPath);

#endif
