class LicenseFinder::ErlangmkPackage
def all_parts_valid?
def all_parts_valid? dep_part_valid?(dep_parent) && dep_part_valid?(dep_name) && set?(dep_fetch_method) && dep_repo_valid? && dep_version_valid? && set?(dep_absolute_path) end
def dep_part_valid?(dep_part)
def dep_part_valid?(dep_part) set?(dep_part) && word?(dep_part) end
def dep_repo
def dep_repo @dep_repo ||= dep_repo_unformatted .chomp('.git') .sub('git@github.com:', 'https://github.com/') end
def dep_repo_valid?
def dep_repo_valid? set?(dep_repo_unformatted) && URI.parse(dep_repo) end
def dep_version
def dep_version @dep_version ||= dep_version_unformatted.sub(version_prefix_re, '') end
def dep_version_valid?
def dep_version_valid? return false unless set?(dep_version_unformatted) if dep_version&.match?(version_re) Gem::Version.correct?(dep_version) else dep_version =~ word_dot_re end end
def initialize(dep_string_from_query_deps)
def initialize(dep_string_from_query_deps) @dep_parent, @dep_name, @dep_fetch_method, @dep_repo_unformatted, @dep_version_unformatted, @dep_absolute_path = dep_string_from_query_deps.split raise_invalid(dep_string_from_query_deps) unless all_parts_valid? super( dep_name, dep_version, homepage: dep_repo, install_path: dep_absolute_path ) end
def package_manager
def package_manager 'Erlangmk' end
def raise_invalid(dep_string)
def raise_invalid(dep_string) invalid_dep_message = "'#{dep_string}' does not look like a valid Erlank.mk dependency" valid_dep_example = "A valid dependency example: 'lager: goldrush git https://github.com/DeadZen/goldrush.git 0.1.9 /absolute/path/to/dep'" raise(InvalidErlangmkPackageError, "#{invalid_dep_message}. #{valid_dep_example}") end
def set?(dep_part)
def set?(dep_part) !dep_part.nil? && !dep_part.empty? end
def version_prefix_re
def version_prefix_re @version_prefix_re ||= Regexp.new('^v') end
def version_re
def version_re @version_re ||= Regexp.new('\d+\.\d+\.\d+') end
def word?(dep_part)
def word?(dep_part) dep = dep_part.chomp(':') dep =~ word_re end
def word_dot_re
def word_dot_re @word_dot_re ||= Regexp.new('^[.\w]+$') end
def word_re
def word_re @word_re ||= Regexp.new('^\w+$') end