#include <stdlib.h>
#include <stdio.h>
#include <dervish.h>

void tsTclMergeDeclare(Tcl_Interp *interp);
void tsTclResolveDeclare(Tcl_Interp *interp);
void tsTclTargetsDeclare(Tcl_Interp *interp);
void tsTclTileDeclare(Tcl_Interp *interp);
extern "C" {
  void taTclDeclare(Tcl_Interp *interp);
  RET_CODE tsSchemaLoadFromTs(void);
}

void tsTclDeclare(Tcl_Interp *interp)
{
  // Load modules
  taTclDeclare(interp);
  tsTclMergeDeclare(interp);
  tsTclResolveDeclare(interp);
  tsTclTargetsDeclare(interp);
  tsTclTileDeclare(interp);

  // Load schema
  (void) tsSchemaLoadFromTs();

  char *script = (char *)getenv("TS_STARTUP");
  if (script != NULL) {
    char cmd[150];
    sprintf(cmd, "source %s", script);
    printf("Executing commands in %s", script);
    Tcl_Eval(interp, cmd);
    printf("%s\n", interp->result);
  }
}
