From 5fa361256aa080b201cd5ad690db703f9f115ec4 Mon Sep 17 00:00:00 2001 From: despiegk Date: Wed, 13 Aug 2025 07:18:02 +0200 Subject: [PATCH] ... --- lib/core/herocmds/docusaurus.v | 2 - lib/develop/gittools/factory.v | 3 +- lib/develop/gittools/repos_get.v | 2 +- lib/web/docusaurus/config.v | 63 +++++++++++ lib/web/docusaurus/dsite.v | 4 - lib/web/docusaurus/dsite_generate.v | 45 +++----- .../{generator.v => dsite_generate_docs.v} | 47 ++++---- lib/web/docusaurus/dsite_import.v | 87 +++++++-------- lib/web/docusaurus/factory.v | 100 +++++++++--------- lib/web/docusaurus/factory_dsite.v | 68 ------------ lib/web/docusaurus/install.v | 42 ++++---- lib/web/docusaurus/play.v | 33 +----- lib/web/site/play.v | 24 ++--- 13 files changed, 228 insertions(+), 292 deletions(-) create mode 100644 lib/web/docusaurus/config.v rename lib/web/docusaurus/{generator.v => dsite_generate_docs.v} (66%) delete mode 100644 lib/web/docusaurus/factory_dsite.v diff --git a/lib/core/herocmds/docusaurus.v b/lib/core/herocmds/docusaurus.v index 1cd0e41c..c60853eb 100644 --- a/lib/core/herocmds/docusaurus.v +++ b/lib/core/herocmds/docusaurus.v @@ -139,8 +139,6 @@ fn cmd_docusaurus_execute(cmd Command) ! { console.print_header('Running Docusaurus for: ${docusaurus_path.path}') - // The `playcmds.run` helper expects a string path. Use the underlying - // filesystem path from the pathlib.Path value. playcmds.run( heroscript_path: docusaurus_path.path reset: false diff --git a/lib/develop/gittools/factory.v b/lib/develop/gittools/factory.v index 638d4983..e8fc7d56 100644 --- a/lib/develop/gittools/factory.v +++ b/lib/develop/gittools/factory.v @@ -15,6 +15,7 @@ pub mut: git_url string git_pull bool git_reset bool + git_root string } // get_repo_path implements the GitUrlResolver interface @@ -22,7 +23,7 @@ pub fn get_repo_path(args GetRepoArgs) !string { if os.exists(args.path) { return args.path } - mut gs := get()! + mut gs := get(coderoot:args.git_root)! mut repo := gs.get_repo( url: args.git_url pull: args.git_pull diff --git a/lib/develop/gittools/repos_get.v b/lib/develop/gittools/repos_get.v index 4ee095ad..2d2f5860 100644 --- a/lib/develop/gittools/repos_get.v +++ b/lib/develop/gittools/repos_get.v @@ -116,7 +116,7 @@ pub fn (mut gitstructure GitStructure) get_repo(args_ ReposGetArgs) !&GitRepo { } if repositories.len > 1 { - repos := repositories.map('- ${it} ${it.account}.${it.name}').join_lines() + repos := repositories.map('- ${it.account}.${it.name}').join_lines() return error('Found more than one repository for \n${args}\n${repos}') } diff --git a/lib/web/docusaurus/config.v b/lib/web/docusaurus/config.v new file mode 100644 index 00000000..58315ad1 --- /dev/null +++ b/lib/web/docusaurus/config.v @@ -0,0 +1,63 @@ +module docusaurus + +import os +import freeflowuniverse.herolib.core.pathlib + +__global ( + docusaurus_sites map[string]&DocSite + docusaurus_config ?DocusaurusConfigParams + docusaurus_last string //the last one we worked with +) + +pub struct DocusaurusConfig { +pub mut: + path_build pathlib.Path + path_publish pathlib.Path + install bool + reset bool + template_update bool + coderoot string +} + +@[params] +pub struct DocusaurusConfigParams { +pub mut: + path_build string + path_publish string + install bool + reset bool + template_update bool + coderoot string +} + +//return the last know config +pub fn config() !DocusaurusConfig { + mut args:= docusaurus_config or {DocusaurusConfig{}} + if args.path_build == '' { + args.path_build = '${os.home_dir()}/hero/var/docusaurus/build' + } + if args.path_publish == '' { + args.path_publish = '${os.home_dir()}/hero/var/docusaurus/publish' + } + if !os.exists('${args.path_build}/node_modules') { + args.install = true + } + + mut c := DocusaurusConfig{ + path_publish: pathlib.get_dir(path: args.path_publish, create: true)! + path_build: pathlib.get_dir(path: args.path_build, create: true)! + coderoot: args.coderoot + install: args.install + reset: args.reset + template_update: args.template_update + } + if c.install { + install()! + c.install=false + } + return c +} + +pub fn config_set(args_ DocusaurusConfigParams) ! { + docusaurus_config = args_ +} diff --git a/lib/web/docusaurus/dsite.v b/lib/web/docusaurus/dsite.v index f594d408..f8a4a300 100644 --- a/lib/web/docusaurus/dsite.v +++ b/lib/web/docusaurus/dsite.v @@ -1,12 +1,9 @@ module docusaurus -import freeflowuniverse.herolib.osal.screen -import os import freeflowuniverse.herolib.core.pathlib import freeflowuniverse.herolib.web.site as sitemodule import freeflowuniverse.herolib.osal.core as osal import freeflowuniverse.herolib.ui.console -import time @[heap] pub struct DocSite { @@ -19,7 +16,6 @@ pub mut: errors []SiteError config Configuration website sitemodule.Site - importparams []ImportParams } pub fn (mut s DocSite) build() ! { diff --git a/lib/web/docusaurus/dsite_generate.v b/lib/web/docusaurus/dsite_generate.v index 6e1d1627..d039e632 100644 --- a/lib/web/docusaurus/dsite_generate.v +++ b/lib/web/docusaurus/dsite_generate.v @@ -1,54 +1,33 @@ module docusaurus -import freeflowuniverse.herolib.develop.gittools + import freeflowuniverse.herolib.core.pathlib -import freeflowuniverse.herolib.core.playbook import json import os import freeflowuniverse.herolib.osal.core as osal import freeflowuniverse.herolib.ui.console -import freeflowuniverse.herolib.core.texttools.regext -// import freeflowuniverse.herolib.data.doctree -import freeflowuniverse.herolib.web.site as sitegen -pub fn (mut site DocSite) generate() ! { - mut f := factory_get()! +pub fn (mut docsite DocSite) generate() ! { + mut c := config()! - console.print_header(' site generate: ${site.name} on ${f.path_build.path}') + console.print_header(' docsite generate: ${docsite.name} on ${c.path_build.path}') - // lets make sure we remove the cfg dir so we rebuild - cfg_path := os.join_path(f.path_build.path) + osal.rm('${c.path_build.path}/docs')! + + cfg_path:="${c.path_build.path}/cfg" osal.rm(cfg_path)! - mut gs := gittools.new()! - - template_path := gs.get_path( - pull: false - reset: false - url: 'https://github.com/freeflowuniverse/docusaurus_template/src/branch/main/template/' - )! - - osal.rm('${f.path_build.path}/docs')! - mut main_file := pathlib.get_file(path: '${cfg_path}/main.json', create: true)! - main_file.write(json.encode_pretty(site.config.main))! + main_file.write(json.encode_pretty(docsite.config.main))! mut navbar_file := pathlib.get_file(path: '${cfg_path}/navbar.json', create: true)! - navbar_file.write(json.encode_pretty(site.config.navbar))! + navbar_file.write(json.encode_pretty(docsite.config.navbar))! mut footer_file := pathlib.get_file(path: '${cfg_path}/footer.json', create: true)! - footer_file.write(json.encode_pretty(site.config.footer))! + footer_file.write(json.encode_pretty(docsite.config.footer))! - // Generate the actual docs content from the processed site configuration - docs_path := '${f.path_build.path}/docs' + docsite.generate_docs()! - // TODO: check site vs website - website := site.website - generate_docs( - path: docs_path - site: website - )! - - site.import()! + docsite.import()! } diff --git a/lib/web/docusaurus/generator.v b/lib/web/docusaurus/dsite_generate_docs.v similarity index 66% rename from lib/web/docusaurus/generator.v rename to lib/web/docusaurus/dsite_generate_docs.v index 525fa57f..b42a13d8 100644 --- a/lib/web/docusaurus/generator.v +++ b/lib/web/docusaurus/dsite_generate_docs.v @@ -18,26 +18,19 @@ mut: errors []string // collect errors here } -@[params] -struct SiteGeneratorArgs { -mut: - path string - flat bool // if flat then won't use sitenames as subdir's - site Site // this is the generic website we are feeding -} - // Generate docs from site configuration -pub fn generate_docs(args SiteGeneratorArgs) ! { - mut path := args.path - if args.path == '' { - return error('Path must be provided to generate site') - } +pub fn (mut docsite DocSite) generate_docs() ! { + + c := config()! + + //we generate the docs in the build path + docs_path := '${c.path_build.path}/docs' mut gen := SiteGenerator{ - path: pathlib.get_dir(path: path, create: true)! + path: pathlib.get_dir(path: docs_path, create: true)! client: doctreeclient.new()! - flat: args.flat - site: args.site + flat: true + site: docsite.website } for section in gen.site.sections { @@ -53,26 +46,26 @@ pub fn generate_docs(args SiteGeneratorArgs) ! { } } -fn (mut mysite SiteGenerator) error(msg string) ! { +fn (mut generator SiteGenerator) error(msg string) ! { console.print_stderr('Error: ${msg}') - mysite.errors << msg + generator.errors << msg } -fn (mut mysite SiteGenerator) page_generate(args_ Page) ! { +fn (mut generator SiteGenerator) page_generate(args_ Page) ! { mut args := args_ mut content := ['---'] mut parts := args.src.split(':') if parts.len != 2 { - mysite.error("Invalid src format for page '${args.src}', expected format: collection:page_name, TODO: fix in ${args.path}, check the collection & page_name exists in the pagelist")! + generator.error("Invalid src format for page '${args.src}', expected format: collection:page_name, TODO: fix in ${args.path}, check the collection & page_name exists in the pagelist")! return } collection_name := parts[0] page_name := parts[1] - mut page_content := mysite.client.get_page_content(collection_name, page_name) or { - mysite.error("Couldn't find page '${collection_name}:${page_name}' is formatted as collectionname:pagename. TODO: fix in ${args.path}, check the collection & page_name exists in the pagelist. ")! + mut page_content := generator.client.get_page_content(collection_name, page_name) or { + generator.error("Couldn't find page '${collection_name}:${page_name}' is formatted as collectionname:pagename. TODO: fix in ${args.path}, check the collection & page_name exists in the pagelist. ")! return } @@ -135,18 +128,18 @@ fn (mut mysite SiteGenerator) page_generate(args_ Page) ! { args.path += '.md' } - mut pagepath := '${mysite.path.path}/${args.path}' + mut pagepath := '${generator.path.path}/${args.path}' mut pagefile := pathlib.get_file(path: pagepath, create: true)! pagefile.write(c)! - mysite.client.copy_images(collection_name, page_name, pagefile.path_dir()) or { - mysite.error("Couldn't copy image ${pagefile} for '${page_name}' in collection '${collection_name}', try to find the image and fix the path is in ${args.path}.}\nError: ${err}")! + generator.client.copy_images(collection_name, page_name, pagefile.path_dir()) or { + generator.error("Couldn't copy image ${pagefile} for '${page_name}' in collection '${collection_name}', try to find the image and fix the path is in ${args.path}.}\nError: ${err}")! return } } -fn (mut mysite SiteGenerator) section_generate(args_ Section) ! { +fn (mut generator SiteGenerator) section_generate(args_ Section) ! { mut args := args_ mut c := '{ @@ -157,7 +150,7 @@ fn (mut mysite SiteGenerator) section_generate(args_ Section) ! { } }' - mut category_path := '${mysite.path.path}/${args.path}/_category_.json' + mut category_path := '${generator.path.path}/${args.path}/_category_.json' mut catfile := pathlib.get_file(path: category_path, create: true)! catfile.write(c)! diff --git a/lib/web/docusaurus/dsite_import.v b/lib/web/docusaurus/dsite_import.v index 618a0d30..2bc174d3 100644 --- a/lib/web/docusaurus/dsite_import.v +++ b/lib/web/docusaurus/dsite_import.v @@ -4,59 +4,54 @@ import freeflowuniverse.herolib.develop.gittools import os import freeflowuniverse.herolib.core.pathlib import freeflowuniverse.herolib.ui.console +import freeflowuniverse.herolib.core.texttools.regext -@[params] -pub struct ImportParams { - path string - git_url string - git_reset bool - git_root string - git_pull bool - dest string -} -pub fn (mut site DocSite) import() ! { - for importparams in site.importparams { - console.print_header('Importing: ${importparams.path} from ${importparams.git_url}') - mut f := factory_get()! - mut mypath := '' - mut target_path := if os.is_abs_path(importparams.path) { - importparams.path - } else { - os.abs_path(os.join_path(importparams.git_root, importparams.path)) - } - // Use gittools to get/update the repo, then navigate to the specific path - repo_path := gittools.get_repo_path( - git_pull: importparams.git_pull - git_reset: importparams.git_reset - git_url: importparams.git_url - path: importparams.git_root +pub fn (mut docsite DocSite) import() ! { + for importparams in docsite.website.siteconfig.imports { + + console.print_header('Importing: path:${importparams.path} or url:${importparams.url}') + + // pub struct ImportItem { + // name string // will normally be empty + // url string // http git url can be to specific path + // path string + // dest string // location in the docs folder of the place where we will build the documentation site e.g. docusaurus + // replace map[string]string // will replace ${NAME} in the imported content + // visible bool = true + // } + + c:=config()! + + // Use gittools to get path of what we want to import + import_path := gittools.get_repo_path( + git_pull: c.reset + git_reset: c.reset + git_url: importparams.url + git_root: c.coderoot + path: importparams.path )! - mut mypatho := pathlib.get(repo_path) - // TODO: We need to think about a better way to do it - mypatho.path = repo_path + '/' + importparams.path.all_after('/') + mut import_patho := pathlib.get(import_path) - mut static_dest := '${f.path_build.path}/static' - println('static_dest: ${static_dest}') - - if importparams.dest.len > 0 { - static_dest = '${static_dest}/${importparams.dest}' + if importparams.dest.starts_with("/") { + return error("Import path ${importparams.dest} must be relative, will be relative in relation to the build dir.") } - mypatho.copy(dest: static_dest, delete: false)! - // println(item) - // // replace: {'NAME': 'MyName', 'URGENCY': 'red'} - // mut ri := regext.regex_instructions_new() - // for key, val in item.replace { - // ri.add_item('\{${key}\}', val)! - // } - // ri.replace_in_dir( - // path: '${f.path_build.path}/docs/${item.dest}' - // extensions: [ - // 'md', - // ] - // )! + import_patho.copy(dest: '${c.path_build.path}/${importparams.dest}', delete: false)! + + // println(importparams) + // replace: {'NAME': 'MyName', 'URGENCY': 'red'} + mut ri := regext.regex_instructions_new() + for key, val in importparams.replace { + ri.add_item('\{${key}\}', val)! + } + ri.replace_in_dir( + path: '${c.path_build.path}/docs/${importparams.dest}' + extensions: [ + 'md', + ] + )! } } diff --git a/lib/web/docusaurus/factory.v b/lib/web/docusaurus/factory.v index c31e5f32..ef95adae 100644 --- a/lib/web/docusaurus/factory.v +++ b/lib/web/docusaurus/factory.v @@ -1,66 +1,64 @@ module docusaurus -import os import freeflowuniverse.herolib.core.pathlib import freeflowuniverse.herolib.core.texttools -import freeflowuniverse.herolib.develop.gittools -import freeflowuniverse.herolib.osal.core as osal -import freeflowuniverse.herolib.installers.web.bun - -__global ( - docusaurus_sites map[string]&DocSite - docusaurus_factory []DocSiteFactory -) - -pub struct DocSiteFactory { -pub mut: - path_publish pathlib.Path - path_build pathlib.Path -} +import freeflowuniverse.herolib.web.site +import freeflowuniverse.herolib.ui.console @[params] -pub struct DocSiteFactoryArgs { +pub struct AddArgs { pub mut: - path_build string - path_publish string - install bool - reset bool - template_update bool + sitename string // needs to exist in web.site module } -pub fn factory_get(args_ DocSiteFactoryArgs) !DocSiteFactory { - mut args := args_ - if docusaurus_factory.len > 1 { - panic('multiple docusaurus factories found, please specify which one to use') +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}/${sitename}' + + // 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_publish, create: true)! + path_build: pathlib.get_dir(path: path_build_, create: true)! + config: new_configuration(website.siteconfig)! + website: website } - if docusaurus_factory.len > 0 { - return docusaurus_factory[0] - } - return factory_set(args)! + + docusaurus_sites[sitename] = dsite + docusaurus_last = sitename } -pub fn factory_set(args_ DocSiteFactoryArgs) !DocSiteFactory { - mut args := args_ - if args.path_build == '' { - args.path_build = '${os.home_dir()}/hero/var/docusaurus/build' +pub fn dsite_get(name_ string) !&DocSite { + mut name := texttools.name_fix(name_) + if name=="" { + name = docusaurus_last } - if args.path_publish == '' { - args.path_publish = '${os.home_dir()}/hero/var/docusaurus/publish' + return docusaurus_sites[name] or { + return error('docusaurus site with name "${name}" does not exist') } - mut factory := DocSiteFactory{ - path_publish: pathlib.get_dir(path: args.path_publish, create: true)! - path_build: pathlib.get_dir(path: args.path_build, create: true)! - } - - if !os.exists('${args.path_build}/node_modules') { - args.install = true - } - - if args.install { - factory.install(args.reset, args.template_update)! - } - - docusaurus_factory << factory - - return factory +} + +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 } diff --git a/lib/web/docusaurus/factory_dsite.v b/lib/web/docusaurus/factory_dsite.v deleted file mode 100644 index 0685c79d..00000000 --- a/lib/web/docusaurus/factory_dsite.v +++ /dev/null @@ -1,68 +0,0 @@ -module docusaurus - -import freeflowuniverse.herolib.core.pathlib -import freeflowuniverse.herolib.core.texttools -import freeflowuniverse.herolib.web.site -import freeflowuniverse.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 f := factory_get()! - - path_publish := '${f.path_publish.path}/${sitename}' - path_build_ := '${f.path_build.path}/${sitename}' - - // 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_publish, create: true)! - path_build: pathlib.get_dir(path: path_build_, create: true)! - config: new_configuration(website.siteconfig)! - website: website - } - - docusaurus_sites[sitename] = dsite -} - -pub fn dsite_get(name_ string) !&DocSite { - name := texttools.name_fix(name_) - return docusaurus_sites[name] or { - return error('docusaurus site with name "${name}" does not exist') - } -} - -pub fn dsite_exists(name_ string) !bool { - name := texttools.name_fix(name_) - _ := 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 -} - -// dsite_get_only returns the only defined site, or an error if there are none or more than one. -pub fn dsite_get_only() !&DocSite { - if docusaurus_sites.len != 1 { - return error('expected exactly one docusaurus site to be defined, found ${docusaurus_sites.len}') - } - for _, v in docusaurus_sites { - return v - } - return error('no docusaurus site found') -} diff --git a/lib/web/docusaurus/install.v b/lib/web/docusaurus/install.v index 0bc74e30..dca2a76f 100644 --- a/lib/web/docusaurus/install.v +++ b/lib/web/docusaurus/install.v @@ -6,34 +6,38 @@ import freeflowuniverse.herolib.develop.gittools import freeflowuniverse.herolib.osal.core as osal import freeflowuniverse.herolib.installers.web.bun -fn (mut f DocSiteFactory) install(reset bool, template_update bool) ! { +fn install() ! { mut gs := gittools.new()! - if reset { - osal.rm(f.path_build.path)! - osal.dir_ensure(f.path_build.path)! + mut c:=config()! + + if c.reset { + osal.rm(c.path_build.path)! + osal.dir_ensure(c.path_build.path)! } template_path := gs.get_path( - pull: template_update - reset: reset // Changed args.delete to args.reset + pull: c.template_update + reset: c.reset url: 'https://github.com/freeflowuniverse/docusaurus_template/src/branch/main/template' )! mut template_path0 := pathlib.get_dir(path: template_path, create: false)! - template_path0.copy(dest: f.path_build.path, delete: reset)! // Changed args.delete to args.reset + template_path0.copy(dest: c.path_build.path, delete: false)! //the dir has already been deleted so no point to delete again - // install bun - mut installer := bun.get()! - installer.install()! - osal.exec( - // always stay in the context of the build directory - cmd: ' - ${osal.profile_path_source_and()!} - export PATH=${f.path_build.path}/node_modules/.bin::${os.home_dir()}/.bun/bin/:\$PATH - cd ${f.path_build.path} - bun install - ' - )! + if c.install { //config.install is set in factory if there is missing bun + // install bun + mut installer := bun.get()! + installer.install()! + osal.exec( + // always stay in the context of the build directory + cmd: ' + ${osal.profile_path_source_and()!} + export PATH=${c.path_build.path}/node_modules/.bin::${os.home_dir()}/.bun/bin/:\$PATH + cd ${c.path_build.path} + bun install + ' + )! + } } diff --git a/lib/web/docusaurus/play.v b/lib/web/docusaurus/play.v index 2c089242..d6ed70c0 100644 --- a/lib/web/docusaurus/play.v +++ b/lib/web/docusaurus/play.v @@ -9,16 +9,11 @@ pub fn play(mut plbook PlayBook) ! { return } - // 1. Process generic site configuration first. - // This populates the global `site.websites` map. - site.play(mut plbook)! - + //there should be 1 define section mut action_define := plbook.ensure_once(filter: 'docusaurus.define')! - - // 3. Process `docusaurus.add` actions to create sites. mut param_define := action_define.params - _ := factory_set( + config_set( path_build: param_define.get_default('path_build', '')! path_publish: param_define.get_default('path_publish', '')! reset: param_define.get_default_false('reset') @@ -34,25 +29,6 @@ pub fn play(mut plbook PlayBook) ! { action_define.done = true mut dsite := dsite_get(site_name)! - // imports - mut actions_import := plbook.find(filter: 'docusaurus.import')! - for mut action in actions_import { - mut p := action.params - // TODO: We need to get the repo path from the path - // Import paths like ../docusaurus are authored relative to the project root (docs_owh) - // project_root = dirname(dirname(plbook.path)) since plbook.path = ebooks/owh_investment_memo - mut project_root := os.abs_path(os.join_path(plbook.path, '..', '..')) - dsite.importparams << ImportParams{ - path: p.get_default('path', '')! - git_url: p.get_default('git_url', '')! - git_reset: p.get_default_false('git_reset') - git_pull: p.get_default_false('git_pull') - git_root: project_root - dest: p.get_default('dest', '')! - } - action.done = true - } - mut actions_dev := plbook.find(filter: 'docusaurus.dev')! if actions_dev.len > 1 { return error('Multiple "docusaurus.dev" actions found. Only one is allowed.') @@ -67,6 +43,7 @@ pub fn play(mut plbook PlayBook) ! { action.done = true } + mut actions_build := plbook.find(filter: 'docusaurus.build')! if actions_build.len > 1 { return error('Multiple "docusaurus.build" actions found. Only one is allowed.') @@ -76,9 +53,9 @@ pub fn play(mut plbook PlayBook) ! { action.done = true } - mut actions_export := plbook.find(filter: 'docusaurus.export')! + mut actions_export := plbook.find(filter: 'docusaurus.publish')! if actions_export.len > 1 { - return error('Multiple "docusaurus.export" actions found. Only one is allowed.') + return error('Multiple "docusaurus.publish" actions found. Only one is allowed.') } for mut action in actions_export { dsite.build_publish()! diff --git a/lib/web/site/play.v b/lib/web/site/play.v index 6867224f..dc7564fb 100644 --- a/lib/web/site/play.v +++ b/lib/web/site/play.v @@ -49,9 +49,8 @@ pub fn play(mut plbook PlayBook) ! { play_import(mut plbook, mut config)! play_menu(mut plbook, mut config)! play_footer(mut plbook, mut config)! - play_build_dest(mut plbook, mut config)! - play_build_dest_dev(mut plbook, mut config)! - + play_publish(mut plbook, mut config)! + play_publish_dev(mut plbook, mut config)! play_pages(mut plbook, mut website)! } @@ -170,12 +169,12 @@ fn play_footer(mut plbook PlayBook, mut config SiteConfig) ! { } } -fn play_build_dest(mut plbook PlayBook, mut config SiteConfig) ! { - mut build_dest_actions := plbook.find(filter: 'site.build_dest')! +fn play_publish(mut plbook PlayBook, mut config SiteConfig) ! { + mut build_dest_actions := plbook.find(filter: 'site.publish')! for mut action in build_dest_actions { mut p := action.params mut dest := BuildDest{ - path: p.get_default('path', '')! + path: p.get_default('path', '')! //can be url ssh_name: p.get_default('ssh_name', '')! } config.build_dest << dest @@ -183,15 +182,16 @@ fn play_build_dest(mut plbook PlayBook, mut config SiteConfig) ! { } } -fn play_build_dest_dev(mut plbook PlayBook, mut config SiteConfig) ! { - mut build_dest_dev_actions := plbook.find(filter: 'site.build_dest_dev')! - for mut action in build_dest_dev_actions { + +fn play_publish_dev(mut plbook PlayBook, mut config SiteConfig) ! { + mut build_dest_actions := plbook.find(filter: 'site.publish_dev')! + for mut action in build_dest_actions { mut p := action.params - mut dest_dev := BuildDest{ - path: p.get('path')! + mut dest := BuildDest{ + path: p.get_default('path', '')! //can be url ssh_name: p.get_default('ssh_name', '')! } - config.build_dest_dev << dest_dev + config.build_dest_dev << dest action.done = true // Mark the action as done } }