Added Google-style docstrings to all functions and classes in makesite.py and monitor.py with descriptions, argument types, and return values.
58 lines
1.4 KiB
Python
Executable file
58 lines
1.4 KiB
Python
Executable file
#!/usr/bin/env python
|
|
# -*- coding: utf-8 -*-
|
|
|
|
import sys
|
|
import os
|
|
import requests
|
|
import time
|
|
import json
|
|
|
|
|
|
def fread(filename):
|
|
"""Read file and close the file."""
|
|
with open(filename, "r") as f:
|
|
return f.read()
|
|
|
|
|
|
def get_nb_of_comments():
|
|
"""Fetch the total number of comments from Stacosys API.
|
|
|
|
Returns:
|
|
int: Total comment count, or 0 if request fails
|
|
"""
|
|
req_url = params["stacosys_url"] + "/comments/count"
|
|
query_params = dict(
|
|
token=params["stacosys_token"]
|
|
)
|
|
resp = requests.get(url=req_url, params=query_params)
|
|
return 0 if not resp.ok else int(resp.json()["count"])
|
|
|
|
|
|
def exit_program():
|
|
"""Exit the program with status code 0."""
|
|
sys.exit(0)
|
|
|
|
|
|
# Default parameters.
|
|
params = {
|
|
"stacosys_token": "",
|
|
"stacosys_url": "",
|
|
"external_check": "",
|
|
}
|
|
|
|
# If params.json exists, load it.
|
|
if os.path.isfile("params.json"):
|
|
params.update(json.loads(fread("params.json")))
|
|
|
|
external_check_cmd = params["external_check"]
|
|
initial_count = get_nb_of_comments()
|
|
print(f"Comments = {initial_count}")
|
|
while True:
|
|
# check number of comments every 60 seconds
|
|
for _ in range(15):
|
|
time.sleep(60)
|
|
if initial_count != get_nb_of_comments():
|
|
exit_program()
|
|
# check if git repo changed every 15 minutes
|
|
if external_check_cmd and os.system(external_check_cmd):
|
|
exit_program()
|