Module: Esp::Mw::Builder
- Defined in:
- lib/esp/mw/builder.rb
Overview
Orchestrates mods/<Mod>/<Mod>.json -> dist/<Mod>.esp:
1. Load source JSON.
2. Run Esp::Mw::Preflight to inline text_source files and regenerate
Script record blobs.
3. Hand the canonical JSON to tes3conv via a tempfile (whose
extension must be .json — tes3conv sniffs by extension).
Defined Under Namespace
Classes: Result
Class Method Summary collapse
- .build(mod, root: Esp::ROOT, locale: nil) ⇒ Object
- .discover_mods(root: Esp::ROOT) ⇒ Object
- .output_path(mod, root, locale: nil) ⇒ Object
Class Method Details
.build(mod, root: Esp::ROOT, locale: nil) ⇒ Object
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
# File 'lib/esp/mw/builder.rb', line 17 def build(mod, root: Esp::ROOT, locale: nil) source = Esp::Mw::Loader.resolve(mod, root: root) source_dir = File.dirname(source) i18n = build_i18n(source_dir, locale) records = Esp::Mw::Loader.load(source, i18n: i18n) i18n.resolve!(records) logs = Esp::Mw::Preflight.process!(records, source_dir: source_dir) logs.concat(i18n_miss_logs(i18n)) output = output_path(mod, root, locale: locale) FileUtils.mkdir_p(File.dirname(output)) Tempfile.create(['mw-build-', '.json']) do |tmp| tmp.write("#{JSON.pretty_generate(records)}\n") tmp.close Esp::Mw::Tes3conv.convert(tmp.path, output) end Result.new(output: output, logs: logs) end |
.discover_mods(root: Esp::ROOT) ⇒ Object
45 46 47 48 49 50 51 52 53 54 55 56 |
# File 'lib/esp/mw/builder.rb', line 45 def discover_mods(root: Esp::ROOT) Dir.glob(File.join(root, 'mods', '*')).filter_map do |dir| next unless File.directory?(dir) name = File.basename(dir) unless Esp::Mw::Loader.supported_exts.any? { |ext| File.exist?(File.join(dir, "#{name}#{ext}")) } next end name end end |