destroy action implemented

This commit is contained in:
Thilko Richter
2012-09-06 07:38:54 +02:00
parent d084128297
commit 8a41dca46d
3 changed files with 52 additions and 2 deletions

View File

@@ -1,3 +1,4 @@
# -*- encoding : utf-8 -*-
require 'thor'
class Homesick < Thor
@@ -141,6 +142,23 @@ class Homesick < Thor
end
end
desc "destroy CASTLE", "Delete all symlnks and remove the cloned repository"
def destroy(name)
check_castle_existance name, "destroy"
inside castle_dir(name) do
files = Pathname.glob('{.*,*}').reject{|a| [".",".."].include?(a.to_s)}
files.each do |path|
inside home_dir do
adjusted_path = (home_dir + path).basename
rm adjusted_path
end
end
rm_r castle_dir(name)
end
end
protected

View File

@@ -1,3 +1,4 @@
# -*- encoding : utf-8 -*-
class Homesick
module Actions
# TODO move this to be more like thor's template, empty_directory, etc
@@ -75,6 +76,16 @@ class Homesick
end
end
def rm(file)
say_status "rm #{file}", '', :green unless options[:quiet]
system "rm #{file}"
end
def rm_r(dir)
say_status "rm -r #{dir}", '', :green unless options[:quiet]
system "rm -r #{dir}"
end
def ln_s(source, destination, config = {})
source = Pathname.new(source)
destination = Pathname.new(destination)

View File

@@ -1,3 +1,4 @@
# -*- encoding : utf-8 -*-
require 'spec_helper'
describe "homesick" do
@@ -158,4 +159,24 @@ describe "homesick" do
some_rc_file.readlink.should == tracked_file
end
end
describe "destroy" do
it "removes the symlink files" do
given_castle("stronghold")
some_rc_file = home.file '.some_rc_file'
homesick.track(some_rc_file.to_s, "stronghold")
homesick.destroy('stronghold')
some_rc_file.should_not be_exist
end
it "deletes the cloned repository" do
castle = given_castle("stronghold")
some_rc_file = home.file '.some_rc_file'
homesick.track(some_rc_file.to_s, "stronghold")
homesick.destroy('stronghold')
castle.should_not be_exist
end
end
end