I ended up making a Rake task:
class SpriteTask
include Rake::DSL
attr_reader :file_task
def initialize(glob)
@glob = glob
build_compass_sprite_map
define_task
end
private
attr_reader :glob, :map
def build_compass_sprite_map
uri = Sass::Script::String.new(glob)
context = Object.new
kwargs = {}
kwargs.extend Compass::SassExtensions::Functions::Sprites::VariableReader
@map = Compass::SassExtensions::Sprites::SpriteMap.from_uri uri, context, kwargs
@map.options = {}
end
def define_task
@file_task = file(map.filename => map.image_filenames) do |task|
map.generate
end
end
end
and using it like so:
require 'sprite_task'
namespace :sprites do
task :generate do
SpriteTask.new('foo/*.png').file_task.invoke
SpriteTask.new('bar/*.png').file_task.invoke
end
end