21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
|
# File 'lib/jekyll-webp-resize/webpGenerator.rb', line 21
def generate(site)
@config = DEFAULT.merge(site.config['webp'] || {})
if !@config['enabled']
Jekyll.logger.info("WebP:", "Disabled in site.config.")
return
end
Dir::mkdir(site.dest) if !File.directory? site.dest
files_generated = 0
for imgdir in @config['img_dir']
source_directory = File.join(site.source, imgdir)
destination_directory = File.join(site.dest, imgdir)
FileUtils::mkdir_p(destination_directory)
Jekyll.logger.info("WebP:", "Processing #{source_directory}")
for file in Dir[source_directory + "**/*.*"]
prefix = File.dirname(file.sub(source_directory, ""))
extension = File.extname(file).downcase
next if !@config['formats'].include? extension
filename = File.basename(file, extension) + ".webp"
FileUtils::mkdir_p(destination_directory + prefix)
output_full_path = File.join(destination_directory + prefix, filename)
site.static_files << WebpFile.new(site,
site.dest,
File.join(imgdir, prefix),
filename)
next if File.file?(output_full_path) && File.mtime(output_full_path) > File.mtime(file)
if File.file?(output_full_path) && File.mtime(output_full_path) <= File.mtime(file)
Jekyll.logger.info("WebP:", "Change to source image file #{file} detected, regenerating WebP")
end
WebpExec.run(@config['flags'], file, output_full_path)
files_generated += 1
end
end
Jekyll.logger.info("WebP:", "Generator Complete: #{files_generated} file(s) generated")
end
|