Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:darix:apps
hugo
hugo-compress-site
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File hugo-compress-site of Package hugo
#!/usr/bin/ruby # # License: GNU Affero General Public License v3.0 only # require 'find' require 'pathname' class CompressMeNow attr_reader :sizes def initialize(filename) @filename = filename @sizes={} @stat_input_file = File.stat(filename) @sizes[:source] = @stat_input_file.size do_brotli do_gzip end private def conditional_compression(output_filename, cmdline) if !File.exist?(output_filename) or File.stat(output_filename).mtime < @stat_input_file.mtime system(cmdline) end end def do_gzip output_filename = "#{@filename}.gz" cmdline = "gzip -k -f --best '#{@filename}'" conditional_compression(output_filename, cmdline) @sizes[:gz] = File.stat(output_filename).size end def do_brotli output_filename = "#{@filename}.br" cmdline = "brotli -f --quality=11 --output='#{output_filename}' '#{@filename}'" conditional_compression(output_filename, cmdline) @sizes[:br] = File.stat(output_filename).size end end class CompressMeWalker def initialize(basedir, extensionlist= %w{ .css .html .js .svg .xml .map .woff .woff2 }) @basedir = basedir @extensionlist = extensionlist @start_time = Time.now @source_size = 0 @br_size = 0 @gz_size = 0 puts "Compression job started ..." run puts "Compressing files done in #{Time.now - @start_time}s: Compressed #{@source_size} bytes via brotli to #{@br_size} bytes and via gzip to #{@gz_size} bytes." end def run Find.find(@basedir) do |path| if FileTest.file?(path) pn=Pathname.new(path) next unless @extensionlist.include? pn.extname result = CompressMeNow.new(path).sizes @source_size += result[:source] @br_size += result[:br] @gz_size += result[:gz] end end end end CompressMeWalker.new(ARGV.first)
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor