Как указать файл конфигурации при создании сайта в Blogdown? - PullRequest
0 голосов
/ 10 апреля 2019

Я строю сайт в Blogdown, и это примерно такая структура:

mysite
 |--config.toml
 |--ppe_config.toml
 |--content/
 |...

Базовый сценарий

При запуске blogdown::build_site() Я хотел бы указать, какой файл конфигурации выбрать. Как это сделать?

Более сложный сценарий

В Документ Хьюго можно увидеть, что с помощью каталогов конфигурации можно использовать более продвинутую структуру конфигурации. Итак, если у меня есть эта структура:

mysite
 |--config
 |   |--_default
 |   |   |--config.toml
 |   |--ppe
 |   |   |--config.toml
 |--content/
 |...

Как указать среду при вызове blogdown::build_site()?

Документация и справочная страница , касающиеся Blogdown и blogdown::build_site, не указывают этого. Есть упоминание о пользовательском R-файле, который будет использоваться для сборки, но возможно ли, что я не могу указать параметры для команды, передаваемой Хьюго?


Более глубокое расследование

С Blogdown сайта GitHub , можно увидеть, что build_site в конечном итоге загрузит конфигурацию через функцию load_config:

load_config = function() {
  config = opts$get('config')
  owd = setwd(site_root()); on.exit(setwd(owd), add = TRUE)
  f = find_config(); m = file.info(f)[, 'mtime']
  # read config only if it has been updated
  if (identical(attr(config, 'config_time'), m)) return(config)
  parser = switch(f, 'config.toml' = parse_toml, 'config.yaml' = yaml_load_file)
  config = parser(f)
  attr(config, 'config_time') = m
  attr(config, 'config_content') = read_utf8(f)
  opts$set(config = config)
  check_config(config, f)
}

Функция find_config может быть найдена в том же файле через несколько строк:

# only support TOML and YAML (no JSON)
config_files = c('config.toml', 'config.yaml')

find_config = function(files = config_files, error = TRUE) {
  f = existing_files(files, first = TRUE)
  if (length(f) == 0 && error) stop(
    'Cannot find the configuration file ', paste(files, collapse = ' | '), ' of the website'
  )
  f
}

И кажется, что нет возможности указать другую конфигурацию.

  • Это предположение верно?
  • Если нет, то где мы можем загрузить другую конфигурацию?
...