Class: Directories

Inherits:
Object
  • Object
show all
Defined in:
lib/bombay.rb

Overview

Retrieves the values found inside $XDG_CONFIG_HOME/user-dirs.dirs.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeDirectories

Returns a new instance of Directories.



71
72
73
74
75
76
77
78
79
80
81
82
83
# File 'lib/bombay.rb', line 71

def initialize
  dirs = if OS.linux?
           xdg_directories
         elsif OS.macos?
           macos_directories
         else
           abort("Unsupported platform.")
         end

  @documents = dirs["DOCUMENTS"]
  @pictures = dirs["PICTURES"]
  @videos = dirs["VIDEOS"]
end

Instance Attribute Details

#documentsObject (readonly)

Returns the value of attribute documents.



35
36
37
# File 'lib/bombay.rb', line 35

def documents
  @documents
end

#picturesObject (readonly)

Returns the value of attribute pictures.



35
36
37
# File 'lib/bombay.rb', line 35

def pictures
  @pictures
end

#videosObject (readonly)

Returns the value of attribute videos.



35
36
37
# File 'lib/bombay.rb', line 35

def videos
  @videos
end

Instance Method Details

#config_directoryObject



37
38
39
# File 'lib/bombay.rb', line 37

def config_directory
  ENV["XDG_CONFIG_HOME"] || File.join(Dir.home, ".config")
end

#macos_directoriesObject



63
64
65
66
67
68
69
# File 'lib/bombay.rb', line 63

def macos_directories
  dirs = {}
  dirs.store("DOCUMENTS", File.join(Dir.home, "Documents"))
  dirs.store("PICTURES", File.join(Dir.home, "Pictures"))
  dirs.store("VIDEOS", File.join(Dir.home, "Movies"))
  dirs
end

#user_dirs_fileObject



45
46
47
# File 'lib/bombay.rb', line 45

def user_dirs_file
  File.join(config_directory, "user-dirs.dirs")
end

#xdg_directoriesObject



49
50
51
52
53
54
55
56
57
58
59
60
61
# File 'lib/bombay.rb', line 49

def xdg_directories
  dirs = {}
  File.open(user_dirs_file).each do |line|
    next if line.start_with?("#")
    next if line.strip.empty?
    
    entry = line.split("=")
    key = xdg_directory_type(entry.first)
    value = entry.last.unquote.expand.strip
    dirs.store(key, value)
  end
  dirs
end

#xdg_directory_type(dir) ⇒ Object



41
42
43
# File 'lib/bombay.rb', line 41

def xdg_directory_type(dir)
  dir.delete_prefix("XDG_").delete_suffix("_DIR")
end