Add a 'docs' method to projects, using the newly introduced docs::generate_all
This commit is contained in:
parent
16b0a9fbe4
commit
6da53fd875
|
@ -1,4 +1,5 @@
|
||||||
pub mod config;
|
pub mod config;
|
||||||
|
pub mod docs;
|
||||||
pub mod error;
|
pub mod error;
|
||||||
pub mod format;
|
pub mod format;
|
||||||
pub mod module;
|
pub mod module;
|
||||||
|
@ -97,6 +98,27 @@ where
|
||||||
self.compile(options)
|
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(
|
pub fn check(
|
||||||
&mut self,
|
&mut self,
|
||||||
skip_tests: bool,
|
skip_tests: bool,
|
||||||
|
@ -117,6 +139,15 @@ where
|
||||||
self.compile(options)
|
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> {
|
pub fn compile(&mut self, options: Options) -> Result<(), Error> {
|
||||||
self.event_listener
|
self.event_listener
|
||||||
.handle_event(Event::StartingCompilation {
|
.handle_event(Event::StartingCompilation {
|
||||||
|
@ -125,17 +156,7 @@ where
|
||||||
version: self.config.version.clone(),
|
version: self.config.version.clone(),
|
||||||
});
|
});
|
||||||
|
|
||||||
self.event_listener.handle_event(Event::ParsingProjectFiles);
|
let mut checked_modules = self.parse()?;
|
||||||
|
|
||||||
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 validators = self.validate_validators(&mut checked_modules)?;
|
let validators = self.validate_validators(&mut checked_modules)?;
|
||||||
|
|
||||||
|
|
|
@ -11,6 +11,11 @@ pub enum Event {
|
||||||
version: String,
|
version: String,
|
||||||
root: PathBuf,
|
root: PathBuf,
|
||||||
},
|
},
|
||||||
|
GeneratingDocumentation {
|
||||||
|
name: String,
|
||||||
|
version: String,
|
||||||
|
root: PathBuf,
|
||||||
|
},
|
||||||
ParsingProjectFiles,
|
ParsingProjectFiles,
|
||||||
TypeChecking,
|
TypeChecking,
|
||||||
GeneratingUPLC {
|
GeneratingUPLC {
|
||||||
|
|
Loading…
Reference in New Issue