lib/makit/cli/clone.rb



# frozen_string_literal: true


require "clamp"
#require "git"


module Makit
  module Cli
    # Define the 'clone' subcommand

    class CloneCommand < Clamp::Command
      parameter "GIT_REPOSITORY", "The git repository url", attribute_name: :git_repository, required: true

      def execute
        clone_dir = Directories::get_clone_directory(git_repository)
        puts "cloning repository: #{git_repository} to #{clone_dir}"
        begin
          Makit::clone(git_repository)
          if !Dir.exist?(clone_dir)
            summary = "failed to clone repository: #{git_repository} to #{clone_dir}\n"
            summary += "Please check the URL and your network connection.\n"
            summary += "stdout: #{clone.stdout}\n"
            summary += "stderr: #{clone.stderr}\n"
            $stderr.puts summary
            exit 1
          end
        rescue => e
          #  $stderr.puts "failed to clone repository: #{git_repository} to #{clone_dir}"

          puts e.message
          exit 1
        end
        #puts "size of clone directory: #{clone_dir} is #{Humanize::get_humanized_size(Directory::get_size(clone_dir))}"

      end

      #def self.clone(git_repository)

      # make sure a local clone of the repository exists

      #  clone_dir = Directories::get_clone_directory(git_repository)

      #  raise "clone directory already exists: #{clone_dir}" if Dir.exist?(clone_dir)

      #  begin

      #    clone_command = Makit::RUNNER.execute("git clone #{git_repository} #{clone_dir}")

      #    if !Dir.exist?(clone_dir)

      #      summary = "failed to clone repository: #{git_repository} to #{clone_dir}\n"

      #      summary += "Please check the URL and your network connection.\n"

      #      summary += "stdout: #{clone_command.stdout}\n"

      #      summary += "stderr: #{clone_command.stderr}\n"

      #      raise Makit::Error, summary

      #    end

      #raise "failed to clone repository: #{git_repository} to #{clone_dir}" unless clone_command.success?

      #Git.clone(git_repository, clone_dir)

      #  rescue => e

      #    summary = "=" * 80 + "\n"

      #    summary += "failed to clone repository: #{git_repository} to #{clone_dir}\n\n"

      #    summary += "Please check the URL and your network connection.\n"

      #    summary += "#{e.message}\n\n"

      #    summary += "=" * 80 + "\n"

      #    raise Makit::Error, summary

      #  end

      #end

    end
  end
end