#include <struo/struo.h>

void struo_Options_init(struct struo_Options *options) {
  alias_memory_clear(options, sizeof(*options));
  alias_DirectoryList_init(&options->asset_paths);
  alias_DirectoryList_init(&options->data_paths);
  struo_Options_add_asset_path(options, "./assets");
  struo_Options_add_data_path(options, "./data");
  struo_Options_set_build_path(options, "./.struo_build");
  struo_Options_set_output_path(options, "./.struo_output");
}

void struo_Options_add_asset_path(struct struo_Options *options, alias_str path) {
  alias_DirectoryList_add_path(&options->asset_paths, NULL, path);
}

void struo_Options_add_data_path(struct struo_Options *options, alias_str path) {
  alias_DirectoryList_add_path(&options->data_paths, NULL, path);
}

void struo_Options_set_build_path(struct struo_Options *options, alias_str path) {
  if(options->build_path != NULL) {
    alias_str_free(NULL, options->build_path);
  }
  options->build_path = alias_str_clone(NULL, path);
}

void struo_Options_set_output_path(struct struo_Options *options, alias_str path) {
  if(options->output_path != NULL) {
    alias_str_free(NULL, options->output_path);
  }
  options->output_path = alias_str_clone(NULL, path);
}