Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 27 additions & 0 deletions lib/pessimize/gemspec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
require 'pessimize/gemfile'

module Pessimize
class Gemspec < Gemfile
protected

def parse_gems_from_tokens!
enum = tokens.each_with_index

loop do
(tok, i) = enum.next

if tok[1] == :on_ident && (tok[2] == "add_dependency" || tok[2] == "add_development_dependency")
gem_toks = []
until all_gem_tokens_collected?(tok[0], enum.peek[0])
(tok, j) = enum.next
gem_toks << tok
end

self.gems << Pessimize::Gem.new(gem_toks)
self.gem_token_map << [i + 1, j]
end
end
rescue StopIteration
end
end
end
14 changes: 12 additions & 2 deletions lib/pessimize/pessimizer.rb
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
require 'pessimize/gemfile'
require 'pessimize/gemspec'
require 'pessimize/gemfile_lock_version_parser'
require 'pessimize/version_mapper'

Expand All @@ -13,7 +14,8 @@ def initialize(file_manager, options)
def run
collect_gems_and_versions
update_gem_versions
write_new_gemfile
puts gemfile.to_s
# write_new_gemfile
puts "~> written #{gemfile.gems.length} gems to Gemfile, constrained to #{options[:version_constraint]} version updates\n\n"
end

Expand All @@ -24,8 +26,16 @@ def sep(num = 1)
"\n" * num
end

def file_to_pessimize
if options[:gemspec]
Gemspec.new(File.read(options[:gemspec]))
else
Gemfile.new(file_manager.gemfile_contents)
end
end

def collect_gems_and_versions
self.gemfile = Gemfile.new(file_manager.gemfile_contents)
self.gemfile = file_to_pessimize
lock_parser.call File.open(file_manager.gemfile_lock)
end

Expand Down
1 change: 1 addition & 0 deletions lib/pessimize/shell.rb
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ def cli_options

opt :version_constraint, "Version constraint ('minor' or 'patch')", default: 'minor', type: :string, short: 'c'
opt :backup, "Backup existing Gemfile and Gemfile.lock", default: true, type: :boolean, short: 'b'
opt :gemspec, "Pessimize gemspec", type: String, short: 's'
end
end

Expand Down