gemfile_interpreter 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.
- checksums.yaml +7 -0
- data/Gemfile +4 -0
- data/bin/gemfile_interpreter +23 -0
- data/lib/gemfile_interpreter/own_bundler.rb +18 -0
- data/lib/gemfile_interpreter/parser.rb +39 -0
- data/lib/gemfile_interpreter/version.rb +3 -0
- data/lib/gemfile_interpreter.rb +43 -0
- metadata +64 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: e89680ad78bd316ed6e82011cb0ae0b6bfc611fc
|
4
|
+
data.tar.gz: 904b2ac93f8f447a870776c0d01042a67779467e
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: a5a0a2e66e7bc5a924ca1495bdff3525aabfaf5e939e97c690b0cbea4d11577fff3ddaad56cc08e8cb43ffae6dd9d02654c9af8acf2ded2dd3b81fb1a5329e5a
|
7
|
+
data.tar.gz: 2525a81548c28b85095309913d6ca31a9288ce0603284bc0aed99e867a518ca05fc329fc0a454e9c1aa611edc722963329cdaedd03ce19741b4785c3e21bbcdd
|
data/Gemfile
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'gemfile_interpreter'
|
4
|
+
|
5
|
+
def print_help
|
6
|
+
puts "Usage: #{__FILE__} GEMFILE [--json|--yaml]"
|
7
|
+
exit 1
|
8
|
+
end
|
9
|
+
|
10
|
+
gemfile = ARGV[0]
|
11
|
+
if [nil, '--help', '-h'].include? gemfile
|
12
|
+
print_help
|
13
|
+
else
|
14
|
+
type = ARGV[1]
|
15
|
+
GemfileInterpreter.load gemfile
|
16
|
+
if type == '--yaml'
|
17
|
+
puts GemfileInterpreter.to_yaml
|
18
|
+
elsif type.nil? || type == '--json'
|
19
|
+
puts GemfileInterpreter.to_json
|
20
|
+
else
|
21
|
+
print_help
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'bundler'
|
2
|
+
|
3
|
+
OwnBundler = Bundler.dup
|
4
|
+
|
5
|
+
module OwnBundler
|
6
|
+
class << self
|
7
|
+
def setup gemfile
|
8
|
+
@default_gemfile = Pathname.new gemfile
|
9
|
+
end
|
10
|
+
|
11
|
+
attr_reader :default_gemfile
|
12
|
+
|
13
|
+
def default_bundle_dir
|
14
|
+
Pathname.new File.join(default_gemfile.directory, '.bundle')
|
15
|
+
end
|
16
|
+
end
|
17
|
+
reset!
|
18
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
require 'bundler'
|
2
|
+
|
3
|
+
module GemfileInterpreter
|
4
|
+
module Parser
|
5
|
+
class << self
|
6
|
+
def parse gems
|
7
|
+
hash = {}
|
8
|
+
gems.each do |gem|
|
9
|
+
hash[gem.name] = parse_gem gem
|
10
|
+
end
|
11
|
+
hash
|
12
|
+
end
|
13
|
+
|
14
|
+
def parse_gem gem
|
15
|
+
hash = {}
|
16
|
+
[:version, :full_name, :platform, :remote].map do |method|
|
17
|
+
hash[method.to_s] = gem.send(method).to_s
|
18
|
+
end
|
19
|
+
hash['source'] = parse_source gem.source
|
20
|
+
hash
|
21
|
+
end
|
22
|
+
|
23
|
+
def parse_source source
|
24
|
+
source_type = if source.is_a? Bundler::Source::Rubygems
|
25
|
+
# normal rubygems.org
|
26
|
+
'rubygems'
|
27
|
+
elsif source.is_a? Bundler::Source::Git
|
28
|
+
# git
|
29
|
+
'git'
|
30
|
+
elsif source.is_a? Bundler::Source::Path
|
31
|
+
raise NotImplementedError, "A gem from a local path is currently not supported"
|
32
|
+
else
|
33
|
+
raise "unknown type #{source.inspect}"
|
34
|
+
end
|
35
|
+
{'type' => source_type}.merge(source.options)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
require 'gemfile_interpreter/version'
|
2
|
+
require 'gemfile_interpreter/parser'
|
3
|
+
require 'gemfile_interpreter/own_bundler'
|
4
|
+
require 'json'
|
5
|
+
require 'yaml'
|
6
|
+
|
7
|
+
module GemfileInterpreter
|
8
|
+
class << self
|
9
|
+
def load gemfile
|
10
|
+
@gemfile = gemfile
|
11
|
+
raise 'The parameter gemfile may not be empty' if gemfile.nil? || gemfile.empty?
|
12
|
+
ensure_file_exists! @gemfile
|
13
|
+
ensure_file_exists! "#{@gemfile}.lock"
|
14
|
+
@parsed = nil
|
15
|
+
OwnBundler.setup @gemfile
|
16
|
+
@bundler_runtime = OwnBundler.load
|
17
|
+
true
|
18
|
+
end
|
19
|
+
|
20
|
+
def bundler_runtime
|
21
|
+
raise "first use #load before #bundler_runtime" unless @bundler_runtime
|
22
|
+
@bundler_runtime
|
23
|
+
end
|
24
|
+
|
25
|
+
def parsed
|
26
|
+
@parsed = Parser.parse bundler_runtime.gems
|
27
|
+
end
|
28
|
+
|
29
|
+
def to_json
|
30
|
+
parsed.to_json
|
31
|
+
end
|
32
|
+
|
33
|
+
def to_yaml
|
34
|
+
parsed.to_yaml
|
35
|
+
end
|
36
|
+
|
37
|
+
private
|
38
|
+
|
39
|
+
def ensure_file_exists! filename
|
40
|
+
raise IOError, "File #{filename.inspect} not found" unless File.exists? filename
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
metadata
ADDED
@@ -0,0 +1,64 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: gemfile_interpreter
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Nicolas Ganz
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2017-02-22 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.0'
|
27
|
+
description: A tool to interpret the Gemfile without installing it
|
28
|
+
email: nicolas@kelte.ch
|
29
|
+
executables:
|
30
|
+
- gemfile_interpreter
|
31
|
+
extensions: []
|
32
|
+
extra_rdoc_files: []
|
33
|
+
files:
|
34
|
+
- Gemfile
|
35
|
+
- bin/gemfile_interpreter
|
36
|
+
- lib/gemfile_interpreter.rb
|
37
|
+
- lib/gemfile_interpreter/own_bundler.rb
|
38
|
+
- lib/gemfile_interpreter/parser.rb
|
39
|
+
- lib/gemfile_interpreter/version.rb
|
40
|
+
homepage: https://github.com/ThunderKey/gemfile_interpreter
|
41
|
+
licenses:
|
42
|
+
- MIT
|
43
|
+
metadata: {}
|
44
|
+
post_install_message:
|
45
|
+
rdoc_options: []
|
46
|
+
require_paths:
|
47
|
+
- lib
|
48
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
49
|
+
requirements:
|
50
|
+
- - ">="
|
51
|
+
- !ruby/object:Gem::Version
|
52
|
+
version: '0'
|
53
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
54
|
+
requirements:
|
55
|
+
- - ">="
|
56
|
+
- !ruby/object:Gem::Version
|
57
|
+
version: '0'
|
58
|
+
requirements: []
|
59
|
+
rubyforge_project:
|
60
|
+
rubygems_version: 2.6.8
|
61
|
+
signing_key:
|
62
|
+
specification_version: 4
|
63
|
+
summary: Gemfile Interpreter
|
64
|
+
test_files: []
|