diff options
Diffstat (limited to 'lib/object_dirs_helper.rb')
| -rw-r--r-- | lib/object_dirs_helper.rb | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/lib/object_dirs_helper.rb b/lib/object_dirs_helper.rb new file mode 100644 index 0000000..e175a03 --- /dev/null +++ b/lib/object_dirs_helper.rb @@ -0,0 +1,39 @@ +require 'pathname' + +class ObjectDirsHelper + class << self + def all_attributes + { + "GIT_ALTERNATE_OBJECT_DIRECTORIES" => absolute_alt_object_dirs, + "GIT_ALTERNATE_OBJECT_DIRECTORIES_RELATIVE" => relative_alt_object_dirs, + "GIT_OBJECT_DIRECTORY" => absolute_object_dir, + "GIT_OBJECT_DIRECTORY_RELATIVE" => relative_object_dir + } + end + + def absolute_object_dir + ENV['GIT_OBJECT_DIRECTORY'] + end + + def relative_object_dir + relative_path(absolute_object_dir) + end + + def absolute_alt_object_dirs + ENV['GIT_ALTERNATE_OBJECT_DIRECTORIES'].to_s.split(File::PATH_SEPARATOR) + end + + def relative_alt_object_dirs + absolute_alt_object_dirs.map { |dir| relative_path(dir) }.compact + end + + private + + def relative_path(absolute_path) + return if absolute_path.nil? + + repo_dir = Dir.pwd + Pathname.new(absolute_path).relative_path_from(Pathname.new(repo_dir)).to_s + end + end +end |
