dawarich/lib/tasks/webmanifest.rake
2025-12-27 19:07:57 +01:00

45 lines
1.4 KiB
Ruby

# frozen_string_literal: true
namespace :webmanifest do
desc 'Generate site.webmanifest in public directory with correct asset paths'
task generate: :environment do
require 'erb'
# Make sure assets are compiled first by loading the manifest
Rails.application.assets_manifest.assets
# Get the correct asset paths
icon_192_path = ActionController::Base.helpers.asset_path('favicon/android-chrome-192x192.png')
icon_512_path = ActionController::Base.helpers.asset_path('favicon/android-chrome-512x512.png')
# Generate the manifest content
manifest_content = {
"name": 'Dawarich',
"short_name": 'Dawarich',
"icons": [
{
"src": icon_192_path,
"sizes": '192x192',
"type": 'image/png'
},
{
"src": icon_512_path,
"sizes": '512x512',
"type": 'image/png'
}
],
"theme_color": '#ffffff',
"background_color": '#ffffff',
"display": 'standalone'
}.to_json
# Write to public/site.webmanifest
File.write(Rails.root.join('public/site.webmanifest'), manifest_content)
puts 'Generated public/site.webmanifest with correct asset paths'
end
end
# Hook to automatically generate webmanifest after assets:precompile
# Rake::Task['assets:precompile'].enhance do
# Rake::Task['webmanifest:generate'].invoke
# end