Apply fixes suggested by Rubocop.
This commit is contained in:
@@ -5,9 +5,7 @@ module Homesick
|
||||
def mv(source, destination)
|
||||
source = Pathname.new(source)
|
||||
destination = Pathname.new(destination + source.basename)
|
||||
if destination.exist? && (options[:force] || shell.file_collision(destination) { source })
|
||||
say_status :conflict, "#{destination} exists", :red
|
||||
end
|
||||
say_status :conflict, "#{destination} exists", :red if destination.exist? && (options[:force] || shell.file_collision(destination) { source })
|
||||
FileUtils.mv source, destination unless options[:pretend]
|
||||
end
|
||||
|
||||
@@ -42,41 +40,36 @@ module Homesick
|
||||
destination = Pathname.new(destination)
|
||||
FileUtils.mkdir_p destination.dirname
|
||||
|
||||
action = if destination.symlink? && destination.readlink == source
|
||||
:identical
|
||||
elsif destination.symlink?
|
||||
:symlink_conflict
|
||||
elsif destination.exist?
|
||||
:conflict
|
||||
else
|
||||
:success
|
||||
end
|
||||
action = :success
|
||||
action = :identical if destination.symlink? && destination.readlink == source
|
||||
action = :symlink_conflict if destination.symlink?
|
||||
action = :conflict if destination.exist?
|
||||
|
||||
handle_symlink_action action, source, destination
|
||||
end
|
||||
|
||||
def handle_symlink_action(action, source, destination)
|
||||
case action
|
||||
when :identical
|
||||
if action == :identical
|
||||
say_status :identical, destination.expand_path, :blue
|
||||
when :symlink_conflict, :conflict
|
||||
if action == :conflict
|
||||
say_status :conflict, "#{destination} exists", :red
|
||||
else
|
||||
say_status :conflict,
|
||||
"#{destination} exists and points to #{destination.readlink}",
|
||||
:red
|
||||
end
|
||||
return
|
||||
end
|
||||
message = generate_symlink_message action, source, destination
|
||||
if %i[symlink_conflict conflict].include?(action)
|
||||
say_status :conflict, message, :red
|
||||
if collision_accepted?(destination, source)
|
||||
FileUtils.rm_r destination, force: true unless options[:pretend]
|
||||
FileUtils.ln_s source, destination, force: true unless options[:pretend]
|
||||
end
|
||||
else
|
||||
say_status :symlink,
|
||||
"#{source.expand_path} to #{destination.expand_path}",
|
||||
:green
|
||||
FileUtils.ln_s source, destination unless options[:pretend]
|
||||
say_status :symlink, message, :green
|
||||
end
|
||||
FileUtils.ln_s source, destination, force: true unless options[:pretend]
|
||||
end
|
||||
|
||||
def generate_symlink_message(action, source, destination)
|
||||
message = "#{source.expand_path} to #{destination.expand_path}"
|
||||
message = "#{destination} exists and points to #{destination.readlink}" if action == :symlink_conflict
|
||||
message = "#{destination} exists" if action == :conflict
|
||||
message
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
# -*- encoding : utf-8 -*-
|
||||
module Homesick
|
||||
module Actions
|
||||
# Git-related helper methods for Homesick
|
||||
@@ -8,18 +7,20 @@ module Homesick
|
||||
major: 1,
|
||||
minor: 8,
|
||||
patch: 0
|
||||
}
|
||||
}.freeze
|
||||
STRING = MIN_VERSION.values.join('.')
|
||||
|
||||
def git_version_correct?
|
||||
info = `git --version`.scan(/(\d+)\.(\d+)\.(\d+)/).flatten.map(&:to_i)
|
||||
return false unless info.count == 3
|
||||
current_version = Hash[[:major, :minor, :patch].zip(info)]
|
||||
return true if current_version.eql?(MIN_VERSION)
|
||||
return true if current_version[:major] > MIN_VERSION[:major]
|
||||
return true if current_version[:major] == MIN_VERSION[:major] && current_version[:minor] > MIN_VERSION[:minor]
|
||||
return true if current_version[:major] == MIN_VERSION[:major] && current_version[:minor] == MIN_VERSION[:minor] && current_version[:patch] >= MIN_VERSION[:patch]
|
||||
false
|
||||
|
||||
current_version = Hash[%i[major minor patch].zip(info)]
|
||||
major_equals = current_version.eql?(MIN_VERSION)
|
||||
major_greater = current_version[:major] > MIN_VERSION[:major]
|
||||
minor_greater = current_version[:major] == MIN_VERSION[:major] && current_version[:minor] > MIN_VERSION[:minor]
|
||||
patch_greater = current_version[:major] == MIN_VERSION[:major] && current_version[:minor] == MIN_VERSION[:minor] && current_version[:patch] >= MIN_VERSION[:patch]
|
||||
|
||||
major_equals || major_greater || minor_greater || patch_greater
|
||||
end
|
||||
|
||||
# TODO: move this to be more like thor's template, empty_directory, etc
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
# -*- encoding : utf-8 -*-
|
||||
require 'fileutils'
|
||||
require 'thor'
|
||||
|
||||
@@ -33,19 +32,20 @@ module Homesick
|
||||
source = Pathname.new(source)
|
||||
return 'Unable to create diff: destination or content is a directory' if destination.directory? || source.directory?
|
||||
return super(destination, File.binread(source)) unless destination.symlink?
|
||||
|
||||
say "- #{destination.readlink}", :red, true
|
||||
say "+ #{source.expand_path}", :green, true
|
||||
end
|
||||
end
|
||||
|
||||
desc 'clone URI CASTLE_NAME', 'Clone +uri+ as a castle with name CASTLE_NAME for homesick'
|
||||
def clone(uri, destination=nil)
|
||||
def clone(uri, destination = nil)
|
||||
destination = Pathname.new(destination) unless destination.nil?
|
||||
|
||||
inside repos_dir do
|
||||
if File.exist?(uri)
|
||||
uri = Pathname.new(uri).expand_path
|
||||
fail "Castle already cloned to #{uri}" if uri.to_s.start_with?(repos_dir.to_s)
|
||||
raise "Castle already cloned to #{uri}" if uri.to_s.start_with?(repos_dir.to_s)
|
||||
|
||||
destination = uri.basename if destination.nil?
|
||||
|
||||
@@ -58,7 +58,7 @@ module Homesick
|
||||
destination = Pathname.new(Regexp.last_match[1].gsub(/\.git$/, '')).basename if destination.nil?
|
||||
git_clone uri, destination: destination
|
||||
else
|
||||
fail "Unknown URI format: #{uri}"
|
||||
raise "Unknown URI format: #{uri}"
|
||||
end
|
||||
|
||||
setup_castle(destination)
|
||||
@@ -75,8 +75,10 @@ module Homesick
|
||||
destination = Pathname.new(name)
|
||||
homesickrc = destination.join('.homesickrc').expand_path
|
||||
return unless homesickrc.exist?
|
||||
|
||||
proceed = options[:force] || shell.yes?("#{name} has a .homesickrc. Proceed with evaling it? (This could be destructive)")
|
||||
return say_status 'eval skip', "not evaling #{homesickrc}, #{destination} may need manual configuration", :blue unless proceed
|
||||
|
||||
say_status 'eval', homesickrc
|
||||
inside destination do
|
||||
eval homesickrc.read, binding, homesickrc.expand_path.to_s
|
||||
|
||||
@@ -1,12 +1,11 @@
|
||||
# -*- encoding : utf-8 -*-
|
||||
require 'pathname'
|
||||
|
||||
module Homesick
|
||||
# Various utility methods that are used by Homesick
|
||||
module Utils
|
||||
QUIETABLE = [:say_status]
|
||||
QUIETABLE = [:say_status].freeze
|
||||
|
||||
PRETENDABLE = [:system]
|
||||
PRETENDABLE = [:system].freeze
|
||||
|
||||
QUIETABLE.each do |method_name|
|
||||
define_method(method_name) do |*args|
|
||||
@@ -36,6 +35,7 @@ module Homesick
|
||||
|
||||
def check_castle_existance(name, action)
|
||||
return if castle_dir(name).exist?
|
||||
|
||||
say_status :error,
|
||||
"Could not #{action} #{name}, expected #{castle_dir(name)} to exist and contain dotfiles",
|
||||
:red
|
||||
@@ -149,7 +149,8 @@ module Homesick
|
||||
end
|
||||
|
||||
def collision_accepted?(destination, source)
|
||||
fail "Arguments must be instances of Pathname, #{destination.class.name} and #{source.class.name} given" unless destination.instance_of?(Pathname) && source.instance_of?(Pathname)
|
||||
raise "Arguments must be instances of Pathname, #{destination.class.name} and #{source.class.name} given" unless destination.instance_of?(Pathname) && source.instance_of?(Pathname)
|
||||
|
||||
options[:force] || shell.file_collision(destination) { source }
|
||||
end
|
||||
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
# -*- encoding : utf-8 -*-
|
||||
module Homesick
|
||||
# A representation of Homesick's version number in constants, including a
|
||||
# String of the entire version number
|
||||
|
||||
Reference in New Issue
Block a user