64 lines
1.6 KiB
V
64 lines
1.6 KiB
V
module docusaurus
|
|
|
|
import incubaid.herolib.core.pathlib
|
|
import incubaid.herolib.core.texttools
|
|
import incubaid.herolib.web.site
|
|
import incubaid.herolib.ui.console
|
|
|
|
@[params]
|
|
pub struct AddArgs {
|
|
pub mut:
|
|
sitename string // needs to exist in web.site module
|
|
}
|
|
|
|
pub fn dsite_define(sitename string) ! {
|
|
console.print_header('Add Docusaurus Site: ${sitename}')
|
|
mut c := config()!
|
|
|
|
path_publish := '${c.path_publish.path}/${sitename}'
|
|
path_build_ := '${c.path_build.path}'
|
|
|
|
// Get the site object after processing, this is the website which is a generic definition of a site
|
|
mut website := site.get(name: sitename)!
|
|
|
|
// Create the DocSite instance
|
|
mut dsite := &DocSite{
|
|
name: sitename
|
|
path_publish: pathlib.get_dir(path: '${path_build_}/build', create: true)!
|
|
path_build: pathlib.get_dir(path: path_build_, create: true)!
|
|
config: new_configuration(website)!
|
|
website: website
|
|
}
|
|
|
|
docusaurus_sites[sitename] = dsite
|
|
docusaurus_last = sitename
|
|
}
|
|
|
|
pub fn dsite_get(name_ string) !&DocSite {
|
|
mut name := texttools.name_fix(name_)
|
|
if name == '' {
|
|
name = docusaurus_last
|
|
}
|
|
return docusaurus_sites[name] or {
|
|
return error('docusaurus site with name "${name}" does not exist')
|
|
}
|
|
}
|
|
|
|
pub fn dsite_exists(name_ string) !bool {
|
|
mut name := texttools.name_fix(name_)
|
|
if name == '' {
|
|
name = docusaurus_last
|
|
}
|
|
_ := docusaurus_sites[name] or { return false }
|
|
return true
|
|
}
|
|
|
|
// dsite_names returns the list of defined docusaurus site names.
|
|
pub fn dsite_names() []string {
|
|
mut names := []string{}
|
|
for k, _ in docusaurus_sites {
|
|
names << k
|
|
}
|
|
return names
|
|
}
|