gemsitter 0.0.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.
- data/.gitignore +4 -0
- data/Gemfile +4 -0
- data/Rakefile +4 -0
- data/gemsitter.gemspec +21 -0
- data/lib/gemsitter.rb +89 -0
- data/lib/gemsitter/version.rb +3 -0
- metadata +70 -0
data/.gitignore
ADDED
data/Gemfile
ADDED
data/Rakefile
ADDED
data/gemsitter.gemspec
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "gemsitter/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = "gemsitter"
|
7
|
+
s.version = Gemsitter::VERSION
|
8
|
+
s.platform = Gem::Platform::RUBY
|
9
|
+
s.authors = ["Thomas Czernik"]
|
10
|
+
s.email = ["thomas.czernik@webreload.de"]
|
11
|
+
s.homepage = "https://github.com/mindbreaker/gemsitter"
|
12
|
+
s.summary = %q{Check your installed gem versions and remind you if there are a newer version}
|
13
|
+
s.description = %q{Check if there are newer versions for your used gems are available and puts out a notification}
|
14
|
+
|
15
|
+
s.rubyforge_project = "gemsitter"
|
16
|
+
|
17
|
+
s.files = `git ls-files`.split("\n")
|
18
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
19
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
20
|
+
s.require_paths = ["lib"]
|
21
|
+
end
|
data/lib/gemsitter.rb
ADDED
@@ -0,0 +1,89 @@
|
|
1
|
+
module Gemsitter
|
2
|
+
autoload :VersionCheck, 'gemsitter/versioncheck'
|
3
|
+
autoload :GemLockfileParser, 'gemsitter/myparser'
|
4
|
+
autoload :SemanticVersion, 'gemsitter/semanticversion'
|
5
|
+
|
6
|
+
|
7
|
+
class << self
|
8
|
+
def run(interval=:week, level=:minor)
|
9
|
+
base = Base.new(interval, level)
|
10
|
+
base.load
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
class Base
|
15
|
+
|
16
|
+
require "yaml"
|
17
|
+
|
18
|
+
def initialize(interval, level=:minor)
|
19
|
+
@interval = interval
|
20
|
+
@level = level
|
21
|
+
@logger = Logger.new(STDOUT)
|
22
|
+
end
|
23
|
+
|
24
|
+
|
25
|
+
|
26
|
+
def load
|
27
|
+
parser = GemLockfileParser.new
|
28
|
+
logger("Fetching Gems from Gemfile.lock")
|
29
|
+
@gems = parser.get_gems
|
30
|
+
logger("#{@gems.size} loaded")
|
31
|
+
logger("Checking the newest Version")
|
32
|
+
|
33
|
+
actual_version
|
34
|
+
|
35
|
+
check_versions
|
36
|
+
end
|
37
|
+
|
38
|
+
def actual_version
|
39
|
+
version = VersionCheck.new
|
40
|
+
|
41
|
+
# Test if its time to update from Rubygems
|
42
|
+
if version.time_to_update? @interval
|
43
|
+
|
44
|
+
@gems.each do |gem|
|
45
|
+
newest_version = version.check_version(gem[:name])
|
46
|
+
gem[:newest_version] = newest_version if newest_version
|
47
|
+
end
|
48
|
+
|
49
|
+
File.open("tmp/gs.yml","w") do |f|
|
50
|
+
f.write @gems.to_yaml
|
51
|
+
end
|
52
|
+
else
|
53
|
+
@gems = YAML::load_file("tmp/gs.yml")
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
def check_versions
|
58
|
+
updates = SemanticVersion.new
|
59
|
+
@gems.each do |gem|
|
60
|
+
unless gem[:newest_version]
|
61
|
+
logger("Rubygem-Source of #{gem[:name]} not found")
|
62
|
+
else
|
63
|
+
unless updates.compare(gem[:version],gem[:newest_version])
|
64
|
+
logger("#{updates.what_changed?} of #{gem[:name]}: #{gem[:newest_version]} / Your Version: #{gem[:version]}")
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
|
71
|
+
def logger(text)
|
72
|
+
@logger.warn(text)
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
|
77
|
+
class Railtie < Rails::Railtie
|
78
|
+
|
79
|
+
rake_tasks do
|
80
|
+
desc 'Check used Gems for an update'
|
81
|
+
task :gemsitter do
|
82
|
+
Gemsitter.run
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
|
88
|
+
|
89
|
+
end
|
metadata
ADDED
@@ -0,0 +1,70 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: gemsitter
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
prerelease: false
|
5
|
+
segments:
|
6
|
+
- 0
|
7
|
+
- 0
|
8
|
+
- 1
|
9
|
+
version: 0.0.1
|
10
|
+
platform: ruby
|
11
|
+
authors:
|
12
|
+
- Thomas Czernik
|
13
|
+
autorequire:
|
14
|
+
bindir: bin
|
15
|
+
cert_chain: []
|
16
|
+
|
17
|
+
date: 2011-05-05 00:00:00 +02:00
|
18
|
+
default_executable:
|
19
|
+
dependencies: []
|
20
|
+
|
21
|
+
description: Check if there are newer versions for your used gems are available and puts out a notification
|
22
|
+
email:
|
23
|
+
- thomas.czernik@webreload.de
|
24
|
+
executables: []
|
25
|
+
|
26
|
+
extensions: []
|
27
|
+
|
28
|
+
extra_rdoc_files: []
|
29
|
+
|
30
|
+
files:
|
31
|
+
- .gitignore
|
32
|
+
- Gemfile
|
33
|
+
- Rakefile
|
34
|
+
- gemsitter.gemspec
|
35
|
+
- lib/gemsitter.rb
|
36
|
+
- lib/gemsitter/version.rb
|
37
|
+
has_rdoc: true
|
38
|
+
homepage: https://github.com/mindbreaker/gemsitter
|
39
|
+
licenses: []
|
40
|
+
|
41
|
+
post_install_message:
|
42
|
+
rdoc_options: []
|
43
|
+
|
44
|
+
require_paths:
|
45
|
+
- lib
|
46
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
47
|
+
none: false
|
48
|
+
requirements:
|
49
|
+
- - ">="
|
50
|
+
- !ruby/object:Gem::Version
|
51
|
+
segments:
|
52
|
+
- 0
|
53
|
+
version: "0"
|
54
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
55
|
+
none: false
|
56
|
+
requirements:
|
57
|
+
- - ">="
|
58
|
+
- !ruby/object:Gem::Version
|
59
|
+
segments:
|
60
|
+
- 0
|
61
|
+
version: "0"
|
62
|
+
requirements: []
|
63
|
+
|
64
|
+
rubyforge_project: gemsitter
|
65
|
+
rubygems_version: 1.3.7
|
66
|
+
signing_key:
|
67
|
+
specification_version: 3
|
68
|
+
summary: Check your installed gem versions and remind you if there are a newer version
|
69
|
+
test_files: []
|
70
|
+
|