cid 0.1.1 → 0.2.1
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/.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
|