#!/usr/bin/env ruby if fetched_file_blank? or fetched_file_expired? fetch! end write_cached_screenfetch! BEGIN { COMMAND = 'screenfetch'.freeze EXPIRATION_TIMEOUT = 5 * 60 # 5 minutes FETCHED_PATH = File.expand_path('~/.screenfetched').freeze WRITE_MODE = 'w'.freeze def fetch! File.open(FETCHED_PATH, WRITE_MODE) do |f| if f.flock(File::LOCK_EX|File::LOCK_NB) f.write(`#{COMMAND}`) f.flush else f.flock(File::LOCK_EX) end f.flock(File::LOCK_UN) end end def fetched_file_blank? !File.exist?(FETCHED_PATH) end def fetched_file_expired? Time.now - File.mtime(FETCHED_PATH) > EXPIRATION_TIMEOUT end def write_cached_screenfetch! File.open(FETCHED_PATH) do |f| f.flock(File::LOCK_SH) puts(f.read) end end }