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