Jump To …

helpers.rb

#
require 'fileutils'
require 'rbconfig'
require 'tilt'
#

default helpers

module Sidekick::Helpers
#

system

  require 'sidekick/helpers/util'
  include Util

  def log(str)
    puts ' -> ' + str
  end

  def stop(*prms)
    Sidekick.stop(*prms)
  end
#

notifications

  def notify(message, title='Sidekick')

    gems = {:linux => 'libnotify', :darwin => 'growl'}

    stop('Notifications not supported.') unless platform_load?(
                                          gems, 'notifications')
    case platform
      when :linux
        Libnotify.show :body => message, :summary => title
      when :darwin
        Growl.notify message, :title => title, :name => 'Sidekick'
    end
  end

  def sh(cmd)
    log cmd
    puts result = `#{cmd}`
    result
  end

  def restart_passenger
    FileUtils.touch './tmp/restart.txt'
    log 'restarted passenger'
  end
#

watches for changes matching the source glob, compiles using the tilt gem, and saves to target. Target is interpolated for :name

  def auto_compile(source, target)
    watch(source) do |files|
      files.each do |file|
        if File.exists?(file)
          begin
            t = target.gsub(':name', File.basename(file, '.*'))
            File.open(t, 'w') do |f|
              f.write(Tilt.new(file).render)
            end
            log "render #{file} => #{t}"
          rescue Exception => e
            notify "Error in #{file}:\n#{e}"
            log    "Error in #{file}:\n#{e}"
          end
        end
      end
    end
  end

end