diff --git a/Client.py b/Client.py new file mode 100644 index 0000000..5d9fdf6 --- /dev/null +++ b/Client.py @@ -0,0 +1,12 @@ +class Client(object): + def get_last_diff(self): + return None + + def create_issue(self, issue): + return [201, None] + + def close_issue(self, issue): + return 200 + + def get_issue_url(self, new_issue_number): + return "N/A" diff --git a/GitHubClient.py b/GitHubClient.py index 0c56049..4e3dc28 100644 --- a/GitHubClient.py +++ b/GitHubClient.py @@ -1,8 +1,9 @@ import os import requests import json +from Client import Client -class GitHubClient(object): +class GitHubClient(Client): """Basic client for getting the last diff and managing issues.""" existing_issues = [] milestones = [] diff --git a/LocalClient.py b/LocalClient.py index adbb912..4c8df17 100644 --- a/LocalClient.py +++ b/LocalClient.py @@ -1,7 +1,8 @@ import subprocess import os +from Client import Client -class LocalClient(object): +class LocalClient(Client): def __init__(self): self.diff_url = None self.commits = ['placeholder'] # content doesn't matter, just length @@ -31,12 +32,3 @@ class LocalClient(object): def get_last_diff(self): return subprocess.run(['git', 'diff', f'{self.base_ref}..{self.sha}'], stdout=subprocess.PIPE).stdout.decode('latin-1') - - def create_issue(self, issue): - return [201, None] - - def close_issue(self, issue): - return 200 - - def get_issue_url(self, new_issue_number): - return "N/A" diff --git a/main.py b/main.py index f73f9b1..049dc57 100644 --- a/main.py +++ b/main.py @@ -10,18 +10,20 @@ import operator from collections import defaultdict from TodoParser import TodoParser from LineStatus import LineStatus +from Client import Client from LocalClient import LocalClient from GitHubClient import GitHubClient if __name__ == "__main__": + client: Client | None = None # Try to create a basic client for communicating with the remote version control server, automatically initialised with environment variables. try: # try to build a GitHub client client = GitHubClient() except EnvironmentError: # don't immediately give up - client = None + pass # if needed, fall back to using a local client for testing client = client or LocalClient()