lib/gitdocs/cli.rb in gitdocs-0.4.15 vs lib/gitdocs/cli.rb in gitdocs-0.5.0.pre1
- old
+ new
@@ -4,108 +4,152 @@
class Cli < Thor
include Thor::Actions
def self.source_root; File.expand_path('../../', __FILE__); end
- desc "start", "Starts a daemonized gitdocs process"
- method_option :debug, :type => :boolean, :aliases => "-D"
- method_option :port, :type => :string, :aliases => "-p"
+ desc 'start', 'Starts a daemonized gitdocs process'
+ method_option :debug, type: :boolean, aliases: '-D'
+ method_option :port, type: :string, aliases: '-p'
def start
- if self.stopped? && !options[:debug]
- self.runner.execute { Gitdocs.start(:port => options[:port]) }
- self.running? ? say("Started gitdocs", :green) : say("Failed to start gitdocs", :red)
- elsif self.stopped? && options[:debug]
- say "Starting in debug mode", :yellow
- Gitdocs.start(:debug => true, :port => options[:port])
- else # already running
- say "Gitdocs is already running, please use restart", :red
+ unless stopped?
+ say 'Gitdocs is already running, please use restart', :red
+ return
end
+
+ if options[:debug]
+ say 'Starting in debug mode', :yellow
+ Gitdocs.start(debug: true, port: options[:port])
+ else
+ runner.execute { Gitdocs.start(port: options[:port]) }
+ if running?
+ say 'Started gitdocs', :green
+ else
+ say 'Failed to start gitdocs', :red
+ end
+ end
end
- desc "stop", "Stops the gitdocs process"
+ desc 'stop', 'Stops the gitdocs process'
def stop
- if self.running?
- self.runner.execute(:kill => true)
- say "Stopped gitdocs", :red
- else # not running
- say "Gitdocs is not running", :red
+ unless running?
+ say 'Gitdocs is not running', :red
+ return
end
+
+ runner.execute(kill: true)
+ say 'Stopped gitdocs', :red
end
- desc "restart", "Restarts the gitdocs process"
+ desc 'restart', 'Restarts the gitdocs process'
def restart
- self.stop
- self.start
+ stop
+ start
end
- desc "add PATH", "Adds a path to gitdocs"
+ desc 'add PATH', 'Adds a path to gitdocs'
def add(path)
- self.config.add_path(path)
+ config.add_path(path)
say "Added path #{path} to doc list"
- self.restart if self.running?
+ restart if running?
end
- desc "rm PATH", "Removes a path from gitdocs"
+ desc 'rm PATH', 'Removes a path from gitdocs'
def rm(path)
- self.config.remove_path(path)
+ config.remove_path(path)
say "Removed path #{path} from doc list"
- self.restart if self.running?
+ restart if running?
end
- desc "clear", "Clears all paths from gitdocs"
+ desc 'clear', 'Clears all paths from gitdocs'
def clear
- self.config.clear
- say "Cleared paths from gitdocs"
+ config.clear
+ say 'Cleared paths from gitdocs'
end
- desc "create PATH REMOTE", "Creates a new gitdoc root based on an existing remote"
+ desc 'create PATH REMOTE', 'Creates a new gitdoc root based on an existing remote'
def create(path, remote)
FileUtils.mkdir_p(File.dirname(path))
- system("git clone -q #{remote} #{ShellTools.escape(path)}") or raise "Unable to clone into #{path}"
- self.add(path)
+ system("git clone -q #{remote} #{ShellTools.escape(path)}") || fail("Unable to clone into #{path}")
+ add(path)
say "Created #{path} path for gitdoc"
end
- desc "status", "Retrieve gitdocs status"
+ desc 'status', 'Retrieve gitdocs status'
def status
say "GitDoc v#{VERSION}"
- say "Running: #{self.running?}"
- say "Watching paths:"
- say self.config.shares.map { |s| " - #{s.path}" }.join("\n")
+ say "Running: #{running?}"
+ say "File System Watch Method: #{file_system_watch_method}"
+ say 'Watching paths:'
+ say config.shares.map { |s| " - #{s.path}" }.join("\n")
end
- desc "config", "Configuration options for gitdocs"
+ desc 'open', 'Open the Web UI'
+ method_option :port, type: :string, aliases: '-p'
+ def open
+ unless running?
+ say 'Gitdocs is not running, cannot open the UI', :red
+ return
+ end
+
+ web_port = options[:port]
+ web_port ||= config.global.web_frontend_port
+ Launchy.open("http://localhost:#{web_port}/")
+ end
+
+ desc 'config', 'Configuration options for gitdocs'
def config
- # TODO make this work
+ # TODO: make this work
end
- desc "help", "Prints out the help"
+ desc 'help', 'Prints out the help'
def help(task = nil, subcommand = false)
say "\nGitdocs: Collaborate with ease.\n\n"
task ? self.class.task_help(shell, task) : self.class.help(shell, subcommand)
end
# Helpers for thor
no_tasks do
- def runner(options={})
- Dante::Runner.new('gitdocs', options.merge(:debug => false, :daemonize => true, :pid_path => self.pid_path))
+ def runner
+ Dante::Runner.new(
+ 'gitdocs',
+ debug: false,
+ daemonize: true,
+ pid_path: pid_path
+ )
end
def config
@config ||= Configuration.new
end
def running?
- self.runner.daemon_running?
+ runner.daemon_running?
end
def stopped?
- self.runner.daemon_stopped?
+ runner.daemon_stopped?
end
def pid_path
- "/tmp/gitdocs.pid"
+ '/tmp/gitdocs.pid'
end
- end
+ # @return [Symbol] to indicate how the file system is being watched
+ def file_system_watch_method
+ if Guard::Listener.mac?
+ begin
+ return :notification if Guard::Listener::Darwin.usable?
+ rescue NameError ; end
+ elsif Guard::Listener.linux?
+ begin
+ return :notification if Guard::Listener::Linux.usable?
+ rescue NameError ; end
+ elsif Guard::Listener.windows?
+ begin
+ return :notification if Guard::Listener::Windows.usable?
+ rescue NameError ; end
+ end
+ :polling
+ end
+ end
end
end