lgtm 0.3.0 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 1ed97b88106414cd1595087b8f493737f4d10a48
4
- data.tar.gz: 205a045c8268e0074a8ba1d9d5aa8e641088331d
3
+ metadata.gz: 58d58c1e75a0bf166829f769000c82541830873d
4
+ data.tar.gz: 09623157b73c40cdbdf24485cdceeba115cd9470
5
5
  SHA512:
6
- metadata.gz: 482c195fae5ece7500d6f1f4d9b00075d3fcf6e69a9cb4fbc49544de3892dbfc11f787d9d30e68c21b36e635b6650aa0bc90f11aed98461df47decd688570e22
7
- data.tar.gz: dfef52e935083c3939bc28122c0ff3cf5f8c8811274c86420bb8f0516d24b949a301354cb8490e7a4a45d00c706c88fdc621e09107ebf22518ae98bd6f85adb6
6
+ metadata.gz: 613967c95a80b9b1a1c6b31291d93fe6081d07a06b764258dc7aa2e35b92db25088dcec6ccb10793e9eb633aa23836c82410d0f332e557de647951c3c46ce3ea
7
+ data.tar.gz: 0797524047fae01500c43a21de80ab484ef2fb2343851bbce7304221b3d1c8cad017e755845cb4cfabcede599c242aede7b0df9fa8491db09ac823d4d360460f
data/.gitignore CHANGED
@@ -8,4 +8,6 @@
8
8
  /spec/reports/
9
9
  /tmp/
