Advertisement
Guest User

Untitled

a guest
May 27th, 2016
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.80 KB | None | 0 0
  1. #!/usr/bin/env ruby
  2.  
  3. if fetched_file_blank? or fetched_file_expired?
  4. fetch!
  5. end
  6.  
  7. write_cached_screenfetch!
  8.  
  9. BEGIN {
  10. COMMAND = 'screenfetch'.freeze
  11. EXPIRATION_TIMEOUT = 5 * 60 # 5 minutes
  12. FETCHED_PATH = File.expand_path('~/.screenfetched').freeze
  13. WRITE_MODE = 'w'.freeze
  14.  
  15. def fetch!
  16. File.open(FETCHED_PATH, WRITE_MODE) do |f|
  17. if f.flock(File::LOCK_EX|File::LOCK_NB)
  18. f.write(`#{COMMAND}`)
  19. f.flush
  20. else
  21. f.flock(File::LOCK_EX)
  22. end
  23.  
  24. f.flock(File::LOCK_UN)
  25. end
  26. end
  27.  
  28. def fetched_file_blank?
  29. !File.exist?(FETCHED_PATH)
  30. end
  31.  
  32. def fetched_file_expired?
  33. Time.now - File.mtime(FETCHED_PATH) > EXPIRATION_TIMEOUT
  34. end
  35.  
  36. def write_cached_screenfetch!
  37. File.open(FETCHED_PATH) do |f|
  38. f.flock(File::LOCK_SH)
  39. puts(f.read)
  40. end
  41. end
  42. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement