whitespaces
[coquelicot.git] / Rakefile
index 633c81a..790c7e7 100644 (file)
--- a/Rakefile
+++ b/Rakefile
@@ -1,5 +1,5 @@
 # Coquelicot: "one-click" file sharing with a focus on users' privacy.
-# Copyright © 2010-2012 potager.org <jardiniers@potager.org>
+# Copyright © 2010-2013 potager.org <jardiniers@potager.org>
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU Affero General Public License as
 
 require 'rubygems'
 require 'bundler'
+Bundler.require(:default, :development)
 Bundler.setup
 
+require 'bundler/gem_tasks'
 require 'haml/magic_translations/tasks'
 
-$:.unshift File.join(File.dirname(__FILE__), 'lib')
-
 Haml::MagicTranslations::Tasks::UpdatePoFiles.new(:updatepo) do |t|
- t.text_domain = 'coquelicot'
- t.files = Dir.glob("views/**/*.{rb,haml}") << "lib/coquelicot/app.rb"
- t.app_version = 'coquelicot 1.0.0'
+  t.text_domain = 'coquelicot'
+  t.files = Dir.glob('views/**/*.{rb,haml}') + Dir.glob('lib/coquelicot/**/*.rb')
+  t.app_version = 'coquelicot 1.0.0'
+end
+
+task :create_archive do
+  spec = Gem::Specification.load('coquelicot.gemspec')
+
+  filename = "coquelicot-#{spec.version}.tar.gz"
+
+  File.open(filename, 'wb') do |archive|
+    Zlib::GzipWriter.wrap(archive) do |gzipped|
+      Gem::Package::TarWriter.new(gzipped) do |writer|
+        spec.files.each do |file|
+          next if File.directory? file
+          stat = File.stat(file)
+          mode = stat.mode & 0777
+          size = stat.size
+          writer.add_file_simple(file, mode, size) do |tar_io|
+            tar_io.write(open(file, 'rb') { |f| f.read })
+          end
+        end
+        # Add empty directories where there is place holders
+        Dir.glob('**/.placeholder') do |placeholder|
+          writer.mkdir File.dirname(placeholder), 0700
+        end
+      end
+    end
+  end
 end