lib/doggy/cli/edit.rb in doggy-0.2.2 vs lib/doggy/cli/edit.rb in doggy-2.0.0
- old
+ new
@@ -1,14 +1,41 @@
module Doggy
class CLI::Edit
- attr_reader :options, :id
-
- def initialize(options, id)
+ def initialize(options, param)
@options = options
- @id = id
+ @param = param
end
def run
- Doggy.edit(id)
+ 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 }'")
+ 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.save_local
+ end
end
+
+ private
+
+ def resource_by_param
+ resources = Doggy::Models::Dashboard.all_local
+ resources += Doggy::Models::Monitor.all_local
+ resources += Doggy::Models::Screen.all_local
+
+ if @param =~ /^[0-9]+$/ then
+ id = @param.to_i
+ 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
end
end
+