gem building machinery
This commit is contained in:
parent
3234f7013f
commit
cf10e21b30
18
COPYING
Normal file
18
COPYING
Normal file
@ -0,0 +1,18 @@
|
||||
Copyright (c) 2010 Ryan Tomayko <http://tomayko.com/about>
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), 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 "AS IS", 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.
|
59
Rakefile
Normal file
59
Rakefile
Normal file
@ -0,0 +1,59 @@
|
||||
require 'rake/testtask'
|
||||
task :default => :test
|
||||
|
||||
desc 'Run tests (default)'
|
||||
Rake::TestTask.new(:test) do |t|
|
||||
t.test_files = FileList['test/*_test.rb']
|
||||
t.ruby_opts = ['-rubygems'] if defined? Gem
|
||||
end
|
||||
|
||||
# PACKAGING =================================================================
|
||||
|
||||
if defined?(Gem)
|
||||
SPEC = eval(File.read('rocco.gemspec'))
|
||||
|
||||
def package(ext='')
|
||||
"pkg/rocco-#{SPEC.version}" + ext
|
||||
end
|
||||
|
||||
desc 'Build packages'
|
||||
task :package => %w[.gem .tar.gz].map {|e| package(e)}
|
||||
|
||||
desc 'Build and install as local gem'
|
||||
task :install => package('.gem') do
|
||||
sh "gem install #{package('.gem')}"
|
||||
end
|
||||
|
||||
directory 'pkg/'
|
||||
|
||||
file package('.gem') => %w[pkg/ rocco.gemspec] + SPEC.files do |f|
|
||||
sh "gem build rocco.gemspec"
|
||||
mv File.basename(f.name), f.name
|
||||
end
|
||||
|
||||
file package('.tar.gz') => %w[pkg/] + SPEC.files do |f|
|
||||
sh "git archive --format=tar HEAD | gzip > #{f.name}"
|
||||
end
|
||||
end
|
||||
|
||||
# GEMSPEC ===================================================================
|
||||
|
||||
file 'rocco.gemspec' => FileList['{lib,test,bin}/**','Rakefile'] do |f|
|
||||
# read version from tilt.rb
|
||||
version = File.read('lib/rocco.rb')[/VERSION = '(.*)'/] && $1
|
||||
# read spec file and split out manifest section
|
||||
spec = File.
|
||||
read(f.name).
|
||||
sub(/s\.version\s*=\s*'.*'/, "s.version = '#{version}'")
|
||||
parts = spec.split(" # = MANIFEST =\n")
|
||||
# determine file list from git ls-files
|
||||
files = `git ls-files`.
|
||||
split("\n").sort.reject{ |file| file =~ /^\./ }.
|
||||
map{ |file| " #{file}" }.join("\n")
|
||||
# piece file back together and write...
|
||||
parts[1] = " s.files = %w[\n#{files}\n ]\n"
|
||||
spec = parts.join(" # = MANIFEST =\n")
|
||||
spec.sub!(/s.date = '.*'/, "s.date = '#{Time.now.strftime("%Y-%m-%d")}'")
|
||||
File.open(f.name, 'w') { |io| io.write(spec) }
|
||||
puts "updated #{f.name}"
|
||||
end
|
@ -51,6 +51,8 @@ end
|
||||
# whatever means necessary and return it as a string. With no `block`, the
|
||||
# file is read to retrieve data.
|
||||
class Rocco
|
||||
VERSION = '0.1'
|
||||
|
||||
def initialize(filename, &block)
|
||||
@file = filename
|
||||
@data =
|
||||
|
38
rocco.gemspec
Normal file
38
rocco.gemspec
Normal file
@ -0,0 +1,38 @@
|
||||
Gem::Specification.new do |s|
|
||||
s.specification_version = 2 if s.respond_to? :specification_version=
|
||||
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
||||
|
||||
s.name = 'rocco'
|
||||
s.version = '0.1'
|
||||
s.date = '2010-03-08'
|
||||
|
||||
s.description = "Docco in Ruby"
|
||||
s.summary = s.description
|
||||
|
||||
s.authors = ["Ryan Tomayko"]
|
||||
s.email = "r@tomayko.com"
|
||||
|
||||
# = MANIFEST =
|
||||
s.files = %w[
|
||||
COPYING
|
||||
README.md
|
||||
Rakefile
|
||||
bin/rocco
|
||||
lib/rocco.rb
|
||||
lib/rocco/layout.mustache
|
||||
lib/rocco/layout.rb
|
||||
rocco.gemspec
|
||||
]
|
||||
# = MANIFEST =
|
||||
|
||||
s.executables = ["rocco"]
|
||||
|
||||
s.test_files = s.files.select {|path| path =~ /^test\/.*_test.rb/}
|
||||
s.add_dependency 'rdiscount'
|
||||
s.add_dependency 'mustache'
|
||||
|
||||
s.has_rdoc = false
|
||||
s.homepage = "http://rtomayko.github.com/rocco/"
|
||||
s.require_paths = %w[lib]
|
||||
s.rubygems_version = '1.1.1'
|
||||
end
|
Loading…
Reference in New Issue
Block a user