no message

This commit is contained in:
2025-02-11 09:37:03 +03:00
parent 299f6dea06
commit 30cb80efcd
26 changed files with 530 additions and 317 deletions

162
lib/web/docusaurus/play.v Normal file
View File

@@ -0,0 +1,162 @@
module docusaurus
import freeflowuniverse.herolib.core.playbook { PlayBook }
@[params]
pub struct PlayArgs {
pub mut:
heroscript string //if filled in then playbook will be made out of it
plbook ?playbook.PlayBook
reset bool
}
// Process the heroscript and return a filled Config object
pub fn play(args_ PlayArgs) ! {
mut plbook := playbook.new(text: args_.heroscript)!
mut config := Config{}
play_config(mut plbook, mut config)!
play_config_meta(mut plbook, mut config)!
play_ssh_connection(mut plbook, mut config)!
play_import_source(mut plbook, mut config)!
play_build_dest(mut plbook, mut config)!
play_navbar(mut plbook, mut config)!
play_footer(mut plbook, mut config)!
}
fn play_config(mut plbook playbook.PlayBook, mut config Config) ! {
config_actions := plbook.find(filter: 'docusaurus.config')!
for action in config_actions {
mut p := action.params
config.main = Main{
title: p.get_default('title', 'Internet Geek')!
tagline: p.get_default('tagline', 'Internet Geek')!
favicon: p.get_default('favicon', 'img/favicon.png')!
url: p.get_default('url', 'https://friends.threefold.info')!
url_home: p.get_default('url_home', 'docs/')!
base_url: p.get_default('base_url', '/testsite/')!
image: p.get_default('image', 'img/tf_graph.png')!
}
}
}
fn play_config_meta(mut plbook playbook.PlayBook, mut config Config) ! {
meta_actions := plbook.find(filter: 'docusaurus.config_meta')!
for action in meta_actions {
mut p := action.params
config.main.metadata = MainMetadata{
description: p.get_default('description', 'ThreeFold is laying the foundation for a geo aware Web 4, the next generation of the Internet.')!
image: p.get_default('image', 'https://threefold.info/something/img/tf_graph.png')!
title: p.get_default('title', 'ThreeFold Technology Vision')!
}
}
}
fn play_ssh_connection(mut plbook playbook.PlayBook, mut config Config) ! {
ssh_actions := plbook.find(filter: 'docusaurus.ssh_connection')!
for action in ssh_actions {
mut p := action.params
mut ssh := SSHConnection{
name: p.get_default('name', 'main')!
host: p.get_default('host', 'info.ourworld.tf')!
port: p.get_int_default('port', 21)!
login: p.get_default('login', 'root')!
key_path: p.get_default('key_path', '')!
key: p.get_default('key', '')!
}
config.ssh_connections << ssh
}
}
fn play_import_source(mut plbook playbook.PlayBook, mut config Config) ! {
import_actions := plbook.find(filter: 'docusaurus.import_source')!
for action in import_actions {
mut p := action.params
mut replace_map := map[string]string{}
if replace_str := p.get_default('replace', '') {
parts := replace_str.split(',')
for part in parts {
kv := part.split(':')
if kv.len == 2 {
replace_map[kv[0].trim_space()] = kv[1].trim_space()
}
}
}
mut import_ := ImportSource{
url: p.get('url')!
path: p.get_default('path', '')!
dest: p.get_default('dest', '')!
replace: replace_map
}
config.import_sources << import_
}
}
fn play_build_dest(mut plbook playbook.PlayBook, mut config Config) ! {
build_actions := plbook.find(filter: 'docusaurus.build_dest')!
for action in build_actions {
mut p := action.params
mut build := BuildDest{
ssh_name: p.get_default('ssh_name', 'main')!
path:p.get_default('path', '')!
}
config.build_destinations << build
}
}
fn play_navbar(mut plbook playbook.PlayBook, mut config Config) ! {
navbar_actions := plbook.find(filter: 'docusaurus.navbar')!
for action in navbar_actions {
mut p := action.params
config.navbar.title = p.get_default('title', 'Chief Executive Geek')!
}
navbar_item_actions := plbook.find(filter: 'docusaurus.navbar_item')!
for action in navbar_item_actions {
mut p := action.params
mut item := NavbarItem{
label: p.get_default('label', 'ThreeFold Technology')!
href: p.get_default('href', 'https://threefold.info/tech')!
position: p.get_default('position', 'right')!
}
config.navbar.items << item
}
}
fn play_footer(mut plbook playbook.PlayBook, mut config Config) ! {
footer_actions := plbook.find(filter: 'docusaurus.footer')!
for action in footer_actions {
mut p := action.params
config.footer.style = p.get_default('style', 'dark')!
}
footer_item_actions := plbook.find(filter: 'docusaurus.footer_item')!
mut links_map := map[string][]FooterItem{}
for action in footer_item_actions {
mut p := action.params
title := p.get_default('title', 'Docs')!
mut item := FooterItem{
label: p.get_default('label', 'Introduction')!
to: p.get_default('to', '/docs')!
href: p.get_default('href', '')!
}
if title !in links_map {
links_map[title] = []FooterItem{}
}
links_map[title] << item
}
// Convert map to footer links array
for title, items in links_map {
config.footer.links << FooterLink{
title: title
items: items
}
}
}