aboutsummaryrefslogtreecommitdiff
path: root/main.py
diff options
context:
space:
mode:
Diffstat (limited to 'main.py')
-rwxr-xr-xmain.py57
1 files changed, 50 insertions, 7 deletions
diff --git a/main.py b/main.py
index 3f3f170..d78b26f 100755
--- a/main.py
+++ b/main.py
@@ -1,8 +1,9 @@
#!/usr/bin/python3
import sys
-
+import os
+import subprocess
from config import config
-import graphql_queries, graphql_requests
+import graphql_queries
def print_item(item):
trimmmed_path = item["path"][:17]+"..." if len(item["path"]) > 20 else item["path"]
@@ -29,11 +30,10 @@ def tree():
continue
print_item(item)
-def single():
- if len(sys.argv) < 3:
- print("Usage: ./main.py single <id|path>")
- sys.exit(0)
+def get_single_page():
if not sys.argv[2].isdigit():
+ if sys.argv[2].startswith("/"):
+ sys.argv[2] = sys.argv[2][1:]
found = False
for item in graphql_queries.get_tree()["data"]["pages"]["list"]:
if sys.argv[2] == item["path"]:
@@ -44,12 +44,52 @@ def single():
sys.exit(0)
page_id = int(sys.argv[2])
response = graphql_queries.get_single_page(page_id)
- page = response["data"]["pages"]["single"]
+ return response["data"]["pages"]["single"]
+
+def single():
+ if len(sys.argv) < 3:
+ print("Usage: ./main.py single <id|path>")
+ sys.exit(0)
+ page = get_single_page()
print("-" * 80)
print_item(page)
print("-" * 80)
print(page["content"])
+def edit():
+ # Load content to edit
+ if len(sys.argv) < 3:
+ print("Usage: ./main.py edit <id|path>")
+ sys.exit(0)
+ page = get_single_page()
+ body = page["content"]
+
+ # Open it in editor
+ if "VISUAL" in os.environ:
+ editor = os.environ['VISUAL']
+ else:
+ editor = os.environ['EDITOR']
+ edit_filename = "/tmp/wikijscmd-edit"
+ with open(edit_filename, "w") as f:
+ f.write(body)
+ subprocess.run([editor, edit_filename])
+
+ # Prompt user to save it to the wiki
+ with open(edit_filename, "r") as f:
+ new_body = f.read()
+ print_item(page)
+ print("-" * 80)
+ print(new_body)
+ print("-" * 80)
+ if input("Save changes? (y/n) ") == "y":
+ response = graphql_queries.edit_page(page["id"], new_body, page["title"], page["path"])
+ result = response["data"]["pages"]["update"]["responseResult"]
+ if not result["succeeded"]:
+ print("Error!", result["message"])
+ sys.exit(1)
+ print(result["message"])
+ os.remove(edit_filename)
+
def main():
if len(sys.argv) < 2:
print("Usage: ./main.py <command> <args>")
@@ -57,6 +97,7 @@ def main():
print("\tcreate <path> <title> <content>")
print("\ttree <contains?>")
print("\tsingle <id|path>")
+ print("\tedit <id|path>")
sys.exit(0)
if sys.argv[1] == "create":
@@ -65,6 +106,8 @@ def main():
tree()
elif sys.argv[1] == "single":
single()
+ elif sys.argv[1] == "edit":
+ edit()
else:
print("Unknown command: %s" % sys.argv[1])