minimart 1.1.3 → 1.1.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/.travis.yml +3 -0
- data/lib/minimart/cookbook.rb +16 -2
- data/lib/minimart/mirror/inventory_builder.rb +11 -4
- data/lib/minimart/version.rb +1 -1
- data/lib/minimart/web/html_generator.rb +31 -7
- data/lib/minimart/web/template_helper.rb +13 -1
- data/minimart.gemspec +10 -5
- data/spec/fixtures/bad_metadata_inventory.yml +5 -0
- data/spec/fixtures/sample_cookbook/metadata.rb +2 -0
- data/spec/invalid/bad_metadata_cookbook/Berksfile +3 -0
- data/spec/invalid/bad_metadata_cookbook/CHANGELOG.md +3 -0
- data/spec/invalid/bad_metadata_cookbook/Gemfile +16 -0
- data/spec/invalid/bad_metadata_cookbook/LICENSE +3 -0
- data/spec/invalid/bad_metadata_cookbook/README.md +42 -0
- data/spec/invalid/bad_metadata_cookbook/Thorfile +5 -0
- data/spec/invalid/bad_metadata_cookbook/Vagrantfile +90 -0
- data/spec/invalid/bad_metadata_cookbook/chefignore +94 -0
- data/spec/invalid/bad_metadata_cookbook/metadata.rb +10 -0
- data/spec/invalid/bad_metadata_cookbook/recipes/default.rb +8 -0
- data/spec/lib/minimart/cookbook_spec.rb +10 -0
- data/spec/lib/minimart/mirror/inventory_builder_spec.rb +21 -0
- data/spec/lib/minimart/web/html_generator_spec.rb +14 -2
- data/web/_assets/stylesheets/main.css +6 -0
- data/web/assets/javascripts/application.min.js +14 -5
- data/web/assets/stylesheets/application.min.css +1 -1
- data/web/templates/cookbook_show.erb +6 -0
- metadata +91 -10
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
MjlkNTAzOTQ2YjM4YzNjNGQwNTE0NmE1NTY3MzMzZjlmYTdiZWJmOQ==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
NzE5OTFlZDI3MjdkZmU2OGRlNjczZDZhN2YxNWQ0ZTYzNzk2ZDI5MQ==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
ZmIzZGQ0YzA4MWI2MTQxMGZhMDk2NjMzMjk1YzgxMTE5NDAyMDk2OGRiMDVm
|
10
|
+
Y2IzNWExN2Q5ZTJlYzY3YjU2MTE5ZWNkM2VlMDVjOGJjMDAyYmEzZTI4N2Mw
|
11
|
+
OTZhYWI0NDQzMmRjM2FlYWQ2ZjVkYWZmOTlhYjlmYzNkYTg2NzE=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
NjQ3ODcxNjY0Y2EwOWIwYjNhNTgwMGNiOThlMjE1NWVjMDQ5OGU3ODhjZGEz
|
14
|
+
ZjZhNDg5MTY3YTU1YzQzNWQxNDNlMzM5ZmI5OGVlMDcyOTQwZThlN2ZiZjRh
|
15
|
+
YTY5YjY1NzZiNWFiZmQyODU3ZWQyODBmNDFkM2VjZTZjMTRmYmQ=
|
data/.travis.yml
CHANGED
@@ -3,6 +3,9 @@ cache: bundler
|
|
3
3
|
rvm:
|
4
4
|
- 2.2.3
|
5
5
|
- 2.1.7
|
6
|
+
notifications:
|
7
|
+
flowdock:
|
8
|
+
secure: s2EpKpFFZJL51GChkIM/B8CpoiAvj56aYp7iSfKcD5aZvdBRssXXt9i3t39TA/hD8NkWfM07eVbhL3tGAv2GcXhTOlXZSoljzGdzFdGROZZd4asd1pLK8VuJTQrEKPDfKp/+XsIfbfOrTFf19qhBAfk5A0TRUXVMITiMkVIo1D4=
|
6
9
|
deploy:
|
7
10
|
provider: rubygems
|
8
11
|
api_key:
|
data/lib/minimart/cookbook.rb
CHANGED
@@ -19,7 +19,7 @@ module Minimart
|
|
19
19
|
new (Ridley::Chef::Cookbook.from_path(path))
|
20
20
|
end
|
21
21
|
|
22
|
-
# @param [Ridley::Chef::
|
22
|
+
# @param [Ridley::Chef::Cookbook] raw_cookbook
|
23
23
|
def initialize(raw_cookbook)
|
24
24
|
@raw_cookbook = raw_cookbook
|
25
25
|
end
|
@@ -54,6 +54,18 @@ module Minimart
|
|
54
54
|
metadata.maintainer
|
55
55
|
end
|
56
56
|
|
57
|
+
# Get the source url of the cookbook
|
58
|
+
# @return [String]
|
59
|
+
def source_url
|
60
|
+
metadata.source_url
|
61
|
+
end
|
62
|
+
|
63
|
+
# Get the issues url of the cookbook
|
64
|
+
# @return [String]
|
65
|
+
def issues_url
|
66
|
+
metadata.issues_url
|
67
|
+
end
|
68
|
+
|
57
69
|
# Get the path to the cookbook on the file system
|
58
70
|
# @return [String]
|
59
71
|
def path
|
@@ -112,7 +124,9 @@ module Minimart
|
|
112
124
|
url: cookbook_path(self),
|
113
125
|
downloaded_at: downloaded_at,
|
114
126
|
download_date: download_date,
|
115
|
-
platforms: normalized_platforms
|
127
|
+
platforms: normalized_platforms,
|
128
|
+
source_url: source_url,
|
129
|
+
issues_url: issues_url
|
116
130
|
}
|
117
131
|
end
|
118
132
|
|
@@ -1,3 +1,4 @@
|
|
1
|
+
require 'ridley'
|
1
2
|
module Minimart
|
2
3
|
module Mirror
|
3
4
|
|
@@ -33,10 +34,16 @@ module Minimart
|
|
33
34
|
# precedence over information found elsewhere.
|
34
35
|
def install_cookbooks_with_explicit_location
|
35
36
|
inventory_requirements.each_with_explicit_location do |requirement|
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
37
|
+
begin
|
38
|
+
requirement.fetch_cookbook do |cookbook|
|
39
|
+
validate_cookbook_against_local_store(cookbook, requirement)
|
40
|
+
add_artifact_to_graph(cookbook)
|
41
|
+
add_cookbook_to_local_store(cookbook.path, requirement.to_hash)
|
42
|
+
end
|
43
|
+
rescue Ridley::Errors::MissingNameAttribute
|
44
|
+
#handle Ridley::Errors::MissingNameAttribute and other cookbook specific errors by ignoring them.
|
45
|
+
#hopefuly the next version will be valid. eg. https://git.corp.adobe.com/EchoSignCommunity/apt/blob/1.5.0/metadata.rb
|
46
|
+
next
|
40
47
|
end
|
41
48
|
end
|
42
49
|
end
|
data/lib/minimart/version.rb
CHANGED
@@ -1,3 +1,7 @@
|
|
1
|
+
require 'sprockets'
|
2
|
+
require 'sass'
|
3
|
+
require 'uglifier'
|
4
|
+
|
1
5
|
require 'minimart/web/dashboard_generator'
|
2
6
|
require 'minimart/web/cookbook_show_page_generator'
|
3
7
|
|
@@ -8,11 +12,7 @@ module Minimart
|
|
8
12
|
class HtmlGenerator
|
9
13
|
include Minimart::Web::TemplateHelper
|
10
14
|
|
11
|
-
|
12
|
-
attr_reader :web_directory
|
13
|
-
|
14
|
-
# @return [Minimart::Web::Cookbooks] the set of cookbooks to generate HTML for
|
15
|
-
attr_reader :cookbooks
|
15
|
+
attr_reader :web_directory, :cookbooks
|
16
16
|
|
17
17
|
# @param [Hash] opts
|
18
18
|
# @option opts [String] :web_directory The directory to put any generated HTML in
|
@@ -24,15 +24,39 @@ module Minimart
|
|
24
24
|
|
25
25
|
# Generate any HTML!
|
26
26
|
def generate
|
27
|
-
|
27
|
+
generate_assets
|
28
28
|
generate_index
|
29
29
|
generate_cookbook_show_pages
|
30
30
|
end
|
31
31
|
|
32
32
|
private
|
33
33
|
|
34
|
+
def generate_assets
|
35
|
+
generate_js
|
36
|
+
generate_css
|
37
|
+
copy_assets
|
38
|
+
end
|
39
|
+
|
34
40
|
def copy_assets
|
35
|
-
FileUtils.cp_r(
|
41
|
+
FileUtils.cp_r(compiled_asset_directory, web_directory)
|
42
|
+
end
|
43
|
+
|
44
|
+
def generate_js
|
45
|
+
js_dir = Pathname.new(compiled_asset_directory).join('javascripts')
|
46
|
+
FileUtils.mkdir_p(js_dir)
|
47
|
+
sprockets = Sprockets::Environment.new(minimart_root_directory)
|
48
|
+
sprockets.js_compressor = :uglify
|
49
|
+
sprockets.append_path(Pathname.new(raw_asset_directory).join('javascripts'))
|
50
|
+
sprockets['manifest.js'].write_to(js_dir.join('application.min.js'))
|
51
|
+
end
|
52
|
+
|
53
|
+
def generate_css
|
54
|
+
css_dir = Pathname.new(compiled_asset_directory).join('stylesheets')
|
55
|
+
FileUtils.mkdir_p(css_dir)
|
56
|
+
sprockets = Sprockets::Environment.new(minimart_root_directory)
|
57
|
+
sprockets.css_compressor = :sass
|
58
|
+
sprockets.append_path(Pathname.new(raw_asset_directory).join('stylesheets'))
|
59
|
+
sprockets['manifest.css'].write_to(css_dir.join('application.min.css'))
|
36
60
|
end
|
37
61
|
|
38
62
|
def generate_index
|
@@ -39,7 +39,19 @@ module Minimart
|
|
39
39
|
|
40
40
|
# @return [String] The path to the Minimart web directory
|
41
41
|
def minimart_web_directory
|
42
|
-
File.join(
|
42
|
+
File.join(minimart_root_directory, '..', 'web')
|
43
|
+
end
|
44
|
+
|
45
|
+
def minimart_root_directory
|
46
|
+
Minimart.root_path
|
47
|
+
end
|
48
|
+
|
49
|
+
def raw_asset_directory
|
50
|
+
File.join(minimart_web_directory, '_assets')
|
51
|
+
end
|
52
|
+
|
53
|
+
def compiled_asset_directory
|
54
|
+
File.join(minimart_web_directory, 'assets')
|
43
55
|
end
|
44
56
|
|
45
57
|
# Get the path for a web asset (CSS, JS, etc...)
|
data/minimart.gemspec
CHANGED
@@ -8,24 +8,29 @@ Gem::Specification.new do |spec|
|
|
8
8
|
spec.version = Minimart::VERSION
|
9
9
|
spec.summary = %q{MiniMart is a RubyGem that makes it simple to build a repository of Chef cookbooks using only static files.}
|
10
10
|
spec.description = %q{MiniMart is a RubyGem that makes it simple to build a repository of Chef cookbooks using only static files.}
|
11
|
-
spec.authors = 'MadGlory'
|
11
|
+
spec.authors = ['MadGlory', 'Todd Pickell', 'Others']
|
12
12
|
spec.homepage = 'http://electric-it.github.io/minimart/'
|
13
13
|
spec.license = 'Apache License, v2.0'
|
14
14
|
|
15
|
+
spec.required_ruby_version = ['~> 2.1', '~> 2.2']
|
16
|
+
|
15
17
|
spec.files = `git ls-files -z`.split("\x0")
|
16
18
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
17
19
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
18
20
|
spec.require_paths = ['lib']
|
19
21
|
|
20
|
-
spec.add_dependency 'git', '~> 1.2.6'
|
22
|
+
spec.add_dependency 'git', '~> 1.2', '>= 1.2.6'
|
21
23
|
spec.add_dependency 'minitar', '~> 0.5'
|
22
|
-
spec.add_dependency 'octokit', '~> 3.7
|
23
|
-
spec.add_dependency 'redcarpet', '
|
24
|
+
spec.add_dependency 'octokit', '~> 3.7'
|
25
|
+
spec.add_dependency 'redcarpet', '= 3.3.2'
|
24
26
|
spec.add_dependency 'rest-client', '~> 1.7'
|
25
27
|
spec.add_dependency 'ridley', '~> 4.1'
|
26
|
-
spec.add_dependency 'solve', '~> 1.2.1'
|
28
|
+
spec.add_dependency 'solve', '~> 1.2', '>= 1.2.1'
|
27
29
|
spec.add_dependency 'thor', '~> 0.19'
|
28
30
|
spec.add_dependency 'tilt', '~> 2.0'
|
31
|
+
spec.add_dependency 'sprockets', '~> 3.5'
|
32
|
+
spec.add_dependency 'uglifier', '~> 2.7'
|
33
|
+
spec.add_dependency 'sass', '~> 3.4'
|
29
34
|
|
30
35
|
spec.add_development_dependency 'bundler', '~> 1.7'
|
31
36
|
spec.add_development_dependency 'rake', '~> 10.3'
|
@@ -5,5 +5,7 @@ license 'All rights reserved'
|
|
5
5
|
description 'Installs/Configures sample_cookbook'
|
6
6
|
long_description 'Installs/Configures sample_cookbook'
|
7
7
|
version '1.2.3'
|
8
|
+
source_url 'https://github.com/electric-it/minimart'
|
9
|
+
issues_url 'https://github.com/electric-it/minimart/issues'
|
8
10
|
|
9
11
|
depends 'yum', '> 3.0.0'
|
@@ -0,0 +1,16 @@
|
|
1
|
+
source 'https://rubygems.org'
|
2
|
+
|
3
|
+
gem 'berkshelf'
|
4
|
+
|
5
|
+
# Uncomment these lines if you want to live on the Edge:
|
6
|
+
#
|
7
|
+
# group :development do
|
8
|
+
# gem "berkshelf", github: "berkshelf/berkshelf"
|
9
|
+
# gem "vagrant", github: "mitchellh/vagrant", tag: "v1.6.3"
|
10
|
+
# end
|
11
|
+
#
|
12
|
+
# group :plugins do
|
13
|
+
# gem "vagrant-berkshelf", github: "berkshelf/vagrant-berkshelf"
|
14
|
+
# gem "vagrant-omnibus", github: "schisamo/vagrant-omnibus"
|
15
|
+
# end
|
16
|
+
|
@@ -0,0 +1,42 @@
|
|
1
|
+
# sample_cookbook-cookbook
|
2
|
+
|
3
|
+
TODO: Enter the cookbook description here.
|
4
|
+
|
5
|
+
## Supported Platforms
|
6
|
+
|
7
|
+
TODO: List your supported platforms.
|
8
|
+
|
9
|
+
## Attributes
|
10
|
+
|
11
|
+
<table>
|
12
|
+
<tr>
|
13
|
+
<th>Key</th>
|
14
|
+
<th>Type</th>
|
15
|
+
<th>Description</th>
|
16
|
+
<th>Default</th>
|
17
|
+
</tr>
|
18
|
+
<tr>
|
19
|
+
<td><tt>['sample_cookbook']['bacon']</tt></td>
|
20
|
+
<td>Boolean</td>
|
21
|
+
<td>whether to include bacon</td>
|
22
|
+
<td><tt>true</tt></td>
|
23
|
+
</tr>
|
24
|
+
</table>
|
25
|
+
|
26
|
+
## Usage
|
27
|
+
|
28
|
+
### sample_cookbook::default
|
29
|
+
|
30
|
+
Include `sample_cookbook` in your node's `run_list`:
|
31
|
+
|
32
|
+
```json
|
33
|
+
{
|
34
|
+
"run_list": [
|
35
|
+
"recipe[sample_cookbook::default]"
|
36
|
+
]
|
37
|
+
}
|
38
|
+
```
|
39
|
+
|
40
|
+
## License and Authors
|
41
|
+
|
42
|
+
Author:: YOUR_NAME (<YOUR_EMAIL>)
|
@@ -0,0 +1,90 @@
|
|
1
|
+
# -*- mode: ruby -*-
|
2
|
+
# vi: set ft=ruby :
|
3
|
+
|
4
|
+
# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
|
5
|
+
VAGRANTFILE_API_VERSION = '2'
|
6
|
+
|
7
|
+
Vagrant.require_version '>= 1.5.0'
|
8
|
+
|
9
|
+
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
|
10
|
+
# All Vagrant configuration is done here. The most common configuration
|
11
|
+
# options are documented and commented below. For a complete reference,
|
12
|
+
# please see the online documentation at vagrantup.com.
|
13
|
+
|
14
|
+
config.vm.hostname = 'sample-cookbook-berkshelf'
|
15
|
+
|
16
|
+
# Set the version of chef to install using the vagrant-omnibus plugin
|
17
|
+
# NOTE: You will need to install the vagrant-omnibus plugin:
|
18
|
+
#
|
19
|
+
# $ vagrant plugin install vagrant-omnibus
|
20
|
+
#
|
21
|
+
if Vagrant.has_plugin?
|
22
|
+
config.omnibus.chef_version = 'latest'
|
23
|
+
end
|
24
|
+
|
25
|
+
# Every Vagrant virtual environment requires a box to build off of.
|
26
|
+
# If this value is a shorthand to a box in Vagrant Cloud then
|
27
|
+
# config.vm.box_url doesn't need to be specified.
|
28
|
+
config.vm.box = 'chef/ubuntu-14.04'
|
29
|
+
|
30
|
+
|
31
|
+
# Assign this VM to a host-only network IP, allowing you to access it
|
32
|
+
# via the IP. Host-only networks can talk to the host machine as well as
|
33
|
+
# any other machines on the same network, but cannot be accessed (through this
|
34
|
+
# network interface) by any external networks.
|
35
|
+
config.vm.network :private_network, type: 'dhcp'
|
36
|
+
|
37
|
+
# Create a forwarded port mapping which allows access to a specific port
|
38
|
+
# within the machine from a port on the host machine. In the example below,
|
39
|
+
# accessing "localhost:8080" will access port 80 on the guest machine.
|
40
|
+
|
41
|
+
# Share an additional folder to the guest VM. The first argument is
|
42
|
+
# the path on the host to the actual folder. The second argument is
|
43
|
+
# the path on the guest to mount the folder. And the optional third
|
44
|
+
# argument is a set of non-required options.
|
45
|
+
# config.vm.synced_folder "../data", "/vagrant_data"
|
46
|
+
|
47
|
+
# Provider-specific configuration so you can fine-tune various
|
48
|
+
# backing providers for Vagrant. These expose provider-specific options.
|
49
|
+
# Example for VirtualBox:
|
50
|
+
#
|
51
|
+
# config.vm.provider :virtualbox do |vb|
|
52
|
+
# # Don't boot with headless mode
|
53
|
+
# vb.gui = true
|
54
|
+
#
|
55
|
+
# # Use VBoxManage to customize the VM. For example to change memory:
|
56
|
+
# vb.customize ["modifyvm", :id, "--memory", "1024"]
|
57
|
+
# end
|
58
|
+
#
|
59
|
+
# View the documentation for the provider you're using for more
|
60
|
+
# information on available options.
|
61
|
+
|
62
|
+
# The path to the Berksfile to use with Vagrant Berkshelf
|
63
|
+
# config.berkshelf.berksfile_path = "./Berksfile"
|
64
|
+
|
65
|
+
# Enabling the Berkshelf plugin. To enable this globally, add this configuration
|
66
|
+
# option to your ~/.vagrant.d/Vagrantfile file
|
67
|
+
config.berkshelf.enabled = true
|
68
|
+
|
69
|
+
# An array of symbols representing groups of cookbook described in the Vagrantfile
|
70
|
+
# to exclusively install and copy to Vagrant's shelf.
|
71
|
+
# config.berkshelf.only = []
|
72
|
+
|
73
|
+
# An array of symbols representing groups of cookbook described in the Vagrantfile
|
74
|
+
# to skip installing and copying to Vagrant's shelf.
|
75
|
+
# config.berkshelf.except = []
|
76
|
+
|
77
|
+
config.vm.provision :chef_solo do |chef|
|
78
|
+
chef.json = {
|
79
|
+
mysql: {
|
80
|
+
server_root_password: 'rootpass',
|
81
|
+
server_debian_password: 'debpass',
|
82
|
+
server_repl_password: 'replpass'
|
83
|
+
}
|
84
|
+
}
|
85
|
+
|
86
|
+
chef.run_list = [
|
87
|
+
'recipe[sample_cookbook::default]'
|
88
|
+
]
|
89
|
+
end
|
90
|
+
end
|
@@ -0,0 +1,94 @@
|
|
1
|
+
# Put files/directories that should be ignored in this file when uploading
|
2
|
+
# or sharing to the community site.
|
3
|
+
# Lines that start with '# ' are comments.
|
4
|
+
|
5
|
+
# OS generated files #
|
6
|
+
######################
|
7
|
+
.DS_Store
|
8
|
+
Icon?
|
9
|
+
nohup.out
|
10
|
+
ehthumbs.db
|
11
|
+
Thumbs.db
|
12
|
+
|
13
|
+
# SASS #
|
14
|
+
########
|
15
|
+
.sass-cache
|
16
|
+
|
17
|
+
# EDITORS #
|
18
|
+
###########
|
19
|
+
\#*
|
20
|
+
.#*
|
21
|
+
*~
|
22
|
+
*.sw[a-z]
|
23
|
+
*.bak
|
24
|
+
REVISION
|
25
|
+
TAGS*
|
26
|
+
tmtags
|
27
|
+
*_flymake.*
|
28
|
+
*_flymake
|
29
|
+
*.tmproj
|
30
|
+
.project
|
31
|
+
.settings
|
32
|
+
mkmf.log
|
33
|
+
|
34
|
+
## COMPILED ##
|
35
|
+
##############
|
36
|
+
a.out
|
37
|
+
*.o
|
38
|
+
*.pyc
|
39
|
+
*.so
|
40
|
+
*.com
|
41
|
+
*.class
|
42
|
+
*.dll
|
43
|
+
*.exe
|
44
|
+
*/rdoc/
|
45
|
+
|
46
|
+
# Testing #
|
47
|
+
###########
|
48
|
+
.watchr
|
49
|
+
.rspec
|
50
|
+
spec/*
|
51
|
+
spec/fixtures/*
|
52
|
+
test/*
|
53
|
+
features/*
|
54
|
+
Guardfile
|
55
|
+
Procfile
|
56
|
+
|
57
|
+
# SCM #
|
58
|
+
#######
|
59
|
+
.git
|
60
|
+
*/.git
|
61
|
+
.gitignore
|
62
|
+
.gitmodules
|
63
|
+
.gitconfig
|
64
|
+
.gitattributes
|
65
|
+
.svn
|
66
|
+
*/.bzr/*
|
67
|
+
*/.hg/*
|
68
|
+
*/.svn/*
|
69
|
+
|
70
|
+
# Berkshelf #
|
71
|
+
#############
|
72
|
+
cookbooks/*
|
73
|
+
tmp
|
74
|
+
|
75
|
+
# Cookbooks #
|
76
|
+
#############
|
77
|
+
CONTRIBUTING
|
78
|
+
CHANGELOG*
|
79
|
+
|
80
|
+
# Strainer #
|
81
|
+
############
|
82
|
+
Colanderfile
|
83
|
+
Strainerfile
|
84
|
+
.colander
|
85
|
+
.strainer
|
86
|
+
|
87
|
+
# Vagrant #
|
88
|
+
###########
|
89
|
+
.vagrant
|
90
|
+
Vagrantfile
|
91
|
+
|
92
|
+
# Travis #
|
93
|
+
##########
|
94
|
+
.travis.yml
|
@@ -0,0 +1,10 @@
|
|
1
|
+
maintainer 'MadGlory'
|
2
|
+
maintainer_email 'YOUR_EMAIL'
|
3
|
+
license 'All rights reserved'
|
4
|
+
description 'Installs/Configures bad_metadata_cookbook'
|
5
|
+
long_description 'Installs/Configures bad_metadata_cookbook'
|
6
|
+
version '1.2.3'
|
7
|
+
source_url 'https://github.com/electric-it/minimart'
|
8
|
+
issues_url 'https://github.com/electric-it/minimart/issues'
|
9
|
+
|
10
|
+
depends 'yum', '> 3.0.0'
|
@@ -31,6 +31,16 @@ describe Minimart::Cookbook do
|
|
31
31
|
it { is_expected.to eq 'MadGlory' }
|
32
32
|
end
|
33
33
|
|
34
|
+
describe '#source_url' do
|
35
|
+
subject { cookbook.source_url }
|
36
|
+
it { is_expected.to eq 'https://github.com/electric-it/minimart'}
|
37
|
+
end
|
38
|
+
|
39
|
+
describe '#issues_url' do
|
40
|
+
subject { cookbook.issues_url }
|
41
|
+
it { is_expected.to eq 'https://github.com/electric-it/minimart/issues'}
|
42
|
+
end
|
43
|
+
|
34
44
|
describe '#path' do
|
35
45
|
subject { cookbook.path }
|
36
46
|
it { is_expected.to eq Pathname.new('spec/fixtures/sample_cookbook') }
|
@@ -197,5 +197,26 @@ describe Minimart::Mirror::InventoryBuilder do
|
|
197
197
|
end
|
198
198
|
|
199
199
|
end
|
200
|
+
|
201
|
+
context 'when a cookbook is missing name param in the metadata' do
|
202
|
+
let(:inventory_config) do
|
203
|
+
Minimart::Mirror::InventoryConfiguration.new('spec/fixtures/bad_metadata_inventory.yml')
|
204
|
+
end
|
205
|
+
|
206
|
+
before(:each) do
|
207
|
+
# stub out actually cloning the repo
|
208
|
+
allow_any_instance_of(Minimart::Download::GitRepository).to receive(:fetch).and_yield 'spec/invalid/bad_metadata_cookbook'
|
209
|
+
end
|
210
|
+
|
211
|
+
around(:each) do |e|
|
212
|
+
VCR.use_cassette('location_specific_cookbooks') { e.call }
|
213
|
+
end
|
214
|
+
|
215
|
+
# broken
|
216
|
+
it 'should not include the cookbook in the graph' do
|
217
|
+
subject.build!
|
218
|
+
expect(subject.graph.source_cookbook_added?('bad_metadata_cookbook', '1.2.3')).to eq false
|
219
|
+
end
|
220
|
+
end
|
200
221
|
end
|
201
222
|
end
|
@@ -7,6 +7,9 @@ describe Minimart::Web::HtmlGenerator do
|
|
7
7
|
end
|
8
8
|
|
9
9
|
let(:web_directory) { test_directory }
|
10
|
+
let(:assets_directory) { File.join(web_directory, 'assets') }
|
11
|
+
let(:stylesheets_directory) { File.join(assets_directory, 'stylesheets') }
|
12
|
+
let(:javascripts_directory) { File.join(assets_directory, 'javascripts') }
|
10
13
|
|
11
14
|
subject do
|
12
15
|
Minimart::Web::HtmlGenerator.new(
|
@@ -17,7 +20,17 @@ describe Minimart::Web::HtmlGenerator do
|
|
17
20
|
describe '#generate' do
|
18
21
|
it 'should copy any available assets' do
|
19
22
|
subject.generate
|
20
|
-
expect(Dir.
|
23
|
+
expect(Dir.exist?(assets_directory)).to eq true
|
24
|
+
end
|
25
|
+
|
26
|
+
it 'should minify raw CSS files' do
|
27
|
+
subject.generate
|
28
|
+
expect(Dir.entries(stylesheets_directory)).to include('application.min.css')
|
29
|
+
end
|
30
|
+
|
31
|
+
it 'should unglify raw JS files' do
|
32
|
+
subject.generate
|
33
|
+
expect(Dir.entries(javascripts_directory)).to include('application.min.js')
|
21
34
|
end
|
22
35
|
|
23
36
|
it 'should generate the dashboard page' do
|
@@ -30,5 +43,4 @@ describe Minimart::Web::HtmlGenerator do
|
|
30
43
|
subject.generate
|
31
44
|
end
|
32
45
|
end
|
33
|
-
|
34
46
|
end
|