class Trove::CLI
Private Class Methods
exit_on_failure?()
click to toggle source
# File lib/trove/cli.rb, line 109 def self.exit_on_failure? true end
Public Instance Methods
delete(filename = nil)
click to toggle source
# File lib/trove/cli.rb, line 42 def delete(filename = nil) Trove.delete(filename) end
init()
click to toggle source
# File lib/trove/cli.rb, line 8 def init create_file "trove/.keep", "" if File.exist?(".gitignore") contents = <<~EOS # Ignore Trove storage /trove/* !/trove/.keep EOS unless File.read(".gitignore").include?(contents) append_to_file(".gitignore", contents) end else say "Check in trove/.keep and ignore trove/*" end create_file ".trove.yml", <<~EOS storage: s3://my-bucket/trove EOS end
list()
click to toggle source
# File lib/trove/cli.rb, line 47 def list say table( Trove.list, [:filename, :size, :updated_at] ) end
pull(filename = nil)
click to toggle source
# File lib/trove/cli.rb, line 37 def pull(filename = nil) Trove.pull(filename, version: options[:version]) end
push(filename)
click to toggle source
# File lib/trove/cli.rb, line 31 def push(filename) Trove.push(filename) end
version()
click to toggle source
# File lib/trove/cli.rb, line 55 def version say Trove::VERSION end
versions(filename)
click to toggle source
# File lib/trove/cli.rb, line 60 def versions(filename) say table( Trove.versions(filename), [:version, :size, :updated_at] ) end
Private Instance Methods
pluralize(value, str)
click to toggle source
# File lib/trove/cli.rb, line 105 def pluralize(value, str) "#{value} #{value == 1 ? str : "#{str}s"}" end
table(data, columns)
click to toggle source
# File lib/trove/cli.rb, line 69 def table(data, columns) columns.each do |c| if c == :size data.each { |r| r[c] = Utils.human_size(r[c]) } elsif c == :updated_at data.each { |r| r[c] = "#{time_ago(r[c])} ago" } elsif c == :version data.each { |r| r[c] ||= "<none>" } end end column_names = columns.map { |c| c.to_s.sub(/_at\z/, "").upcase } widths = columns.map.with_index { |c, i| [column_names[i].size, data.map { |r| r[c].to_s.size }.max].max } output = String.new("") str = widths.map { |w| "%-#{w}s" }.join(" ") + "\n" output << str % column_names data.each do |row| output << str % columns.map { |c| row[c] } end output end
time_ago(time)
click to toggle source
# File lib/trove/cli.rb, line 91 def time_ago(time) diff = (Time.now - time).round if diff < 60 pluralize(diff, "second") elsif diff < 60 * 60 pluralize((diff / 60.0).floor, "minute") elsif diff < 60 * 60 * 24 pluralize((diff / (60.0 * 60)).floor, "hour") else pluralize((diff / (60.0 * 60 * 24)).floor, "day") end end