Improved service removal.
This commit is contained in:
parent
87929be026
commit
c2730bdd71
@ -171,6 +171,7 @@ commands.push "del", "Removes a service from an environment." do |args|
|
||||
end
|
||||
|
||||
revdeps.reverse.each do |service|
|
||||
puts "removing #{service.to_s}"
|
||||
service.remove RC_DIRECTORY
|
||||
end
|
||||
end
|
||||
|
@ -21,13 +21,6 @@ class Environment
|
||||
@type = Type.parse type
|
||||
|
||||
@files = Array(ServiceDefinition::FileDefinition).new
|
||||
|
||||
# FIXME: Should this *really* be here?
|
||||
# FIXME: $ENVIRONMENT_ROOT
|
||||
@files << ServiceDefinition::FileDefinition.new "/srv/${ENVIRONMENT}",
|
||||
"environment root",
|
||||
creation_command: "mkdir -p /srv/${ENVIRONMENT} && chmod a+rwt /srv/${ENVIRONMENT}",
|
||||
deletion_command: "rmdir /srv/${ENVIRONMENT}"
|
||||
end
|
||||
|
||||
def initialize(@name, specs : SpecParser)
|
||||
|
@ -273,8 +273,8 @@ class Service
|
||||
env: build_environment
|
||||
end.wait
|
||||
|
||||
if child.exit_status != 0
|
||||
raise Service::Exception.new "Child process exited with status “#{child.exit_status}”."
|
||||
unless child.success?
|
||||
raise Service::Exception.new "Child process exited with status “#{(child.exit_status/256).to_i}”."
|
||||
break
|
||||
end
|
||||
end
|
||||
@ -458,6 +458,31 @@ class Service
|
||||
end
|
||||
|
||||
def remove(path)
|
||||
files.reverse.each do |file|
|
||||
puts " - removing '#{file.file_path}'"
|
||||
command = file.deletion_command
|
||||
|
||||
child = Process.fork do
|
||||
Dir.cd root
|
||||
|
||||
exit 0 unless File.exists? file.file_path
|
||||
|
||||
if command
|
||||
Process.exec "sh", ["-c", command],
|
||||
output: Process::Redirect::Inherit,
|
||||
error: Process::Redirect::Inherit,
|
||||
env: build_environment
|
||||
else
|
||||
FileUtils.rm_rf file.file_path
|
||||
end
|
||||
end.wait
|
||||
|
||||
unless child.success?
|
||||
raise Service::Exception.new "Child process exited with status “#{(child.exit_status/256).to_i}”."
|
||||
break
|
||||
end
|
||||
end
|
||||
|
||||
File.delete "#{path}/#{name}.#{@environment.name}.spec"
|
||||
end
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user