10
10
  /exe/*.time
11
- /exe/*.links
11
+ /exe/*.links
12
+ /lib/*.time
13
+ /lib/*.links
data/exe/lgtm CHANGED
@@ -1,68 +1,6 @@
1
1
  #! /usr/bin/env ruby
2
2
 
3
- require 'mechanize'
3
+ require 'lgtm'
4
4
 
5
- LGTM_LINK_BASE = 'http://lgtm.in/i'.freeze
6
- NOT_SET_VALIAVLE_ALERT_1 = "please set enviromant variable LGTM_IN_USER_PATH \n"
7
- NOT_SET_VALIAVLE_ALERT_2 = "lgtm.in mypage example -> http://lgtm.in/l/HaiTo \n"
8
- NOT_SET_VALIAVLE_ALERT_3 = "in .bashrc, .zshrc -> export LGTM_IN_USER_PATH='http://lgtm.in/l/HaiTo' \n"
9
-
10
- def not_set_valiavle_alert
11
- print NOT_SET_VALIAVLE_ALERT_1
12
- print NOT_SET_VALIAVLE_ALERT_2
13
- print NOT_SET_VALIAVLE_ALERT_3
14
- exit(1)
15
- end
16
-
17
- LGTM_HAITO_PAGE = ENV['LGTM_IN_USER_PATH'].nil? ? not_set_valiavle_alert : ENV['LGTM_IN_USER_PATH']
18
-
19
- REFLASH_TIME = 604_800.freeze
20
-
21
- LAST_EXECUTED_AT_TIME_PATH = 'last_executed_at.time'.freeze
22
- CACHED_LINKS_PATH = 'cached_links.links'.freeze
23
- BASE_PATH = File.expand_path('..', __FILE__)
24
-
25
- LGTM_MARKDOWN = '[![LGTM](__LGTM_IMAGE_DETAILS_PATH__)](__LGTM_IMAGE_PATH__)'
26
- LGTM_MARKDOWN_DETAIL_PATH_BASE = 'http://lgtm.in/p/'.freeze
27
- LGTM_MARKDOWN_IMAGE_PATH_BASE = 'http://lgtm.in/i/'.freeze
28
-
29
- last_executed_at = begin File.read(BASE_PATH + '/' + LAST_EXECUTED_AT_TIME_PATH); rescue; nil;
30
- end
31
-
32
- cached_links = begin File.read(BASE_PATH + '/' + CACHED_LINKS_PATH); rescue; nil
33
- end
34
-
35
- def fetch_links
36
- agent = Mechanize.new
37
- page = agent.get(LGTM_HAITO_PAGE)
38
- page.links.map(&:href).select {|link| link.match(LGTM_LINK_BASE) }
39
- end
40
-
41
- def update_executed_at!
42
- File.open(BASE_PATH + '/' + LAST_EXECUTED_AT_TIME_PATH, 'w') {|f| f.write(Time.now.to_i) }
43
- end
44
-
45
- def cache_links!(links)
46
- File.open(BASE_PATH + '/' + CACHED_LINKS_PATH, 'w') {|f| f.write(Marshal.dump(links)) }
47
- end
48
-
49
- links =
50
- if Time.now.to_i - last_executed_at.to_i > REFLASH_TIME
51
- update_executed_at!
52
-
53
- links = fetch_links
54
- cache_links!(links)
55
-
56
- links
57
- else
58
- cached_links.nil? ? fetch_links : Marshal.load(cached_links)
59
- end
60
-
61
- link = links.sample
62
-
63
- hash = link.split('/').last
64
-
65
- lgtm_markdown = LGTM_MARKDOWN.gsub('__LGTM_IMAGE_DETAILS_PATH__', "#{LGTM_MARKDOWN_DETAIL_PATH_BASE + hash}").gsub('__LGTM_IMAGE_PATH__', "#{LGTM_MARKDOWN_IMAGE_PATH_BASE + hash}")
66
-
67
- print lgtm_markdown
5
+ print Lgtm::In.new.fetch_lgtm_link_markdown!
68
6
 
@@ -21,5 +21,7 @@ Gem::Specification.new do |spec|
21
21
  spec.add_development_dependency "bundler", "~> 1.12"
22
22
  spec.add_development_dependency "rake", "~> 10.0"
23
23
  spec.add_development_dependency "rspec", "~> 3.0"
24
+ spec.add_development_dependency 'pry'
25
+ spec.add_development_dependency 'pry-byebug'
24
26
  spec.add_dependency 'mechanize'
25
27
  end
@@ -1,5 +1,89 @@
1
1
  require "lgtm/version"
2
+ require 'mechanize'
2
3
 
3
4
  module Lgtm
4
- # Your code goes here...
5
+ class In
6
+ LGTM_LINK_BASE = 'http://lgtm.in/i'.freeze
7
+ NOT_SET_VALIAVLE_ALERT_1 = "please set enviromant variable LGTM_IN_USER_PATH \n"
8
+ NOT_SET_VALIAVLE_ALERT_2 = "lgtm.in mypage example -> http://lgtm.in/l/HaiTo \n"
9
+ NOT_SET_VALIAVLE_ALERT_3 = "in .bashrc, .zshrc -> export LGTM_IN_USER_PATH='http://lgtm.in/l/HaiTo' \n"
10
+
11
+ REFLASH_TIME = 604_800.freeze
12
+
13
+ LAST_EXECUTED_AT_TIME_PATH = 'last_executed_at.time'.freeze
14
+ CACHED_LINKS_PATH = 'cached_links.links'.freeze
15
+ BASE_PATH = File.expand_path('..', __FILE__)
16
+
17
+ LINK_PAR_PAGE_BASE = 32.freeze
18
+
19
+ LGTM_MARKDOWN = '[![LGTM](__LGTM_IMAGE_DETAILS_PATH__)](__LGTM_IMAGE_PATH__)'
20
+ LGTM_MARKDOWN_DETAIL_PATH_BASE = 'http://lgtm.in/p/'.freeze
21
+ LGTM_MARKDOWN_IMAGE_PATH_BASE = 'http://lgtm.in/i/'.freeze
22
+
23
+ def not_set_valiavle_alert
24
+ print NOT_SET_VALIAVLE_ALERT_1
25
+ print NOT_SET_VALIAVLE_ALERT_2
26
+ print NOT_SET_VALIAVLE_ALERT_3
27
+ exit(1)
28
+ end
29
+
30
+ def initialize
31
+ @lgtm_my_page = ENV['LGTM_IN_USER_PATH'].nil? ? not_set_valiavle_alert : ENV['LGTM_IN_USER_PATH']
32
+
33
+ @last_executed_at = begin File.read(BASE_PATH + '/' + LAST_EXECUTED_AT_TIME_PATH); rescue; nil;
34
+ end
35
+
36
+ @cached_links = begin File.read(BASE_PATH + '/' + CACHED_LINKS_PATH); rescue; nil
37
+ end
38
+ end
39
+
40
+ def fetch_lgtm_link_markdown!
41
+ links =
42
+ if Time.now.to_i - @last_executed_at.to_i > REFLASH_TIME
43
+ update_executed_at!
44
+
45
+ links = fetch_links
46
+ cache_links!(links)
47
+
48
+ links
49
+ else
50
+ @cached_links.nil? ? fetch_links : Marshal.load(@cached_links)
51
+ end
52
+
53
+ link = links.sample
54
+
55
+ hash = link.split('/').last
56
+
57
+ LGTM_MARKDOWN.gsub('__LGTM_IMAGE_DETAILS_PATH__', "#{LGTM_MARKDOWN_DETAIL_PATH_BASE + hash}").gsub('__LGTM_IMAGE_PATH__', "#{LGTM_MARKDOWN_IMAGE_PATH_BASE + hash}")
58
+ end
59
+
60
+ private
61
+
62
+ def fetch_links
63
+ agent = Mechanize.new
64
+ cursor = 1
65
+ links = []
66
+
67
+ fetch_link_per_page!(cursor, links, agent)
68
+ end
69
+
70
+ def fetch_link_per_page!(cursor, links, agent)
71
+ page = agent.get(@lgtm_my_page + "?page=#{cursor}")
72
+ links << page.links.map(&:href).select {|link| link.match(LGTM_LINK_BASE) }
73
+
74
+ if links.flatten!.size % LINK_PAR_PAGE_BASE == 0
75
+ fetch_link_per_page!(cursor + 1, links, agent)
76
+ end
77
+
78
+ links.flatten
79
+ end
80
+
81
+ def update_executed_at!
82
+ File.open(BASE_PATH + '/' + LAST_EXECUTED_AT_TIME_PATH, 'w') {|f| f.write(Time.now.to_i) }
83
+ end
84
+
85
+ def cache_links!(links)
86
+ File.open(BASE_PATH + '/' + CACHED_LINKS_PATH, 'w') {|f| f.write(Marshal.dump(links)) }
87
+ end
88
+ end
5
89
  end
@@ -1,3 +1,3 @@
1
1
  module Lgtm
2
- VERSION = "0.3.0"
2
+ VERSION = '0.4.0'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lgtm
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - HaiTo
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-07-11 00:00:00.000000000 Z
11
+ date: 2016-07-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -52,6 +52,34 @@ dependencies:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: '3.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: pry
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: pry-byebug
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
55
83
  - !ruby/object:Gem::Dependency
56
84
  name: mechanize
57
85
  requirement: !ruby/object:Gem::Requirement
@@ -86,7 +114,6 @@ files:
86
114
  - bin/setup
87
115
  - exe/lgtm
88
116
  - lgtm.gemspec
89
- - lgtm.rb
90
117
  - lib/lgtm.rb
91
118
  - lib/lgtm/version.rb
92
119
  homepage: https://github.com/haito/lgtm
data/lgtm.rb DELETED
@@ -1,40 +0,0 @@
1
- require 'mechanize'
2
-
3
- LGTM_LINK_BASE = 'http://lgtm.in/i'.freeze
4
- LGTM_HAITO_PAGE = 'http://lgtm.in/l/HaiTo'.freeze
5
-
6
- REFLASH_TIME = 604_800.freeze
7
-
8
- LAST_EXECUTED_AT_TIME_PATH = 'last_executed_at.time'.freeze
9
- CACHED_LINKS_PATH = 'cached_links.links'.freeze
10
- BASE_PATH = File.expand_path('..', __FILE__)
11
-
12
- last_executed_at = begin File.read(BASE_PATH + '/' + LAST_EXECUTED_AT_TIME_PATH); rescue; nil;
13
- end
14
-
15
- cached_links = begin File.read(BASE_PATH + '/' + CACHED_LINKS_PATH); rescue; nil
16
- end
17
-
18
- def fetch_links
19
- agent = Mechanize.new
20
- page = agent.get(LGTM_HAITO_PAGE)
21
- page.links.map(&:href).select {|link| link.match(LGTM_LINK_BASE) }
22
- end
23
-
24
- def update_executed_at!
25
- File.open(BASE_PATH + '/' + LAST_EXECUTED_AT_TIME_PATH, 'w') {|f| f.write(Time.now.to_i) }
26
- end
27
-
28
- links =
29
- if Time.now.to_i - last_executed_at.to_i > REFLASH_TIME
30
- update_executed_at!
31
-
32
- fetch_links
33
- else
34
- cached_links.nil? ? fetch_links : cached_links
35
- end
36
-
37
-
38
-
39
- system("echo #{links.sample} | pbcopy")
40
-