spout 0.12.0.rc → 0.12.0.rc2
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 +4 -1
- data/lib/spout/commands/project_generator.rb +3 -30
- data/lib/spout/commands/update.rb +80 -5
- data/lib/spout/helpers/framework.rb +40 -0
- data/lib/spout/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0ee597968159c66c33d492721f38b5ba41a682df
|
4
|
+
data.tar.gz: 50ff21c4c9bf2053b9c094c46284cf7e589c1311
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: aba1faeace9de13a80ef0f5e6ae59cd67be9f9baa15704f9439a7701d42f00d9880692a7d4b2d7d1de7045765b5000e9910695e81611d1aea78663e55f5bedf2
|
7
|
+
data.tar.gz: 6e874dadba90dda413a60fc14e7fac481a5526cbd9bcd6376427cd783dd90656d100466d14dc8f938201adcd58e3a2c1451970cf5ac3aac22b73acef4b30579d
|
data/CHANGELOG.md
CHANGED
@@ -5,8 +5,11 @@
|
|
5
5
|
- Spout now provides a warning and skips columns in CSVs with blank headers
|
6
6
|
- `spout new` command now generates `CHANGELOG.md`, `README.md`, and `VERSION`
|
7
7
|
placeholder files
|
8
|
-
- Check for the latest version available using `spout update`
|
9
8
|
- Integer and numeric variables can now reference a domain for missing values
|
9
|
+
- **Update Command Added**
|
10
|
+
- Check for the latest version available using `spout update`
|
11
|
+
- The update command provides steps to upgrade the data dictionary to the
|
12
|
+
latest version Spout
|
10
13
|
- **Exporter Changes**
|
11
14
|
- The export command now exports the variable forms attribute
|
12
15
|
- Dictionary exports now are in `exports` instead of `dd` folder
|
@@ -1,16 +1,16 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require 'colorize'
|
4
|
-
require 'date'
|
5
|
-
require 'erb'
|
6
4
|
require 'fileutils'
|
7
5
|
|
8
|
-
|
6
|
+
require 'spout/helpers/framework'
|
9
7
|
|
10
8
|
module Spout
|
11
9
|
module Commands
|
12
10
|
# Generates folder and file structure for a new spout data dictionary.
|
13
11
|
class ProjectGenerator
|
12
|
+
include Spout::Helpers::Framework
|
13
|
+
|
14
14
|
def initialize(argv)
|
15
15
|
generate_folder_structure!(argv)
|
16
16
|
end
|
@@ -54,33 +54,6 @@ EOT
|
|
54
54
|
Dir.chdir(@full_path)
|
55
55
|
system 'bundle install'
|
56
56
|
end
|
57
|
-
|
58
|
-
private
|
59
|
-
|
60
|
-
def copy_file(template_file, file_name = '')
|
61
|
-
file_name = template_file if file_name == ''
|
62
|
-
file_path = File.join(@full_path, file_name)
|
63
|
-
template_file_path = File.join(TEMPLATES_DIRECTORY, template_file)
|
64
|
-
puts ' create'.colorize(:green) + " #{file_name}"
|
65
|
-
FileUtils.copy(template_file_path, file_path)
|
66
|
-
end
|
67
|
-
|
68
|
-
def evaluate_file(template_file, file_name)
|
69
|
-
template_file_path = File.join(TEMPLATES_DIRECTORY, template_file)
|
70
|
-
template = ERB.new(File.read(template_file_path))
|
71
|
-
file_path = File.join(@full_path, file_name)
|
72
|
-
file_out = File.new(file_path, 'w')
|
73
|
-
file_out.syswrite(template.result(binding))
|
74
|
-
puts ' create'.colorize(:green) + " #{file_name}"
|
75
|
-
ensure
|
76
|
-
file_out.close if file_out
|
77
|
-
end
|
78
|
-
|
79
|
-
def directory(directory_name)
|
80
|
-
directory_path = File.join(@full_path, directory_name)
|
81
|
-
puts ' create'.colorize(:green) + " #{directory_name}"
|
82
|
-
FileUtils.mkpath(directory_path)
|
83
|
-
end
|
84
57
|
end
|
85
58
|
end
|
86
59
|
end
|
@@ -2,11 +2,14 @@
|
|
2
2
|
|
3
3
|
require 'colorize'
|
4
4
|
require 'spout/helpers/json_request'
|
5
|
+
require 'spout/helpers/framework'
|
5
6
|
|
6
7
|
module Spout
|
7
8
|
module Commands
|
8
9
|
# Command to check if there is an updated version of the gem available.
|
9
10
|
class Update
|
11
|
+
include Spout::Helpers::Framework
|
12
|
+
|
10
13
|
class << self
|
11
14
|
def start(*args)
|
12
15
|
new(*args).start
|
@@ -14,6 +17,7 @@ module Spout
|
|
14
17
|
end
|
15
18
|
|
16
19
|
def initialize(argv)
|
20
|
+
@full_path = File.join('.')
|
17
21
|
end
|
18
22
|
|
19
23
|
def start
|
@@ -21,17 +25,88 @@ module Spout
|
|
21
25
|
if json
|
22
26
|
if json['version'] == Spout::VERSION::STRING
|
23
27
|
puts 'The spout gem is ' + 'up-to-date'.colorize(:green) + '!'
|
28
|
+
check_framework if File.exist?('Gemfile')
|
24
29
|
else
|
25
|
-
puts
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
+
puts "A newer version (v#{json['version']}) is available!\n\n"
|
31
|
+
if File.exist?('Gemfile')
|
32
|
+
puts 'Add the following to your Gemfile and run ' + 'bundle update'.colorize(:green) + ".\n\n"
|
33
|
+
puts " gem 'spout', '~> #{json['version']}'\n".colorize(:white)
|
34
|
+
else
|
35
|
+
puts "Type the following command to update:\n\n"
|
36
|
+
puts ' gem install spout --no-document'.colorize(:white) + "\n\n"
|
37
|
+
end
|
30
38
|
end
|
31
39
|
else
|
32
40
|
puts 'Unable to connect to RubyGems.org. Please try again later.'
|
33
41
|
end
|
34
42
|
end
|
43
|
+
|
44
|
+
def check_framework
|
45
|
+
check_gitignore_file
|
46
|
+
check_ruby_version
|
47
|
+
check_file_presence
|
48
|
+
check_folder_presence
|
49
|
+
check_test_folder
|
50
|
+
end
|
51
|
+
|
52
|
+
def check_gitignore_file
|
53
|
+
if File.exist?('.gitignore')
|
54
|
+
lines = IO.readlines('.gitignore').collect(&:strip)
|
55
|
+
addables = ['/coverage', '/csvs', '/exports', '/graphs']
|
56
|
+
removables = ['/dd', '/images']
|
57
|
+
unless ((removables & lines) | (addables - lines)).empty?
|
58
|
+
puts 'File: ' + '.gitignore'.colorize(:white)
|
59
|
+
puts '----------------'
|
60
|
+
(removables & lines).each do |removable|
|
61
|
+
puts 'REMOVE LINE '.colorize(:red) + removable.colorize(:white)
|
62
|
+
end
|
63
|
+
(addables - lines).each do |addable|
|
64
|
+
puts ' ADD LINE '.colorize(:green) + addable.colorize(:white)
|
65
|
+
end
|
66
|
+
puts
|
67
|
+
end
|
68
|
+
else
|
69
|
+
copy_file 'gitignore', '.gitignore'
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
def check_ruby_version
|
74
|
+
if File.exist?('.ruby-version')
|
75
|
+
lines = IO.readlines('.ruby-version').collect(&:strip)
|
76
|
+
template_lines = IO.readlines(File.expand_path('../../templates/ruby-version', __FILE__)).collect(&:strip)
|
77
|
+
if template_lines.first != lines.first
|
78
|
+
puts 'File: ' + '.ruby-version'.colorize(:white)
|
79
|
+
puts '-------------------'
|
80
|
+
print 'Update Ruby from ' + lines.first.to_s.colorize(:red)
|
81
|
+
print ' to ' + template_lines.first.to_s.colorize(:green)
|
82
|
+
puts "\n\n"
|
83
|
+
end
|
84
|
+
else
|
85
|
+
copy_file 'ruby-version', '.ruby-version'
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
def check_file_presence
|
90
|
+
@project_name = File.basename(Dir.pwd)
|
91
|
+
evaluate_file 'CHANGELOG.md.erb', 'CHANGELOG.md' unless File.exist?('CHANGELOG.md')
|
92
|
+
evaluate_file 'README.md.erb', 'README.md' unless File.exist?('README.md')
|
93
|
+
copy_file 'VERSION' unless File.exist?('VERSION')
|
94
|
+
end
|
95
|
+
|
96
|
+
def check_folder_presence
|
97
|
+
folders = %w(domains forms variables).reject { |f| Dir.exist?(f) }
|
98
|
+
folders.each do |folder|
|
99
|
+
directory folder
|
100
|
+
copy_file 'keep', "#{folder}/.keep"
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
104
|
+
def check_test_folder
|
105
|
+
return if Dir.exist?('test')
|
106
|
+
directory 'test'
|
107
|
+
copy_file 'test/dictionary_test.rb'
|
108
|
+
copy_file 'test/test_helper.rb'
|
109
|
+
end
|
35
110
|
end
|
36
111
|
end
|
37
112
|
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'colorize'
|
4
|
+
require 'date'
|
5
|
+
require 'erb'
|
6
|
+
require 'fileutils'
|
7
|
+
|
8
|
+
TEMPLATES_DIRECTORY = File.expand_path('../../templates', __FILE__)
|
9
|
+
|
10
|
+
module Spout
|
11
|
+
module Helpers
|
12
|
+
# Helpers to generate and update Spout dictionary framework.
|
13
|
+
module Framework
|
14
|
+
def copy_file(template_file, file_name = '')
|
15
|
+
file_name = template_file if file_name == ''
|
16
|
+
file_path = File.join(@full_path, file_name)
|
17
|
+
template_file_path = File.join(TEMPLATES_DIRECTORY, template_file)
|
18
|
+
puts ' create'.colorize(:green) + " #{file_name}"
|
19
|
+
FileUtils.copy(template_file_path, file_path)
|
20
|
+
end
|
21
|
+
|
22
|
+
def evaluate_file(template_file, file_name)
|
23
|
+
template_file_path = File.join(TEMPLATES_DIRECTORY, template_file)
|
24
|
+
template = ERB.new(File.read(template_file_path))
|
25
|
+
file_path = File.join(@full_path, file_name)
|
26
|
+
file_out = File.new(file_path, 'w')
|
27
|
+
file_out.syswrite(template.result(binding))
|
28
|
+
puts ' create'.colorize(:green) + " #{file_name}"
|
29
|
+
ensure
|
30
|
+
file_out.close if file_out
|
31
|
+
end
|
32
|
+
|
33
|
+
def directory(directory_name)
|
34
|
+
directory_path = File.join(@full_path, directory_name)
|
35
|
+
puts ' create'.colorize(:green) + " #{directory_name}"
|
36
|
+
FileUtils.mkpath(directory_path)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
data/lib/spout/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: spout
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.12.0.
|
4
|
+
version: 0.12.0.rc2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Remo Mueller
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-03-
|
11
|
+
date: 2017-03-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -121,6 +121,7 @@ files:
|
|
121
121
|
- lib/spout/helpers/array_statistics.rb
|
122
122
|
- lib/spout/helpers/chart_types.rb
|
123
123
|
- lib/spout/helpers/config_reader.rb
|
124
|
+
- lib/spout/helpers/framework.rb
|
124
125
|
- lib/spout/helpers/iterators.rb
|
125
126
|
- lib/spout/helpers/json_loader.rb
|
126
127
|
- lib/spout/helpers/json_request.rb
|