rubygems-tasks 0.2.4 → 0.2.5
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.
- 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
|
+
[](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
|
|