support config ignore files

main
zztkm 2 years ago
parent 9640f9cc96
commit 3f4688f363

@ -30,7 +30,7 @@ tasks:
test: test:
desc: Run test desc: Run test
cmds: cmds:
- v test commands/ - v test .
vet: vet:
desc: Report suspicious code constructs desc: Report suspicious code constructs
@ -62,6 +62,11 @@ tasks:
cmds: cmds:
- v . -o {{.TARGET}} - v . -o {{.TARGET}}
prod-build:
desc: Build vss for production
cmds:
- v -prod . -o {{.TARGET}}
example: example:
desc: Setup for example desc: Setup for example
cmds: cmds:

@ -4,16 +4,13 @@ import os
import cli import cli
import log import log
import time import time
import toml
import regex import regex
import markdown import markdown
import internal.template import internal.template
import internal.config
const default_config = 'config.toml' const default_config = 'config.toml'
// Allowed parameters
const config_params = ['title', 'description', 'baseUrl', 'build']
const default_template = 'layouts/index.html' const default_template = 'layouts/index.html'
const defautl_static = 'static' const defautl_static = 'static'
@ -43,19 +40,6 @@ fn read_file(filename string) ?string {
return contents return contents
} }
fn get_config_map() ?map[string]string {
mut config_map := map[string]string{}
// https://modules.vlang.io/toml.html
toml_str := read_file(commands.default_config)?
config := toml.parse_text(toml_str)?
for param in commands.config_params {
v := config.value_opt(param) or { continue }
config_map[param] = v.string()
}
return config_map
}
fn get_html_path(md_path string) string { fn get_html_path(md_path string) string {
mut file_name := os.file_name(md_path) mut file_name := os.file_name(md_path)
file_name = file_name.replace('.md', '.html') file_name = file_name.replace('.md', '.html')
@ -112,11 +96,19 @@ fn build(mut logger log.Log) ? {
} }
template_content := os.read_file(commands.default_template)? template_content := os.read_file(commands.default_template)?
mut config_map := get_config_map()?
toml_text := read_file(commands.default_config)?
config := config.load(toml_text)?
mut config_map := config.as_map()
md_paths := normalise_paths(os.walk_ext('.', '.md')) md_paths := normalise_paths(os.walk_ext('.', '.md'))
logger.info('start md to html') logger.info('start md to html')
for path in md_paths { for path in md_paths {
file_name := os.file_name(path)
if file_name in config.build.ignore_files {
logger.info('$file_name is included in ignore_files, skip build')
continue
}
mut md := os.read_file(path)? mut md := os.read_file(path)?
md = pre_proc_md_to_html(md)? md = pre_proc_md_to_html(md)?
contents := markdown.to_html(md) contents := markdown.to_html(md)

@ -1,7 +1,5 @@
module commands module commands
import os
fn test_get_html_filename() { fn test_get_html_filename() {
test_path := 'index.md' test_path := 'index.md'
mut html_name := get_html_path(test_path) mut html_name := get_html_path(test_path)

@ -2,12 +2,16 @@ module config
import toml import toml
// template_params list of field names to convert as_map
const template_params = ['title', 'description', 'base_url']
// Build settings for build // Build settings for build
struct Build { struct Build {
pub mut: pub mut:
ignore_files []string ignore_files []string
} }
// Config general settings for vss
struct Config { struct Config {
pub mut: pub mut:
build Build build Build
@ -16,7 +20,7 @@ pub mut:
base_url string base_url string
} }
// load // load
pub fn load(toml_text string) ?Config { pub fn load(toml_text string) ?Config {
doc := toml.parse_text(toml_text)? doc := toml.parse_text(toml_text)?
@ -27,6 +31,10 @@ pub fn load(toml_text string) ?Config {
} }
// as_map for template.parse // as_map for template.parse
pub fn (c Config) as_map() ?map[string]string { pub fn (c Config) as_map() map[string]string {
mut mp := map[string]string{}
} mp['title'] = c.title
mp['description'] = c.description
mp['base_url'] = c.base_url
return mp
}

Loading…
Cancel
Save