#!/usr/bin/env ruby

# Erik Kastner - git-r-up.rb
# daemon to watch for changes in a directory and sync them to a directory under source control (like rails + git)
# also adds and commits files to git (just git init in the FETCH_ROOT)

require 'rubygems'
require 'simple-daemon'
require 'git'

PUBLIC_ROOT = "/path/to/rails/project/current/public"
FETCH_ROOT = "/home/myuser/website"

class Watcher < SimpleDaemon::Base
SimpleDaemon::WORKING_DIRECTORY = "/tmp/git-watcher"
def self.start
puts "Starting Watcher"
g = Git.open(FETCH_ROOT)
loop do
unless g.status.untracked.empty? && g.status.changed.empty?
%x{cp -r #{FETCH_ROOT}/* #{PUBLIC_ROOT}}
g.add
g.commit_all("auto from watcher")
end
end
end

def self.end
puts "Stopping Watcher"
end
end

Watcher.daemonize