spout 0.5.0 → 0.6.0.beta1
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 +4 -4
- data/CHANGELOG.md +8 -0
- data/lib/spout/actions.rb +6 -0
- data/lib/spout/tasks/engine.rake +56 -0
- data/lib/spout/version.rb +2 -2
- data/lib/spout/views/index.html.erb +78 -0
- data/spout.gemspec +1 -1
- metadata +6 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7a6e21bcb87ee2582bbe4e201dbcb42b65e11259
|
4
|
+
data.tar.gz: 86edbf1fff97458cb2eb30d06b7d0b96f4e4226d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 74e71e9826b2b38a4090be8e8dba01ce504f8674f993a0403c858ddce35bfec8449989ff701503d19e3c8e882e4728ffe9f80fc59e3cbdbffa02016ee38672cc
|
7
|
+
data.tar.gz: 6664b2fa054288630ec72d6ee4def325ef0bce008cec0d7a235fc8e80af047b532494d9370a418d70a682e83bb6fa341355f63eee9e6970649f984a288b8f4b0
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,11 @@
|
|
1
|
+
## 0.6.0
|
2
|
+
|
3
|
+
### Enhancement
|
4
|
+
- Added `spout match` command that generates a coverage report of how well a dataset matches the data dictionary
|
5
|
+
- Spout Match generates a viewable report in `dd\index.html` that shows which columns are covered in CSVs located in `dd\csvs`
|
6
|
+
- **Gem Changes**
|
7
|
+
- Updated to colorize 0.6.0
|
8
|
+
|
1
9
|
## 0.5.0 (February 28, 2014)
|
2
10
|
|
3
11
|
### Enhancement
|
data/lib/spout/actions.rb
CHANGED
@@ -19,6 +19,8 @@ module Spout
|
|
19
19
|
new_data_dictionary_export(argv)
|
20
20
|
when 'hybrid', '-hybrid', '--hybrid', 'y', 'hy', '-y', '-hy'
|
21
21
|
new_data_dictionary_export(argv, 'hybrid')
|
22
|
+
when 'dataset', '-dataset', '--dataset', 'd', '-d', 'match', '-match', '--match', 'm', '-m'
|
23
|
+
match_dataset_report(argv)
|
22
24
|
else
|
23
25
|
help
|
24
26
|
end
|
@@ -112,6 +114,10 @@ EOT
|
|
112
114
|
system "bundle install"
|
113
115
|
end
|
114
116
|
|
117
|
+
def match_dataset_report(argv)
|
118
|
+
system "bundle exec rake dd:coverage"
|
119
|
+
end
|
120
|
+
|
115
121
|
private
|
116
122
|
|
117
123
|
def copy_file(template_file, file_name = '')
|
data/lib/spout/tasks/engine.rake
CHANGED
@@ -15,6 +15,7 @@ namespace :dd do
|
|
15
15
|
require 'fileutils'
|
16
16
|
require 'rubygems'
|
17
17
|
require 'json'
|
18
|
+
require 'erb'
|
18
19
|
|
19
20
|
desc 'Create Data Dictionary from repository'
|
20
21
|
task :create do
|
@@ -42,6 +43,61 @@ namespace :dd do
|
|
42
43
|
puts "\nPlease specify a valid CSV file.".colorize( :red ) + additional_csv_info
|
43
44
|
end
|
44
45
|
end
|
46
|
+
|
47
|
+
desc 'Match CSV dataset with JSON repository'
|
48
|
+
task :coverage do
|
49
|
+
puts 'MDR'
|
50
|
+
puts Dir.pwd
|
51
|
+
puts csvs = Dir.glob("dd/csvs/*.csv")
|
52
|
+
|
53
|
+
@all_column_headers = []
|
54
|
+
|
55
|
+
@variable_json_ids = []
|
56
|
+
@variable_file_names = []
|
57
|
+
|
58
|
+
Dir.glob("variables/**/*.json").each do |file|
|
59
|
+
if json = JSON.parse(File.read(file)) rescue false
|
60
|
+
@variable_json_ids << json['id']
|
61
|
+
end
|
62
|
+
@variable_file_names << file.split('/').last.to_s.split('.json').first.to_s
|
63
|
+
end
|
64
|
+
|
65
|
+
csvs.each do |csv_file|
|
66
|
+
column_headers = []
|
67
|
+
|
68
|
+
CSV.parse( File.open(csv_file, 'r:iso-8859-1:utf-8'){|f| f.read} ) do |line|
|
69
|
+
column_headers = line
|
70
|
+
break # Only read first line
|
71
|
+
end
|
72
|
+
|
73
|
+
column_headers.each do |column_header|
|
74
|
+
|
75
|
+
end
|
76
|
+
|
77
|
+
@all_column_headers += column_headers
|
78
|
+
end
|
79
|
+
|
80
|
+
|
81
|
+
@all_column_headers
|
82
|
+
|
83
|
+
# puts File.join(File.dirname(__FILE__), '../views/', "")
|
84
|
+
|
85
|
+
coverage_file = File.join(Dir.pwd, 'dd', 'index.html')
|
86
|
+
|
87
|
+
File.open(coverage_file, 'w+') do |file|
|
88
|
+
name = 'index.html'
|
89
|
+
erb_location = File.join(File.dirname(__FILE__), '../views/', "#{name}.erb")
|
90
|
+
file.puts ERB.new(File.read(erb_location)).result(binding)
|
91
|
+
end
|
92
|
+
|
93
|
+
open_command = 'open' if RUBY_PLATFORM.match(/darwin/) != nil
|
94
|
+
open_command = 'start' if RUBY_PLATFORM.match(/mingw/) != nil
|
95
|
+
|
96
|
+
|
97
|
+
system "#{open_command} #{coverage_file}" if ['start', 'open'].include?(open_command)
|
98
|
+
puts coverage_file
|
99
|
+
end
|
100
|
+
|
45
101
|
end
|
46
102
|
|
47
103
|
def standard_version
|
data/lib/spout/version.rb
CHANGED
@@ -0,0 +1,78 @@
|
|
1
|
+
<html lang="en"><head>
|
2
|
+
<meta charset="utf-8">
|
3
|
+
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
4
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
5
|
+
<meta name="description" content="">
|
6
|
+
<meta name="author" content="">
|
7
|
+
<link rel="shortcut icon" href="data:image/vnd.microsoft.icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAQAABMLAAATCwAAAAAAAAAAAAAAAAAAAAAAIAAAAMIAAAAiAAAAAAAAAAAAAAAAAAAARAAAAEEAAAAcAAAAwQAAACEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAADCAAAAIgAAAAAAAAAAAAAAAAAAAEQAAABBAAAAHAAAAMEAAAAhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAwwAAACIAAAAAAAAAAAAAAAAAAABEAAAAQQAAABwAAADBAAAAIQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAKoAAAAeAAAAAAAAAAAAAAAAAAAARAAAAEEAAAAYAAAAqwAAAB4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAWAAAACAAAAB8AAAAfAAAAAAAAAEQAAABDAAAAAAAAABgAAAAIAAAAHQAAAB0AAAAEAAAAAAAAAAAAAAAAAAAAAAAAABkAAACuAAAArQAAABQAAABCAAAAQwAAAAAAAAAAAAAAGAAAAK0AAACrAAAAFgAAAAAAAAAAAAAAAAAAAAAAAAADAAAAGQAAABkAAAAAAAAARAAAAEMAAAAAAAAAAAAAAAMAAAAZAAAAGQAAAAMAAAAAAAAATAAAAEwAAABOAAAATAAAAEoAAABKAAAASQAAAHwAAAB7AAAASgAAAEwAAABMAAAASgAAAEoAAABMAAAATAAAAFAAAABnAAAA0AAAAGcAAABRAAAAUgAAAE8AAACAAAAAfgAAAE0AAABQAAAAUAAAAFAAAABSAAAAUgAAAFIAAAAAAAAAIAAAAL8AAAAfAAAAAAAAAAAAAAAAAAAARQAAAFkAAAAbAAAAHgAAAB8AAAAbAAAABAAAAAAAAAAAAAAAAAAAACAAAAC/AAAAHwAAAAIAAAAXAAAAAAAAAEgAAADPAAAAwwAAAMMAAADFAAAArAAAABgAAAAAAAAAAAAAAAAAAAAgAAAAvwAAAB4AAAAcAAAAqwAAABkAAABDAAAAWgAAAB0AAAAgAAAAHwAAABsAAAAEAAAAAAAAAAAAAAAAAAAAHAAAAKgAAAAaAAAAIAAAAMMAAAAdAAAAQgAAAEMAAAAAAAAABAAAABsAAAAfAAAAIAAAACEAAAAhAAAAAAAAAAQAAAAXAAAAAgAAACIAAADDAAAAHQAAAEIAAABDAAAAAAAAABkAAACrAAAAwwAAAMIAAADCAAAAwQAAAAAAAAAAAAAAAAAAAAAAAAAiAAAAwwAAAB0AAABCAAAAQwAAAAAAAAAEAAAAHQAAACEAAAAgAAAAIAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAIgAAAMMAAAAdAAAAQgAAAEMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjg8AAI4PAACODwAAjg8AAIABAADgYQAA4mEAAAAAAAAAAAAAjgMAAIIDAACAAwAAgEAAAIBAAADwQAAA8H8AAA==">
|
8
|
+
|
9
|
+
<title>Starter Template for Bootstrap</title>
|
10
|
+
|
11
|
+
<!-- Bootstrap core CSS -->
|
12
|
+
<link href="http://netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css" rel="stylesheet">
|
13
|
+
|
14
|
+
<!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries -->
|
15
|
+
<!--[if lt IE 9]>
|
16
|
+
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
|
17
|
+
<script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
|
18
|
+
<![endif]-->
|
19
|
+
|
20
|
+
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
|
21
|
+
<script src="http://netdna.bootstrapcdn.com/bootstrap/3.1.1/js/bootstrap.min.js"></script>
|
22
|
+
<style type="text/css">
|
23
|
+
body {
|
24
|
+
padding-top: 50px;
|
25
|
+
}
|
26
|
+
</style>
|
27
|
+
</head>
|
28
|
+
|
29
|
+
<body>
|
30
|
+
|
31
|
+
<div class="navbar navbar-inverse navbar-fixed-top" role="navigation">
|
32
|
+
<div class="container">
|
33
|
+
<div class="navbar-header">
|
34
|
+
<a class="navbar-brand" href="#">Spout Dataset and Data Dictionary Coverage</a>
|
35
|
+
</div>
|
36
|
+
</div>
|
37
|
+
</div>
|
38
|
+
|
39
|
+
<div class="container" style="padding-top:50px">
|
40
|
+
|
41
|
+
<table class="table table-bordered table-hover">
|
42
|
+
<thead>
|
43
|
+
<tr>
|
44
|
+
<th>Dataset Column Header</th>
|
45
|
+
<th>JSON File</th>
|
46
|
+
<th>Found in Data Dictionary</th>
|
47
|
+
</tr>
|
48
|
+
</thead>
|
49
|
+
<tbody>
|
50
|
+
<% @all_column_headers.each do |column| %>
|
51
|
+
<tr>
|
52
|
+
<td><%= column %></td>
|
53
|
+
<td>
|
54
|
+
<% if @variable_file_names.include?(column) %>
|
55
|
+
<span class="text-success">File Found</span>
|
56
|
+
<% else %>
|
57
|
+
<span class="text-danger">No JSON File Found, expecting: <code><%= column %>.json</code></span>
|
58
|
+
<% end %>
|
59
|
+
</td>
|
60
|
+
<td>
|
61
|
+
<% if @variable_json_ids.include?(column) %>
|
62
|
+
<span class="text-success">JSON ID Found</span>
|
63
|
+
<% else %>
|
64
|
+
<span class="text-danger">No Matching JSON ID</span>
|
65
|
+
<pre>{
|
66
|
+
"id": "---", ...
|
67
|
+
}</pre>
|
68
|
+
<% end %>
|
69
|
+
</td>
|
70
|
+
</tr>
|
71
|
+
<% end %>
|
72
|
+
</tbody>
|
73
|
+
</table>
|
74
|
+
|
75
|
+
</div><!-- /.container -->
|
76
|
+
|
77
|
+
|
78
|
+
</body></html>
|
data/spout.gemspec
CHANGED
@@ -29,7 +29,7 @@ Gem::Specification.new do |spec|
|
|
29
29
|
spec.add_dependency "rake"
|
30
30
|
spec.add_dependency "turn"
|
31
31
|
spec.add_dependency "json"
|
32
|
-
spec.add_dependency "colorize", "~> 0.
|
32
|
+
spec.add_dependency "colorize", "~> 0.6.0"
|
33
33
|
|
34
34
|
spec.add_development_dependency "bundler", "~> 1.3"
|
35
35
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: spout
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.0.beta1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Remo Mueller
|
@@ -58,14 +58,14 @@ dependencies:
|
|
58
58
|
requirements:
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: 0.
|
61
|
+
version: 0.6.0
|
62
62
|
type: :runtime
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: 0.
|
68
|
+
version: 0.6.0
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: bundler
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -119,6 +119,7 @@ files:
|
|
119
119
|
- lib/spout/tests/variable_name_uniqueness.rb
|
120
120
|
- lib/spout/tests/variable_type_validation.rb
|
121
121
|
- lib/spout/version.rb
|
122
|
+
- lib/spout/views/index.html.erb
|
122
123
|
- spout.gemspec
|
123
124
|
homepage: https://github.com/sleepepi
|
124
125
|
licenses:
|
@@ -135,9 +136,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
135
136
|
version: '0'
|
136
137
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
137
138
|
requirements:
|
138
|
-
- - "
|
139
|
+
- - ">"
|
139
140
|
- !ruby/object:Gem::Version
|
140
|
-
version:
|
141
|
+
version: 1.3.1
|
141
142
|
requirements: []
|
142
143
|
rubyforge_project:
|
143
144
|
rubygems_version: 2.2.2
|