module OneGadget::Update
For automatically check update.
Constants
- CACHE_FILE
Path to cache file.
- FREQUENCY
At least 30 days between check for new version.
Public Class Methods
check!()
click to toggle source
Check if new releases have been drafted.
@return [void]
# File lib/one_gadget/update.rb, line 21 def check! return unless need_check? FileUtils.touch(cache_file) OneGadget::Logger.info("Checking for new versions of OneGadget\n" \ "To disable this functionality, do\n$ echo never > #{CACHE_FILE}\n\n") latest = Helper.latest_tag[1..-1] # remove 'v' if Gem::Version.new(latest) <= Gem::Version.new(OneGadget::VERSION) return OneGadget::Logger.info("You have the latest version of OneGadget (#{latest})!\n\n") end # show update message msg = format('A newer version of OneGadget is available (%s --> %s).', OneGadget::VERSION, latest) OneGadget::Logger.ask_update(msg: msg) end
Private Class Methods
cache_file()
click to toggle source
# File lib/one_gadget/update.rb, line 57 def cache_file dir = File.dirname(CACHE_FILE) FileUtils.mkdir_p(dir) unless File.directory?(dir) File.binwrite(CACHE_FILE, '') unless File.exist?(CACHE_FILE) CACHE_FILE rescue Errno::EACCES # prevent dir is not writable nil end
last_check()
click to toggle source
# File lib/one_gadget/update.rb, line 50 def last_check cache = cache_file return Time.now if cache.nil? File.open(cache, &:mtime) end
need_check?()
click to toggle source
check ~/.cache/one_gadget/update
# File lib/one_gadget/update.rb, line 40 def need_check? cache = cache_file # don't check if not CLI return false unless $stdout.tty? return false if cache.nil? # cache file fails, no update check. return false if File.binread(cache).strip == 'never' Time.now >= last_check + FREQUENCY end