<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -0,0 +1 @@
+* Matt Todd &lt;chiology@gmail.com&gt;</diff>
      <filename>AUTHORS</filename>
    </modified>
    <modified>
      <diff>@@ -0,0 +1,58 @@
+= Halcyon JSON Server Framework
+
+A JSON Web Server Framework designed to provide for simple applications dealing
+solely with JSON requests and responses from AJAX client applications or for
+lightweight server-side message transport.
+
+== On Rack
+
+Halcyon is based off of Rack.
+
+== Quick start
+
+Check out the documentation for the Aurora SAS at http://aurora.rubyforge.org/
+to see Halcyon in use.
+
+== Installing with RubyGems
+
+A Gem of Halcyon is available.  You can install it with:
+
+$ sudo gem install halcyon
+
+== Contact
+
+Please mail bugs, suggestions and patches to
+&lt;mailto:chiology@gmail.com&gt;.
+
+You are also welcome to join the #halcyon channel on irc.freenode.net.
+
+== License and Copyright
+
+Copyright (C) 2007 Matt Todd &lt;http://purl.org/net/maraby&gt;.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the &quot;Software&quot;), to
+deal in the Software without restriction, including without limitation the
+rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+sell copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 
+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+== Links
+
+Halcyon:: &lt;http://halcyon.rubyforge.org/&gt;
+Aurora:: &lt;http://aurora.rubyforge.org/&gt;
+
+Rack:: &lt;http://rack.rubyforge.org/&gt;
+JSON:: &lt;http://json.rubyforge.org/&gt;
+
+Matt TOdd:: &lt;http://maraby.org/&gt;</diff>
      <filename>README</filename>
    </modified>
    <modified>
      <diff>@@ -0,0 +1,175 @@
