vtasks 0.0.8
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 +13 -0
- data/.travis.yml +13 -0
- data/CHANGELOG.md +51 -0
- data/CODEOWNERS +2 -0
- data/CODE_OF_CONDUCT.md +74 -0
- data/CONTRIBUTING.md +14 -0
- data/LICENSE +201 -0
- data/README.md +196 -0
- data/Rakefile +40 -0
- data/bin/console +7 -0
- data/bin/setup +11 -0
- data/gems.rb +2 -0
- data/lib/vtasks/docker/image/build.rb +54 -0
- data/lib/vtasks/docker/image/push.rb +17 -0
- data/lib/vtasks/docker/image/tag.rb +17 -0
- data/lib/vtasks/docker/image.rb +83 -0
- data/lib/vtasks/docker.rb +124 -0
- data/lib/vtasks/lint.rb +65 -0
- data/lib/vtasks/puppet.rb +212 -0
- data/lib/vtasks/release.rb +101 -0
- data/lib/vtasks/travisci.rb +58 -0
- data/lib/vtasks/utils/docker_shared_context.rb +91 -0
- data/lib/vtasks/utils/git.rb +46 -0
- data/lib/vtasks/utils/output.rb +68 -0
- data/lib/vtasks/utils/semver.rb +31 -0
- data/lib/vtasks/utils/system.rb +11 -0
- data/lib/vtasks/version.rb +5 -0
- data/lib/vtasks.rb +5 -0
- data/locales/config.yaml +21 -0
- data/vtasks.gemspec +37 -0
- metadata +188 -0
@@ -0,0 +1,58 @@
|
|
1
|
+
module Vtasks
|
2
|
+
require 'rake/tasklib'
|
3
|
+
|
4
|
+
# Release tasks
|
5
|
+
class TravisCI < ::Rake::TaskLib
|
6
|
+
# Include utility modules
|
7
|
+
require 'vtasks/utils/output'
|
8
|
+
include Vtasks::Utils::Output
|
9
|
+
|
10
|
+
def initialize
|
11
|
+
define_tasks
|
12
|
+
end
|
13
|
+
|
14
|
+
def define_tasks
|
15
|
+
begin
|
16
|
+
require 'dotenv'
|
17
|
+
require 'travis/auto_login'
|
18
|
+
rescue LoadError
|
19
|
+
nil # Might be in a group that is not installed
|
20
|
+
rescue Travis::Client::AutoLogin::NoTokenError
|
21
|
+
warn 'No suitable github token found'
|
22
|
+
end
|
23
|
+
|
24
|
+
namespace :travis do
|
25
|
+
desc 'Sync environment with TravisCI'
|
26
|
+
task :env do
|
27
|
+
info "Hello #{::Travis::User.current.name}!"
|
28
|
+
|
29
|
+
# Update environment variables
|
30
|
+
dotenv.each do |key, value|
|
31
|
+
info "Updating #{key}"
|
32
|
+
env_vars.upsert(key, value, public: false)
|
33
|
+
end
|
34
|
+
|
35
|
+
# Remove remote environment variables
|
36
|
+
env_vars.each do |var|
|
37
|
+
unless dotenv.keys.include?(var.name)
|
38
|
+
warn "Deleting #{var.name}"
|
39
|
+
var.delete
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end # def define_tasks
|
45
|
+
|
46
|
+
def travis_slug
|
47
|
+
@travis_slug ||= `git config --get travis.slug`.chomp
|
48
|
+
end
|
49
|
+
|
50
|
+
def env_vars
|
51
|
+
@env_vars ||= ::Travis::Repository.find(travis_slug).env_vars
|
52
|
+
end
|
53
|
+
|
54
|
+
def dotenv
|
55
|
+
@dotenv ||= ::Dotenv.load
|
56
|
+
end
|
57
|
+
end # class TravisCI
|
58
|
+
end # module Tasks
|
@@ -0,0 +1,91 @@
|
|
1
|
+
module Vtasks
|
2
|
+
module Utils
|
3
|
+
# DockerSharedContext module
|
4
|
+
module DockerSharedContext
|
5
|
+
require 'rspec/core'
|
6
|
+
|
7
|
+
begin
|
8
|
+
require 'serverspec'
|
9
|
+
require 'docker'
|
10
|
+
rescue LoadError
|
11
|
+
nil # Might be in a group that is not installed
|
12
|
+
end
|
13
|
+
|
14
|
+
# Docker image context
|
15
|
+
module Image
|
16
|
+
extend ::RSpec::Core::SharedContext
|
17
|
+
|
18
|
+
before(:all) do
|
19
|
+
@image = ::Docker::Image.build_from_dir(DOCKER_IMAGE_DIRECTORY)
|
20
|
+
set :backend, :docker
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
# Clean-up
|
25
|
+
module CleanUp
|
26
|
+
extend ::RSpec::Core::SharedContext
|
27
|
+
|
28
|
+
after(:all) do
|
29
|
+
@container.kill
|
30
|
+
@container.delete(force: true)
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
# Docker container context
|
35
|
+
module Container
|
36
|
+
extend ::RSpec::Core::SharedContext
|
37
|
+
|
38
|
+
include Image
|
39
|
+
|
40
|
+
before(:all) do
|
41
|
+
@container = ::Docker::Container.create('Image' => @image.id)
|
42
|
+
@container.start
|
43
|
+
|
44
|
+
set :docker_container, @container.id
|
45
|
+
end
|
46
|
+
|
47
|
+
include CleanUp
|
48
|
+
end
|
49
|
+
|
50
|
+
# Docker always running container
|
51
|
+
# Overwrite the entrypoint so that we can run the tests
|
52
|
+
module RunningEntrypointContainer
|
53
|
+
extend ::RSpec::Core::SharedContext
|
54
|
+
|
55
|
+
include Image
|
56
|
+
|
57
|
+
before(:all) do
|
58
|
+
@container = ::Docker::Container.create(
|
59
|
+
'Image' => @image.id,
|
60
|
+
'Entrypoint' => ['sh', '-c', 'while true; do sleep 1; done']
|
61
|
+
)
|
62
|
+
@container.start
|
63
|
+
|
64
|
+
set :docker_container, @container.id
|
65
|
+
end
|
66
|
+
|
67
|
+
include CleanUp
|
68
|
+
end
|
69
|
+
|
70
|
+
# Docker always running container
|
71
|
+
# Overwrite the command so that we can run the tests
|
72
|
+
module RunningCommandContainer
|
73
|
+
extend ::RSpec::Core::SharedContext
|
74
|
+
|
75
|
+
include Image
|
76
|
+
|
77
|
+
before(:all) do
|
78
|
+
@container = ::Docker::Container.create(
|
79
|
+
'Image' => @image.id,
|
80
|
+
'Cmd' => ['sh', '-c', 'while true; do sleep 1; done']
|
81
|
+
)
|
82
|
+
@container.start
|
83
|
+
|
84
|
+
set :docker_container, @container.id
|
85
|
+
end
|
86
|
+
|
87
|
+
include CleanUp
|
88
|
+
end
|
89
|
+
end # module DockerSharedContext
|
90
|
+
end # module Utils
|
91
|
+
end # module Vtasks
|
@@ -0,0 +1,46 @@
|
|
1
|
+
module Vtasks
|
2
|
+
module Utils
|
3
|
+
# Git module
|
4
|
+
module Git
|
5
|
+
GITHUB_TOKEN = ENV['GITHUB_TOKEN']
|
6
|
+
|
7
|
+
# Get git short commit hash
|
8
|
+
def git_commit
|
9
|
+
`git rev-parse --short HEAD`.strip
|
10
|
+
end
|
11
|
+
|
12
|
+
# Get the branch name
|
13
|
+
def git_branch
|
14
|
+
return ENV['GIT_BRANCH'] if ENV['GIT_BRANCH']
|
15
|
+
return ENV['TRAVIS_BRANCH'] if ENV['TRAVIS_BRANCH']
|
16
|
+
return ENV['CIRCLE_BRANCH'] if ENV['CIRCLE_BRANCH']
|
17
|
+
`git symbolic-ref HEAD --short 2>/dev/null`.strip
|
18
|
+
end
|
19
|
+
|
20
|
+
# Get the URL of the origin remote
|
21
|
+
def git_url
|
22
|
+
`git config --get remote.origin.url`.strip
|
23
|
+
end
|
24
|
+
|
25
|
+
# Get the CI Status (needs https://hub.github.com/)
|
26
|
+
def git_ci_status(branch = 'master')
|
27
|
+
`hub ci-status #{branch}`.strip
|
28
|
+
end
|
29
|
+
|
30
|
+
# Check if the repo is clean
|
31
|
+
def git_clean_repo
|
32
|
+
# Check if there are uncommitted changes
|
33
|
+
unless system 'git diff --quiet HEAD'
|
34
|
+
abort('ERROR: Commit your changes first.')
|
35
|
+
end
|
36
|
+
|
37
|
+
# Check if there are untracked files
|
38
|
+
unless `git ls-files --others --exclude-standard`.to_s.empty?
|
39
|
+
abort('ERROR: There are untracked files.')
|
40
|
+
end
|
41
|
+
|
42
|
+
true
|
43
|
+
end
|
44
|
+
end # module Git
|
45
|
+
end # module Utils
|
46
|
+
end # module Vtasks
|
@@ -0,0 +1,68 @@
|
|
1
|
+
module Vtasks
|
2
|
+
module Utils
|
3
|
+
# Output module
|
4
|
+
module Output
|
5
|
+
# Colorize output
|
6
|
+
module Colorize
|
7
|
+
def colorize(color_code)
|
8
|
+
"\e[#{color_code}m#{self}\e[0m"
|
9
|
+
end
|
10
|
+
|
11
|
+
def red
|
12
|
+
colorize(31)
|
13
|
+
end
|
14
|
+
|
15
|
+
def green
|
16
|
+
colorize(32)
|
17
|
+
end
|
18
|
+
|
19
|
+
def blue
|
20
|
+
colorize(34)
|
21
|
+
end
|
22
|
+
|
23
|
+
def yellow
|
24
|
+
colorize(33)
|
25
|
+
end
|
26
|
+
|
27
|
+
def white
|
28
|
+
colorize(37)
|
29
|
+
end
|
30
|
+
|
31
|
+
def bold
|
32
|
+
colorize(1)
|
33
|
+
end
|
34
|
+
|
35
|
+
def italic
|
36
|
+
colorize(3)
|
37
|
+
end
|
38
|
+
|
39
|
+
def underline
|
40
|
+
colorize(4)
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
# Add colorize to the String class
|
45
|
+
String.include Colorize
|
46
|
+
|
47
|
+
# Debug message
|
48
|
+
def debug(message)
|
49
|
+
puts "==> #{message}".green if $DEBUG
|
50
|
+
end
|
51
|
+
|
52
|
+
# Information message
|
53
|
+
def info(message)
|
54
|
+
puts "==> #{message}".green
|
55
|
+
end
|
56
|
+
|
57
|
+
# Warning message
|
58
|
+
def warn(message)
|
59
|
+
puts "==> #{message}".yellow
|
60
|
+
end
|
61
|
+
|
62
|
+
# Error message
|
63
|
+
def error(message)
|
64
|
+
puts "==> #{message}".red
|
65
|
+
end
|
66
|
+
end # module Output
|
67
|
+
end # module Utils
|
68
|
+
end # module Vtasks
|
@@ -0,0 +1,31 @@
|
|
1
|
+
module Vtasks
|
2
|
+
module Utils
|
3
|
+
# Semver module
|
4
|
+
module Semver
|
5
|
+
SEM_LEVELS = [:major, :minor, :patch].freeze
|
6
|
+
|
7
|
+
# Semantic version (from git tags)
|
8
|
+
def gitver
|
9
|
+
`git describe --always --tags 2>/dev/null || echo '0.0.0-0-0'`.chomp
|
10
|
+
end
|
11
|
+
|
12
|
+
# Create semantic version hash
|
13
|
+
def semver
|
14
|
+
@semver ||= begin
|
15
|
+
{}.tap do |h|
|
16
|
+
h[:major], h[:minor], h[:patch], h[:rev], h[:rev_hash] = gitver[1..-1].split(/[.-]/)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
# Increment the version number
|
22
|
+
def bump(level)
|
23
|
+
new_version = semver.dup
|
24
|
+
new_version[level] = new_version[level].to_i + 1
|
25
|
+
to_zero = SEM_LEVELS[SEM_LEVELS.index(level) + 1..SEM_LEVELS.size]
|
26
|
+
to_zero.each { |z| new_version[z] = 0 }
|
27
|
+
new_version
|
28
|
+
end
|
29
|
+
end # module Version
|
30
|
+
end # module Utils
|
31
|
+
end # module Vtasks
|
data/lib/vtasks.rb
ADDED
data/locales/config.yaml
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
---
|
2
|
+
# This is the project-specific configuration file for setting up
|
3
|
+
# fast_gettext for your project.
|
4
|
+
gettext:
|
5
|
+
# This is used for the name of the .pot and .po files; they will be
|
6
|
+
# called <project_name>.pot?
|
7
|
+
project_name: 'r10k'
|
8
|
+
# This is used in comments in the .pot and .po files to indicate what
|
9
|
+
# project the files belong to and should bea little more desctiptive than
|
10
|
+
# <project_name>
|
11
|
+
package_name: r10k
|
12
|
+
# The locale that the default messages in the .pot file are in
|
13
|
+
default_locale: en
|
14
|
+
# The email used for sending bug reports.
|
15
|
+
bugs_address: docs@puppetlabs.com
|
16
|
+
# The holder of the copyright.
|
17
|
+
copyright_holder: Puppet, Inc.
|
18
|
+
# Patterns for +Dir.glob+ used to find all files that might contain
|
19
|
+
# translatable content, relative to the project root directory
|
20
|
+
source_files:
|
21
|
+
- 'lib/**/*.rb'
|
data/vtasks.gemspec
ADDED
@@ -0,0 +1,37 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'vtasks/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = 'vtasks'
|
8
|
+
spec.version = Vtasks::VERSION
|
9
|
+
spec.authors = ['Vlad Ghinea']
|
10
|
+
spec.email = ['vlad@ghn.me']
|
11
|
+
|
12
|
+
spec.summary = %q{Vlad's collection of Rake tasks}
|
13
|
+
spec.description = <<-DESCRIPTION
|
14
|
+
Provides a general purpose toolset for Rake tasks.
|
15
|
+
DESCRIPTION
|
16
|
+
spec.homepage = 'https://github.com/vladgh/vtasks'
|
17
|
+
spec.license = 'Apache-2.0'
|
18
|
+
|
19
|
+
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
20
|
+
f.match(%r{^(test|spec|features)/})
|
21
|
+
end
|
22
|
+
spec.bindir = 'bin'
|
23
|
+
spec.executables = `git ls-files -z -- bin/*`.split("\x0").map do |f|
|
24
|
+
File.basename(f)
|
25
|
+
end
|
26
|
+
spec.require_paths = ['lib']
|
27
|
+
|
28
|
+
spec.add_runtime_dependency 'rake'
|
29
|
+
spec.add_runtime_dependency 'rspec'
|
30
|
+
|
31
|
+
spec.add_development_dependency 'bundler'
|
32
|
+
spec.add_development_dependency 'github_changelog_generator'
|
33
|
+
spec.add_development_dependency 'reek'
|
34
|
+
spec.add_development_dependency 'rubocop'
|
35
|
+
spec.add_development_dependency 'rubycritic'
|
36
|
+
spec.add_development_dependency 'yard'
|
37
|
+
end
|
metadata
ADDED
@@ -0,0 +1,188 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: vtasks
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.8
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Vlad Ghinea
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2018-06-17 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rake
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rspec
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: bundler
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: github_changelog_generator
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: reek
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: rubocop
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: rubycritic
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ">="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: yard
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - ">="
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - ">="
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
125
|
+
description: " Provides a general purpose toolset for Rake tasks.\n"
|
126
|
+
email:
|
127
|
+
- vlad@ghn.me
|
128
|
+
executables:
|
129
|
+
- console
|
130
|
+
- setup
|
131
|
+
extensions: []
|
132
|
+
extra_rdoc_files: []
|
133
|
+
files:
|
134
|
+
- ".gitignore"
|
135
|
+
- ".travis.yml"
|
136
|
+
- CHANGELOG.md
|
137
|
+
- CODEOWNERS
|
138
|
+
- CODE_OF_CONDUCT.md
|
139
|
+
- CONTRIBUTING.md
|
140
|
+
- LICENSE
|
141
|
+
- README.md
|
142
|
+
- Rakefile
|
143
|
+
- bin/console
|
144
|
+
- bin/setup
|
145
|
+
- gems.rb
|
146
|
+
- lib/vtasks.rb
|
147
|
+
- lib/vtasks/docker.rb
|
148
|
+
- lib/vtasks/docker/image.rb
|
149
|
+
- lib/vtasks/docker/image/build.rb
|
150
|
+
- lib/vtasks/docker/image/push.rb
|
151
|
+
- lib/vtasks/docker/image/tag.rb
|
152
|
+
- lib/vtasks/lint.rb
|
153
|
+
- lib/vtasks/puppet.rb
|
154
|
+
- lib/vtasks/release.rb
|
155
|
+
- lib/vtasks/travisci.rb
|
156
|
+
- lib/vtasks/utils/docker_shared_context.rb
|
157
|
+
- lib/vtasks/utils/git.rb
|
158
|
+
- lib/vtasks/utils/output.rb
|
159
|
+
- lib/vtasks/utils/semver.rb
|
160
|
+
- lib/vtasks/utils/system.rb
|
161
|
+
- lib/vtasks/version.rb
|
162
|
+
- locales/config.yaml
|
163
|
+
- vtasks.gemspec
|
164
|
+
homepage: https://github.com/vladgh/vtasks
|
165
|
+
licenses:
|
166
|
+
- Apache-2.0
|
167
|
+
metadata: {}
|
168
|
+
post_install_message:
|
169
|
+
rdoc_options: []
|
170
|
+
require_paths:
|
171
|
+
- lib
|
172
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
173
|
+
requirements:
|
174
|
+
- - ">="
|
175
|
+
- !ruby/object:Gem::Version
|
176
|
+
version: '0'
|
177
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
178
|
+
requirements:
|
179
|
+
- - ">="
|
180
|
+
- !ruby/object:Gem::Version
|
181
|
+
version: '0'
|
182
|
+
requirements: []
|
183
|
+
rubyforge_project:
|
184
|
+
rubygems_version: 2.7.7
|
185
|
+
signing_key:
|
186
|
+
specification_version: 4
|
187
|
+
summary: Vlad's collection of Rake tasks
|
188
|
+
test_files: []
|