lib/gitdocs/cli.rb in gitdocs-0.5.0 vs lib/gitdocs/cli.rb in gitdocs-0.6.0
- old
+ new
@@ -11,24 +11,32 @@
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'
- method_option :pid, type: :string, aliases: '-P'
+ method_option :foreground, type: :boolean, aliases: '-fg'
+ method_option :verbose, type: :boolean, aliases: '-v'
+ method_option :port, type: :string, aliases: '-p'
+ method_option :pid, type: :string, aliases: '-P'
def start
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])
+ Gitdocs::Initializer.verbose = options[:verbose]
+
+ if options[:foreground]
+ say 'Run in the foreground', :yellow
+ Gitdocs::Initializer.foreground = true
+ Manager.start(web_port)
else
- runner.execute { Gitdocs.start(port: options[:port]) }
+ # Clear the arguments so that they will not be processed by the
+ # Dante execution.
+ ARGV.clear
+ runner.execute { Manager.start(web_port) }
+
if running?
say 'Started gitdocs', :green
else
say 'Failed to start gitdocs', :red
end
@@ -55,57 +63,59 @@
end
method_option :pid, type: :string, aliases: '-P'
desc 'add PATH', 'Adds a path to gitdocs'
def add(path)
- config.add_path(path)
+ Share.create_by_path!(normalize_path(path))
say "Added path #{path} to doc list"
restart if running?
end
method_option :pid, type: :string, aliases: '-P'
desc 'rm PATH', 'Removes a path from gitdocs'
def rm(path)
- config.remove_path(path)
+ Share.remove_by_path(path)
say "Removed path #{path} from doc list"
restart if running?
end
+ method_option :pid, type: :string, aliases: '-P'
desc 'clear', 'Clears all paths from gitdocs'
def clear
- config.clear
+ Share.destroy_all
say 'Cleared paths from gitdocs'
+ restart if running?
end
method_option :pid, type: :string, aliases: '-P'
desc 'create PATH REMOTE', 'Creates a new gitdoc root based on an existing remote'
def create(path, remote)
- Gitdocs::Repository.clone(path, remote)
+ Repository.clone(path, remote)
add(path)
say "Created #{path} path for gitdoc"
end
method_option :pid, type: :string, aliases: '-P'
desc 'status', 'Retrieve gitdocs status'
def status
say "GitDoc v#{VERSION}"
say "Running: #{running?}"
- say "File System Watch Method: #{file_system_watch_method}"
+ say "File System Watch Method: #{Gitdocs::Manager.listen_method}"
say 'Watched repositories:'
tp.set(:max_width, 100)
status_display = lambda do |share|
- repository = Gitdocs::Repository.new(share)
+ repository = Repository.new(share)
status = ''
status += '*' if repository.dirty?
status += '!' if repository.need_sync?
status = 'ok' if status.empty?
status
end
tp(
- config.shares,
+ Share.all,
{ sync: { display_method: :sync_type } },
{ s: status_display },
:path
)
say "\n(Legend: ok everything synced, * change to commit, ! needs sync)"
@@ -117,12 +127,10 @@
unless running?
say 'Gitdocs is not running, cannot open the UI', :red
return
end
- web_port = options[:port]
- web_port ||= config.web_frontend_port
Launchy.open("http://localhost:#{web_port}/")
end
# TODO: make this work
# desc 'config', 'Configuration options for gitdocs'
@@ -135,45 +143,46 @@
task ? self.class.task_help(shell, task) : self.class.help(shell, subcommand)
end
# Helpers for thor
no_tasks do
+ # @return [Dante::Runner]
def runner
Dante::Runner.new(
'gitdocs',
debug: false,
daemonize: true,
- pid_path: pid_path
+ pid_path: pid_path,
+ log_path: Gitdocs.log_path
)
end
- def config
- @config ||= Configuration.new
- end
-
+ # @return [Boolean]
def running?
runner.daemon_running?
end
+ # @return [Boolean]
def stopped?
runner.daemon_stopped?
end
+ # @return [String]
def pid_path
options[:pid] || '/tmp/gitdocs.pid'
end
- # @return [Symbol] to indicate how the file system is being watched
- def file_system_watch_method # rubocop:disable CyclomaticComplexity
- if Guard::Listener.mac? && Guard::Darwin.usable?
- :notification
- elsif Guard::Listener.linux? && Guard::Linux.usable?
- :notification
- elsif Guard::Listener.windows? && Guard::Windows.usable?
- :notification
- else
- :polling
- end
+ # @return [Integer]
+ def web_port
+ result = options[:port]
+ result ||= Configuration.web_frontend_port
+ result.to_i
+ end
+
+ # @param [String] path
+ # @return [String]
+ def normalize_path(path)
+ File.expand_path(path, Dir.pwd)
end
end
end
end