tachikoma_ai 0.3.0 → 0.3.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/CHANGELOG.md +6 -0
- data/lib/tachikoma_ai/repository.rb +15 -1
- data/lib/tachikoma_ai/strategies/bundler/gem.rb +3 -9
- data/lib/tachikoma_ai/strategies/bundler.rb +9 -15
- data/lib/tachikoma_ai/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 036d35e5edb505f39725fea36fb6ae032e9bcf27
|
4
|
+
data.tar.gz: a7e00c50e8f9122a9f7f3d97aaa87bc29a2f02c3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e69c17916d85dc6ecbb956e271b3b20aa0da0a75e02cc6ae15cb62cc704f7a278c24fd6f03d8a315ca0b99575a0a2eb77152c95031d5767d1532c1e23611effc
|
7
|
+
data.tar.gz: 2eadf556ad0f42d58d83baf2029bca06a1144edc89c3a2de934ec22663bb3e7fff09ad41befc804f31584cd143d51537eaf44d2733047ddaa4cfd25db2efeebf
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,11 @@
|
|
1
1
|
## master (unreleased)
|
2
2
|
|
3
|
+
## v0.3.1
|
4
|
+
|
5
|
+
- :bug: Fix an error that occurs when GitHub API returns 301
|
6
|
+
|
7
|
+
## v0.3.0
|
8
|
+
|
3
9
|
- :bug: Fix crash when specify a github repository in Gemfile
|
4
10
|
- :sparkles: Support gems that have the official page
|
5
11
|
- [lib/tachikoma_ai/strategies/bundler/urls.json](https://github.com/sinsoku/tachikoma_ai/blob/master/lib/tachikoma_ai/strategies/bundler/urls.json)
|
@@ -29,9 +29,23 @@ module TachikomaAi
|
|
29
29
|
def tags
|
30
30
|
return @tags if @tags
|
31
31
|
|
32
|
-
res =
|
32
|
+
res = fetch(api_tags_url)
|
33
33
|
json = JSON.parse(res.body)
|
34
34
|
@tags = json.map { |tag| tag['ref'].gsub('refs/tags/', '') }
|
35
35
|
end
|
36
|
+
|
37
|
+
def fetch(uri_str, limit = 10)
|
38
|
+
raise ArgumentError, 'HTTP redirect too deep' if limit == 0
|
39
|
+
|
40
|
+
response = Net::HTTP.get_response URI.parse(uri_str)
|
41
|
+
case response
|
42
|
+
when Net::HTTPSuccess
|
43
|
+
response
|
44
|
+
when Net::HTTPRedirection
|
45
|
+
fetch(response['location'], limit - 1)
|
46
|
+
else
|
47
|
+
response.value
|
48
|
+
end
|
49
|
+
end
|
36
50
|
end
|
37
51
|
end
|
@@ -5,21 +5,15 @@ module TachikomaAi
|
|
5
5
|
module Strategies
|
6
6
|
class Bundler
|
7
7
|
class Gem
|
8
|
-
STRING_PATTERN = /[-|\+]\s+(\S+)\s\((.+?)\)/
|
9
8
|
major, minor = RUBY_VERSION.split('.')
|
10
9
|
SPECS_PATH = "vendor/bundle/ruby/#{major}.#{minor}.0/specifications/".freeze
|
11
10
|
URLS = JSON.parse(File.read(File.expand_path('urls.json', __dir__)))
|
12
11
|
|
13
|
-
attr_reader :name, :version
|
14
|
-
attr_accessor :from
|
12
|
+
attr_reader :name, :from, :version
|
15
13
|
|
16
|
-
def
|
17
|
-
m = s.match STRING_PATTERN
|
18
|
-
new m[1], m[2]
|
19
|
-
end
|
20
|
-
|
21
|
-
def initialize(name, version)
|
14
|
+
def initialize(name, from, version)
|
22
15
|
@name = name
|
16
|
+
@from = from
|
23
17
|
@version = version
|
24
18
|
end
|
25
19
|
|
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'tachikoma_ai/strategies/bundler/gem'
|
2
|
+
require 'bundler'
|
2
3
|
|
3
4
|
module TachikomaAi
|
4
5
|
module Strategies
|
@@ -20,26 +21,19 @@ module TachikomaAi
|
|
20
21
|
def updated_gems
|
21
22
|
return @updated_gems if @updated_gems
|
22
23
|
|
23
|
-
|
24
|
-
@updated_gems =
|
25
|
-
|
26
|
-
|
24
|
+
previous = lockfile('HEAD^')
|
25
|
+
@updated_gems = diff_specs(previous, lockfile('HEAD')).map do |spec|
|
26
|
+
before = previous.specs.find { |s| s.name == spec.name }
|
27
|
+
Gem.new(spec.name, before.version.to_s, spec.version.to_s)
|
27
28
|
end
|
28
|
-
@updated_gems
|
29
29
|
end
|
30
30
|
|
31
|
-
def
|
32
|
-
|
31
|
+
def diff_specs(previous, current)
|
32
|
+
current.specs.reject { |s| previous.specs.include?(s) }
|
33
33
|
end
|
34
34
|
|
35
|
-
def
|
36
|
-
|
37
|
-
.map { |s| Gem.parse(s) }
|
38
|
-
end
|
39
|
-
|
40
|
-
def plus_gems
|
41
|
-
@plus_gems ||= diff.select { |s| s =~ /^\+ {4}\S/ }
|
42
|
-
.map { |s| Gem.parse(s) }
|
35
|
+
def lockfile(ref)
|
36
|
+
::Bundler::LockfileParser.new(`git show #{ref}:Gemfile.lock`)
|
43
37
|
end
|
44
38
|
|
45
39
|
def compare_urls
|
data/lib/tachikoma_ai/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tachikoma_ai
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- sinsoku
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-07-
|
11
|
+
date: 2016-07-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: tachikoma
|