rubygems-tasks 0.2.4 → 0.2.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +0 -1
- data/.travis.yml +9 -0
- data/ChangeLog.md +8 -0
- data/LICENSE.txt +1 -1
- data/README.md +22 -12
- data/Rakefile +4 -49
- data/gemspec.yml +10 -4
- data/lib/rubygems/tasks.rb +140 -2
- data/lib/rubygems/tasks/build/gem.rb +0 -2
- data/lib/rubygems/tasks/build/tar.rb +0 -2
- data/lib/rubygems/tasks/build/task.rb +9 -14
- data/lib/rubygems/tasks/console.rb +0 -3
- data/lib/rubygems/tasks/install.rb +1 -1
- data/lib/rubygems/tasks/project.rb +3 -3
- data/lib/rubygems/tasks/push.rb +2 -2
- data/lib/rubygems/tasks/sign/checksum.rb +3 -2
- data/lib/rubygems/tasks/sign/pgp.rb +1 -1
- data/lib/rubygems/tasks/sign/task.rb +13 -17
- data/lib/rubygems/tasks/task.rb +7 -7
- data/rubygems-tasks.gemspec +38 -87
- data/spec/console_spec.rb +10 -14
- data/spec/install_spec.rb +1 -1
- data/spec/project_spec.rb +30 -27
- data/spec/projects/bundler-project/.gitignore +17 -0
- data/spec/projects/bundler-project/Gemfile +4 -0
- data/spec/projects/bundler-project/LICENSE +22 -0
- data/spec/projects/bundler-project/README.md +29 -0
- data/spec/projects/bundler-project/Rakefile +2 -0
- data/spec/projects/bundler-project/bundler-project.gemspec +19 -0
- data/spec/projects/bundler-project/lib/bundler-project.rb +7 -0
- data/spec/projects/bundler-project/lib/bundler-project/version.rb +5 -0
- data/spec/projects/rubygems-multi-project/.gitignore +17 -0
- data/spec/projects/rubygems-multi-project/LICENSE.txt +22 -0
- data/spec/projects/rubygems-multi-project/README.md +21 -0
- data/spec/projects/rubygems-multi-project/lib/rubygems/project/version.rb +5 -0
- data/spec/projects/rubygems-multi-project/rubygems-project-lite.gemspec +19 -0
- data/spec/projects/rubygems-multi-project/rubygems-project.gemspec +19 -0
- data/spec/projects/rubygems-project/.gitignore +17 -0
- data/spec/projects/rubygems-project/LICENSE.txt +22 -0
- data/spec/projects/rubygems-project/README.md +21 -0
- data/spec/projects/rubygems-project/lib/rubygems/project/version.rb +5 -0
- data/spec/projects/rubygems-project/rubygems-project.gemspec +19 -0
- data/spec/push_spec.rb +2 -2
- data/spec/rake_context.rb +1 -3
- data/spec/scm/push_spec.rb +7 -7
- data/spec/scm/status_spec.rb +6 -6
- data/spec/scm/tag_spec.rb +18 -18
- data/spec/sign/pgp_spec.rb +1 -1
- data/spec/spec_helper.rb +25 -8
- data/spec/tasks_spec.rb +195 -55
- metadata +89 -83
- data/lib/rubygems/tasks/tasks.rb +0 -147
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: e30996ab5613db9af366535a259cac3855b8e656a8611b2c6bdf3ed1f657e6a0
|
4
|
+
data.tar.gz: f432dd0dc3df8a8ce075afb54f90a39cb2ff3308eda13be9de632273dd65ae76
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: a3440f9a95b1e17fcb735fc4172b220d3cb271ef075eca0cbb405dcc6f7ea73bc2f038e4fd4835bf3774ec6af65fc2b84f8fd2956379f91eabd4b9c0f31b7080
|
7
|
+
data.tar.gz: a7522d3f00a6f4cb132049296d0e53fc0be2ee3927ab46595cdf320c43c35570363790be15c455108f3284a1d1bf3877ea37f8dd964db74bd1b90102c645966f
|
data/.gitignore
CHANGED
data/.travis.yml
ADDED
data/ChangeLog.md
CHANGED
@@ -1,3 +1,11 @@
|
|
1
|
+
### 0.2.5 / 2020-03-02
|
2
|
+
|
3
|
+
* Require Ruby >= 2.0.0.
|
4
|
+
* Added irb as a dependencies.
|
5
|
+
* Fixed issue where `file` tasks were defined in namespaces resulting in task
|
6
|
+
names such as `namespace:path/to/file` instead of simply `path/to/file`.
|
7
|
+
* Set gemspec license to MIT.
|
8
|
+
|
1
9
|
### 0.2.4 / 2013-04-8
|
2
10
|
|
3
11
|
* Use the new `Gem::Package` class when running under Ruby 2.0.0.
|
data/LICENSE.txt
CHANGED
data/README.md
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
# rubygems-tasks
|
2
2
|
|
3
|
+
[![Build Status](https://secure.travis-ci.org/postmodern/rubygems-tasks.png?branch=master)](https://travis-ci.org/postmodern/rubygems-tasks)
|
4
|
+
|
3
5
|
* [Source](https://github.com/postmodern/rubygems-tasks)
|
4
6
|
* [Issues](https://github.com/postmodern/rubygems-tasks/issues)
|
5
7
|
* [Email](mailto:postmodern.mod3 at gmail.com)
|
@@ -33,7 +35,7 @@ This is what rubygems-tasks seeks to provide.
|
|
33
35
|
* Provides tasks to build, install and push gems to [rubygems.org].
|
34
36
|
* Loads all project metadata from the `.gemspec` file.
|
35
37
|
* Supports loading multiple `.gemspec` files.
|
36
|
-
* Supports pushing gems to alternate [
|
38
|
+
* Supports pushing gems to alternate [gem server]s.
|
37
39
|
* Supports optionally building `.tar.gz` and `.zip` archives.
|
38
40
|
* `build:tar`
|
39
41
|
* `build:zip`
|
@@ -55,6 +57,11 @@ This is what rubygems-tasks seeks to provide.
|
|
55
57
|
* **Does not** inject dependencies into gems.
|
56
58
|
* **Zero** dependencies.
|
57
59
|
|
60
|
+
## Requirements
|
61
|
+
|
62
|
+
* [ruby] >= 2.0.0
|
63
|
+
* [rake]
|
64
|
+
|
58
65
|
## Install
|
59
66
|
|
60
67
|
$ gem install rubygems-tasks
|
@@ -67,7 +74,7 @@ Specifying an alternate Ruby Console to run:
|
|
67
74
|
tasks.console.command = 'pry'
|
68
75
|
end
|
69
76
|
|
70
|
-
Enable pushing gems to an in-house [
|
77
|
+
Enable pushing gems to an in-house [gem server]:
|
71
78
|
|
72
79
|
Gem::Tasks.new do |tasks|
|
73
80
|
tasks.push.host = 'gems.company.com'
|
@@ -75,23 +82,23 @@ Enable pushing gems to an in-house [Gemcutter] server:
|
|
75
82
|
|
76
83
|
Disable the `push` task:
|
77
84
|
|
78
|
-
Gem::Tasks.new(:
|
85
|
+
Gem::Tasks.new(push: false)
|
79
86
|
|
80
87
|
Enable building `.tar.gz` and `.zip` archives:
|
81
88
|
|
82
|
-
Gem::Tasks.new(:
|
89
|
+
Gem::Tasks.new(build: {tar: true, zip: true})
|
83
90
|
|
84
91
|
Enable Checksums and PGP signatures for built packages:
|
85
92
|
|
86
|
-
Gem::Tasks.new(:
|
93
|
+
Gem::Tasks.new(sign: {checksum: true, pgp: true})
|
87
94
|
|
88
95
|
Selectively defining tasks:
|
89
96
|
|
90
|
-
Gem::Build::Tar.new
|
91
|
-
Gem::SCM::Status.new
|
92
|
-
Gem::SCM::Tag.new(:
|
93
|
-
Gem::Sign::Checksum.new
|
94
|
-
Gem::Console.new
|
97
|
+
Gem::Tasks::Build::Tar.new
|
98
|
+
Gem::Tasks::SCM::Status.new
|
99
|
+
Gem::Tasks::SCM::Tag.new(format: 'REL-%s')
|
100
|
+
Gem::Tasks::Sign::Checksum.new
|
101
|
+
Gem::Tasks::Console.new
|
95
102
|
|
96
103
|
## Synopsis
|
97
104
|
|
@@ -102,7 +109,7 @@ Selectively defining tasks:
|
|
102
109
|
|
103
110
|
## Copyright
|
104
111
|
|
105
|
-
Copyright (c) 2011-
|
112
|
+
Copyright (c) 2011-2020 Hal Brodigan
|
106
113
|
|
107
114
|
See {file:LICENSE.txt} for details.
|
108
115
|
|
@@ -114,4 +121,7 @@ See {file:LICENSE.txt} for details.
|
|
114
121
|
[Hoe]: https://github.com/seattlerb/hoe#readme
|
115
122
|
|
116
123
|
[rubygems.org]: https://rubygems.org/
|
117
|
-
[
|
124
|
+
[gem server]: https://github.com/rubygems/rubygems.org#readme
|
125
|
+
|
126
|
+
[ruby]: https://www.ruby-lang.org/
|
127
|
+
[rake]: https://rubygems.org/gems/rake
|
data/Rakefile
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
require 'rubygems'
|
2
1
|
require 'rake'
|
3
2
|
|
4
3
|
lib_dir = File.expand_path('lib',File.dirname(__FILE__))
|
@@ -6,12 +5,12 @@ $LOAD_PATH << lib_dir unless $LOAD_PATH.include?(lib_dir)
|
|
6
5
|
|
7
6
|
require 'rubygems/tasks'
|
8
7
|
Gem::Tasks.new(
|
9
|
-
:
|
10
|
-
:
|
8
|
+
build: {gem: true, tar: true},
|
9
|
+
sign: {checksum: true, pgp: true}
|
11
10
|
)
|
12
11
|
|
13
12
|
begin
|
14
|
-
gem 'rspec', '~>
|
13
|
+
gem 'rspec', '~> 3.0'
|
15
14
|
require 'rspec/core/rake_task'
|
16
15
|
|
17
16
|
RSpec::Core::RakeTask.new
|
@@ -24,7 +23,7 @@ task :test => :spec
|
|
24
23
|
task :default => :spec
|
25
24
|
|
26
25
|
begin
|
27
|
-
gem 'yard', '~> 0.
|
26
|
+
gem 'yard', '~> 0.8'
|
28
27
|
require 'yard'
|
29
28
|
|
30
29
|
YARD::Rake::YardocTask.new
|
@@ -33,47 +32,3 @@ rescue LoadError => e
|
|
33
32
|
abort 'Please run `gem install yard` to install YARD.'
|
34
33
|
end
|
35
34
|
end
|
36
|
-
|
37
|
-
require 'net/https'
|
38
|
-
require 'uri'
|
39
|
-
|
40
|
-
DOWNLOAD_URI = 'http://cloud.github.com/downloads/postmodern/rubygems-tasks/'
|
41
|
-
PROJECTS_DIR = File.join('data','projects')
|
42
|
-
PROJECTS = %w[rubygems-project rubygems-multi-project bundler-project]
|
43
|
-
|
44
|
-
directory PROJECTS_DIR
|
45
|
-
|
46
|
-
PROJECTS.each do |project|
|
47
|
-
project_file = "#{project}.tar.gz"
|
48
|
-
project_path = File.join(PROJECTS_DIR,project_file)
|
49
|
-
project_dir = File.join(PROJECTS_DIR,project)
|
50
|
-
|
51
|
-
file project_path => PROJECTS_DIR do
|
52
|
-
Net::HTTP.get_response(URI(DOWNLOAD_URI + project_file)) do |response|
|
53
|
-
size, total = 0, response.header['Content-Length'].to_i
|
54
|
-
|
55
|
-
puts ">>> Downloading to #{project_file} to #{project_path} ..."
|
56
|
-
|
57
|
-
File.open(project_path,"wb") do |file|
|
58
|
-
response.read_body do |chunk|
|
59
|
-
file.write(chunk)
|
60
|
-
|
61
|
-
size += chunk.size
|
62
|
-
printf "\r>>> [%d / %d] %d%% ...", size, total, ((size * 100) / total)
|
63
|
-
end
|
64
|
-
end
|
65
|
-
|
66
|
-
puts
|
67
|
-
end
|
68
|
-
end
|
69
|
-
|
70
|
-
task project_dir => project_path do
|
71
|
-
unless File.directory?(project_dir)
|
72
|
-
sh 'tar', 'xzf', project_path, '-C', PROJECTS_DIR
|
73
|
-
end
|
74
|
-
end
|
75
|
-
|
76
|
-
task 'data:projects' => project_dir
|
77
|
-
end
|
78
|
-
|
79
|
-
task :spec => 'data:projects'
|
data/gemspec.yml
CHANGED
@@ -1,14 +1,20 @@
|
|
1
1
|
name: rubygems-tasks
|
2
|
-
version: 0.2.
|
2
|
+
version: 0.2.5
|
3
3
|
summary: Rake tasks for managing and releasing Ruby Gems.
|
4
|
-
description:
|
4
|
+
description: |
|
5
5
|
Agnostic and unobtrusive Rake tasks for managing and releasing Ruby Gems.
|
6
6
|
|
7
7
|
authors: Postmodern
|
8
|
+
license: MIT
|
8
9
|
email: postmodern.mod3@gmail.com
|
9
10
|
homepage: https://github.com/postmodern/rubygems-tasks#readme
|
10
11
|
has_yard: true
|
11
12
|
|
13
|
+
required_ruby_version: ">= 2.0.0"
|
14
|
+
|
15
|
+
dependencies:
|
16
|
+
irb: ~> 1.0
|
17
|
+
|
12
18
|
development_dependencies:
|
13
|
-
rspec: ~>
|
14
|
-
yard: ~> 0.
|
19
|
+
rspec: ~> 3.0
|
20
|
+
yard: ~> 0.8
|
data/lib/rubygems/tasks.rb
CHANGED
@@ -2,8 +2,146 @@ require 'rubygems/tasks/console'
|
|
2
2
|
require 'rubygems/tasks/build'
|
3
3
|
require 'rubygems/tasks/install'
|
4
4
|
require 'rubygems/tasks/scm'
|
5
|
-
require 'rubygems/tasks/scm'
|
6
5
|
require 'rubygems/tasks/push'
|
7
6
|
require 'rubygems/tasks/release'
|
8
7
|
require 'rubygems/tasks/sign'
|
9
|
-
|
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
|
+
#
|
32
|
+
# The `build` tasks.
|
33
|
+
#
|
34
|
+
# @return [OpenStruct]
|
35
|
+
# The collection of `build` tasks.
|
36
|
+
#
|
37
|
+
attr_reader :build
|
38
|
+
|
39
|
+
#
|
40
|
+
# The `scm` tasks.
|
41
|
+
#
|
42
|
+
# @return [OpenStruct]
|
43
|
+
# The collection of `scm` tasks.
|
44
|
+
#
|
45
|
+
attr_reader :scm
|
46
|
+
|
47
|
+
#
|
48
|
+
# The `sign` tasks.
|
49
|
+
#
|
50
|
+
# @return [OpenStruct]
|
51
|
+
# The collection of `sign` tasks.
|
52
|
+
#
|
53
|
+
attr_reader :sign
|
54
|
+
|
55
|
+
# The {Console console} task.
|
56
|
+
attr_reader :console
|
57
|
+
|
58
|
+
# The {Install install} task.
|
59
|
+
attr_reader :install
|
60
|
+
|
61
|
+
# The {Push push} task.
|
62
|
+
attr_reader :push
|
63
|
+
|
64
|
+
# The {Release release} task.
|
65
|
+
attr_reader :release
|
66
|
+
|
67
|
+
#
|
68
|
+
# Initializes the project tasks.
|
69
|
+
#
|
70
|
+
# @param [Hash{Symbol => Hash}] options
|
71
|
+
# Enables or disables individual tasks.
|
72
|
+
#
|
73
|
+
# @option options [Hash{Symbol => Boolean}] :build
|
74
|
+
# Enables or disables the `build` tasks.
|
75
|
+
#
|
76
|
+
# @option options [Hash{Symbol => Boolean}] :scm
|
77
|
+
# Enables or disables the `scm` tasks.
|
78
|
+
#
|
79
|
+
# @option options [Boolean] :console (true)
|
80
|
+
# Enables or disables the {Console console} task.
|
81
|
+
#
|
82
|
+
# @option options [Boolean] :install (true)
|
83
|
+
# Enables or disables the {Install install} task.
|
84
|
+
#
|
85
|
+
# @option options [Boolean] :push (true)
|
86
|
+
# Enables or disables the {Push push} task.
|
87
|
+
#
|
88
|
+
# @option options [Boolean] :release (true)
|
89
|
+
# Enables or disables the {Release release} task.
|
90
|
+
#
|
91
|
+
# @option options [Hash{Symbol => Boolean}] :sign
|
92
|
+
# Enables or disables the `sign` tasks.
|
93
|
+
#
|
94
|
+
# @yield [tasks]
|
95
|
+
# If a block is given, it will be passed the newly created tasks,
|
96
|
+
# before they are fully defined.
|
97
|
+
#
|
98
|
+
# @yieldparam [Tasks] tasks
|
99
|
+
# The newly created tasks.
|
100
|
+
#
|
101
|
+
# @example Enables building of `.gem` and `.tar.gz` packages:
|
102
|
+
# Gem::Tasks.new(build: {gem: true, tar: true})
|
103
|
+
#
|
104
|
+
# @example Disables pushing `.gem` packages to [rubygems.org](rubygems.org):
|
105
|
+
# Gem::Tasks.new(push: false)
|
106
|
+
#
|
107
|
+
# @example Configures the version tag format:
|
108
|
+
# Gem::Tasks.new do |tasks|
|
109
|
+
# tasks.scm.tag.format = "release-%s"
|
110
|
+
# end
|
111
|
+
#
|
112
|
+
def initialize(options={})
|
113
|
+
build_options = options.fetch(:build,{})
|
114
|
+
scm_options = options.fetch(:scm,{})
|
115
|
+
sign_options = options.fetch(:sign,{})
|
116
|
+
|
117
|
+
@scm = OpenStruct.new
|
118
|
+
@build = OpenStruct.new
|
119
|
+
@sign = OpenStruct.new
|
120
|
+
|
121
|
+
if build_options
|
122
|
+
@build.gem = (Build::Gem.new if build_options.fetch(:gem,true))
|
123
|
+
@build.tar = (Build::Tar.new if build_options[:tar])
|
124
|
+
@build.zip = (Build::Zip.new if build_options[:zip])
|
125
|
+
end
|
126
|
+
|
127
|
+
if scm_options
|
128
|
+
@scm.status = (SCM::Status.new if scm_options.fetch(:status,true))
|
129
|
+
@scm.tag = (SCM::Tag.new if scm_options.fetch(:tag,true))
|
130
|
+
@scm.push = (SCM::Push.new if scm_options.fetch(:push,true))
|
131
|
+
end
|
132
|
+
|
133
|
+
if sign_options
|
134
|
+
@sign.checksum = (Sign::Checksum.new if sign_options[:checksum])
|
135
|
+
@sign.pgp = (Sign::PGP.new if sign_options[:pgp])
|
136
|
+
end
|
137
|
+
|
138
|
+
@console = (Console.new if options.fetch(:console,true))
|
139
|
+
@install = (Install.new if options.fetch(:install,true))
|
140
|
+
@push = (Push.new if options.fetch(:push,true))
|
141
|
+
@release = (Release.new if options.fetch(:release,true))
|
142
|
+
|
143
|
+
yield self if block_given?
|
144
|
+
end
|
145
|
+
|
146
|
+
end
|
147
|
+
end
|
@@ -34,25 +34,20 @@ module Gem
|
|
34
34
|
task :validate
|
35
35
|
|
36
36
|
@project.builds.each do |build,packages|
|
37
|
-
|
38
|
-
|
39
|
-
gemspec = @project.gemspecs[build]
|
40
|
-
path = packages[extname]
|
37
|
+
gemspec = @project.gemspecs[build]
|
38
|
+
path = packages[extname]
|
41
39
|
|
42
|
-
|
43
|
-
|
44
|
-
|
40
|
+
# define file tasks, so the packages are not needless re-built
|
41
|
+
file(path => [Project::PKG_DIR, *gemspec.files]) do
|
42
|
+
invoke :validate
|
45
43
|
|
46
|
-
|
44
|
+
status "Building #{File.basename(path)} ..."
|
47
45
|
|
48
|
-
|
49
|
-
end
|
50
|
-
|
51
|
-
task build => path
|
52
|
-
end
|
46
|
+
build(path,gemspec)
|
53
47
|
end
|
54
48
|
|
55
|
-
task "build:#{
|
49
|
+
task "build:#{name}:#{build}" => path
|
50
|
+
task "build:#{build}" => "build:#{name}:#{build}"
|
56
51
|
end
|
57
52
|
|
58
53
|
gemspec_tasks "build:#{name}"
|
@@ -77,9 +77,6 @@ module Gem
|
|
77
77
|
# add -I options for lib/ or ext/ directories
|
78
78
|
arguments.push(*require_paths.map { |dir| "-I#{dir}" })
|
79
79
|
|
80
|
-
# add a -rrubygems to explicitly load rubygems on Ruby 1.8
|
81
|
-
arguments.push('-rrubygems') if RUBY_VERSION < '1.9'
|
82
|
-
|
83
80
|
# add an -r option to require the library
|
84
81
|
arguments.push('-r' + require_file)
|
85
82
|
|