cid 0.1.1 → 0.2.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +1 -1
- data/bin/cid +87 -45
- data/cid.gemspec +1 -0
- data/features/publish.feature +31 -0
- data/features/validate.feature +5 -0
- data/lib/cid/datapackage.rb +2 -2
- data/lib/cid/version.rb +1 -1
- metadata +16 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5dd888724adb78e68f3a6760d4cb64317ca5e3e2
|
4
|
+
data.tar.gz: 610b3445181b32b18b0007f709e77185abf297b5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f599d64d955fb3cc132bfc618210041f94ab421e893364ffb7f87612c6ec280a3f1aa2b978c88f94a0ef87b129ae8a0cddd512df1d67d554934465d58029d886
|
7
|
+
data.tar.gz: 40b378091289e6a7d048a1afd7a1b66d36e4ed6fd6d7b7e85ef42974bb4919c6d0d3b62b925cd5e7435cf1aee5e3db60a6b135e21fd9ee5c057ad7d6a332fa82
|
data/.travis.yml
CHANGED
@@ -10,4 +10,4 @@ notifications:
|
|
10
10
|
on_failure: always
|
11
11
|
env:
|
12
12
|
global:
|
13
|
-
|
13
|
+
- secure: KTQ83GtNJyXwTUzYKbDtX1FzA3hsBSHefOqYsZ2KzOnj1dPZpGoeb4gcjWHXvNHqmR0mToT8U7KNq8AYWwHQLYCKf2+jRayd9UAzezhcs5u0SVfE5gmZLho57TW3AQvHI/uVQi9yg9/N3uDICqBplHJ7EMeMusUBc6ACF8FRmtY=
|
data/bin/cid
CHANGED
@@ -3,67 +3,109 @@ $:.unshift File.join( File.dirname(__FILE__), "..", "lib")
|
|
3
3
|
|
4
4
|
require 'cid'
|
5
5
|
require 'colorize'
|
6
|
+
require 'thor'
|
6
7
|
|
7
|
-
|
8
|
-
location = ""
|
9
|
-
location += error.row.to_s if error.row
|
10
|
-
location += "#{error.row ? "," : ""}#{error.column.to_s}" if error.column
|
11
|
-
if error.row || error.column
|
12
|
-
location = "#{error.row ? "Row" : "Column"}: #{location}"
|
13
|
-
end
|
14
|
-
puts "#{index+1}. #{error.type}. #{location}".colorize(color)
|
15
|
-
end
|
8
|
+
class CidBin < Thor
|
16
9
|
|
17
|
-
|
10
|
+
desc "validate PATH", "validate a package"
|
11
|
+
long_desc <<-LONGDESC
|
12
|
+
`cid validate` will validate a datapackage containing CSVs and schemas.
|
18
13
|
|
19
|
-
|
20
|
-
|
21
|
-
else
|
22
|
-
source = "."
|
23
|
-
end
|
14
|
+
It expects CSVs of each type to be in folders, with the schema that
|
15
|
+
relates to them.
|
24
16
|
|
25
|
-
|
17
|
+
By default, `cid validate` will look in your current folder, but you can
|
18
|
+
also specify which folder to look in:
|
26
19
|
|
27
|
-
|
20
|
+
> $ cid validate /this/is/a/datapackage
|
21
|
+
LONGDESC
|
22
|
+
def validate(source = ".")
|
23
|
+
check_path(source)
|
28
24
|
|
29
|
-
|
25
|
+
validation = Cid::Validation.validate(source)
|
30
26
|
|
31
|
-
|
27
|
+
code = 0
|
32
28
|
|
33
|
-
|
34
|
-
v[:errors].
|
35
|
-
print_error(i, error)
|
36
|
-
end
|
37
|
-
end
|
29
|
+
validation.each do |k,v|
|
30
|
+
puts "#{k} is #{(v[:errors] + v[:warnings]).count == 0 ? "VALID".green : "INVALID".red}"
|
38
31
|
|
39
|
-
|
40
|
-
v[:warnings].each_with_index
|
41
|
-
|
42
|
-
|
32
|
+
v[:errors].each_with_index { |error, i| print_error(i, error) } if v[:errors].length > 0
|
33
|
+
v[:warnings].each_with_index { |error, i| print_error(i, error) } if v[:warnings].length > 0
|
34
|
+
|
35
|
+
code = 1 if (v[:errors] + v[:warnings]).count > 0
|
43
36
|
end
|
44
37
|
|
45
|
-
code
|
38
|
+
exit code
|
46
39
|
|
47
40
|
end
|
48
41
|
|
49
|
-
|
42
|
+
desc "publish", "Publish a package to GitHub"
|
43
|
+
long_desc <<-LONGDESC
|
44
|
+
`cid publish` will create a new datapackage.json file based on the CSVs in
|
45
|
+
the package and push them to Github (unless you specify `--skip-github`)
|
46
|
+
|
47
|
+
By default, `cid publish` will look in your current folder, but you can
|
48
|
+
also specify which folder to look in:
|
49
|
+
|
50
|
+
> $ cid validate /this/is/a/datapackage
|
51
|
+
LONGDESC
|
52
|
+
option :github_token
|
53
|
+
option :skip_github, :type => :boolean
|
54
|
+
def publish(source = ".")
|
55
|
+
check_path(source)
|
56
|
+
|
57
|
+
github_token = options[:github_token] || ENV['GITHUB_OAUTH_TOKEN']
|
58
|
+
|
59
|
+
if github_token.blank? && !options[:skip_github]
|
60
|
+
error <<-ERROR
|
61
|
+
Github token not specified. Either add GITHUB_OAUTH_TOKEN as an
|
62
|
+
environment variable or `cid publish --github_token=TOKEN`
|
63
|
+
ERROR
|
64
|
+
puts error.colorize(:red)
|
65
|
+
exit 1
|
66
|
+
end
|
50
67
|
|
51
|
-
|
68
|
+
datapackage = Cid::Datapackage.new(source)
|
69
|
+
datapackage.create
|
70
|
+
datapackage.write
|
71
|
+
puts "Datapackage created".colorize(:green)
|
72
|
+
|
73
|
+
unless options[:skip_github]
|
74
|
+
if File.exist?("#{source}/.git")
|
75
|
+
begin
|
76
|
+
datapackage.publish(github_token)
|
77
|
+
puts "Changes pushed successfully".colorize(:green)
|
78
|
+
rescue Github::Error::NotFound
|
79
|
+
puts "Github authorisation error. Are you allowed to push to this repo?".colorize(:red)
|
80
|
+
exit 1
|
81
|
+
end
|
82
|
+
else
|
83
|
+
puts "Git repo not found".colorize(:red)
|
84
|
+
exit 1
|
85
|
+
end
|
86
|
+
end
|
52
87
|
|
53
|
-
if ARGV[1]
|
54
|
-
source = ARGV[1]
|
55
|
-
else
|
56
|
-
source = "."
|
57
88
|
end
|
58
89
|
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
90
|
+
private
|
91
|
+
|
92
|
+
def print_error(index, error, color=:red)
|
93
|
+
location = ""
|
94
|
+
location += error.row.to_s if error.row
|
95
|
+
location += "#{error.row ? "," : ""}#{error.column.to_s}" if error.column
|
96
|
+
if error.row || error.column
|
97
|
+
location = "#{error.row ? "Row" : "Column"}: #{location}"
|
98
|
+
end
|
99
|
+
puts "#{index+1}. #{error.type}. #{location}".colorize(color)
|
100
|
+
end
|
101
|
+
|
102
|
+
def check_path(path)
|
103
|
+
if !File.directory?(path)
|
104
|
+
puts "Path doesn't exist!".colorize(:red)
|
105
|
+
exit 1
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
69
109
|
end
|
110
|
+
|
111
|
+
CidBin.start(ARGV)
|
data/cid.gemspec
CHANGED
@@ -24,6 +24,7 @@ Gem::Specification.new do |spec|
|
|
24
24
|
spec.add_dependency "github_api"
|
25
25
|
spec.add_dependency "dotenv"
|
26
26
|
spec.add_dependency "memoist"
|
27
|
+
spec.add_dependency "thor"
|
27
28
|
|
28
29
|
spec.add_development_dependency "bundler", "~> 1.3"
|
29
30
|
spec.add_development_dependency "rake"
|
data/features/publish.feature
CHANGED
@@ -5,6 +5,7 @@ Feature: Publish a datapackage
|
|
5
5
|
Given I run `cp -r ../../spec/fixtures/valid valid`
|
6
6
|
And I cd to "valid"
|
7
7
|
When I run `cid publish`
|
8
|
+
Then the output should contain "Datapackage created"
|
8
9
|
And I run `cat datapackage.json`
|
9
10
|
Then the output should contain "votes/votes-1.csv"
|
10
11
|
|
@@ -12,6 +13,7 @@ Feature: Publish a datapackage
|
|
12
13
|
Given I run `cp -r ../../spec/fixtures/multiple_files multiple_files`
|
13
14
|
And I cd to "multiple_files"
|
14
15
|
When I run `cid publish`
|
16
|
+
Then the output should contain "Datapackage created"
|
15
17
|
And I run `cat datapackage.json`
|
16
18
|
Then the output should contain "votes/votes-1.csv"
|
17
19
|
And the output should contain "votes/votes-2.csv"
|
@@ -21,9 +23,38 @@ Feature: Publish a datapackage
|
|
21
23
|
And I cd to "multiple_files"
|
22
24
|
When I run `cid publish`
|
23
25
|
Then the output should contain "Git repo not found"
|
26
|
+
And the exit status should be 1
|
24
27
|
|
25
28
|
Scenario: Sucessfully push to Github
|
26
29
|
Given I run `git clone https://github.com/theodi/cid-test.git`
|
27
30
|
And I cd to "cid-test"
|
28
31
|
When I successfully run `cid publish`
|
29
32
|
Then the output should contain "Changes pushed successfully"
|
33
|
+
|
34
|
+
Scenario: Path doesn't exist
|
35
|
+
When I run `cid publish /this/is/fake`
|
36
|
+
Then the output should contain "Path doesn't exist!"
|
37
|
+
And the exit status should be 1
|
38
|
+
|
39
|
+
Scenario: Github token not specified
|
40
|
+
Given I set the environment variables to:
|
41
|
+
| variable | value |
|
42
|
+
| GITHUB_OAUTH_TOKEN | |
|
43
|
+
When I run `cid publish`
|
44
|
+
Then the output should contain "Github token not specified"
|
45
|
+
And the exit status should be 1
|
46
|
+
|
47
|
+
Scenario: Failed Github push
|
48
|
+
Given I run `git clone https://github.com/pezholio/cid-test.git`
|
49
|
+
And I cd to "cid-test"
|
50
|
+
When I run `cid publish`
|
51
|
+
Then the output should contain "Github authorisation error"
|
52
|
+
And the exit status should be 1
|
53
|
+
|
54
|
+
Scenario: Skip GitHub
|
55
|
+
Given I run `cp -r ../../spec/fixtures/multiple_files multiple_files`
|
56
|
+
And I cd to "multiple_files"
|
57
|
+
When I run `cid publish --skip-github`
|
58
|
+
Then the output should contain "Datapackage created"
|
59
|
+
And the output should not contain "Git repo not found"
|
60
|
+
And the exit status should be 0
|
data/features/validate.feature
CHANGED
@@ -28,3 +28,8 @@ Feature: Validate a datapackage
|
|
28
28
|
Scenario: Specify directory
|
29
29
|
When I run `cid validate spec/fixtures/valid`
|
30
30
|
Then the output should contain "votes/votes-1.csv is VALID"
|
31
|
+
|
32
|
+
Scenario: Path doesn't exist
|
33
|
+
When I run `cid validate /this/is/fake`
|
34
|
+
Then the output should contain "Path doesn't exist!"
|
35
|
+
And the exit status should be 1
|
data/lib/cid/datapackage.rb
CHANGED
@@ -47,8 +47,8 @@ module Cid
|
|
47
47
|
File.open("#{@path}/datapackage.json", 'w') { |f| f.write(@json) }
|
48
48
|
end
|
49
49
|
|
50
|
-
def publish
|
51
|
-
git = Cid::Publish.new(@path,
|
50
|
+
def publish(token = ENV['GITHUB_OAUTH_TOKEN'])
|
51
|
+
git = Cid::Publish.new(@path, token)
|
52
52
|
git.publish
|
53
53
|
end
|
54
54
|
|
data/lib/cid/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cid
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- pezholio
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-05-
|
11
|
+
date: 2014-05-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: csvlint
|
@@ -108,6 +108,20 @@ dependencies:
|
|
108
108
|
- - '>='
|
109
109
|
- !ruby/object:Gem::Version
|
110
110
|
version: '0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: thor
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - '>='
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
type: :runtime
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - '>='
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
111
125
|
- !ruby/object:Gem::Dependency
|
112
126
|
name: bundler
|
113
127
|
requirement: !ruby/object:Gem::Requirement
|