update build process

This commit is contained in:
Nicholas Orlowsky 2023-10-20 00:45:20 -04:00
parent dea773366e
commit b28891adb5
No known key found for this signature in database
GPG key ID: BE7DF0188A405E2B
6 changed files with 87 additions and 10 deletions

1
.gitignore vendored
View file

@ -1 +1,2 @@
anthracite
src/error_pages/

View file

@ -1,6 +1,6 @@
FROM alpine as build-env
RUN apk add --no-cache build-base
RUN apk add --no-cache build-base python3
COPY ./src/ .
RUN make build-release

View file

@ -1,6 +1,7 @@
.PHONY: format lint build build-release build-docker run debug
build:
python3 ./error_gen.py
g++ main.cpp --std=c++20 -g -o ./anthracite
build-release:

75
src/error_gen.py Normal file
View file

@ -0,0 +1,75 @@
# error_gen.py
# Generates default html error pages for Anthracite
import os
version = "0.1.5"
def generate_error_page(error_code, error_title, error_description):
html = f"""<html>
<head><title>{error_title}</title></head>
<body>
<center>
<h1>{error_code} - {error_title}</h1>
<hr>
<p>{error_description}</p>
<p>Anthracite/{version}</p>
<p><small><a href="https://github.com/nickorlow/anthracite">This is Open Source Software</small></a></p>
</center>
</body>
</html>"""
return html
error_codes = {
400: "Bad Request",
401: "Unauthorized",
402: "Payment Required",
403: "Forbidden",
404: "Not Found",
405: "Method Not Allowed",
406: "Not Acceptable",
407: "Proxy Authentication Required",
408: "Request Timeout",
409: "Conflict",
410: "Gone",
411: "Length Required",
412: "Precondition Failed",
413: "Payload Too Large",
414: "URI Too Long",
415: "Unsupported Media Type",
416: "Range Not Satisfiable",
417: "Expectation Failed",
418: "I'm a teapot",
421: "Misdirected Request",
422: "Unprocessable Entity",
423: "Locked",
424: "Failed Dependency",
425: "Too Early",
426: "Upgrade Required",
428: "Precondition Required",
429: "Too Many Requests",
431: "Request Header Fields Too Large",
451: "Unavailable For Legal Reasons",
500: "Internal Server Error",
501: "Not Implemented",
502: "Bad Gateway",
503: "Service Unavailable",
504: "Gateway Timeout",
505: "HTTP Version Not Supported",
506: "Variant Also Negotiates",
507: "Insufficient Storage",
508: "Loop Detected",
510: "Not Extended",
511: "Network Authentication Required"
}
error_dir = './error_pages'
os.makedirs(error_dir, exist_ok=True)
for code, title in error_codes.items():
error_description = error_codes[code]
error_page = generate_error_page(code, title, error_description)
file_path = os.path.join(error_dir, f"{code}.html")
with open(file_path, "w") as file:
file.write(error_page)

View file

@ -1,12 +1,12 @@
<html>
<head><title>Not Found</title></head>
<body>
<center>
<h1>404 - Not Found</h1>
<hr>
<p>Anthracite/0.0.1</p>
<p><small><a href="https://github.com/nickorlow/anthracite"><small>This is Open Source Software</small></a></p>
<p>Not Found</p>
<p>Anthracite/0.1.5</p>
<p><small><a href="https://github.com/nickorlow/anthracite">This is Open Source Software</small></a></p>
</center>
</body>
</html>

View file

@ -1,12 +1,12 @@
<html>
<head><title>Not Found</title></head>
<head><title>Internal Server Error</title></head>
<body>
<center>
<h1>500 - Internal Server Error</h1>
<hr>
<p>Anthracite/0.0.1</p>
<p><a href="https://github.com/nickorlow/anthracite"><small>This is Open Source Software</small></a></p>
<p>Internal Server Error</p>
<p>Anthracite/0.1.5</p>
<p><small><a href="https://github.com/nickorlow/anthracite">This is Open Source Software</small></a></p>
</center>
</body>
</html>