AtlatestRepositorysigil-studio
1/*
2 * main.c - Sigil Studio Test Harness
3 *
4 * Creates a VM, initializes studio modules, and runs a script file.
5 */
6
7#include <sigil/sigil.h>
8#include <stdio.h>
9#include <stdlib.h>
11/* Studio module init functions */
12extern void sigil__init_sigil_studio_app_module(SigilVM *vm);
13extern void sigil__init_sigil_studio_image_module(SigilVM *vm);
14extern void sigil__init_sigil_studio_graphics_module(SigilVM *vm);
15extern void sigil__init_sigil_studio_font_module(SigilVM *vm);
16extern void sigil__init_sigil_studio_audio_module(SigilVM *vm);
18int main(int argc, char *argv[])
20 if (argc < 2) {
21 fprintf(stderr, "Usage: %s <script.sgl>\n", argv[0]);
22 return 1;
23 }
25 const char *script_path = argv[1];
27 /* Create VM */
28 SigilVM *vm = sigil_vm_create();
29 if (!vm) {
30 fprintf(stderr, "Failed to create VM\n");
31 return 1;
32 }
34 /* Add load paths for stdlib and studio modules */
35 /* Parent sigil's stdlib */
36 sigil_vm_add_load_path(vm, "../../stdlib");
37 sigil_vm_add_load_path(vm, "../../build/boot/lib");
38 /* Studio modules (check compiled first, then source for development) */
39 sigil_vm_add_load_path(vm, "build/dev/lib");
40 sigil_vm_add_load_path(vm, "src/sigil");
42 /* Initialize studio native modules */
43 sigil__init_sigil_studio_app_module(vm);
44 sigil__init_sigil_studio_image_module(vm);
45 sigil__init_sigil_studio_graphics_module(vm);
46 sigil__init_sigil_studio_font_module(vm);
47 sigil__init_sigil_studio_audio_module(vm);
49 /* Load and run the script */
50 printf("Loading %s...\n", script_path);
51 int result = sigil_eval_file(vm, script_path);
53 if (result != 0) {
54 const char *err = sigil_error_message(vm);
55 if (err) {
56 fprintf(stderr, "Error: %s\n", err);
57 } else {
58 fprintf(stderr, "Script execution failed (no error message)\n");
59 }
60 }
62 /* Cleanup */
63 sigil_vm_destroy(vm);
65 return result;