class SourceFinder::SourceFileGlobber

Give configuration, finds source file locations by using an inclusion and exclusion glob

Attributes

exclude_files_arr[W]

See README.md for documentation on these configuration parameters.

extra_source_files_arr[W]

See README.md for documentation on these configuration parameters.

source_dirs_arr[W]

See README.md for documentation on these configuration parameters.

source_file_extensions_arr[W]

See README.md for documentation on these configuration parameters.

source_files_exclude_glob[W]

See README.md for documentation on these configuration parameters.

source_files_glob[W]

See README.md for documentation on these configuration parameters.

Public Class Methods

new(globber: Dir) click to toggle source
# File lib/source_finder/source_file_globber.rb, line 20
def initialize(globber: Dir)
  @globber = globber
  @exclude_files_arr = nil
  @source_files_exclude_glob = nil
  @exclude_files_arr = nil
end

Public Instance Methods

arr2glob(arr) click to toggle source
# File lib/source_finder/source_file_globber.rb, line 100
def arr2glob(arr)
  !arr.empty? ? "#{arr.join(',')}," : ''
end
default_source_file_extensions_arr() click to toggle source
# File lib/source_finder/source_file_globber.rb, line 59
def default_source_file_extensions_arr
  %w(swift cpp c html java py clj cljs scala yml sh json)
end
default_source_files_exclude_glob() click to toggle source
# File lib/source_finder/source_file_globber.rb, line 39
def default_source_files_exclude_glob
  '**/vendor/**'
end
doc_file_extensions_arr() click to toggle source
# File lib/source_finder/source_file_globber.rb, line 72
def doc_file_extensions_arr
  @doc_file_extensions_arr ||= %w(md)
end
emacs_lockfile?(filename) click to toggle source
# File lib/source_finder/source_file_globber.rb, line 114
def emacs_lockfile?(filename)
  File.basename(filename) =~ /^\.#/
end
exclude_files_arr() click to toggle source
# File lib/source_finder/source_file_globber.rb, line 43
def exclude_files_arr
  return @exclude_files_arr if @exclude_files_arr

  exclude_garbage(@globber.glob(source_files_exclude_glob))
end
exclude_garbage(files_arr) click to toggle source
# File lib/source_finder/source_file_globber.rb, line 118
def exclude_garbage(files_arr)
  files_arr.reject { |filename| emacs_lockfile?(filename) }.sort.uniq
end
extra_source_files_arr() click to toggle source
# File lib/source_finder/source_file_globber.rb, line 32
def extra_source_files_arr
  @extra_source_files_arr ||=
    (extra_ruby_files_arr + extra_js_files_arr +
     extra_python_files_arr + extra_groovy_files_arr)
    .concat(%w(Dockerfile)).sort.uniq
end
make_extensions_arr(arr_var, default_arr) click to toggle source
# File lib/source_finder/source_file_globber.rb, line 110
def make_extensions_arr(arr_var, default_arr)
  arr_var || default_arr
end
make_files_glob(extra_source_files_arr, dirs_arr, extensions_glob) click to toggle source
# File lib/source_finder/source_file_globber.rb, line 104
def make_files_glob(extra_source_files_arr, dirs_arr, extensions_glob)
  '{' + arr2glob(extra_source_files_arr) + "{*,.*}.{#{extensions_glob}}," +
    File.join("{#{dirs_arr.join(',')}}", '**',
              "{*,.*}.{#{extensions_glob}}") + '}'
end
source_and_doc_file_extensions_arr() click to toggle source
# File lib/source_finder/source_file_globber.rb, line 80
def source_and_doc_file_extensions_arr
  exclude_garbage(doc_file_extensions_arr + source_file_extensions_arr)
end
source_and_doc_file_extensions_glob() click to toggle source
# File lib/source_finder/source_file_globber.rb, line 84
def source_and_doc_file_extensions_glob
  source_and_doc_file_extensions_arr.join(',')
end
source_and_doc_files_glob() click to toggle source
# File lib/source_finder/source_file_globber.rb, line 95
def source_and_doc_files_glob
  make_files_glob(extra_source_files_arr, source_dirs_arr,
                  source_and_doc_file_extensions_glob)
end
source_dirs_arr() click to toggle source
# File lib/source_finder/source_file_globber.rb, line 27
def source_dirs_arr
  @source_dirs_arr ||= (ruby_dirs_arr + js_dirs_arr +
                        python_dirs_arr + groovy_dirs_arr).sort.uniq
end
source_file_extensions_arr() click to toggle source
# File lib/source_finder/source_file_globber.rb, line 63
def source_file_extensions_arr
  @source_file_extensions_arr ||=
    exclude_garbage((ruby_file_extensions_arr +
                     js_file_extensions_arr +
                     python_file_extensions_arr +
                     groovy_file_extensions_arr +
                     default_source_file_extensions_arr))
end
source_file_extensions_glob() click to toggle source
# File lib/source_finder/source_file_globber.rb, line 76
def source_file_extensions_glob
  source_file_extensions_arr.join(',')
end
source_files_arr() click to toggle source
# File lib/source_finder/source_file_globber.rb, line 122
def source_files_arr
  exclude_garbage(@globber.glob(source_files_glob) - exclude_files_arr)
end
source_files_exclude_glob() click to toggle source
# File lib/source_finder/source_file_globber.rb, line 49
def source_files_exclude_glob
  if @exclude_files_arr
    "{#{exclude_files_arr.join(',')}}"
  elsif @source_files_exclude_glob
    @source_files_exclude_glob
  else
    default_source_files_exclude_glob
  end
end
source_files_glob() click to toggle source
# File lib/source_finder/source_file_globber.rb, line 88
def source_files_glob
  glob = @source_files_glob if defined? @source_files_glob
  glob ||
    make_files_glob(extra_source_files_arr, source_dirs_arr,
                    source_file_extensions_glob)
end