Merge branch 'master' of github.com:wpscanteam/wpscan

This commit is contained in:
Christian Mehlmauer
2013-01-13 21:08:52 +01:00
3 changed files with 37 additions and 0 deletions

View File

@@ -34,6 +34,14 @@ class GitUpdater < Updater
%x[git #{repo_directory_arguments()} pull]
end
def has_local_changes?
%x[git #{repo_directory_arguments()} diff --exit-code 2>&1] =~ /diff/ ? true : false
end
def reset_head
%x[git #{repo_directory_arguments()} reset --hard HEAD]
end
protected
def repo_directory_arguments
if @repo_directory

View File

@@ -44,4 +44,29 @@ describe GitUpdater do
@git_updater.update().should === "Already up-to-date."
end
end
describe "#has_local_changes?" do
after :each do
stub_system_command(@git_updater, /^git .* diff --exit-code 2>&1/, @stub_value)
@git_updater.has_local_changes?.should === @expected
end
it "should return true if there are local changes" do
@stub_value = 'diff'
@expected = true
end
it "should return false if there are no local changes" do
@stub_value = ''
@expected = false
end
end
describe "#reset_head" do
it "should reset the local repo" do
stub_system_command(@git_updater, /^git .* reset --hard HEAD/, "HEAD is now at")
@git_updater.reset_head.should match(/^HEAD is now at/)
end
end
end

View File

@@ -52,6 +52,10 @@ begin
# Check for updates
if wpscan_options.update
unless @updater.nil?
if @updater.has_local_changes?
puts "#{red('[!]')} Local file changes detected, an update will override local changes, do you want to continue updating? [y/n]"
Readline.readline =~ /^y/i ? @updater.reset_head : raise('Update aborted')
end
puts @updater.update()
else
puts "Svn / Git not installed, or wpscan has not been installed with one of them."