forked from puppetlabs/pdk
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Rakefile
123 lines (106 loc) · 3.84 KB
/
Rakefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
require 'bundler/gem_tasks'
require 'rspec/core/rake_task'
require 'rubocop/rake_task'
gettext_spec = Gem::Specification.find_by_name 'gettext-setup'
load "#{gettext_spec.gem_dir}/lib/tasks/gettext.rake"
GettextSetup.initialize(File.absolute_path('locales', File.dirname(__FILE__)))
build_defs_file = 'ext/build_defaults.yaml'
if File.exist?(build_defs_file)
begin
require 'yaml'
@build_defaults ||= YAML.load_file(build_defs_file)
rescue StandardError => e
STDERR.puts "Unable to load yaml from #{build_defs_file}:"
STDERR.puts e
end
@packaging_url = @build_defaults['packaging_url']
@packaging_repo = @build_defaults['packaging_repo']
raise "Could not find packaging url in #{build_defs_file}" if @packaging_url.nil?
raise "Could not find packaging repo in #{build_defs_file}" if @packaging_repo.nil?
namespace :package do
desc 'Bootstrap packaging automation (clone packaging repo)'
task :bootstrap do
if File.exist?("ext/#{@packaging_repo}")
puts "It looks like you already have ext/#{@packaging_repo}. If you don't like it, blow it away with package:implode."
else
cd 'ext' do
`git clone #{@packaging_url}`
end
end
end
desc 'Remove all cloned packaging automation'
task :implode do
rm_rf "ext/#{@packaging_repo}"
end
end
end
namespace :spec do
desc 'Run RSpec code examples with coverage collection'
task :coverage do
ENV['COVERAGE'] = 'yes'
Rake::Task['spec'].execute
end
end
RSpec::Core::RakeTask.new(:spec) do |t|
t.exclude_pattern = 'spec/spec_helper_acceptance.rb,spec/acceptance/**'
end
namespace :acceptance do
desc 'Run acceptance tests against current code'
RSpec::Core::RakeTask.new(:local) do |t|
t.rspec_opts = '--tag ~package' # Exclude package specific examples
t.pattern = 'spec/acceptance/**.rb'
end
task local: [:binstubs]
end
RuboCop::RakeTask.new(:rubocop) do |task|
task.options = %w[-D -S -E]
end
task(:binstubs) do
system('bundle binstubs pdk --force')
end
task default: :spec
namespace :gettext do
desc 'Remove obsolete messages from translations'
task(:clean_obsolete, [:language]) do |_task, args|
file_name = File.join(File.dirname(__FILE__), 'locales', args[:language], 'pdk.po')
success = system("msgattrib --no-obsolete #{file_name} -o #{file_name}")
puts "Updated #{file_name}" if success
end
desc 'Remove fuzzy messages from translations (should only be used by translators of this language)'
task(:clean_fuzzy, [:language]) do |_task, args|
file_name = File.join(File.dirname(__FILE__), 'locales', args[:language], 'pdk.po')
success = system("msgattrib --clear-fuzzy #{file_name} -o #{file_name}")
puts "Updated #{file_name}" if success
end
end
begin
require 'github_changelog_generator/task'
GitHubChangelogGenerator::RakeTask.new :changelog do |config|
require 'pdk/version'
config.future_release = "v#{PDK::VERSION}"
config.header = "# Changelog\n\n" \
"All changes to this repo will be documented in this file.\n" \
"See the [release notes](https://puppet.com/docs/pdk/latest/release_notes.html) for a high-level summary.\n"
config.include_labels = %w[enhancement bug]
config.user = 'puppetlabs'
config.project = 'pdk'
end
rescue LoadError
desc 'Install github_changelog_generator to get access to automatic changelog generation'
task :changelog do
raise 'Install github_changelog_generator to get access to automatic changelog generation'
end
end
begin
require 'yard'
YARD::Rake::YardocTask.new do |t|
end
rescue LoadError
desc :yard do
raise 'Install yard to generate YARD documentation'
end
end
desc 'Check for unapproved licenses in dependencies'
task(:license_finder) do
system('license_finder --decisions-file=.dependency_decisions.yml') || raise(StandardError, 'Unapproved license(s) found on dependencies')
end