rubygems-tasks 0.1.0.pre1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,149 @@
1
+ require 'rubygems/tasks/console'
2
+ require 'rubygems/tasks/build'
3
+ require 'rubygems/tasks/install'
4
+ require 'rubygems/tasks/scm'
5
+ require 'rubygems/tasks/push'
6
+ require 'rubygems/tasks/release'
7
+ require 'rubygems/tasks/sign'
8
+
9
+ require 'rake/tasklib'
10
+ require 'ostruct'
11
+
12
+ module Gem
13
+ #
14
+ # Defines basic Rake tasks for managing and releasing projects:
15
+ #
16
+ # * {Build::Gem build:gem}
17
+ # * {Build::Tar build:tar}
18
+ # * {Build::Zip build:zip}
19
+ # * {SCM::Status scm:status}
20
+ # * {SCM::Push scm:push}
21
+ # * {SCM::Tag scm:tag}
22
+ # * {Console console}
23
+ # * {Install install}
24
+ # * {Push push}
25
+ # * {Release release}
26
+ # * {Sign::Checksum sign:checksum}
27
+ # * {Sign::PGP sign:pgp}
28
+ #
29
+ class Tasks
30
+
31
+ include Rake::DSL
32
+
33
+ #
34
+ # The `build` tasks.
35
+ #
36
+ # @return [OpenStruct]
37
+ # The collection of `build` tasks.
38
+ #
39
+ attr_reader :build
40
+
41
+ #
42
+ # The `scm` tasks.
43
+ #
44
+ # @return [OpenStruct]
45
+ # The collection of `scm` tasks.
46
+ #
47
+ attr_reader :scm
48
+
49
+ #
50
+ # The `sign` tasks.
51
+ #
52
+ # @return [OpenStruct]
53
+ # The collection of `sign` tasks.
54
+ #
55
+ attr_reader :sign
56
+
57
+ # The {Console console} task.
58
+ attr_reader :console
59
+
60
+ # The {Install install} task.
61
+ attr_reader :install
62
+
63
+ # The {Push push} task.
64
+ attr_reader :push
65
+
66
+ # The {Release release} task.
67
+ attr_reader :release
68
+
69
+ #
70
+ # Initializes the project tasks.
71
+ #
72
+ # @param [Hash{Symbol => Hash}] options
73
+ # Enables or disables individual tasks.
74
+ #
75
+ # @option options [Hash{Symbol => Boolean}] :build
76
+ # Enables or disables the `build` tasks.
77
+ #
78
+ # @option options [Hash{Symbol => Boolean}] :scm
79
+ # Enables or disables the `scm` tasks.
80
+ #
81
+ # @option options [Boolean] :console (true)
82
+ # Enables or disables the {Console console} task.
83
+ #
84
+ # @option options [Boolean] :install (true)
85
+ # Enables or disables the {Install install} task.
86
+ #
87
+ # @option options [Boolean] :push (true)
88
+ # Enables or disables the {Push push} task.
89
+ #
90
+ # @option options [Boolean] :release (true)
91
+ # Enables or disables the {Release release} task.
92
+ #
93
+ # @option options [Hash{Symbol => Boolean}] :sign
94
+ # Enables or disables the `sign` tasks.
95
+ #
96
+ # @yield [tasks]
97
+ # If a block is given, it will be passed the newly created tasks,
98
+ # before they are fully defined.
99
+ #
100
+ # @yieldparam [Tasks] tasks
101
+ # The newly created tasks.
102
+ #
103
+ # @example Enables building of `.gem` and `.tar.gz` packages:
104
+ # Gem::Tasks.new(:build => {:gem => true, :tar => true})
105
+ #
106
+ # @example Disables pushing `.gem` packages to [rubygems.org](rubygems.org):
107
+ # Gem::Tasks.new(:push => false)
108
+ #
109
+ # @example Configures the version tag format:
110
+ # Gem::Tasks.new do |tasks|
111
+ # tasks.scm.tag.format = "release-%s"
112
+ # end
113
+ #
114
+ def initialize(options={})
115
+ build_options = options.fetch(:build,{})
116
+ scm_options = options.fetch(:scm,{})
117
+ sign_options = options.fetch(:sign,{})
118
+
119
+ @scm = OpenStruct.new
120
+ @build = OpenStruct.new
121
+ @sign = OpenStruct.new
122
+
123
+ if build_options
124
+ @build.gem = Build::Gem.new if build_options.fetch(:gem,true)
125
+ @build.tar = Build::Tar.new if build_options[:tar]
126
+ @build.zip = Build::Zip.new if build_options[:zip]
127
+ end
128
+
129
+ if scm_options
130
+ @scm.status = SCM::Status.new if scm_options.fetch(:status,true)
131
+ @scm.tag = SCM::Tag.new if scm_options.fetch(:tag,true)
132
+ @scm.push = SCM::Push.new if scm_options.fetch(:push,true)
133
+ end
134
+
135
+ if sign_options
136
+ @sign.checksum = Sign::Checksum.new if sign_options[:checksum]
137
+ @sign.pgp = Sign::PGP.new if sign_options[:pgp]
138
+ end
139
+
140
+ @console = Console.new if options.fetch(:console,true)
141
+ @install = Install.new if options.fetch(:install,true)
142
+ @push = Push.new if options.fetch(:push,true)
143
+ @release = Release.new if options.fetch(:release,true)
144
+
145
+ yield self if block_given?
146
+ end
147
+
148
+ end
149
+ end
@@ -0,0 +1,127 @@
1
+ # encoding: utf-8
2
+
3
+ require 'yaml'
4
+
5
+ Gem::Specification.new do |gemspec|
6
+ files = if File.directory?('.git')
7
+ `git ls-files`.split($/)
8
+ elsif File.directory?('.hg')
9
+ `hg manifest`.split($/)
10
+ elsif File.directory?('.svn')
11
+ `svn ls -R`.split($/).select { |path| File.file?(path) }
12
+ else
13
+ Dir['{**/}{.*,*}'].select { |path| File.file?(path) }
14
+ end
15
+
16
+ filter_files = lambda { |paths|
17
+ case paths
18
+ when Array
19
+ (files & paths)
20
+ when String
21
+ (files & Dir[paths])
22
+ end
23
+ }
24
+
25
+ version = {
26
+ :file => 'lib/ore/tasks/version.rb',
27
+ :constant => 'Ore::Tasks::VERSION'
28
+ }
29
+
30
+ defaults = {
31
+ 'name' => File.basename(File.dirname(__FILE__)),
32
+ 'files' => files,
33
+ 'executables' => filter_files['bin/*'].map { |path| File.basename(path) },
34
+ 'test_files' => filter_files['{test/{**/}*_test.rb,spec/{**/}*_spec.rb}'],
35
+ 'extra_doc_files' => filter_files['*.{txt,rdoc,md,markdown,tt,textile}'],
36
+ }
37
+
38
+ metadata = defaults.merge(YAML.load_file('gemspec.yml'))
39
+
40
+ gemspec.name = metadata.fetch('name',defaults[:name])
41
+ gemspec.version = if metadata['version']
42
+ metadata['version']
43
+ elsif File.file?(version[:file])
44
+ require File.join('.',version[:file])
45
+ eval(version[:constant])
46
+ end
47
+
48
+ gemspec.summary = metadata.fetch('summary',metadata['description'])
49
+ gemspec.description = metadata.fetch('description',metadata['summary'])
50
+
51
+ case metadata['license']
52
+ when Array
53
+ gemspec.licenses = metadata['license']
54
+ when String
55
+ gemspec.license = metadata['license']
56
+ end
57
+
58
+ case metadata['authors']
59
+ when Array
60
+ gemspec.authors = metadata['authors']
61
+ when String
62
+ gemspec.author = metadata['authors']
63
+ end
64
+
65
+ gemspec.email = metadata['email']
66
+ gemspec.homepage = metadata['homepage']
67
+
68
+ case metadata['require_paths']
69
+ when Array
70
+ gemspec.require_paths = metadata['require_paths']
71
+ when String
72
+ gemspec.require_path = metadata['require_paths']
73
+ end
74
+
75
+ gemspec.files = filter_files[metadata['files']]
76
+
77
+ gemspec.executables = metadata['executables']
78
+ gemspec.extensions = metadata['extensions']
79
+
80
+ if Gem::VERSION < '1.7.'
81
+ gemspec.default_executable = gemspec.executables.first
82
+ end
83
+
84
+ gemspec.test_files = filter_files[metadata['test_files']]
85
+
86
+ unless gemspec.files.include?('.document')
87
+ gemspec.extra_rdoc_files = metadata['extra_doc_files']
88
+ end
89
+
90
+ gemspec.post_install_message = metadata['post_install_message']
91
+ gemspec.requirements = metadata['requirements']
92
+
93
+ if gemspec.respond_to?(:required_ruby_version=)
94
+ gemspec.required_ruby_version = metadata['required_ruby_version']
95
+ end
96
+
97
+ if gemspec.respond_to?(:required_rubygems_version=)
98
+ gemspec.required_rubygems_version = metadata['required_ruby_version']
99
+ end
100
+
101
+ parse_versions = lambda { |versions|
102
+ case versions
103
+ when Array
104
+ versions.map { |v| v.to_s }
105
+ when String
106
+ versions.split(/,\s*/)
107
+ end
108
+ }
109
+
110
+ if metadata['dependencies']
111
+ metadata['dependencies'].each do |name,versions|
112
+ gemspec.add_dependency(name,parse_versions[versions])
113
+ end
114
+ end
115
+
116
+ if metadata['runtime_dependencies']
117
+ metadata['runtime_dependencies'].each do |name,versions|
118
+ gemspec.add_runtime_dependency(name,parse_versions[versions])
119
+ end
120
+ end
121
+
122
+ if metadata['development_dependencies']
123
+ metadata['development_dependencies'].each do |name,versions|
124
+ gemspec.add_development_dependency(name,parse_versions[versions])
125
+ end
126
+ end
127
+ end
@@ -0,0 +1,2 @@
1
+ gem 'rspec', '~> 2.4'
2
+ require 'rspec'
metadata ADDED
@@ -0,0 +1,99 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rubygems-tasks
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0.pre1
5
+ prerelease: 6
6
+ platform: ruby
7
+ authors:
8
+ - Postmodern
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-04-19 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rspec
16
+ requirement: &18780640 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: '2.4'
22
+ type: :development
23
+ prerelease: false
24
+ version_requirements: *18780640
25
+ - !ruby/object:Gem::Dependency
26
+ name: yard
27
+ requirement: &18778180 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ~>
31
+ - !ruby/object:Gem::Version
32
+ version: '0.7'
33
+ type: :development
34
+ prerelease: false
35
+ version_requirements: *18778180
36
+ description: Simple Rake tasks for managing and releasing Ruby projects.
37
+ email: postmodern.mod3@gmail.com
38
+ executables: []
39
+ extensions: []
40
+ extra_rdoc_files: []
41
+ files:
42
+ - .document
43
+ - .gitignore
44
+ - .rspec
45
+ - .yardopts
46
+ - ChangeLog.md
47
+ - LICENSE.txt
48
+ - README.md
49
+ - Rakefile
50
+ - gemspec.yml
51
+ - lib/rubygems/tasks.rb
52
+ - lib/rubygems/tasks/build.rb
53
+ - lib/rubygems/tasks/build/gem.rb
54
+ - lib/rubygems/tasks/build/tar.rb
55
+ - lib/rubygems/tasks/build/task.rb
56
+ - lib/rubygems/tasks/build/zip.rb
57
+ - lib/rubygems/tasks/console.rb
58
+ - lib/rubygems/tasks/install.rb
59
+ - lib/rubygems/tasks/printing.rb
60
+ - lib/rubygems/tasks/project.rb
61
+ - lib/rubygems/tasks/push.rb
62
+ - lib/rubygems/tasks/release.rb
63
+ - lib/rubygems/tasks/scm.rb
64
+ - lib/rubygems/tasks/scm/push.rb
65
+ - lib/rubygems/tasks/scm/status.rb
66
+ - lib/rubygems/tasks/scm/tag.rb
67
+ - lib/rubygems/tasks/sign.rb
68
+ - lib/rubygems/tasks/sign/checksum.rb
69
+ - lib/rubygems/tasks/sign/pgp.rb
70
+ - lib/rubygems/tasks/sign/task.rb
71
+ - lib/rubygems/tasks/task.rb
72
+ - lib/rubygems/tasks/tasks.rb
73
+ - rubygems-tasks.gemspec
74
+ - spec/spec_helper.rb
75
+ homepage: https://github.com/postmodern/rubygems-tasks
76
+ licenses: []
77
+ post_install_message:
78
+ rdoc_options: []
79
+ require_paths:
80
+ - lib
81
+ required_ruby_version: !ruby/object:Gem::Requirement
82
+ none: false
83
+ requirements:
84
+ - - ! '>='
85
+ - !ruby/object:Gem::Version
86
+ version: '0'
87
+ required_rubygems_version: !ruby/object:Gem::Requirement
88
+ none: false
89
+ requirements:
90
+ - - ! '>='
91
+ - !ruby/object:Gem::Version
92
+ version: '0'
93
+ requirements: []
94
+ rubyforge_project:
95
+ rubygems_version: 1.8.15
96
+ signing_key:
97
+ specification_version: 3
98
+ summary: Rake tasks for managing and releasing Ruby projects.
99
+ test_files: []