+# Rakefile for Rack.  -*-ruby-*-
+require 'rake/rdoctask'
+require 'rake/testtask'
+
+
+desc &quot;Run all the tests&quot;
+task :default =&gt; [:test]
+
+desc &quot;Do predistribution stuff&quot;
+task :predist =&gt; [:chmod, :changelog, :rdoc]
+
+
+desc &quot;Make an archive as .tar.gz&quot;
+task :dist =&gt; :fulltest do
+  sh &quot;export DARCS_REPO=#{File.expand_path &quot;.&quot;}; &quot; +
+     &quot;darcs dist -d rack-#{get_darcs_tree_version}&quot;
+end
+
+# Helper to retrieve the &quot;revision number&quot; of the darcs tree.
+def get_darcs_tree_version
+  unless File.directory? &quot;_darcs&quot;
+    $: &lt;&lt; &quot;lib&quot;
+    require 'rack'
+    return Rack.version
+  end
+
+  changes = `darcs changes`
+  count = 0
+  tag = &quot;0.0&quot;
+
+  changes.each(&quot;\n\n&quot;) { |change|
+    head, title, desc = change.split(&quot;\n&quot;, 3)
+
+    if title =~ /^  \*/
+      # Normal change.
+      count += 1
+    elsif title =~ /tagged (.*)/
+      # Tag.  We look for these.
+      tag = $1
+      break
+    else
+      warn &quot;Unparsable change: #{change}&quot;
+    end
+  }
+
+  tag + &quot;.&quot; + count.to_s
+end
+
+def manifest
+  `darcs query manifest`.split(&quot;\n&quot;).map { |f| f.gsub(/\A\.\//, '') }
+end
+
+
+desc &quot;Make binaries executable&quot;
+task :chmod do
+  Dir[&quot;bin/*&quot;].each { |binary| File.chmod(0775, binary) }
+  Dir[&quot;test/cgi/test*&quot;].each { |binary| File.chmod(0775, binary) }
+end
+
+desc &quot;Generate a ChangeLog&quot;
+task :changelog do
+  sh &quot;darcs changes --repo=#{ENV[&quot;DARCS_REPO&quot;] || &quot;.&quot;} &gt;ChangeLog&quot;
+end
+
+
+desc &quot;Generate RDox&quot;
+task &quot;RDOX&quot; do
+  sh &quot;specrb -Ilib:test -a --rdox &gt;RDOX&quot;
+end
+
+desc &quot;Generate Rack Specification&quot;
+task &quot;SPEC&quot; do
+  File.open(&quot;SPEC&quot;, &quot;wb&quot;) { |file|
+    IO.foreach(&quot;lib/rack/lint.rb&quot;) { |line|
+      if line =~ /## (.*)/
+        file.puts $1
+      end
+    }
+  }
+end
+
+desc &quot;Run all the fast tests&quot;
+task :test do
+  sh &quot;specrb -Ilib:test -w #{ENV['TEST'] || '-a'} #{ENV['TESTOPTS'] || '-t &quot;^(?!Rack::Handler|Rack::Adapter)&quot;'}&quot;
+end
+
+desc &quot;Run all the tests&quot;
+task :fulltest do
+  sh &quot;specrb -Ilib:test -w #{ENV['TEST'] || '-a'} #{ENV['TESTOPTS']}&quot;
+end
+
+begin
+  $&quot; &lt;&lt; &quot;sources&quot;  if defined? FromSrc
+  require 'rubygems'
+
+  require 'rake'
+  require 'rake/clean'
+  require 'rake/packagetask'
+  require 'rake/gempackagetask'
+  require 'fileutils'
+rescue LoadError
+  # Too bad.
+else
+  spec = Gem::Specification.new do |s|
+    s.name            = &quot;rack&quot;
+    s.version         = get_darcs_tree_version
+    s.platform        = Gem::Platform::RUBY
+    s.summary         = &quot;a modular Ruby webserver interface&quot;
+
+    s.description = &lt;&lt;-EOF
+Rack provides minimal, modular and adaptable interface for developing
+web applications in Ruby.  By wrapping HTTP requests and responses in
+the simplest way possible, it unifies and distills the API for web
+servers, web frameworks, and software in between (the so-called
+middleware) into a single method call.
+
+Also see http://rack.rubyforge.org.
+    EOF
+
+    s.files           = manifest + %w(SPEC RDOX)
+    s.bindir          = 'bin'
+    s.executables     &lt;&lt; 'rackup'
+    s.require_path    = 'lib'
+    s.has_rdoc        = true
+    s.extra_rdoc_files = ['README', 'SPEC', 'RDOX', 'KNOWN-ISSUES']
+    s.test_files      = Dir['test/{test,spec}_*.rb']
+
+    s.author          = 'Christian Neukirchen'
+    s.email           = 'chneukirchen@gmail.com'
+    s.homepage        = 'http://rack.rubyforge.org'
+    s.rubyforge_project = 'rack'
+  end
+
+  Rake::GemPackageTask.new(spec) do |p|
+    p.gem_spec = spec
+    p.need_tar = false
+    p.need_zip = false
+  end
+end
+
+desc &quot;Generate RDoc documentation&quot;
+Rake::RDocTask.new(:rdoc) do |rdoc|
+  rdoc.options &lt;&lt; '--line-numbers' &lt;&lt; '--inline-source' &lt;&lt;
+    '--main' &lt;&lt; 'README' &lt;&lt;
+    '--title' &lt;&lt; 'Rack Documentation' &lt;&lt;
+    '--charset' &lt;&lt; 'utf-8'
+  rdoc.rdoc_dir = &quot;doc&quot;
+  rdoc.rdoc_files.include 'README'
+  rdoc.rdoc_files.include 'KNOWN-ISSUES'
+  rdoc.rdoc_files.include 'SPEC'
+  rdoc.rdoc_files.include 'RDOX'
+  rdoc.rdoc_files.include('lib/rack.rb')
+  rdoc.rdoc_files.include('lib/rack/*.rb')
+  rdoc.rdoc_files.include('lib/rack/*/*.rb')
+end
+task :rdoc =&gt; [&quot;SPEC&quot;, &quot;RDOX&quot;]
+
+task :pushsite =&gt; [:rdoc] do
+  sh &quot;rsync -avz doc/ chneukirchen@rack.rubyforge.org:/var/www/gforge-projects/rack/doc/&quot;
+  sh &quot;rsync -avz site/ chneukirchen@rack.rubyforge.org:/var/www/gforge-projects/rack/&quot;
+end
+
+begin
+  require 'rcov/rcovtask'
+
+  Rcov::RcovTask.new do |t|
+    t.test_files = FileList['test/{spec,test}_*.rb']
+    t.verbose = true     # uncomment to see the executed command
+    t.rcov_opts = [&quot;--text-report&quot;,
+                   &quot;-Ilib:test&quot;,
+                   &quot;--include-file&quot;, &quot;^lib,^test&quot;,
+                   &quot;--exclude-only&quot;, &quot;^/usr,^/home/.*/src,active_&quot;]
+  end
+rescue LoadError
+end</diff>
      <filename>Rakefile</filename>
    </modified>
    <modified>
      <diff>@@ -20,7 +20,7 @@ options = {
 }
 
 opts = OptionParser.new(&quot;&quot;, 24, '  ') do |opts|
-  opts.banner = &quot;Usage: halcyon [options] [config_file.yaml]&quot;
+  opts.banner = &quot;Usage: halcyon [options] [app]&quot;
   
   opts.separator &quot;&quot;
   opts.separator &quot;Options:&quot;
@@ -36,6 +36,10 @@ opts = OptionParser.new(&quot;&quot;, 24, '  ') do |opts|
     require library
   end
   
+  opts.on(&quot;-c&quot;, &quot;--config PATH&quot;, &quot;configuration stored in PATH&quot;) do |conf|
+    options[:config_file] = conf
+  end
+  
   opts.on(&quot;-s&quot;, &quot;--server SERVER&quot;, &quot;serve using SERVER (default: #{options[:server]})&quot;) do |serv|
     options[:server] = serv
   end
@@ -70,6 +74,7 @@ opts = OptionParser.new(&quot;&quot;, 24, '  ') do |opts|
   opts.parse! ARGV
 end
 
-options[:config_file] = ARGV.shift unless ARGV[0].nil?
+fail(&quot;Halcyon needs an app to run. Try: halcyon -h&quot;) if ARGV.empty? 
+options[:app] = ARGV.shift
 
 puts options.inspect</diff>
      <filename>bin/halcyon</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>986ea3a4a65ea8f064cd1edc9a77a4aca3e2a657</id>
    </parent>
  </parents>
  <author>
    <name>Matt Todd</name>
    <email>chiology@gmail.com</email>
  </author>
  <url>http://github.com/mtodd/halcyon/commit/e75f4a96cc33072feab97b329153ca9d48fcab53</url>
  <id>e75f4a96cc33072feab97b329153ca9d48fcab53</id>
  <committed-date>2007-12-14T01:38:21-08:00</committed-date>
  <authored-date>2007-12-14T01:38:21-08:00</authored-date>
  <message>Fixed some of the general documentation for the project and stole some code from Rack for Rakefile and for bin/halcyon.

git-svn-id: svn+ssh://rubyforge.org/var/svn/halcyon/trunk@3 334d6d1c-2662-47f5-9f2d-00d938bdab95</message>
  <tree>b18e2d9f3431ce1ef4e99e47ef7ffc41278c4c8f</tree>
  <committer>
    <name>Matt Todd</name>
    <email>chiology@gmail.com</email>
  </committer>
</commit>
