diff --git a/build/main.sh b/build/main.sh index e3af7e03..74d1566c 100755 --- a/build/main.sh +++ b/build/main.sh @@ -1,8 +1,6 @@ #!/bin/bash - echo "running format validation..." -./validate.rb ../README.md - +./validate_format.rb ../README.md if [[ $? != 0 ]]; then echo "format validation failed!" exit $? @@ -12,5 +10,11 @@ fi if [ "$TRAVIS_BRANCH" == "master" ]; then echo "running link validation..." - awesome_bot ../README.md --allow-ssl --allow 403,302 + ./validate_links.rb ../README.md + if [[ $? != 0 ]]; then + echo "link validation failed!" + exit $? + else + echo "link validation passed!" + fi fi diff --git a/build/validate_format.rb b/build/validate_format.rb new file mode 100755 index 00000000..820ef7d2 --- /dev/null +++ b/build/validate_format.rb @@ -0,0 +1,45 @@ +#!/usr/bin/env ruby +auth_keys = ['apiKey', 'OAuth', 'X-Mashape-Key', 'No'] +https_keys = ['Yes', 'No'] +args = ARGV +filename = args[0] +fail_flag = false +File.foreach(filename).with_index do |line, line_num| + line_num += 1 + if line.start_with?('|') + # Skip table schema lines + if line.eql? "|---|---|---|---|---|\n" + next + end + values = line.split("|") + # Check Description to make sure first character is capitalized + desc_val = values[2].lstrip.chop + if !/[[:upper:]]/.match(desc_val[0]) + puts "(#{line_num}) Invalid Description (first char not uppercase): #{desc_val}" + fail_flag = true + end + # Check Auth values to conform to valid options only + auth_val = values[3].lstrip.chop.tr('``', '') + if !auth_keys.include?(auth_val) + puts "(#{line_num}) Invalid Auth (not a valid option): #{auth_val}" + fail_flag = true + end + # Check HTTPS Support values to be either "Yes" or "No" + https_val = values[4].lstrip.chop + if !https_keys.include?(https_val) + puts "(#{line_num}) Invalid HTTPS: (must use \"Yes\" or \"No\"): #{https_val}" + fail_flag = true + end + # Check Link to ensure url is wrapped in "[Go!]" view + link_val = values[5].lstrip.chop + if !link_val.start_with?("[Go!](") || !link_val.end_with?(')') + puts "(#{line_num}) Invalid Link: (format should be \"[Go!]()\"): #{link_val}" + fail_flag = true + end + end +end +if fail_flag + exit(1) +else + exit(0) +end diff --git a/build/validate_links.rb b/build/validate_links.rb new file mode 100755 index 00000000..813f1c16 --- /dev/null +++ b/build/validate_links.rb @@ -0,0 +1,33 @@ +#!/usr/bin/env ruby +require 'faraday' +require 'uri' +allowed_codes = [200, 302, 403] +args = ARGV +filename = args[0] +fail_flag = false +contents = File.open(filename, 'rb') { |f| f.read } +links = URI.extract(contents, ['http', 'https']) +dup = links.select{|element| links.count(element) > 1 } +if dup.uniq.length > 0 + dup.uniq.each do |link| + if link.end_with?(')') + puts link[0...-1] + end + end + exit(1) +end +links.each do |link| + if link.end_with?(')') + link = link[0...-1] + end + res = Faraday.get(link) + if !allowed_codes.include?(res.status) + puts "(#{res.status}): #{link}" + fail_flag = true + end +end +if fail_flag + exit(1) +else + exit(0) +end