added: pyhton cli tool
This commit is contained in:
parent
02f5223c52
commit
a47a5364c4
|
@ -0,0 +1,75 @@
|
|||
import io
|
||||
import json
|
||||
import subprocess
|
||||
import urllib.parse
|
||||
import os
|
||||
|
||||
def listnotes(filter = ""):
|
||||
for i in reversed(range(len(data))):
|
||||
if filter in data[i]["title"]:
|
||||
print("[" + str(i) + "]", data[i]["title"])
|
||||
|
||||
def readtextfile(path):
|
||||
with io.open(path, mode = "r", encoding = "utf-8") as f:
|
||||
return f.read()
|
||||
|
||||
def writetextfile(path, content):
|
||||
with io.open(path, mode = "w", encoding = "utf-8") as f:
|
||||
f.write(content)
|
||||
|
||||
settings = json.loads(readtextfile("settings.json"))
|
||||
|
||||
if os.path.isfile("data/backupdata.acs"):
|
||||
os.remove("data/backupdata.acs")
|
||||
|
||||
subprocess.call(["curl", "-s", "-X", "POST", "-F", "action=fetch", "-F", "password=" + settings["password"], "-o", "data/backupdata.acs", settings["url"] + "/handler.php"])
|
||||
subprocess.call([settings["commands"]["gpg"], "-q", "--yes", "--output", "data/backupdata.json", "--decrypt", "data/backupdata.acs"])
|
||||
|
||||
data = json.loads(readtextfile("data/backupdata.json"))
|
||||
|
||||
command = "list"
|
||||
while not (command == "quit" or command == "exit" or command == "q"):
|
||||
|
||||
if command == "list":
|
||||
listnotes()
|
||||
elif command.split()[0] == "find":
|
||||
searchstring = command.replace("find ", "")
|
||||
listnotes(searchstring)
|
||||
else:
|
||||
try:
|
||||
index = int(command)
|
||||
note = data[index]
|
||||
content = note["content"]
|
||||
|
||||
writetextfile("data/backupnote.md", content)
|
||||
writetextfile("data/note.md", content)
|
||||
|
||||
subprocess.call(settings["commands"]["editor"] + ["data/note.md"])
|
||||
newcontent = readtextfile("data/note.md")
|
||||
|
||||
if newcontent != content:
|
||||
|
||||
listnotes()
|
||||
subprocess.call(["diff", "--color", "data/backupnote.md", "data/note.md"])
|
||||
|
||||
note["content"] = newcontent
|
||||
data.remove(note)
|
||||
data.insert(0, note)
|
||||
|
||||
writetextfile("data/data.json", json.dumps(data))
|
||||
|
||||
subprocess.call([settings["commands"]["gpg"], "-q", "--encrypt", "--yes", "--trust-model", "always", "--output", "data/data.acs", "--armor", "-r", settings["gpguser"], "data/data.json"]);
|
||||
newdata = readtextfile("data/data.acs")
|
||||
|
||||
postdata = "action=push&password=" + settings["password"] + "&data=" + urllib.parse.quote_plus(newdata)
|
||||
|
||||
writetextfile("data/postdata", postdata)
|
||||
|
||||
subprocess.call(["curl", "-s", "-X", "POST", "-d", "@data/postdata", settings["url"] + "/handler.php"])
|
||||
else:
|
||||
print("no change")
|
||||
|
||||
except:
|
||||
print("error with command " + command)
|
||||
|
||||
command = input("> ")
|
|
@ -0,0 +1,10 @@
|
|||
{
|
||||
"url": "http://localhost:8000",
|
||||
"password": "",
|
||||
"gpguser": "",
|
||||
"commands":
|
||||
{
|
||||
"editor": ["vim"],
|
||||
"gpg": "gpg"
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue