OSDN Git Service

adds the `platform_utils::grub_default` recipe.
[metasearch/grid-chef-repo.git] / cookbooks / platform_utils / Rakefile
1 require 'rspec/core/rake_task'
2 require 'rubocop/rake_task'
3 require 'foodcritic'
4 require 'stove/rake_task'
5
6 tpl_cookbook = '00cookbook'
7 cookbook_name = File.basename(Dir.pwd)
8
9 desc 'Initialize project'
10 task :init do
11   next if cookbook_name == tpl_cookbook
12
13   [
14     '.foodcritic',
15     '.rubocop.yml',
16     'Berksfile',
17     'chefignore',
18     'concourse.yml',
19     'fly-vars.yml',
20     'fly-vars.local.yml',
21     'Gemfile',
22     'Gemfile.lock',
23     'version',
24   ].each {|conf|
25     sh "cp ../#{tpl_cookbook}/#{conf} ./" unless File.exist?(conf)
26   }
27
28   ruby [
29     %(-pne '$_.gsub!(/^cookbook-name: .*$/, "cookbook-name: #{cookbook_name}")'),
30     '-i fly-vars.local.yml',
31   ].join(' ')
32 end
33
34 desc 'Update project'
35 task :update do
36   next if cookbook_name == tpl_cookbook
37
38   [
39     'Rakefile',
40     'chefignore',
41     'concourse.yml',
42     'fly-vars.yml',
43     'Gemfile',
44     'Gemfile.lock',
45   ].each {|conf|
46     sh "cp ../#{tpl_cookbook}/#{conf} ./"
47   }
48 end
49
50 desc 'fly set-pipeline'
51 task :'set-pipeline' do
52   sh [
53     "fly -t $CC_TARGET sp -p #{cookbook_name}-cookbook -c concourse.yml",
54     '-l fly-vars.yml -l fly-vars.local.yml -l ~/sec/credentials-prod.yml',
55   ].join(' ')
56 end
57 desc 'rake set-pipeline alias'
58 task sp: 'set-pipeline'
59
60 namespace :style do
61   desc 'Run Ruby style checks'
62   RuboCop::RakeTask.new(:ruby) do |t|
63     t.options = [
64       '--auto-gen-config',  # creates .rubocop_todo.yml
65     ]
66   end
67
68   desc 'Run Chef style checks'
69   FoodCritic::Rake::LintTask.new(:chef) do |t|
70     t.options = {
71       fail_tags: ['any'],
72     }
73   end
74 end
75
76 desc 'Run all style checks'
77 task style: ['style:chef', 'style:ruby']
78
79 desc 'Run ChefSpec examples'
80 RSpec::Core::RakeTask.new(:spec)
81
82 desc 'Publish cookbook'
83 Stove::RakeTask.new(:publish) do |t|
84   t.stove_opts = [
85     # `--username` and `--key` are set in ~/.stove typically.
86     #'--username', 'somebody',
87     #'--key', '~/chef/chef.io.example.com/somebody.pem',
88     #'--endpoint', 'https://supermarket.io.example.com/api/v1',  # default: supermarket.chef.io
89     #'--no-ssl-verify',
90     '--no-git',
91     '--log-level', 'info',
92   ]
93 end
94
95 task default: ['style', 'spec']