gemper 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/bin/gemper +7 -0
- data/lib/gemper.rb +38 -0
- metadata +47 -0
data/bin/gemper
ADDED
data/lib/gemper.rb
ADDED
@@ -0,0 +1,38 @@
|
|
1
|
+
module Gemper
|
2
|
+
def self.installed?(gem_name)
|
3
|
+
require gem_name
|
4
|
+
true
|
5
|
+
rescue LoadError
|
6
|
+
false
|
7
|
+
end
|
8
|
+
|
9
|
+
def self.required_gems(file_name)
|
10
|
+
File.readlines(file_name).map { |line|
|
11
|
+
line.match(/^require.*(?=['"](.+)['"])(?:"\1"|'\1')/)
|
12
|
+
}.compact.map { |e| e[1] }.uniq
|
13
|
+
end
|
14
|
+
|
15
|
+
def self.gems_in_path(path, recursive = false)
|
16
|
+
if File.file? path
|
17
|
+
required_gems path
|
18
|
+
elsif File.directory? path
|
19
|
+
Dir.chdir path
|
20
|
+
Dir["#{recursive ? '**/' : ''}*.{rb,ru}"].map{ |file_name| required_gems(file_name) }.flatten.uniq
|
21
|
+
else
|
22
|
+
abort "\e[31mFile not found: #{path}\e[0m"
|
23
|
+
end.reject { |e| installed? e }
|
24
|
+
end
|
25
|
+
|
26
|
+
def self.install(path, recursive)
|
27
|
+
gems = gems_in_path(path, recursive)
|
28
|
+
if gems.size == 0
|
29
|
+
puts 'All the gems are already installed.'
|
30
|
+
else
|
31
|
+
puts "Following gem" + (gems.size > 1 ? 's' : '') + ' need to be installed:'
|
32
|
+
gems.each { |e| puts e }
|
33
|
+
print 'Install? [Y/n]: '
|
34
|
+
install = ['', 'y', 'yes'].include? STDIN.gets.chomp.downcase
|
35
|
+
`gem install #{gems.join(' ')}` if install
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
metadata
ADDED
@@ -0,0 +1,47 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: gemper
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Volodymyr Shatsky
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2013-03-31 00:00:00.000000000 Z
|
13
|
+
dependencies: []
|
14
|
+
description: Automatically installs all the gems required in a specified file or directory
|
15
|
+
email: shockone89@gmail.com
|
16
|
+
executables:
|
17
|
+
- gemper
|
18
|
+
extensions: []
|
19
|
+
extra_rdoc_files: []
|
20
|
+
files:
|
21
|
+
- lib/gemper.rb
|
22
|
+
- bin/gemper
|
23
|
+
homepage: http://rubygems.org/gems/gemper
|
24
|
+
licenses: []
|
25
|
+
post_install_message:
|
26
|
+
rdoc_options: []
|
27
|
+
require_paths:
|
28
|
+
- lib
|
29
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
30
|
+
none: false
|
31
|
+
requirements:
|
32
|
+
- - ! '>='
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: '0'
|
35
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
36
|
+
none: false
|
37
|
+
requirements:
|
38
|
+
- - ! '>='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
requirements: []
|
42
|
+
rubyforge_project:
|
43
|
+
rubygems_version: 1.8.23
|
44
|
+
signing_key:
|
45
|
+
specification_version: 3
|
46
|
+
summary: Scans files and installs required gems
|
47
|
+
test_files: []
|