56 lines
1.2 KiB
Ruby
56 lines
1.2 KiB
Ruby
module Gitlab
|
|
class Gitignore
|
|
FILTER_REGEX = /\.gitignore\z/.freeze
|
|
|
|
def initialize(path)
|
|
@path = path
|
|
end
|
|
|
|
def name
|
|
File.basename(@path, '.gitignore')
|
|
end
|
|
|
|
def content
|
|
File.read(@path)
|
|
end
|
|
|
|
class << self
|
|
def all
|
|
languages_frameworks + global
|
|
end
|
|
|
|
def find(key)
|
|
file_name = "#{key}.gitignore"
|
|
|
|
directory = select_directory(file_name)
|
|
directory ? new(File.join(directory, file_name)) : nil
|
|
end
|
|
|
|
def global
|
|
files_for_folder(global_dir).map { |file| new(File.join(global_dir, file)) }
|
|
end
|
|
|
|
def languages_frameworks
|
|
files_for_folder(gitignore_dir).map { |file| new(File.join(gitignore_dir, file)) }
|
|
end
|
|
|
|
private
|
|
|
|
def select_directory(file_name)
|
|
[gitignore_dir, global_dir].find { |dir| File.exist?(File.join(dir, file_name)) }
|
|
end
|
|
|
|
def global_dir
|
|
File.join(gitignore_dir, 'Global')
|
|
end
|
|
|
|
def gitignore_dir
|
|
Rails.root.join('vendor/gitignore')
|
|
end
|
|
|
|
def files_for_folder(dir)
|
|
Dir.glob("#{dir.to_s}/*.gitignore").map { |file| file.gsub(FILTER_REGEX, '') }
|
|
end
|
|
end
|
|
end
|
|
end
|