Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
wwwanlingxiao
public-apis
Commits
9eaf1895
Commit
9eaf1895
authored
Jan 28, 2018
by
davemachado
Browse files
Update build scripts to pass flake8
parent
e53982f9
Changes
5
Hide whitespace changes
Inline
Side-by-side
.travis.yml
View file @
9eaf1895
...
...
@@ -5,6 +5,10 @@ notifications:
install
:
-
pip install -r build/requirements.txt
before_script
:
# stop the build if there are Python syntax errors or undefined names
-
flake8 . --count --select=E901,E999,F821,F822,F823 --show-source --statistics
# exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide
-
flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics
-
cd build
script
:
-
./main.sh
...
...
build/md2json.py
View file @
9eaf1895
...
...
@@ -10,8 +10,8 @@ def markdown_to_json(filename, anchor):
entries
=
[]
with
open
(
filename
)
as
fp
:
lines
=
(
line
.
rstrip
()
for
line
in
fp
)
lines
=
list
(
line
for
line
in
lines
if
line
\
and
line
.
startswith
(
anchor
)
or
line
.
startswith
(
'| '
))
lines
=
list
(
line
for
line
in
lines
if
line
and
line
.
startswith
(
anchor
)
or
line
.
startswith
(
'| '
))
for
line
in
lines
:
if
line
.
startswith
(
anchor
):
category
=
line
.
split
(
anchor
)[
1
].
strip
()
...
...
@@ -45,5 +45,6 @@ def main():
anchor
=
sys
.
argv
[
2
]
print
(
markdown_to_json
(
sys
.
argv
[
1
],
anchor
))
if
__name__
==
"__main__"
:
main
()
build/requirements.txt
View file @
9eaf1895
flake8>=3.5.0
httplib2==0.9.2
build/validate_format.py
View file @
9eaf1895
#!/usr/bin/env python3
import
json
import
re
import
string
import
sys
anchor
=
'###'
...
...
@@ -24,20 +22,14 @@ errors = []
def
add_error
(
line_num
,
message
):
"""adds an error to the dynamic error list"""
err
=
'(L{:03d}) {}'
.
format
(
line_num
+
1
,
message
)
err
=
'(L{:03d}) {}'
.
format
(
line_num
+
1
,
message
)
errors
.
append
(
err
)
def
check_
format
(
filename
):
def
check_
alphabetical
(
lines
):
"""
validates that each line is formatted correctly,
appending to error list as needed
checks if all entries per section are in alphabetical order based in entry title
"""
with
open
(
filename
)
as
fp
:
lines
=
list
(
line
.
rstrip
()
for
line
in
fp
)
# START Alphabetical Order
category
=
""
sections
=
{}
section_line_num
=
{}
for
line_num
,
line
in
enumerate
(
lines
):
...
...
@@ -54,10 +46,61 @@ def check_format(filename):
for
category
,
entries
in
sections
.
items
():
if
sorted
(
entries
)
!=
entries
:
add_error
(
section_line_num
[
category
],
"{} section is not in alphabetical order"
.
format
(
category
))
# END Alphabetical Order
def
check_entry
(
line_num
,
segments
):
# START Title
title
=
segments
[
index_title
].
upper
()
if
title
.
endswith
(
' API'
):
add_error
(
line_num
,
'Title should not contain "API"'
)
# END Title
# START Description
# first character should be capitalized
char
=
segments
[
index_desc
][
0
]
if
char
.
upper
()
!=
char
:
add_error
(
line_num
,
"first character of description is not capitalized"
)
# last character should not punctuation
char
=
segments
[
index_desc
][
-
1
]
if
char
in
punctuation
:
add_error
(
line_num
,
"description should not end with {}"
.
format
(
char
))
# END Description
# START Auth
# values should conform to valid options only
auth
=
segments
[
index_auth
].
replace
(
'`'
,
''
)
if
auth
not
in
auth_keys
:
add_error
(
line_num
,
"{} is not a valid Auth option"
.
format
(
auth
))
# END Auth
# START HTTPS
# values should conform to valid options only
https
=
segments
[
index_https
]
if
https
not
in
https_keys
:
add_error
(
line_num
,
"{} is not a valid HTTPS option"
.
format
(
https
))
# END HTTPS
# START CORS
# values should conform to valid options only
cors
=
segments
[
index_cors
]
if
cors
not
in
cors_keys
:
add_error
(
line_num
,
"{} is not a valid CORS option"
.
format
(
cors
))
# END CORS
# START Link
# url should be wrapped in '[Go!]()' Markdown syntax
link
=
segments
[
index_link
]
if
not
link
.
startswith
(
'[Go!](http'
)
or
not
link
.
endswith
(
')'
):
add_error
(
line_num
,
'link syntax should be "[Go!](LINK)"'
)
# END Link
def
check_format
(
filename
):
"""
validates that each line is formatted correctly,
appending to error list as needed
"""
with
open
(
filename
)
as
fp
:
lines
=
list
(
line
.
rstrip
()
for
line
in
fp
)
check_alphabetical
(
lines
)
# START Check Entries
num_in_category
=
min_entries_per_section
+
1
category
=
""
category_line
=
0
anchor_re
=
re
.
compile
(
'###\s\S+'
)
for
line_num
,
line
in
enumerate
(
lines
):
...
...
@@ -83,47 +126,10 @@ def check_format(filename):
add_error
(
line_num
,
"each segment must start and end with exactly 1 space"
)
# END Global
segments
=
[
seg
.
strip
()
for
seg
in
segments
]
# START Title
title
=
segments
[
index_title
].
upper
()
if
title
.
endswith
(
' API'
):
add_error
(
line_num
,
'Title should not contain "API"'
)
# END Title
# START Description
# first character should be capitalized
char
=
segments
[
index_desc
][
0
]
if
char
.
upper
()
!=
char
:
add_error
(
line_num
,
"first character of description is not capitalized"
)
# last character should not punctuation
char
=
segments
[
index_desc
][
-
1
]
if
char
in
punctuation
:
add_error
(
line_num
,
"description should not end with {}"
.
format
(
char
))
# END Description
# START Auth
# values should conform to valid options only
auth
=
segments
[
index_auth
].
replace
(
'`'
,
''
)
if
auth
not
in
auth_keys
:
add_error
(
line_num
,
"{} is not a valid Auth option"
.
format
(
auth
))
# END Auth
# START HTTPS
# values should conform to valid options only
https
=
segments
[
index_https
]
if
https
not
in
https_keys
:
add_error
(
line_num
,
"{} is not a valid HTTPS option"
.
format
(
https
))
# END HTTPS
# START CORS
# values should conform to valid options only
cors
=
segments
[
index_cors
]
if
cors
not
in
cors_keys
:
add_error
(
line_num
,
"{} is not a valid CORS option"
.
format
(
cors
))
# END CORS
# START Link
# url should be wrapped in '[Go!]()' Markdown syntax
link
=
segments
[
index_link
]
if
not
link
.
startswith
(
'[Go!](http'
)
or
not
link
.
endswith
(
')'
):
add_error
(
line_num
,
'link syntax should be "[Go!](LINK)"'
)
# END Link
check_entry
(
line_num
,
segments
)
# END Check Entries
def
main
():
num_args
=
len
(
sys
.
argv
)
if
num_args
<
2
:
...
...
build/validate_links.py
View file @
9eaf1895
...
...
@@ -10,12 +10,13 @@ def parse_links(filename):
"""Returns a list of URLs from text file"""
with
open
(
filename
)
as
fp
:
data
=
fp
.
read
()
raw_links
=
re
.
findall
(
\
'http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+'
,
\
data
)
raw_links
=
re
.
findall
(
'http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+'
,
data
)
links
=
[
raw_link
.
replace
(
')'
,
''
)
for
raw_link
in
raw_links
]
return
links
def
validate_links
(
links
):
"""Checks each entry in JSON file for live link"""
print
(
'Validating {} links...'
.
format
(
len
(
links
)))
...
...
@@ -34,6 +35,7 @@ def validate_links(links):
errors
.
append
(
"SOC: {} : {}"
.
format
(
socketerror
,
link
))
return
errors
if
__name__
==
"__main__"
:
num_args
=
len
(
sys
.
argv
)
if
num_args
<
2
:
...
...
@@ -44,4 +46,3 @@ if __name__ == "__main__":
for
err
in
errors
:
print
(
err
)
sys
.
exit
(
1
)
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment