lib/doggy/cli/edit.rb in doggy-2.0.12 vs lib/doggy/cli/edit.rb in doggy-2.0.14
- old
+ new
@@ -10,18 +10,24 @@
def run
resource = resource_by_param
return Doggy.ui.error("Could not find resource with #{ @param }") unless resource
Dir.chdir(File.dirname(resource.path)) do
- system("open '#{ resource.human_edit_url }'")
+ forked_resource = fork(resource)
+ system("open '#{ forked_resource.human_edit_url }'")
while !Doggy.ui.yes?('Are you done editing?') do
Doggy.ui.say "run, rabbit run / dig that hole, forget the sun / and when at last the work is done / don't sit down / it's time to dig another one"
end
- new_resource = resource.class.find(resource.id)
- new_resource.path = resource.path
+ new_resource = resource.class.find(forked_resource.id)
+ new_resource.id = resource.id
+ new_resource.title = resource.title
+ new_resource.description = resource.description
+ new_resource.path = resource.path
new_resource.save_local
+
+ forked_resource.destroy
end
end
private
@@ -35,9 +41,20 @@
return resources.find { |res| res.id == id }
else
full_path = File.expand_path(@param, Dir.pwd)
return resources.find { |res| res.path == full_path }
end
+ end
+
+ def fork(resource)
+ salt = (0...12).map { (65 + rand(26)).chr.downcase }.join
+
+ forked_resource = resource.dup
+ forked_resource.id = nil
+ forked_resource.title = "[#{ salt }] " + forked_resource.title
+ forked_resource.description = "[fork of #{ resource.id }] " + forked_resource.title
+ forked_resource.save
+ forked_resource
end
end
end