codestatus 0.1.0 → 0.1.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/Gemfile.lock +19 -1
- data/README.md +16 -1
- data/codestatus.gemspec +2 -0
- data/exe/codestatus +1 -1
- data/lib/codestatus.rb +7 -11
- data/lib/codestatus/build_status.rb +20 -1
- data/lib/codestatus/cli.rb +27 -0
- data/lib/codestatus/package_repository/github_repository.rb +3 -9
- data/lib/codestatus/repository_resolver.rb +1 -1
- data/lib/codestatus/repository_resolver/npm_resolver.rb +63 -0
- data/lib/codestatus/repository_resolver/rubygems_resolver.rb +1 -1
- data/lib/codestatus/version.rb +1 -1
- metadata +31 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 87b7e13b35690cbbe12b7c3f2872c00e1f02842e
|
4
|
+
data.tar.gz: 78147b8083a665a96f7fb692717da21b2a338573
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 821c2b8b1f0efce58896face9f9d45ca0b1b3c1e4b9a2bc73ae6d49efbfef0c50ea0f8686ab37a31a886f76e9e3707652aa46ed777ce661777400e8fc1c31c51
|
7
|
+
data.tar.gz: adedf790e67684c29fb72946c7e7c84a4aa77482bf88f99b80186c08e006ac7262334b3b79dec31e72e3ecfa6d9c999578a16906d7e4b2bb8ff28cd9e1728d91
|
data/Gemfile.lock
CHANGED
@@ -1,9 +1,11 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
codestatus (0.1.
|
4
|
+
codestatus (0.1.1)
|
5
5
|
gems
|
6
6
|
octokit
|
7
|
+
rest-client
|
8
|
+
thor
|
7
9
|
|
8
10
|
GEM
|
9
11
|
remote: https://rubygems.org/
|
@@ -13,13 +15,21 @@ GEM
|
|
13
15
|
byebug (9.1.0)
|
14
16
|
coderay (1.1.2)
|
15
17
|
diff-lcs (1.3)
|
18
|
+
domain_name (0.5.20170404)
|
19
|
+
unf (>= 0.0.5, < 1.0.0)
|
16
20
|
faraday (0.13.1)
|
17
21
|
multipart-post (>= 1.2, < 3)
|
18
22
|
gems (1.0.0)
|
19
23
|
json
|
24
|
+
http-cookie (1.0.3)
|
25
|
+
domain_name (~> 0.5)
|
20
26
|
json (2.1.0)
|
21
27
|
method_source (0.9.0)
|
28
|
+
mime-types (3.1)
|
29
|
+
mime-types-data (~> 3.2015)
|
30
|
+
mime-types-data (3.2016.0521)
|
22
31
|
multipart-post (2.0.0)
|
32
|
+
netrc (0.11.0)
|
23
33
|
octokit (4.8.0)
|
24
34
|
sawyer (~> 0.8.0, >= 0.5.3)
|
25
35
|
pry (0.11.3)
|
@@ -30,6 +40,10 @@ GEM
|
|
30
40
|
pry (~> 0.10)
|
31
41
|
public_suffix (3.0.1)
|
32
42
|
rake (10.5.0)
|
43
|
+
rest-client (2.0.2)
|
44
|
+
http-cookie (>= 1.0.2, < 2.0)
|
45
|
+
mime-types (>= 1.16, < 4.0)
|
46
|
+
netrc (~> 0.8)
|
33
47
|
rspec (3.7.0)
|
34
48
|
rspec-core (~> 3.7.0)
|
35
49
|
rspec-expectations (~> 3.7.0)
|
@@ -46,6 +60,10 @@ GEM
|
|
46
60
|
sawyer (0.8.1)
|
47
61
|
addressable (>= 2.3.5, < 2.6)
|
48
62
|
faraday (~> 0.8, < 1.0)
|
63
|
+
thor (0.20.0)
|
64
|
+
unf (0.1.4)
|
65
|
+
unf_ext
|
66
|
+
unf_ext (0.0.7.4)
|
49
67
|
|
50
68
|
PLATFORMS
|
51
69
|
ruby
|
data/README.md
CHANGED
@@ -8,8 +8,23 @@ gem 'codestatus'
|
|
8
8
|
|
9
9
|
## Usage
|
10
10
|
|
11
|
+
```console
|
12
|
+
# Requires public_repo scope
|
13
|
+
$ export CODESTATUS_GITHUB_TOKEN=XXXXXXXXXXXXXXX
|
14
|
+
```
|
15
|
+
|
16
|
+
```console
|
17
|
+
$ codestatus status rubygems/octokit
|
18
|
+
success
|
19
|
+
$ codestatus status npm/react
|
20
|
+
success
|
21
|
+
$ codestatus status --registry=npm react
|
22
|
+
success
|
23
|
+
```
|
24
|
+
|
11
25
|
```ruby
|
12
|
-
puts Codestatus.status('rubygems
|
26
|
+
puts Codestatus.status(registry: 'rubygems', package: 'octokit').status # => success
|
27
|
+
puts Codestatus.status(registry: 'npm', package: 'react').status # => success
|
13
28
|
```
|
14
29
|
|
15
30
|
## Contributing
|
data/codestatus.gemspec
CHANGED
@@ -22,6 +22,8 @@ Gem::Specification.new do |spec|
|
|
22
22
|
|
23
23
|
spec.add_runtime_dependency "octokit"
|
24
24
|
spec.add_runtime_dependency "gems"
|
25
|
+
spec.add_runtime_dependency "rest-client"
|
26
|
+
spec.add_runtime_dependency "thor"
|
25
27
|
|
26
28
|
spec.add_development_dependency "bundler", "~> 1.16"
|
27
29
|
spec.add_development_dependency "rake", "~> 10.0"
|
data/exe/codestatus
CHANGED
data/lib/codestatus.rb
CHANGED
@@ -1,27 +1,23 @@
|
|
1
1
|
require "codestatus/version"
|
2
2
|
require "codestatus/build_status"
|
3
|
+
require "codestatus/cli"
|
3
4
|
require "codestatus/repository_resolver"
|
4
5
|
require "codestatus/repository_resolver/user_defined_resolver"
|
5
6
|
require "codestatus/repository_resolver/rubygems_resolver"
|
7
|
+
require "codestatus/repository_resolver/npm_resolver"
|
6
8
|
require "codestatus/package_repository"
|
7
9
|
require "codestatus/package_repository/github_repository"
|
8
10
|
|
9
11
|
module Codestatus
|
10
|
-
def self.status(
|
11
|
-
|
12
|
-
package_registry, package_name = slug.split('/')
|
13
|
-
|
14
|
-
resolver = RepositoryResolver.new(registry: package_registry, package: package_name)
|
12
|
+
def self.status(registry:, package:)
|
13
|
+
resolver = RepositoryResolver.new(registry: registry, package: package)
|
15
14
|
|
16
15
|
package_repository = resolver.repository
|
16
|
+
|
17
17
|
if package_repository
|
18
|
-
|
19
|
-
success = (status == BuildStatus::SUCCESS)
|
18
|
+
package_repository.status
|
20
19
|
else
|
21
|
-
|
22
|
-
success = 1
|
20
|
+
BuildStatus.new(sha: nil, status: nil)
|
23
21
|
end
|
24
|
-
puts status
|
25
|
-
exit success ? 0 : 1
|
26
22
|
end
|
27
23
|
end
|
@@ -1,5 +1,5 @@
|
|
1
1
|
module Codestatus
|
2
|
-
|
2
|
+
class BuildStatus
|
3
3
|
UNDEFINED = 'undefined'.freeze
|
4
4
|
|
5
5
|
# Defined in GitHub
|
@@ -7,5 +7,24 @@ module Codestatus
|
|
7
7
|
FAILURE = 'failure'.freeze
|
8
8
|
PENDING = 'pending'.freeze
|
9
9
|
SUCCESS = 'success'.freeze
|
10
|
+
|
11
|
+
STATUSES = [
|
12
|
+
ERROR,
|
13
|
+
FAILURE,
|
14
|
+
PENDING,
|
15
|
+
SUCCESS,
|
16
|
+
].freeze
|
17
|
+
|
18
|
+
def initialize(sha:, status:)
|
19
|
+
@sha = sha
|
20
|
+
|
21
|
+
if STATUSES.include?(status.to_s)
|
22
|
+
@status = status.to_s
|
23
|
+
else
|
24
|
+
@status = UNDEFINED
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
attr_reader :sha, :status
|
10
29
|
end
|
11
30
|
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require "thor"
|
2
|
+
|
3
|
+
module Codestatus
|
4
|
+
class CLI < Thor
|
5
|
+
desc "status REGISTRY/PACKAGE", "Show status of the package"
|
6
|
+
option :registry, type: :string, aliases: 'r'
|
7
|
+
option 'show-package-name', type: :boolean, default: false
|
8
|
+
def status(slug)
|
9
|
+
if options[:registry]
|
10
|
+
package_registry = options[:registry]
|
11
|
+
package_name = slug
|
12
|
+
else
|
13
|
+
package_registry, package_name = slug.split('/')
|
14
|
+
end
|
15
|
+
|
16
|
+
status = Codestatus.status(registry: package_registry, package: package_name)
|
17
|
+
success = (status.status == BuildStatus::SUCCESS)
|
18
|
+
|
19
|
+
if options['show-package-name']
|
20
|
+
puts "#{package_name}: #{status.status}"
|
21
|
+
else
|
22
|
+
puts status.status
|
23
|
+
end
|
24
|
+
exit success ? 0 : 1
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -17,15 +17,9 @@ module Codestatus
|
|
17
17
|
# combined status on github
|
18
18
|
# https://developer.github.com/v3/repos/statuses/#get-the-combined-status-for-a-specific-ref
|
19
19
|
def status_of_default_branch
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
when 'failure' then BuildStatus::FAILURE
|
24
|
-
when 'pending' then BuildStatus::PENDING
|
25
|
-
when 'success' then BuildStatus::SUCCESS
|
26
|
-
when 'error' then BuildStatus::ERROR
|
27
|
-
else BuildStatus::UNDEFINED
|
28
|
-
end
|
20
|
+
response = client.combined_status(@repo, default_branch)
|
21
|
+
|
22
|
+
BuildStatus.new(sha: response.sha, status: response.state)
|
29
23
|
end
|
30
24
|
|
31
25
|
def default_branch
|
@@ -0,0 +1,63 @@
|
|
1
|
+
require 'rest-client'
|
2
|
+
|
3
|
+
module Codestatus
|
4
|
+
class RepositoryResolver
|
5
|
+
class NpmResolver
|
6
|
+
GITHUB_REPOSITORY_REGEXP = %r{(https|git)://github.com/(?<owner>[^/]*)/(?<repo>[^/]*)(\.git)?/?.*}.freeze
|
7
|
+
NPM_REGISTRY_ENDPOINT = 'https://registry.npmjs.org/'.freeze
|
8
|
+
|
9
|
+
def resolve(registry:, package:)
|
10
|
+
return unless registry.to_s == 'npm'
|
11
|
+
@package = package
|
12
|
+
|
13
|
+
github_repository
|
14
|
+
end
|
15
|
+
|
16
|
+
attr_reader :package
|
17
|
+
|
18
|
+
private
|
19
|
+
|
20
|
+
# FIXME: Copied from RubygemsResolver
|
21
|
+
def github_repository
|
22
|
+
result = nil
|
23
|
+
urls.each do |url|
|
24
|
+
matched = GITHUB_REPOSITORY_REGEXP.match(url)
|
25
|
+
next unless matched
|
26
|
+
|
27
|
+
repo = [matched[:owner], matched[:repo]].join('/')
|
28
|
+
result = Codestatus::PackageRepository.new(github: repo)
|
29
|
+
break
|
30
|
+
end
|
31
|
+
result
|
32
|
+
end
|
33
|
+
|
34
|
+
def package_info
|
35
|
+
@package_info ||= JSON.parse(client.get("#{NPM_REGISTRY_ENDPOINT}/#{package}"))
|
36
|
+
end
|
37
|
+
|
38
|
+
def urls
|
39
|
+
[
|
40
|
+
bugs_url,
|
41
|
+
repository_url,
|
42
|
+
homepage_url,
|
43
|
+
].compact
|
44
|
+
end
|
45
|
+
|
46
|
+
def bugs_url
|
47
|
+
package_info.dig('bugs', 'url')
|
48
|
+
end
|
49
|
+
|
50
|
+
def homepage_url
|
51
|
+
package_info.dig('homepage')
|
52
|
+
end
|
53
|
+
|
54
|
+
def repository_url
|
55
|
+
package_info.dig('repository', 'url')
|
56
|
+
end
|
57
|
+
|
58
|
+
def client
|
59
|
+
RestClient
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
@@ -3,7 +3,7 @@ require "gems"
|
|
3
3
|
module Codestatus
|
4
4
|
class RepositoryResolver
|
5
5
|
class RubygemsResolver
|
6
|
-
GITHUB_REPOSITORY_REGEXP = %r{https://github.com/(?<owner
|
6
|
+
GITHUB_REPOSITORY_REGEXP = %r{(https|git)://github.com/(?<owner>[^/]*)/(?<repo>[^/]*)(\.git)?/?.*}.freeze
|
7
7
|
|
8
8
|
def resolve(registry:, package:)
|
9
9
|
return unless registry.to_s == 'rubygems'
|
data/lib/codestatus/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: codestatus
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- meganemura
|
@@ -38,6 +38,34 @@ dependencies:
|
|
38
38
|
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rest-client
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: thor
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
41
69
|
- !ruby/object:Gem::Dependency
|
42
70
|
name: bundler
|
43
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -130,9 +158,11 @@ files:
|
|
130
158
|
- exe/codestatus
|
131
159
|
- lib/codestatus.rb
|
132
160
|
- lib/codestatus/build_status.rb
|
161
|
+
- lib/codestatus/cli.rb
|
133
162
|
- lib/codestatus/package_repository.rb
|
134
163
|
- lib/codestatus/package_repository/github_repository.rb
|
135
164
|
- lib/codestatus/repository_resolver.rb
|
165
|
+
- lib/codestatus/repository_resolver/npm_resolver.rb
|
136
166
|
- lib/codestatus/repository_resolver/rubygems_resolver.rb
|
137
167
|
- lib/codestatus/repository_resolver/user_defined_resolver.rb
|
138
168
|
- lib/codestatus/version.rb
|