-
Notifications
You must be signed in to change notification settings - Fork 71
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Reorganize project based on
bundle gem
practices (#35)
Remove the custom Rake tasks for packaging and release the gem in favor of a standard layout as suggested by the `bundle gem` command: * Add a Gemfile and gemspec * Use Bundler's built-in `gem_tasks` * Add appropriate file extension to LICENSE * Add development utils in `bin` * Move version number to `plist/version.rb` * Use Bundler's recommended `.gitignore` * Add `gem install bundler` to `.travis.yml` This reorganization allows any Ruby open source developer to easily check out, run tests, and release the gem without any special knowledge or tooling.
- Loading branch information
1 parent
47a3b34
commit e8c8321
Showing
10 changed files
with
76 additions
and
154 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,9 @@ | ||
rdoc | ||
coverage | ||
pkg | ||
/.bundle/ | ||
/.yardoc | ||
/Gemfile.lock | ||
/_yardoc/ | ||
/coverage/ | ||
/doc/ | ||
/pkg/ | ||
/spec/reports/ | ||
/tmp/ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
source "https://rubygems.org" | ||
|
||
# Specify your gem's dependencies in plist.gemspec | ||
gemspec |
File renamed without changes.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,154 +1,10 @@ | ||
# | ||
# Plist Rakefile | ||
# | ||
# Based heavily on Geoffrey Grosenbach's Rakefile for gruff. | ||
# Includes whitespace-fixing task based on code from Typo. | ||
# | ||
# Copyright 2006-2010 Ben Bleything and Patrick May | ||
# Distributed under the MIT License | ||
# | ||
require "bundler/gem_tasks" | ||
require "rake/testtask" | ||
|
||
require 'fileutils' | ||
require 'rubygems' | ||
require 'rake' | ||
require 'rake/testtask' | ||
require 'rake/packagetask' | ||
require 'rake/contrib/rubyforgepublisher' | ||
require 'rubygems/package_task' | ||
|
||
$:.unshift(File.dirname(__FILE__) + "/lib") | ||
require 'plist' | ||
|
||
PKG_NAME = 'plist' | ||
PKG_VERSION = Plist::VERSION | ||
PKG_FILE_NAME = "#{PKG_NAME}-#{PKG_VERSION}" | ||
|
||
RELEASE_NAME = "REL #{PKG_VERSION}" | ||
|
||
RUBYFORGE_PROJECT = "plist" | ||
RUBYFORGE_USER = ENV['RUBYFORGE_USER'] | ||
|
||
TEST_FILES = Dir.glob('test/test_*') | ||
TEST_ASSETS = Dir.glob('test/assets/*') | ||
LIB_FILES = Dir.glob('lib/**/*') | ||
RELEASE_FILES = [ "Rakefile", "README.rdoc", "CHANGELOG", "LICENSE" ] + LIB_FILES + TEST_FILES + TEST_ASSETS | ||
|
||
task :default => [ :test ] | ||
# Run the unit tests | ||
Rake::TestTask.new { |t| | ||
Rake::TestTask.new(:test) do |t| | ||
t.libs << "test" | ||
t.test_files = TEST_FILES | ||
t.verbose = true | ||
} | ||
|
||
desc "Clean pkg, coverage, and rdoc; remove .bak files" | ||
task :clean => [ :clobber_rdoc, :clobber_package, :clobber_coverage ] do | ||
puts cmd = "find . -type f -name *.bak -delete" | ||
`#{cmd}` | ||
end | ||
|
||
task :clobber_coverage do | ||
puts cmd = "rm -rf coverage" | ||
`#{cmd}` | ||
end | ||
|
||
desc "Generate coverage analysis with rcov (requires rcov to be installed)" | ||
task :rcov => [ :clobber_coverage ] do | ||
puts cmd = "rcov -Ilib --xrefs -T test/*.rb" | ||
puts `#{cmd}` | ||
end | ||
|
||
desc "Strip trailing whitespace and fix newlines for all release files" | ||
task :fix_whitespace => [ :clean ] do | ||
RELEASE_FILES.reject {|i| i =~ /assets/}.each do |filename| | ||
next if File.directory? filename | ||
|
||
File.open(filename) do |file| | ||
newfile = '' | ||
needs_love = false | ||
|
||
file.readlines.each_with_index do |line, lineno| | ||
if line =~ /[ \t]+$/ | ||
needs_love = true | ||
puts "#{filename}: trailing whitespace on line #{lineno}" | ||
line.gsub!(/[ \t]*$/, '') | ||
end | ||
|
||
if line.chomp == line | ||
needs_love = true | ||
puts "#{filename}: no newline on line #{lineno}" | ||
line << "\n" | ||
end | ||
|
||
newfile << line | ||
end | ||
|
||
if needs_love | ||
tempname = "#{filename}.new" | ||
|
||
File.open(tempname, 'w').write(newfile) | ||
File.chmod(File.stat(filename).mode, tempname) | ||
|
||
FileUtils.ln filename, "#{filename}.bak" | ||
FileUtils.ln tempname, filename, :force => true | ||
File.unlink(tempname) | ||
end | ||
end | ||
end | ||
end | ||
|
||
desc "Copy documentation to rubyforge" | ||
task :update_rdoc => [ :rdoc ] do | ||
Rake::SshDirPublisher.new("#{RUBYFORGE_USER}@rubyforge.org", "/var/www/gforge-projects/#{RUBYFORGE_PROJECT}", "rdoc").upload | ||
end | ||
|
||
begin | ||
require 'rdoc/task' | ||
|
||
# Generate the RDoc documentation | ||
RDoc::Task.new do |rdoc| | ||
rdoc.title = "All-purpose Property List manipulation library" | ||
rdoc.main = "README.rdoc" | ||
|
||
rdoc.rdoc_dir = 'rdoc' | ||
rdoc.rdoc_files.include('README.rdoc', 'LICENSE', 'CHANGELOG') | ||
rdoc.rdoc_files.include('lib/**') | ||
|
||
rdoc.options = [ | ||
'-H', # show hash marks on method names in comments | ||
'-N', # show line numbers | ||
] | ||
end | ||
rescue LoadError | ||
$stderr.puts "Could not load rdoc tasks" | ||
end | ||
|
||
# Create compressed packages | ||
spec = Gem::Specification.new do |s| | ||
s.name = PKG_NAME | ||
s.version = PKG_VERSION | ||
|
||
s.summary = "All-purpose Property List manipulation library." | ||
s.description = <<-EOD | ||
Plist is a library to manipulate Property List files, also known as plists. It can parse plist files into native Ruby data structures as well as generating new plist files from your Ruby objects. | ||
EOD | ||
|
||
s.authors = "Ben Bleything and Patrick May" | ||
s.homepage = "http://plist.rubyforge.org" | ||
|
||
s.rubyforge_project = RUBYFORGE_PROJECT | ||
|
||
s.has_rdoc = true | ||
|
||
s.files = RELEASE_FILES | ||
s.test_files = TEST_FILES | ||
|
||
s.autorequire = 'plist' | ||
end | ||
|
||
Gem::PackageTask.new(spec) do |p| | ||
p.gem_spec = spec | ||
p.need_tar = true | ||
p.need_zip = true | ||
t.libs << "lib" | ||
t.test_files = FileList["test/**/test_*.rb"] | ||
end | ||
|
||
task :default => :test |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
#!/usr/bin/env ruby | ||
|
||
require "bundler/setup" | ||
require "plist" | ||
|
||
# You can add fixtures and/or initialization code here to make experimenting | ||
# with your gem easier. You can also use a different console, if you like. | ||
|
||
# (If you use this, don't forget to add pry to your Gemfile!) | ||
# require "pry" | ||
# Pry.start | ||
|
||
require "irb" | ||
IRB.start(__FILE__) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
#!/usr/bin/env bash | ||
set -euo pipefail | ||
IFS=$'\n\t' | ||
set -vx | ||
|
||
bundle install | ||
|
||
# Do any other automated setup that you need to do here |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -17,5 +17,4 @@ | |
require 'plist/parser' | ||
|
||
module Plist | ||
VERSION = '3.2.0' | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
module Plist | ||
VERSION = '3.2.0'.freeze | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
# coding: utf-8 | ||
|
||
lib = File.expand_path("../lib", __FILE__) | ||
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib) | ||
require "plist/version" | ||
|
||
Gem::Specification.new do |spec| | ||
spec.name = "plist" | ||
spec.version = Plist::VERSION | ||
spec.authors = ["Ben Bleything", "Patrick May"] | ||
|
||
spec.summary = "All-purpose Property List manipulation library" | ||
spec.description = "Plist is a library to manipulate Property List files, "\ | ||
"also known as plists. It can parse plist files into "\ | ||
"native Ruby data structures as well as generating new "\ | ||
"plist files from your Ruby objects." | ||
spec.homepage = "https://github.com/patsplat/plist" | ||
spec.license = "MIT" | ||
|
||
spec.files = `git ls-files -z`.split("\x0").reject do |f| | ||
f.match(%r{^(test|spec|features)/}) | ||
end | ||
spec.bindir = "exe" | ||
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) } | ||
spec.require_paths = ["lib"] | ||
|
||
spec.add_development_dependency "bundler", "~> 1.14" | ||
spec.add_development_dependency "rake", "~> 10.5" | ||
spec.add_development_dependency "test-unit", "~> 1.2" | ||
end |