mirror of
https://github.com/ganelson/inform.git
synced 2024-06-26 04:00:43 +03:00
Shared command line options
This commit is contained in:
parent
1338ef1cde
commit
f432ac019f
|
@ -17,47 +17,40 @@ this plan out.
|
|||
=
|
||||
pathname *path_to_inbuild = NULL;
|
||||
pathname *path_to_tools = NULL;
|
||||
linked_list *nest_list = NULL;
|
||||
|
||||
int inbuild_task = INSPECT_TTASK;
|
||||
int dry_run_mode = FALSE;
|
||||
linked_list *targets = NULL; /* of |inbuild_copy| */
|
||||
inbuild_nest *destination_nest = NULL;
|
||||
text_stream *filter_text = NULL;
|
||||
linked_list *inbuild_nest_list = NULL;
|
||||
|
||||
int main(int argc, char **argv) {
|
||||
Foundation::start();
|
||||
WordsModule::start();
|
||||
InbuildModule::start();
|
||||
targets = NEW_LINKED_LIST(inbuild_copy);
|
||||
nest_list = NEW_LINKED_LIST(inbuild_nest);
|
||||
@<Read the command line@>;
|
||||
if (FIRST_IN_LINKED_LIST(inbuild_nest, nest_list) == NULL)
|
||||
Nests::add_to_search_sequence(nest_list,
|
||||
Nests::new(Pathnames::from_text(I"inform7/Internal")));
|
||||
|
||||
path_to_inbuild = Pathnames::installation_path("INBUILD_PATH", I"inbuild");
|
||||
build_methodology *BM;
|
||||
if (path_to_tools) BM = BuildSteps::methodology(path_to_tools, FALSE);
|
||||
else BM = BuildSteps::methodology(Pathnames::up(path_to_inbuild), TRUE);
|
||||
if (dry_run_mode == FALSE) BM->methodology = SHELL_METHODOLOGY;
|
||||
if (Str::len(filter_text) > 0) {
|
||||
if (LinkedLists::len(nest_list) == 0) {
|
||||
Errors::with_text("can't apply this, since no nests have been given: '%S'", filter_text);
|
||||
TEMPORARY_TEXT(errors);
|
||||
inbuild_requirement *req = Requirements::from_text(filter_text, errors);
|
||||
if (Str::len(errors) > 0) {
|
||||
Errors::with_text("requirement malformed: %S", errors);
|
||||
} else {
|
||||
TEMPORARY_TEXT(errors);
|
||||
inbuild_requirement *req = Requirements::from_text(filter_text, errors);
|
||||
if (Str::len(errors) > 0) {
|
||||
Errors::with_text("requirement malformed: %S", errors);
|
||||
} else {
|
||||
linked_list *L = NEW_LINKED_LIST(inbuild_search_result);
|
||||
Nests::search_for(req, nest_list, L);
|
||||
inbuild_search_result *R;
|
||||
LOOP_OVER_LINKED_LIST(R, inbuild_search_result, L) {
|
||||
ADD_TO_LINKED_LIST(R->copy, inbuild_copy, targets);
|
||||
}
|
||||
linked_list *L = NEW_LINKED_LIST(inbuild_search_result);
|
||||
Nests::search_for(req, inbuild_nest_list, L);
|
||||
inbuild_search_result *R;
|
||||
LOOP_OVER_LINKED_LIST(R, inbuild_search_result, L) {
|
||||
ADD_TO_LINKED_LIST(R->copy, inbuild_copy, targets);
|
||||
}
|
||||
DISCARD_TEXT(errors);
|
||||
}
|
||||
DISCARD_TEXT(errors);
|
||||
}
|
||||
inbuild_copy *C;
|
||||
LOOP_OVER_LINKED_LIST(C, inbuild_copy, targets) {
|
||||
|
@ -96,7 +89,6 @@ int main(int argc, char **argv) {
|
|||
@e TOOLS_CLSW
|
||||
@e CONTENTS_OF_CLSW
|
||||
@e MATCHING_CLSW
|
||||
@e NEST_CLSW
|
||||
@e COPY_TO_CLSW
|
||||
@e SYNC_TO_CLSW
|
||||
|
||||
|
@ -124,11 +116,15 @@ int main(int argc, char **argv) {
|
|||
L"apply to all works in nest(s) matching requirement X");
|
||||
CommandLine::declare_switch(CONTENTS_OF_CLSW, L"contents-of", 2,
|
||||
L"apply to all targets in the directory X");
|
||||
CommandLine::declare_switch(NEST_CLSW, L"nest", 2,
|
||||
L"add the nest at pathname X to the search list");
|
||||
SharedCLI::declare_options();
|
||||
|
||||
CommandLine::read(argc, argv, NULL, &Main::option, &Main::bareword);
|
||||
|
||||
if (LinkedLists::len(unsorted_nest_list) == 0)
|
||||
SharedCLI::add_nest(
|
||||
Pathnames::from_text(I"inform7/Internal"), INTERNAL_NEST_TAG);
|
||||
inbuild_nest_list = SharedCLI::nest_list();
|
||||
|
||||
@ =
|
||||
void Main::option(int id, int val, text_stream *arg, void *state) {
|
||||
switch (id) {
|
||||
|
@ -140,16 +136,14 @@ void Main::option(int id, int val, text_stream *arg, void *state) {
|
|||
case MATCHING_CLSW: filter_text = Str::duplicate(arg); break;
|
||||
case CONTENTS_OF_CLSW: Main::load_many(Pathnames::from_text(arg)); break;
|
||||
case DRY_CLSW: dry_run_mode = val; break;
|
||||
case NEST_CLSW: Nests::add_to_search_sequence(nest_list,
|
||||
Nests::new(Pathnames::from_text(arg))); break;
|
||||
case COPY_TO_CLSW: inbuild_task = COPY_TO_TTASK;
|
||||
destination_nest = Nests::new(Pathnames::from_text(arg));
|
||||
break;
|
||||
case SYNC_TO_CLSW: inbuild_task = SYNC_TO_TTASK;
|
||||
destination_nest = Nests::new(Pathnames::from_text(arg));
|
||||
break;
|
||||
default: internal_error("unimplemented switch");
|
||||
}
|
||||
SharedCLI::option(id, val, arg, state);
|
||||
}
|
||||
|
||||
void Main::bareword(int id, text_stream *arg, void *state) {
|
||||
|
|
91
inbuild/inbuild-module/Chapter 1/Shared CLI.w
Normal file
91
inbuild/inbuild-module/Chapter 1/Shared CLI.w
Normal file
|
@ -0,0 +1,91 @@
|
|||
[SharedCLI::] Shared CLI.
|
||||
|
||||
A subset of command-line options shared by the tools which incorporate this
|
||||
module.
|
||||
|
||||
@ We add the following switches:
|
||||
|
||||
@e NEST_CLSW
|
||||
@e INTERNAL_CLSW
|
||||
@e EXTERNAL_CLSW
|
||||
@e TRANSIENT_CLSW
|
||||
|
||||
=
|
||||
void SharedCLI::declare_options(void) {
|
||||
CommandLine::declare_switch(NEST_CLSW, L"nest", 2,
|
||||
L"add the nest at pathname X to the search list");
|
||||
}
|
||||
|
||||
pathname *shared_transient_resources = NULL;
|
||||
|
||||
void SharedCLI::option(int id, int val, text_stream *arg, void *state) {
|
||||
switch (id) {
|
||||
case NEST_CLSW: SharedCLI::add_nest(Pathnames::from_text(arg), GENERIC_NEST_TAG); break;
|
||||
case INTERNAL_CLSW: SharedCLI::add_nest(Pathnames::from_text(arg), INTERNAL_NEST_TAG); break;
|
||||
case EXTERNAL_CLSW: SharedCLI::add_nest(Pathnames::from_text(arg), EXTERNAL_NEST_TAG); break;
|
||||
case TRANSIENT_CLSW: shared_transient_resources = Pathnames::from_text(arg); break;
|
||||
}
|
||||
}
|
||||
|
||||
linked_list *unsorted_nest_list = NULL;
|
||||
linked_list *shared_nest_list = NULL;
|
||||
inbuild_nest *shared_internal_nest = NULL;
|
||||
inbuild_nest *shared_external_nest = NULL;
|
||||
|
||||
inbuild_nest *SharedCLI::add_nest(pathname *P, int tag) {
|
||||
if (unsorted_nest_list == NULL)
|
||||
unsorted_nest_list = NEW_LINKED_LIST(inbuild_nest);
|
||||
inbuild_nest *N = Nests::new(P);
|
||||
Nests::set_tag(N, tag);
|
||||
ADD_TO_LINKED_LIST(N, inbuild_nest, unsorted_nest_list);
|
||||
if ((tag == EXTERNAL_NEST_TAG) && (shared_external_nest == NULL))
|
||||
shared_external_nest = N;
|
||||
if ((tag == INTERNAL_NEST_TAG) && (shared_internal_nest == NULL))
|
||||
shared_internal_nest = N;
|
||||
if (tag == INTERNAL_NEST_TAG) Nests::protect(N);
|
||||
return N;
|
||||
}
|
||||
|
||||
inbuild_nest *SharedCLI::internal(void) {
|
||||
return shared_internal_nest;
|
||||
}
|
||||
|
||||
inbuild_nest *SharedCLI::external(void) {
|
||||
return shared_external_nest;
|
||||
}
|
||||
|
||||
pathname *SharedCLI::transient(void) {
|
||||
if (shared_transient_resources == NULL)
|
||||
if (shared_external_nest)
|
||||
return shared_external_nest->location;
|
||||
return shared_transient_resources;
|
||||
}
|
||||
|
||||
@
|
||||
|
||||
@e NOT_A_NEST_TAG from 0
|
||||
@e MATERIALS_NEST_TAG
|
||||
@e EXTERNAL_NEST_TAG
|
||||
@e GENERIC_NEST_TAG
|
||||
@e INTERNAL_NEST_TAG
|
||||
|
||||
=
|
||||
linked_list *SharedCLI::nest_list(void) {
|
||||
if (shared_nest_list == NULL) {
|
||||
shared_nest_list = NEW_LINKED_LIST(inbuild_nest);
|
||||
inbuild_nest *N;
|
||||
LOOP_OVER_LINKED_LIST(N, inbuild_nest, unsorted_nest_list)
|
||||
if (Nests::get_tag(N) == MATERIALS_NEST_TAG)
|
||||
ADD_TO_LINKED_LIST(N, inbuild_nest, shared_nest_list);
|
||||
LOOP_OVER_LINKED_LIST(N, inbuild_nest, unsorted_nest_list)
|
||||
if (Nests::get_tag(N) == EXTERNAL_NEST_TAG)
|
||||
ADD_TO_LINKED_LIST(N, inbuild_nest, shared_nest_list);
|
||||
LOOP_OVER_LINKED_LIST(N, inbuild_nest, unsorted_nest_list)
|
||||
if (Nests::get_tag(N) == GENERIC_NEST_TAG)
|
||||
ADD_TO_LINKED_LIST(N, inbuild_nest, shared_nest_list);
|
||||
LOOP_OVER_LINKED_LIST(N, inbuild_nest, unsorted_nest_list)
|
||||
if (Nests::get_tag(N) == INTERNAL_NEST_TAG)
|
||||
ADD_TO_LINKED_LIST(N, inbuild_nest, shared_nest_list);
|
||||
}
|
||||
return shared_nest_list;
|
||||
}
|
|
@ -14,12 +14,12 @@ typedef struct extension_census {
|
|||
MEMORY_MANAGEMENT
|
||||
} extension_census;
|
||||
|
||||
extension_census *Extensions::Census::new(linked_list *L) {
|
||||
extension_census *Extensions::Census::new(void) {
|
||||
extension_census *C = CREATE(extension_census);
|
||||
C->search_list = L;
|
||||
C->built_in_tag = -2;
|
||||
C->materials_tag = -2;
|
||||
C->external_tag = -2;
|
||||
C->search_list = SharedCLI::nest_list();
|
||||
C->built_in_tag = INTERNAL_NEST_TAG;
|
||||
C->materials_tag = MATERIALS_NEST_TAG;
|
||||
C->external_tag = EXTERNAL_NEST_TAG;
|
||||
return C;
|
||||
}
|
||||
|
||||
|
|
|
@ -170,7 +170,8 @@ void Kits::request(text_stream *name) {
|
|||
}
|
||||
|
||||
#ifdef CORE_MODULE
|
||||
void Kits::determine(linked_list *nest_list) {
|
||||
void Kits::determine(void) {
|
||||
linked_list *nest_list = SharedCLI::nest_list();
|
||||
if (kits_requested == NULL) Kits::request(I"CommandParserKit");
|
||||
Kits::request(I"BasicInformKit");
|
||||
Languages::request_required_kits();
|
||||
|
@ -283,9 +284,19 @@ linked_list *Kits::list_of_inter_libraries(void) {
|
|||
requirements_list = NEW_LINKED_LIST(link_instruction);
|
||||
inform_kit *K;
|
||||
LOOP_OVER_LINKED_LIST(K, inform_kit, kits_to_include) {
|
||||
link_instruction *link = CodeGen::LinkInstructions::new(K->as_copy->location_if_path, K->attachment_point);
|
||||
link_instruction *link = CodeGen::LinkInstructions::new(
|
||||
K->as_copy->location_if_path, K->attachment_point);
|
||||
ADD_TO_LINKED_LIST(link, link_instruction, requirements_list);
|
||||
}
|
||||
return requirements_list;
|
||||
}
|
||||
#endif
|
||||
|
||||
linked_list *Kits::inter_paths(void) {
|
||||
linked_list *inter_paths = NEW_LINKED_LIST(pathname);
|
||||
inbuild_nest *N;
|
||||
linked_list *L = SharedCLI::nest_list();
|
||||
LOOP_OVER_LINKED_LIST(N, inbuild_nest, L)
|
||||
ADD_TO_LINKED_LIST(KitManager::path_within_nest(N), pathname, inter_paths);
|
||||
return inter_paths;
|
||||
}
|
||||
|
|
|
@ -6,6 +6,7 @@ Licence: Artistic License 2.0
|
|||
|
||||
Chapter 1: Setting Up
|
||||
Inbuild Module
|
||||
Shared CLI
|
||||
|
||||
Chapter 2: Conceptual Framework
|
||||
Conceptual Model
|
||||
|
|
|
@ -115,10 +115,8 @@ list is not exhaustive.
|
|||
@e CENSUS_CLSW
|
||||
@e CLOCK_CLSW
|
||||
@e DEBUG_CLSW
|
||||
@e EXTERNAL_CLSW
|
||||
@e FORMAT_CLSW
|
||||
@e CRASHALL_CLSW
|
||||
@e INTERNAL_CLSW
|
||||
@e KIT_CLSW
|
||||
@e NOINDEX_CLSW
|
||||
@e NOPROGRESS_CLSW
|
||||
|
@ -127,7 +125,6 @@ list is not exhaustive.
|
|||
@e REQUIRE_PROBLEM_CLSW
|
||||
@e RNG_CLSW
|
||||
@e SIGILS_CLSW
|
||||
@e TRANSIENT_CLSW
|
||||
@e PIPELINE_CLSW
|
||||
@e PIPELINE_FILE_CLSW
|
||||
@e PIPELINE_VARIABLE_CLSW
|
||||
|
@ -178,11 +175,10 @@ list is not exhaustive.
|
|||
L"use X as the user's home for installed material such as extensions");
|
||||
CommandLine::declare_switch(TRANSIENT_CLSW, L"transient", 2,
|
||||
L"use X for transient data such as the extensions census");
|
||||
SharedCLI::declare_options();
|
||||
|
||||
@<Establish our location in the file system@> =
|
||||
path_to_inform7 = Pathnames::installation_path("INFORM7_PATH", I"inform7");
|
||||
pathname *def_int = Pathnames::subfolder(Pathnames::up(path_to_inform7), I"Internal");
|
||||
Locations::set_default_internal(def_int);
|
||||
|
||||
@<With that done, configure all other settings@> =
|
||||
VirtualMachines::set_identifier(story_filename_extension);
|
||||
|
@ -227,7 +223,7 @@ list is not exhaustive.
|
|||
doc_references_top = lexer_wordcount - 1;
|
||||
|
||||
@<Work out our kit requirements@> =
|
||||
Kits::determine(I7_nest_list);
|
||||
Kits::determine();
|
||||
|
||||
@<Perform lexical analysis@> =
|
||||
ProgressBar::update_progress_bar(0, 0);
|
||||
|
@ -438,11 +434,6 @@ with "Output.i6t".
|
|||
Str::copy(Dictionaries::create_text(pipeline_vars, I"*in"), I"*memory");
|
||||
Str::copy(Dictionaries::create_text(pipeline_vars, I"*out"), Filenames::get_leafname(filename_of_compiled_i6_code));
|
||||
|
||||
linked_list *inter_paths = NEW_LINKED_LIST(pathname);
|
||||
inbuild_nest *N;
|
||||
LOOP_OVER_LINKED_LIST(N, inbuild_nest, I7_nest_list)
|
||||
ADD_TO_LINKED_LIST(KitManager::path_within_nest(N), pathname, inter_paths);
|
||||
|
||||
codegen_pipeline *SS = NULL;
|
||||
if (Str::len(inter_processing_pipeline) > 0) {
|
||||
SS = CodeGen::Pipeline::parse(inter_processing_pipeline, pipeline_vars);
|
||||
|
@ -452,7 +443,7 @@ with "Output.i6t".
|
|||
inbuild_requirement *req =
|
||||
Requirements::any_version_of(Works::new(pipeline_genre, inter_processing_file, NULL));
|
||||
linked_list *L = NEW_LINKED_LIST(inbuild_search_result);
|
||||
Nests::search_for(req, I7_nest_list, L);
|
||||
Nests::search_for(req, SharedCLI::nest_list(), L);
|
||||
if (LinkedLists::len(L) == 0) {
|
||||
WRITE_TO(STDERR, "Sought pipeline '%S'\n", inter_processing_file);
|
||||
Problems::Fatal::issue("The Inter pipeline could not be found");
|
||||
|
@ -470,7 +461,7 @@ with "Output.i6t".
|
|||
}
|
||||
CodeGen::Pipeline::set_repository(SS, Emit::tree());
|
||||
CodeGen::Pipeline::run(Filenames::get_path_to(filename_of_compiled_i6_code),
|
||||
SS, inter_paths, Kits::list_of_inter_libraries());
|
||||
SS, Kits::inter_paths(), Kits::list_of_inter_libraries());
|
||||
}
|
||||
LOG("Back end elapsed time: %dcs\n", ((int) (clock() - front_end)) / (CLOCKS_PER_SEC/100));
|
||||
}
|
||||
|
@ -571,12 +562,8 @@ void CoreMain::switch(int id, int val, text_stream *arg, void *state) {
|
|||
case PROJECT_CLSW:
|
||||
if (Str::includes(arg, I"#2oetMiq9bqxoxY")) Kits::request(I"BasicInformKit");
|
||||
Locations::set_project(arg); break;
|
||||
case INTERNAL_CLSW: Locations::set_internal(arg); break;
|
||||
case EXTERNAL_CLSW: Locations::set_external(arg); break;
|
||||
case TRANSIENT_CLSW: Locations::set_transient(arg); break;
|
||||
|
||||
default: internal_error("unimplemented switch");
|
||||
}
|
||||
SharedCLI::option(id, val, arg, state);
|
||||
}
|
||||
|
||||
void CoreMain::bareword(int id, text_stream *opt, void *state) {
|
||||
|
|
|
@ -11,12 +11,7 @@ these are stored in the following globals. Explanations are given below,
|
|||
not here.
|
||||
|
||||
= (early code)
|
||||
linked_list *I7_nest_list = NULL;
|
||||
|
||||
pathname *pathname_of_materials = NULL;
|
||||
pathname *pathname_of_external_folder = NULL;
|
||||
pathname *pathname_of_internal_folder = NULL;
|
||||
|
||||
pathname *pathname_of_extension_docs = NULL;
|
||||
pathname *pathname_of_extension_docs_inner = NULL;
|
||||
pathname *pathname_of_HTML_models = NULL;
|
||||
|
@ -30,7 +25,6 @@ pathname *pathname_of_released_figures = NULL;
|
|||
pathname *pathname_of_released_interpreter = NULL;
|
||||
pathname *pathname_of_released_sounds = NULL;
|
||||
pathname *pathname_of_transient_census_data = NULL;
|
||||
pathname *pathname_of_transient_external_resources = NULL;
|
||||
|
||||
@ And secondly, the files:
|
||||
|
||||
|
@ -40,7 +34,6 @@ filename *filename_of_cblorb_report = NULL;
|
|||
filename *filename_of_cblorb_report_model = NULL;
|
||||
filename *filename_of_compiled_i6_code = NULL;
|
||||
filename *filename_of_debugging_log = NULL;
|
||||
filename *filename_of_default_inter_pipeline = NULL;
|
||||
filename *filename_of_documentation_snippets = NULL;
|
||||
filename *filename_of_epsfile = NULL;
|
||||
filename *filename_of_existing_story_file = NULL;
|
||||
|
@ -74,23 +67,6 @@ void Locations::set_project(text_stream *loc) {
|
|||
pathname_of_project = Pathnames::from_text(loc);
|
||||
}
|
||||
|
||||
void Locations::set_internal(text_stream *loc) {
|
||||
pathname_of_internal_folder = Pathnames::from_text(loc);
|
||||
}
|
||||
|
||||
void Locations::set_default_internal(pathname *P) {
|
||||
if (pathname_of_internal_folder == NULL)
|
||||
pathname_of_internal_folder = P;
|
||||
}
|
||||
|
||||
void Locations::set_external(text_stream *loc) {
|
||||
pathname_of_external_folder = Pathnames::from_text(loc);
|
||||
}
|
||||
|
||||
void Locations::set_transient(text_stream *loc) {
|
||||
pathname_of_transient_external_resources = Pathnames::from_text(loc);
|
||||
}
|
||||
|
||||
int Locations::set_I7_source(text_stream *loc) {
|
||||
if (filename_of_i7_source) return FALSE;
|
||||
filename_of_i7_source = Filenames::from_text(loc);
|
||||
|
@ -115,6 +91,9 @@ and census mode, when it's scanning the file system for extensions.
|
|||
|
||||
=
|
||||
int Locations::set_defaults(int census_mode) {
|
||||
@<Materials folder@>;
|
||||
if (pathname_of_materials)
|
||||
SharedCLI::add_nest(pathname_of_materials, MATERIALS_NEST_TAG);
|
||||
@<Internal resources@>;
|
||||
@<External resources@>;
|
||||
@<Project resources@>;
|
||||
|
@ -123,22 +102,6 @@ int Locations::set_defaults(int census_mode) {
|
|||
Problems::Fatal::issue("Except in census mode, source text must be supplied");
|
||||
if ((census_mode) && (filename_of_i7_source))
|
||||
Problems::Fatal::issue("In census mode, no source text may be supplied");
|
||||
I7_nest_list = NEW_LINKED_LIST(inbuild_nest);
|
||||
if (pathname_of_materials) {
|
||||
inbuild_nest *nest = Nests::new(pathname_of_materials);
|
||||
Nests::set_tag(nest, ORIGIN_WAS_MATERIALS_EXTENSIONS_AREA);
|
||||
ADD_TO_LINKED_LIST(nest, inbuild_nest, I7_nest_list);
|
||||
}
|
||||
if (pathname_of_external_folder) {
|
||||
inbuild_nest *nest = Nests::new(pathname_of_external_folder);
|
||||
Nests::set_tag(nest, ORIGIN_WAS_USER_EXTENSIONS_AREA);
|
||||
ADD_TO_LINKED_LIST(nest, inbuild_nest, I7_nest_list);
|
||||
}
|
||||
if (pathname_of_internal_folder) {
|
||||
inbuild_nest *nest = Nests::new(pathname_of_internal_folder);
|
||||
Nests::set_tag(nest, ORIGIN_WAS_BUILT_IN_EXTENSIONS_AREA);
|
||||
ADD_TO_LINKED_LIST(nest, inbuild_nest, I7_nest_list);
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
@ -156,18 +119,10 @@ know how to find that folder, and we don't want to make any assumptions.
|
|||
Inform therefore requires on every run that it be told via the |-internal|
|
||||
switch where the internal resources folder is.
|
||||
|
||||
The main ingredients here are the "EILT" resources: extensions, I6T files,
|
||||
language definitions, and website templates. The Standard Rules, for
|
||||
example, live inside the Extensions part of this.
|
||||
|
||||
@<Internal resources@> =
|
||||
if (pathname_of_internal_folder == NULL)
|
||||
Problems::Fatal::issue("Did not set -internal when calling");
|
||||
|
||||
pathname *inter_resources =
|
||||
Pathnames::subfolder(pathname_of_internal_folder, I"Inter");
|
||||
filename_of_default_inter_pipeline =
|
||||
Filenames::in_folder(inter_resources, I"default.interpipeline");
|
||||
inbuild_nest *I = SharedCLI::internal();
|
||||
if (I == NULL) Problems::Fatal::issue("Did not set -internal when calling");
|
||||
pathname *pathname_of_internal_folder = I->location;
|
||||
|
||||
@<Miscellaneous other stuff@>;
|
||||
|
||||
|
@ -216,24 +171,25 @@ If |-transient| is not specified, it's the same folder, i.e., Inform does
|
|||
not distinguish between permanent and transient external resources.
|
||||
|
||||
@<External resources@> =
|
||||
if (pathname_of_external_folder == NULL) {
|
||||
pathname_of_external_folder = home_path;
|
||||
inbuild_nest *E = SharedCLI::external();
|
||||
if (E == NULL) {
|
||||
pathname *P = home_path;
|
||||
char *subfolder_within = INFORM_FOLDER_RELATIVE_TO_HOME;
|
||||
if (subfolder_within[0]) {
|
||||
TEMPORARY_TEXT(SF);
|
||||
WRITE_TO(SF, "%s", subfolder_within);
|
||||
pathname_of_external_folder = Pathnames::subfolder(home_path, SF);
|
||||
P = Pathnames::subfolder(home_path, SF);
|
||||
DISCARD_TEXT(SF);
|
||||
}
|
||||
pathname_of_external_folder =
|
||||
Pathnames::subfolder(pathname_of_external_folder, I"Inform");
|
||||
P = Pathnames::subfolder(P, I"Inform");
|
||||
E = SharedCLI::add_nest(P, EXTERNAL_NEST_TAG);
|
||||
}
|
||||
pathname *pathname_of_external_folder = E->location;
|
||||
|
||||
if (Pathnames::create_in_file_system(pathname_of_external_folder) == 0) return FALSE;
|
||||
@<Permanent external resources@>;
|
||||
|
||||
if (pathname_of_transient_external_resources == NULL)
|
||||
pathname_of_transient_external_resources =
|
||||
pathname_of_external_folder;
|
||||
pathname *pathname_of_transient_external_resources = SharedCLI::transient();
|
||||
if (Pathnames::create_in_file_system(pathname_of_transient_external_resources) == 0) return FALSE;
|
||||
@<Transient external resources@>;
|
||||
|
||||
|
@ -391,13 +347,11 @@ the index as seen by the user.
|
|||
filename_of_headings =
|
||||
Filenames::in_folder(pathname_of_project_index_folder, I"Headings.xml");
|
||||
|
||||
@h Materials resources.
|
||||
@h Materials folder.
|
||||
The materials folder sits alongside the project folder and has the same name,
|
||||
but ending |.materials| instead of |.inform|.
|
||||
|
||||
For the third and final time, there are EILT resources.
|
||||
|
||||
@<Materials resources@> =
|
||||
@<Materials folder@> =
|
||||
if (pathname_of_project) {
|
||||
TEMPORARY_TEXT(mf);
|
||||
WRITE_TO(mf, "%S", Pathnames::directory_name(pathname_of_project));
|
||||
|
@ -415,6 +369,9 @@ For the third and final time, there are EILT resources.
|
|||
pathname_of_materials = Pathnames::from_text(I"inform.materials");
|
||||
}
|
||||
|
||||
@h Materials resources.
|
||||
|
||||
@<Materials resources@> =
|
||||
@<Figures and sounds@>;
|
||||
@<The Release folder@>;
|
||||
@<Existing story file@>;
|
||||
|
|
|
@ -21,7 +21,7 @@ void NaturalLanguages::scan(void) {
|
|||
bundle_scan_made = TRUE;
|
||||
inbuild_requirement *req = Requirements::anything_of_genre(language_genre);
|
||||
linked_list *L = NEW_LINKED_LIST(inbuild_search_result);
|
||||
Nests::search_for(req, I7_nest_list, L);
|
||||
Nests::search_for(req, SharedCLI::nest_list(), L);
|
||||
language_scan_top = lexer_wordcount - 1;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -67,13 +67,6 @@ int SourceFiles::increase_sentence_count(wording W) {
|
|||
one of the following values to indicate the source of the source: the value
|
||||
only really tells us something we didn't know in the case of extensions,
|
||||
but in that event the Extensions.w routines do indeed want to know this.
|
||||
(Area 51 is reserved for extensions of alien origin, but the relevant
|
||||
source code is classified.)
|
||||
|
||||
@d ORIGIN_WAS_PRIMARY_SOURCE 0
|
||||
@d ORIGIN_WAS_MATERIALS_EXTENSIONS_AREA 1
|
||||
@d ORIGIN_WAS_USER_EXTENSIONS_AREA 2
|
||||
@d ORIGIN_WAS_BUILT_IN_EXTENSIONS_AREA 3
|
||||
|
||||
=
|
||||
int SourceFiles::read_file(filename *F, text_stream *synopsis, extension_file *EF,
|
||||
|
@ -82,7 +75,7 @@ int SourceFiles::read_file(filename *F, text_stream *synopsis, extension_file *E
|
|||
int area = -1;
|
||||
if (EF)
|
||||
area = SourceFiles::read_file_inner(F, synopsis,
|
||||
I7_nest_list, documentation_only, &sf,
|
||||
SharedCLI::nest_list(), documentation_only, &sf,
|
||||
STORE_POINTER_extension_file(EF), FALSE, EF);
|
||||
else
|
||||
area = SourceFiles::read_file_inner(F, synopsis,
|
||||
|
|
|
@ -590,10 +590,7 @@ two alternatives are expressed here:
|
|||
=
|
||||
void Extensions::Files::handle_census_mode(void) {
|
||||
if (census_mode) {
|
||||
extension_census *C = Extensions::Census::new(I7_nest_list);
|
||||
C->built_in_tag = ORIGIN_WAS_BUILT_IN_EXTENSIONS_AREA;
|
||||
C->materials_tag = ORIGIN_WAS_MATERIALS_EXTENSIONS_AREA;
|
||||
C->external_tag = ORIGIN_WAS_USER_EXTENSIONS_AREA;
|
||||
extension_census *C = Extensions::Census::new();
|
||||
Extensions::Dictionary::load();
|
||||
Extensions::Census::perform(C);
|
||||
Extensions::Files::write_top_level_of_extensions_documentation(C);
|
||||
|
@ -604,10 +601,7 @@ void Extensions::Files::handle_census_mode(void) {
|
|||
void Extensions::Files::update_census(void) {
|
||||
extension_file *ef;
|
||||
Extensions::Dictionary::load();
|
||||
extension_census *C = Extensions::Census::new(I7_nest_list);
|
||||
C->built_in_tag = ORIGIN_WAS_BUILT_IN_EXTENSIONS_AREA;
|
||||
C->materials_tag = ORIGIN_WAS_MATERIALS_EXTENSIONS_AREA;
|
||||
C->external_tag = ORIGIN_WAS_USER_EXTENSIONS_AREA;
|
||||
extension_census *C = Extensions::Census::new();
|
||||
Extensions::Census::perform(C);
|
||||
Extensions::Files::write_top_level_of_extensions_documentation(C);
|
||||
LOOP_OVER(ef, extension_file) Extensions::Documentation::write_detailed(ef);
|
||||
|
|
|
@ -184,10 +184,10 @@ trap-door into Read Source Text, to seek and open the file.
|
|||
inform_extension *E = Extensions::Files::find(ef);
|
||||
if (E) {
|
||||
switch (origin) {
|
||||
case ORIGIN_WAS_MATERIALS_EXTENSIONS_AREA:
|
||||
case ORIGIN_WAS_USER_EXTENSIONS_AREA:
|
||||
case MATERIALS_NEST_TAG:
|
||||
case EXTERNAL_NEST_TAG:
|
||||
E->loaded_from_built_in_area = FALSE; break;
|
||||
case ORIGIN_WAS_BUILT_IN_EXTENSIONS_AREA:
|
||||
case INTERNAL_NEST_TAG:
|
||||
E->loaded_from_built_in_area = TRUE; break;
|
||||
default: /* which can happen if the extension file cannot be found */
|
||||
E->loaded_from_built_in_area = FALSE; break;
|
||||
|
|
|
@ -1030,7 +1030,8 @@ with the earliest quoted searched first.
|
|||
|
||||
@<Tell Inblorb where to find the website templates@> =
|
||||
inbuild_nest *N;
|
||||
LOOP_OVER_LINKED_LIST(N, inbuild_nest, I7_nest_list)
|
||||
linked_list *L = SharedCLI::nest_list();
|
||||
LOOP_OVER_LINKED_LIST(N, inbuild_nest, L)
|
||||
WRITE("template path \"%p\"\n", TemplateManager::path_within_nest(N));
|
||||
|
||||
@ Inblorb reports its progress, or lack of it, with an HTML page, just as we do.
|
||||
|
|
Loading…
Reference in a new issue