module workspaced.com.fsworkspace;

import std.json;
import workspaced.api;

@component("fsworkspace") :

/// Load function for custom import management. Call with `{"cmd": "load", "components": ["fsworkspace"]}`
/// Calling this will make fsworkspace the (string) import path provider!
@load void start(string dir, string[] additionalPaths = [])
{
	paths = dir ~ additionalPaths;
	importPathProvider = &imports;
	stringImportPathProvider = &imports;
}

/// Unloads allocated strings
@unload void stop()
{
	paths.length = 0;
}

/// Adds new (string) import paths to the workspace
/// Call_With: `{"subcmd": "add:imports"}`
@arguments("subcmd", "add:imports")
void addImports(string[] values)
{
	paths ~= values;
}

/// Lists all (string) import paths
/// Call_With: `{"subcmd": "list:import"}`
@arguments("subcmd", "list:import")
string[] imports()
{
	return paths;
}

private __gshared:
string[] paths;