Add a 'docs' method to projects, using the newly introduced docs::generate_all

This commit is contained in:
KtorZ 2022-12-16 18:33:36 +01:00
parent 16b0a9fbe4
commit 6da53fd875
No known key found for this signature in database
GPG Key ID: 33173CB6F77F4277
2 changed files with 37 additions and 11 deletions

View File

@ -1,4 +1,5 @@
pub mod config;
pub mod docs;
pub mod error;
pub mod format;
pub mod module;
@ -97,6 +98,27 @@ where
self.compile(options)
}
pub fn docs(&mut self, destination: Option<PathBuf>) -> Result<(), Error> {
self.event_listener
.handle_event(Event::GeneratingDocumentation {
root: self.root.clone(),
name: self.config.name.clone(),
version: self.config.version.clone(),
});
let destination = destination.unwrap_or(self.root.join("doc"));
let checked_modules = self.parse()?;
let doc_files =
docs::generate_all(&self.root, &self.config, checked_modules.values().collect());
for file in doc_files {
let path = destination.join(file.path);
fs::create_dir_all(&path.parent().unwrap())?;
fs::write(&path, file.content)?;
}
Ok(())
}
pub fn check(
&mut self,
skip_tests: bool,
@ -117,6 +139,15 @@ where
self.compile(options)
}
pub fn parse(&mut self) -> Result<CheckedModules, Error> {
self.event_listener.handle_event(Event::ParsingProjectFiles);
self.read_source_files()?;
let parsed_modules = self.parse_sources()?;
let processing_sequence = parsed_modules.sequence()?;
self.event_listener.handle_event(Event::TypeChecking);
self.type_check(parsed_modules, processing_sequence)
}
pub fn compile(&mut self, options: Options) -> Result<(), Error> {
self.event_listener
.handle_event(Event::StartingCompilation {
@ -125,17 +156,7 @@ where
version: self.config.version.clone(),
});
self.event_listener.handle_event(Event::ParsingProjectFiles);
self.read_source_files()?;
let parsed_modules = self.parse_sources()?;
let processing_sequence = parsed_modules.sequence()?;
self.event_listener.handle_event(Event::TypeChecking);
let mut checked_modules = self.type_check(parsed_modules, processing_sequence)?;
let mut checked_modules = self.parse()?;
let validators = self.validate_validators(&mut checked_modules)?;

View File

@ -11,6 +11,11 @@ pub enum Event {
version: String,
root: PathBuf,
},
GeneratingDocumentation {
name: String,
version: String,
root: PathBuf,
},
ParsingProjectFiles,
TypeChecking,
GeneratingUPLC {