85 lines
1.9 KiB
Text
85 lines
1.9 KiB
Text
#run {
|
|
set_build_options_dc(.{ do_output = false });
|
|
args := get_build_options().compile_time_command_line;
|
|
|
|
usage :: () {
|
|
print("creates the template for a module or submodule\n\n");
|
|
print("usage: jai _make_module.jai - (module|submodule) [path]\n\n");
|
|
print("options:\n");
|
|
print("\tpath: a simple module path without an extension (example: 'foo' or 'foo/bar')\n");
|
|
}
|
|
|
|
if args.count < 2 {
|
|
usage();
|
|
return;
|
|
}
|
|
|
|
kind := trim(args[0]);
|
|
if kind.count == 0 {
|
|
usage();
|
|
return;
|
|
}
|
|
|
|
module_path := trim(args[1]);
|
|
if module_path.count == 0 {
|
|
usage();
|
|
return;
|
|
}
|
|
|
|
if kind == {
|
|
case "module";
|
|
assert(make_directory_if_it_does_not_exist(module_path), "could not create module directory: '%'", module_path);
|
|
entry_file := tprint("%/module.jai", module_path);
|
|
assert(write_entire_file(entry_file, tprint(MODULE_STRING, module_path)), "could not create %", entry_file);
|
|
|
|
case "submodule";
|
|
entry_file := tprint("%.jai", module_path);
|
|
assert(write_entire_file(entry_file, tprint(SUBMODULE_STRING, module_path)), "could not create %", entry_file);
|
|
|
|
case;
|
|
usage();
|
|
return;
|
|
}
|
|
}
|
|
|
|
MODULE_STRING :: #string END
|
|
// %1 is a module that does things.
|
|
//
|
|
#module_parameters(RUN_TESTS := false, IMPORTED_INTERNALLY := false);
|
|
|
|
#scope_export;
|
|
|
|
#if !IMPORTED_INTERNALLY {
|
|
// #import "jc/%1/submodule"(RUN_TESTS);
|
|
// ...
|
|
}
|
|
END;
|
|
|
|
SUBMODULE_STRING :: #string END
|
|
// %1 is a module that does stuff.
|
|
//
|
|
#module_parameters(RUN_TESTS := false);
|
|
|
|
#scope_export;
|
|
|
|
// ...
|
|
|
|
#scope_file;
|
|
|
|
// ----------------------------------------------------------
|
|
// TESTS
|
|
// ----------------------------------------------------------
|
|
|
|
#if RUN_TESTS #run {
|
|
test :: #import "jc/meta/test";
|
|
|
|
test.run("%1:works", t => {
|
|
test.expect(t, true);
|
|
});
|
|
}
|
|
END;
|
|
|
|
#import "File";
|
|
#import "Basic";
|
|
#import "String";
|
|
#import "Compiler";
|