thief 0.0.1 → 0.0.2

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8ebb8b8844efcf3a58b4b534b6bea44a6956f6bf
4
- data.tar.gz: 580ad1901222f0e74dcd8f3bd80855e36db599b9
3
+ metadata.gz: 61f31c07596c41f10ef2cd0f8f6f1ea6b71d07a0
4
+ data.tar.gz: a79e94030488d115ffe078176cb8f36c36199ee2
5
5
  SHA512:
6
- metadata.gz: 083f6ea3be53ebe855ed53e56b7f667c9c337a524a8260a1da37adcd962c6fb5c39de6df10fb5ade5c7da9c26612094eab5b54e64bf7a4b7500531e88471ec5d
7
- data.tar.gz: b69ce5f7cab7961647beeb9b9bf16421d17cb0b7be45391e0e6b4d7f42038f213ad520b9dbec993f024f7f2b98f0190a42cfcc9832214f8fe0415b6fb9a6671d
6
+ metadata.gz: 08b9e9810ed5a4a8052f4b15c479e8ec8ff8afa38fe5911e9ba9e0a3e996e67b5fcf5b94109c693dc372b70c5a7172692a9e15d5a715c40f8d571fa33f55f20c
7
+ data.tar.gz: 3c234c22141fc847eb983f7f7acb2d7ba5975f345e2ea5a2cb108a9b092666ab5f558d79c7814d927761e3e3b8cf47ca9f5b038bee55ddfbd65dbe60456e1fa0
data/bin/thief CHANGED
@@ -1,3 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
3
  require 'thief'
4
+
5
+ Thief.install
data/lib/thief/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Thief
2
- VERSION = "0.0.1"
2
+ VERSION = '0.0.2'
3
3
  end
data/lib/thief.rb CHANGED
@@ -1,5 +1,95 @@
1
- require "thief/version"
1
+ require 'thief/version'
2
+ require 'parallel'
3
+ require 'ruby-progressbar'
2
4
 
3
5
  module Thief
4
- # Your code goes here...
6
+ class << self
7
+ def install
8
+ gemfile = resolve_gemfile
9
+ gems = parse_gemfile(gemfile)
10
+ Parallel.map(gems, in_processes: cpu_count, progress: 'Getting gems') do |gem|
11
+ install_gem(gem)
12
+ end
13
+ end
14
+
15
+ private
16
+
17
+ def install_gem(gem)
18
+ cmd = "gem install #{gem[:gem]}"
19
+ cmd << " -v '#{gem[:version]}'" if gem[:version]
20
+ cmd << ' --no-verbose -q --no-rdoc --no-ri --conservative --minimal-deps'
21
+ system cmd
22
+ end
23
+
24
+ def parse_gemfile(gemfile)
25
+ result = []
26
+ line_num = 0
27
+ File.open(gemfile).each do |line|
28
+ line_num += 1
29
+ parse_line(result, line, line_num)
30
+ end
31
+ result
32
+ end
33
+
34
+ def parse_line(result, line, num)
35
+ line = line.strip
36
+ if line.include?(':path =>') || line.include?('path: ')
37
+ puts "WARNING: Skipping local: #{line}"
38
+ return
39
+ end
40
+ if line.include?('#')
41
+ line, _ = line.split('#')
42
+ end
43
+ if line.start_with?('gem')
44
+ gem, version = line.gsub(/['"]/, '').split(',')
45
+ gem_def = { gem: gem.gsub(/^gem\s+/, '').strip }
46
+ if version && version.include?('require')
47
+ version.gsub!(/:?require.+/, '').strip
48
+ end
49
+ if version && version.strip.length > 0
50
+ gem_def[:version] = version.strip
51
+ end
52
+ result << gem_def
53
+ end
54
+ rescue => e
55
+ puts "WARNING: Could not parse line: #{num}: #{line}: #{e}"
56
+ end
57
+
58
+ def resolve_gemfile
59
+ gemfile_path = ARGV[0] || 'Gemfile'
60
+ if gemfile_path.start_with?('~') || gemfile_path.start_with?('/')
61
+ gemfile = File.expand_path(gemfile_path)
62
+ else
63
+ gemfile = File.join(Dir.pwd, gemfile_path)
64
+ end
65
+ puts "Running thief install for: #{gemfile}"
66
+ check_gemfile(gemfile)
67
+ gemfile
68
+ end
69
+
70
+ def check_gemfile(gemfile)
71
+ unless File.exist?(gemfile)
72
+ puts 'Run thief in a directory that contains a Gemfile'
73
+ exit 1
74
+ end
75
+ end
76
+
77
+ def cpu_count
78
+ case RbConfig::CONFIG['host_os']
79
+ when /darwin9/
80
+ `hwprefs cpu_count`.to_i
81
+ when /darwin/
82
+ ((`which hwprefs` != '') ? `hwprefs thread_count` : `sysctl -n hw.ncpu`).to_i
83
+ when /linux/
84
+ `cat /proc/cpuinfo | grep processor | wc -l`.to_i
85
+ when /freebsd/
86
+ `sysctl -n hw.ncpu`.to_i
87
+ when /mswin|mingw/
88
+ require 'win32ole'
89
+ wmi = WIN32OLE.connect('winmgmts://')
90
+ cpu = wmi.ExecQuery('select NumberOfCores from Win32_Processor')
91
+ cpu.to_enum.first.NumberOfCores
92
+ end
93
+ end
94
+ end
5
95
  end
data/thief.gemspec CHANGED
@@ -14,10 +14,12 @@ Gem::Specification.new do |spec|
14
14
  spec.license = "MIT"
15
15
 
16
16
  spec.files = `git ls-files -z`.split("\x0")
17
- spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
17
+ spec.executables = ['thief']
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
19
  spec.require_paths = ["lib"]
20
20
 
21
+ spec.add_runtime_dependency 'parallel'
22
+ spec.add_runtime_dependency 'ruby-progressbar'
21
23
  spec.add_development_dependency "bundler", "~> 1.6"
22
24
  spec.add_development_dependency "rake", "~> 10.0"
23
25
  spec.add_development_dependency "rspec"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: thief
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tomas Varaneckas
@@ -10,6 +10,34 @@ bindir: bin
10
10
  cert_chain: []
11
11
  date: 2014-08-31 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: parallel
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: ruby-progressbar
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
13
41
  - !ruby/object:Gem::Dependency
14
42
  name: bundler
15
43
  requirement: !ruby/object:Gem::Requirement