summary refs log tree commit diff stats
path: root/ganarchy.py
diff options
context:
space:
mode:
Diffstat (limited to 'ganarchy.py')
-rwxr-xr-xganarchy.py33
1 files changed, 26 insertions, 7 deletions
diff --git a/ganarchy.py b/ganarchy.py
index f44a71f..ea93613 100755
--- a/ganarchy.py
+++ b/ganarchy.py
@@ -50,14 +50,19 @@ TEMPLATE = """<!DOCTYPE html>
     </head>
     <body>
         <h1>{{ project_title|e }}</h1>
-        <p>Tracking <span id="project_commit">{{ project_commit }}</span></p>
+        <p>Tracking <span id="project_commit"><a href="web+ganarchy://{{ project_commit }}">{{ project_commit }}</a></span></p>
         <div id="project_body"><p>{{ project_body|e|replace("\n\n", "</p><p>") }}</p></div>
         <ul>
         {% for url, msg, img in repos -%}
             <li><a href="{{ url|e }}">{{ url|e }}</a>: {{ msg|e }}</li>
         {%- endfor %}
         </ul>
-        Powered by <a href="https://ganarchy.autistic.space/">GAnarchy</a>. AGPLv3-licensed. <a href="https://cybre.tech/SoniEx2/ganarchy">Source Code</a>.
+        <p>Powered by <a href="https://ganarchy.autistic.space/">GAnarchy</a>. AGPLv3-licensed. <a href="https://cybre.tech/SoniEx2/ganarchy">Source Code</a>.</p>
+        <p>
+            <a href="/">Main page</a>.
+            <!-- commented out because browsers suck :( -->
+            <!--<a href="{{ base_url|e }}" onclick="event.preventDefault(); navigator.registerProtocolHandler('web+ganarchy', this.href + 'project/%s', 'GAnarchy');">Register web+ganarchy:// handler</a>.-->
+        </p>
     </body>
 </html>
 """
@@ -92,8 +97,8 @@ def initdb():
     c.execute('''CREATE INDEX active_key ON repos (active)''')
     c.execute('''CREATE TABLE repo_history (entry INTEGER PRIMARY KEY ASC AUTOINCREMENT, url TEXT, count INTEGER, head_commit TEXT)''')
     c.execute('''CREATE INDEX url_key ON repo_history (url)''')
-    c.execute('''CREATE TABLE config (git_commit TEXT)''')
-    c.execute('''INSERT INTO config VALUES ('')''')
+    c.execute('''CREATE TABLE config (git_commit TEXT, base_url TEXT)''')
+    c.execute('''INSERT INTO config VALUES ('', '')''')
     conn.commit()
     conn.close()
 
@@ -110,6 +115,16 @@ def set_commit(commit):
     conn.commit()
     conn.close()
 
+@ganarchy.command()
+@click.argument('base-url')
+def set_base_url(base_url):
+    """Sets the GAnarchy instance's base URL"""
+    conn = sqlite3.connect(data_home + "/ganarchy.db")
+    c = conn.cursor()
+    c.execute('''UPDATE config SET base_url=?''', (base_url,))
+    conn.commit()
+    conn.close()
+
 @ganarchy.group()
 def repo():
     """Modifies repos to track"""
@@ -187,8 +202,11 @@ def cron_target():
     subprocess.call(["git", "-C", cache_home, "init", "-q"])
     conn = sqlite3.connect(data_home + "/ganarchy.db")
     c = conn.cursor()
-    c.execute('''SELECT git_commit FROM config''')
-    (project_commit,) = c.fetchone()
+    c.execute('''SELECT git_commit, base_url FROM config''')
+    (project_commit, base_url) = c.fetchone()
+    if not base_url or not project_commit:
+        click.echo("No base URL or project commit specified", err=True)
+        return
     entries = []
     generate_html = []
     for (e, url,) in c.execute("""SELECT max(e), url FROM (SELECT max(T1.entry) e, T1.url FROM repo_history T1
@@ -224,7 +242,8 @@ def cron_target():
                                project_desc   = project_desc,
                                project_body   = project,
                                project_commit = project_commit,
-                               repos          = html_entries))
+                               repos          = html_entries,
+                               base_url       = base_url))
 
 if __name__ == "__main__":
     ganarchy()