bin/lock-gemfile in lock-gemfile-0.1.4 vs bin/lock-gemfile in lock-gemfile-0.1.5
- old
+ new
@@ -1,103 +1,5 @@
-#!/bin/env ruby
-# frozen_string_literal: true
+#!/usr/bin/env ruby
-#
-# lock-gemfile
-#
-# This script updates a Gemfile with locked versions from the
-# corresponding Gemfile.lock file. It uses the Parser gem to parse the
-# Gemfile into an Abstract Syntax Tree (AST), and then uses a custom
-# TreeRewriter to modify the AST, inserting the locked versions from
-# the lockfile. The modified AST is then transformed back into source
-# code and either printed to the console or written back to the Gemfile,
-# depending on the provided options.
-#
-# Usage:
-# gemfile_updater.rb update GEMFILE [options]
-#
-# Options:
-# -w, [--write], [--no-write] # Write the updated Gemfile back
-# to disk (default: false) -p, [--pessimistic], [--no-pessimistic] #
-# Use pessimistic version constraints (~>) (default: true)
-#
-# Examples:
-# gemfile_updater.rb update Gemfile gemfile_updater.rb update Gemfile
-# --write gemfile_updater.rb update Gemfile --no-pessimistic
-#
-# Dependencies:
-# - parser - bundler - thor
+require_relative '../lib/lock/gemfile/cli'
-require "parser/ruby31"
-require "bundler"
-require "thor"
-
-require_relative "../lib/lock/gemfile/rewriter"
-
-# Squelch irrelevant deprecation warnings.
-
-$VERBOSE = nil
-
-class GemfileUpdater < Thor
- #
- # This class update a Gemfile with locked versions - designed to pull
- # from the corresponding Gemfile.lock file, it can also accept an
- # arbitrary hash of versions.. It uses the Parser gem to parse the
- # Gemfile into an Abstract Syntax Tree (AST), and then uses a custom
- # TreeRewriter to modify the AST, inserting the locked versions from
- # the lockfile. The modified AST is then transformed back into source
- # code and either printed to the console or written back to the Gemfile,
- # depending on the provided options.
- #
- desc "update GEMFILE", "Update Gemfile with locked versions"
-
- option :write, type: :boolean, default: false, aliases: "-w"
- option :pessimistic, type: :boolean, default: true, aliases: "-p"
-
- def update(gemfile)
- # Read the content of the specified Gemfile
- gemfile_content = File.read(gemfile)
-
- # Parse the corresponding Gemfile.lock using Bundler's LockfileParser
- lockfile = Bundler::LockfileParser.new(Bundler.read_file(gemfile + ".lock"))
-
- # Create a hash to store the desired versions of each gem
- desired_versions = {}
-
- # Iterate over each gem specification in the lockfile
- lockfile.specs.each do |spec|
- # Store the gem name and its locked version in the desired_versions hash
- desired_versions[spec.name] = spec.version
- end
-
- # Create a buffer to hold the Gemfile content
- buffer = Parser::Source::Buffer.new("(gemfile)")
- buffer.source = gemfile_content
-
- # Create a new Ruby parser
- parser = Parser::Ruby31.new
- # Parse the Gemfile content into an Abstract Syntax Tree (AST)
- ast = parser.parse(buffer)
-
- # Create a new instance of the Lock::Gemfile::Rewriter
- rewriter = Lock::Gemfile::Rewriter.new
- # Set the desired versions from the lockfile
- rewriter.lockfile = desired_versions
- # Set the pessimistic option based on the command-line argument
- rewriter.pessimistic = options[:pessimistic]
-
- # Rewrite the Gemfile AST with the locked versions
- transformed_code = rewriter.rewrite(buffer, ast)
-
- # Print the transformed Gemfile content
- puts transformed_code
-
- # If the write option is not specified, exit the method
- return unless options[:write]
-
- # Write the transformed Gemfile content back to the original file
- File.write(gemfile, transformed_code)
- end
-end
-
-# Start the GemfileUpdater CLI with the provided command-line arguments
-GemfileUpdater.start(ARGV)
+Lock::Gemfile::CLI.run(ARGV)