52 lines
1.4 KiB
V
52 lines
1.4 KiB
V
module site
|
|
|
|
import os
|
|
import incubaid.herolib.core.playbook { PlayBook }
|
|
import incubaid.herolib.core.texttools
|
|
import time
|
|
import incubaid.herolib.ui.console
|
|
|
|
// ============================================================
|
|
// IMPORTS: Process content imports
|
|
// ============================================================
|
|
fn play_imports(mut plbook PlayBook, mut config SiteConfig) ! {
|
|
mut import_actions := plbook.find(filter: 'site.import')!
|
|
|
|
for mut action in import_actions {
|
|
mut p := action.params
|
|
|
|
// Parse replacement patterns (comma-separated key:value pairs)
|
|
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()
|
|
}
|
|
}
|
|
}
|
|
|
|
// Get path (can be relative to playbook path)
|
|
mut import_path := p.get_default('path', '')!
|
|
if import_path != '' {
|
|
if !import_path.starts_with('/') {
|
|
import_path = os.abs_path('${plbook.path}/${import_path}')
|
|
}
|
|
}
|
|
|
|
// Create import item
|
|
mut import_item := ImportItem{
|
|
name: p.get_default('name', '')!
|
|
url: p.get_default('url', '')!
|
|
path: import_path
|
|
dest: p.get_default('dest', '')!
|
|
replace: replace_map
|
|
visible: p.get_default_false('visible')
|
|
}
|
|
|
|
config.imports << import_item
|
|
action.done = true
|
|
}
|
|
}
|