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:
...
@@ -5,6 +5,10 @@ notifications:
install
:
install
:
-
pip install -r build/requirements.txt
-
pip install -r build/requirements.txt
before_script
:
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
-
cd build
script
:
script
:
-
./main.sh
-
./main.sh
...
...
build/md2json.py
View file @
9eaf1895
...
@@ -10,8 +10,8 @@ def markdown_to_json(filename, anchor):
...
@@ -10,8 +10,8 @@ def markdown_to_json(filename, anchor):
entries
=
[]
entries
=
[]
with
open
(
filename
)
as
fp
:
with
open
(
filename
)
as
fp
:
lines
=
(
line
.
rstrip
()
for
line
in
fp
)
lines
=
(
line
.
rstrip
()
for
line
in
fp
)
lines
=
list
(
line
for
line
in
lines
if
line
\
lines
=
list
(
line
for
line
in
lines
if
line
and
and
line
.
startswith
(
anchor
)
or
line
.
startswith
(
'| '
))
line
.
startswith
(
anchor
)
or
line
.
startswith
(
'| '
))
for
line
in
lines
:
for
line
in
lines
:
if
line
.
startswith
(
anchor
):
if
line
.
startswith
(
anchor
):
category
=
line
.
split
(
anchor
)[
1
].
strip
()
category
=
line
.
split
(
anchor
)[
1
].
strip
()
...
@@ -45,5 +45,6 @@ def main():
...
@@ -45,5 +45,6 @@ def main():
anchor
=
sys
.
argv
[
2
]
anchor
=
sys
.
argv
[
2
]
print
(
markdown_to_json
(
sys
.
argv
[
1
],
anchor
))
print
(
markdown_to_json
(
sys
.
argv
[
1
],
anchor
))
if
__name__
==
"__main__"
:
if
__name__
==
"__main__"
:
main
()
main
()
build/requirements.txt
View file @
9eaf1895
flake8>=3.5.0
httplib2==0.9.2
httplib2==0.9.2
build/validate_format.py
View file @
9eaf1895
#!/usr/bin/env python3
#!/usr/bin/env python3
import
json
import
re
import
re
import
string
import
sys
import
sys
anchor
=
'###'
anchor
=
'###'
...
@@ -24,20 +22,14 @@ errors = []
...
@@ -24,20 +22,14 @@ errors = []
def
add_error
(
line_num
,
message
):
def
add_error
(
line_num
,
message
):
"""adds an error to the dynamic error list"""
"""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
)
errors
.
append
(
err
)
def
check_
format
(
filename
):
def
check_
alphabetical
(
lines
):
"""
"""
validates that each line is formatted correctly,
checks if all entries per section are in alphabetical order based in entry title
appending to error list as needed
"""
"""
with
open
(
filename
)
as
fp
:
lines
=
list
(
line
.
rstrip
()
for
line
in
fp
)
# START Alphabetical Order
category
=
""
sections
=
{}
sections
=
{}
section_line_num
=
{}
section_line_num
=
{}
for
line_num
,
line
in
enumerate
(
lines
):
for
line_num
,
line
in
enumerate
(
lines
):
...
@@ -54,10 +46,61 @@ def check_format(filename):
...
@@ -54,10 +46,61 @@ def check_format(filename):
for
category
,
entries
in
sections
.
items
():
for
category
,
entries
in
sections
.
items
():
if
sorted
(
entries
)
!=
entries
:
if
sorted
(
entries
)
!=
entries
:
add_error
(
section_line_num
[
category
],
"{} section is not in alphabetical order"
.
format
(
category
))
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
# START Check Entries
num_in_category
=
min_entries_per_section
+
1
num_in_category
=
min_entries_per_section
+
1
category
=
""
category_line
=
0
category_line
=
0
anchor_re
=
re
.
compile
(
'###\s\S+'
)
anchor_re
=
re
.
compile
(
'###\s\S+'
)
for
line_num
,
line
in
enumerate
(
lines
):
for
line_num
,
line
in
enumerate
(
lines
):
...
@@ -83,47 +126,10 @@ def check_format(filename):
...
@@ -83,47 +126,10 @@ def check_format(filename):
add_error
(
line_num
,
"each segment must start and end with exactly 1 space"
)
add_error
(
line_num
,
"each segment must start and end with exactly 1 space"
)
# END Global
# END Global
segments
=
[
seg
.
strip
()
for
seg
in
segments
]
segments
=
[
seg
.
strip
()
for
seg
in
segments
]
# START Title
check_entry
(
line_num
,
segments
)
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
# END Check Entries
# END Check Entries
def
main
():
def
main
():
num_args
=
len
(
sys
.
argv
)
num_args
=
len
(
sys
.
argv
)
if
num_args
<
2
:
if
num_args
<
2
:
...
...
build/validate_links.py
View file @
9eaf1895
...
@@ -10,12 +10,13 @@ def parse_links(filename):
...
@@ -10,12 +10,13 @@ def parse_links(filename):
"""Returns a list of URLs from text file"""
"""Returns a list of URLs from text file"""
with
open
(
filename
)
as
fp
:
with
open
(
filename
)
as
fp
:
data
=
fp
.
read
()
data
=
fp
.
read
()
raw_links
=
re
.
findall
(
\
raw_links
=
re
.
findall
(
'http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+'
,
\
'http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+'
,
data
)
data
)
links
=
[
raw_link
.
replace
(
')'
,
''
)
for
raw_link
in
raw_links
]
links
=
[
raw_link
.
replace
(
')'
,
''
)
for
raw_link
in
raw_links
]
return
links
return
links
def
validate_links
(
links
):
def
validate_links
(
links
):
"""Checks each entry in JSON file for live link"""
"""Checks each entry in JSON file for live link"""
print
(
'Validating {} links...'
.
format
(
len
(
links
)))
print
(
'Validating {} links...'
.
format
(
len
(
links
)))
...
@@ -34,6 +35,7 @@ def validate_links(links):
...
@@ -34,6 +35,7 @@ def validate_links(links):
errors
.
append
(
"SOC: {} : {}"
.
format
(
socketerror
,
link
))
errors
.
append
(
"SOC: {} : {}"
.
format
(
socketerror
,
link
))
return
errors
return
errors
if
__name__
==
"__main__"
:
if
__name__
==
"__main__"
:
num_args
=
len
(
sys
.
argv
)
num_args
=
len
(
sys
.
argv
)
if
num_args
<
2
:
if
num_args
<
2
:
...
@@ -44,4 +46,3 @@ if __name__ == "__main__":
...
@@ -44,4 +46,3 @@ if __name__ == "__main__":
for
err
in
errors
:
for
err
in
errors
:
print
(
err
)
print
(
err
)
sys
.
exit
(
1
)
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