mirror of
https://github.com/tuna/mirror-web.git
synced 2025-12-25 20:32:46 +00:00
pass config through fd
This commit is contained in:
parent
b11d5564b3
commit
e5e9c00c38
|
|
@ -1,6 +1,7 @@
|
|||
require 'vite_ruby'
|
||||
require "jekyll/filters"
|
||||
require "ostruct"
|
||||
require 'tempfile'
|
||||
|
||||
module Jekyll::Vite
|
||||
end
|
||||
|
|
@ -43,9 +44,21 @@ class Jekyll::Vite::Generator < Jekyll::Generator
|
|||
**(site.config['vite'].transform_keys(&:to_sym) || {})
|
||||
)
|
||||
site.reader.read_data
|
||||
vr.env['site_config'] = Jekyll_Filters.new.jsonify(site.config)
|
||||
vr.env['site_data'] = Jekyll_Filters.new.jsonify(site.data)
|
||||
vr.env['site_categories'] = Jekyll_Filters.new.jsonify(site.categories)
|
||||
exports = [
|
||||
{ :name => 'site_config', :data => site.config },
|
||||
{ :name => 'site_data', :data => site.data },
|
||||
{ :name => 'site_categories', :data => site.categories },
|
||||
]
|
||||
exports.each do |export|
|
||||
file = Tempfile.new()
|
||||
file.unlink
|
||||
file.write(Jekyll_Filters.new.jsonify(export[:data]))
|
||||
file.flush
|
||||
file.rewind
|
||||
file.close_on_exec = false
|
||||
vr.env[export[:name]] = "#{file.fileno}"
|
||||
export[:file] = file
|
||||
end
|
||||
vr.logger = Jekyll.logger
|
||||
|
||||
class << site
|
||||
|
|
@ -61,6 +74,9 @@ class Jekyll::Vite::Generator < Jekyll::Generator
|
|||
vr.commands.clobber
|
||||
end
|
||||
generate_vite_build(site)
|
||||
exports.each do |export|
|
||||
export[:file].close
|
||||
end
|
||||
end
|
||||
|
||||
class Jekyll_Filters
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ import { toSass } from "sass-cast";
|
|||
import { Liquid, Tag as LiquidTag } from "liquidjs";
|
||||
import Babel from "@babel/core";
|
||||
import BabelPresetEnv from "@babel/preset-env";
|
||||
import fs from "node:fs";
|
||||
|
||||
const visualizer = await (async () => {
|
||||
if (process.env.VISUALIZER) {
|
||||
|
|
@ -21,7 +22,20 @@ const exposedData = ["config", "data", "categories"];
|
|||
const jekyllData = Object.fromEntries(
|
||||
exposedData.map((key) => [
|
||||
key,
|
||||
JSON.parse(process.env[`site_${key}`] || "{}"),
|
||||
((fd) => {
|
||||
if (fd) {
|
||||
const fdNum = parseInt(fd);
|
||||
if (!isNaN(fdNum)) {
|
||||
const buf = Buffer.alloc(fs.fstatSync(fdNum).size);
|
||||
fs.readSync(fdNum, buf);
|
||||
return JSON.parse(buf.toString());
|
||||
} else {
|
||||
return {};
|
||||
}
|
||||
} else {
|
||||
return {};
|
||||
}
|
||||
})(process.env[`site_${key}`]),
|
||||
]),
|
||||
);
|
||||
jekyllData.config.hasOwnProperty("suffix") || (jekyllData.config.suffix = null);
|
||||
|
|
|
|||
Loading…
Reference in New Issue