lib/hackpad/cli/store.rb in hackpad-cli-0.0.7 vs lib/hackpad/cli/store.rb in hackpad-cli-0.1.0
- old
+ new
@@ -3,44 +3,44 @@
require_relative '../cli'
module Hackpad
module Cli
module Store
- extend self
+ module_function
def prepare(config)
@refresh = config[:refresh]
dir = File.join(config[:configdir], config[:workspace])
@pads_dir = File.join(dir, 'pads')
- @list_cache = File.join(dir, 'pads.list')
+ @list_cache = File.join(@pads_dir, 'padlist')
prepare_dirs @pads_dir
end
def prepare_dirs(base)
(Hackpad::Cli::FORMATS + ['meta']).each { |f| FileUtils.mkdir_p File.join(base, f) }
end
def exists?(*path)
- !@refresh && File.exists?(File.join(@pads_dir, *path))
+ !@refresh && File.exist?(File.join(@pads_dir, *path))
end
def save(pad, ext)
File.open(File.join(@pads_dir, ext, pad.id), 'w') do |f|
f.puts pad.content
end
end
- def save_meta(id, options)
+ def save_options(id, options)
File.open(File.join(@pads_dir, 'meta', id), 'w') do |f|
f.puts JSON.pretty_generate(options)
end
end
def save_list(pads)
- File.open(File.join(@pads_dir, 'padlist'), 'w') do |f|
+ File.open(@list_cache, 'w') do |f|
pads.each do |p|
- f.puts "#{p.id} #{p.title}"
+ f.puts "#{p.id} [#{p.cached_at}] #{p.title}"
end
end
end
def read(id, ext)
@@ -52,14 +52,22 @@
file = File.join(@pads_dir, 'meta', id)
JSON.parse File.read(file)
end
def read_list
- File.read(File.join(@pads_dir, 'padlist')).lines.reduce([]) { |a,line|
+ File.read(@list_cache).lines.reduce([]) do |a, line|
/(?<id>[a-zA-Z0-9]*) (\[(?<cached_at>[-a-zA-Z0-9: ]*)\] )?(?<title>.*)/ =~ line
- a << OpenStruct.new( id: id, title: title, cached_at: cached_at )
+ a << OpenStruct.new(id: id, title: title, cached_at: cached_at)
a
- }
+ end
+ end
+
+ def count_pads
+ Dir.glob(File.join(@pads_dir, 'meta', '*')).count
+ end
+
+ def last_refresh
+ File.mtime(@list_cache) if File.exist?(@list_cache)
end
end
end
end