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.
@@ -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
@@ -0,0 +1,11 @@
1
+ module Vtasks
2
+ module Utils
3
+ # System module
4
+ module System
5
+ # Check if command exists
6
+ def command?(command)
7
+ system("command -v #{command} >/dev/null 2>&1")
8
+ end
9
+ end # module System
10
+ end # module Utils
11
+ end # module Vtasks
@@ -0,0 +1,5 @@
1
+ module Vtasks
2
+ require 'vtasks/utils/semver'
3
+ extend Vtasks::Utils::Semver
4
+ VERSION = semver.values.compact.first(3).join('.')
5
+ end # module Vtasks
data/lib/vtasks.rb ADDED
@@ -0,0 +1,5 @@
1
+ require 'vtasks/version'
2
+
3
+ # Vtasks module
4
+ module Vtasks
5
+ end
@@ -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: []