Add script for checking for updates for obsidian (only tested on linux mint)
This commit is contained in:
parent
f5abc5a54b
commit
71c14465b2
66
ObsidianUpdateChecker/main.py
Normal file
66
ObsidianUpdateChecker/main.py
Normal file
@ -0,0 +1,66 @@
|
||||
# Import json parsing and urllib
|
||||
import json
|
||||
import urllib.request
|
||||
# Import subprocess for running dpkg
|
||||
import subprocess
|
||||
|
||||
# Endpoint for the latest release
|
||||
API_URL = "https://api.github.com/repos/obsidianmd/obsidian-releases/releases/latest"
|
||||
|
||||
# DEB file name, will be filled in later
|
||||
DEB_NAME = ""
|
||||
# URL for the latest deb file, will be filled in later
|
||||
DEB_URL = ""
|
||||
# Version number, will be filled in later
|
||||
DEB_VERSION = ""
|
||||
# Installed version number, will be filled in later
|
||||
INSTALLED_VERSION = ""
|
||||
|
||||
# Get the latest release from the API
|
||||
with urllib.request.urlopen(API_URL) as url:
|
||||
data = json.loads(url.read().decode())
|
||||
assets = data["assets"]
|
||||
for asset in assets
|
||||
if asset["name"].endswith(".deb"):
|
||||
DEB_NAME = asset["name"]
|
||||
DEB_URL = asset["browser_download_url"]
|
||||
|
||||
# Parse the version number from the deb file name
|
||||
# Example: obsidian_0.12.15_amd64.deb -> 0.12.15
|
||||
DEB_VERSION = DEB_NAME.split("_")[1]
|
||||
|
||||
print("Latest version: " + DEB_VERSION)
|
||||
|
||||
# Get the installed version number by parsing the output of dpkg -s obsidian
|
||||
output = subprocess.run(["dpkg", "-s", "obsidian"], capture_output=True)
|
||||
# Parse the output for the version number
|
||||
# Example: Version: 0.12.15
|
||||
for line in output.stdout.decode().split("\n"):
|
||||
if line.startswith("Version:"):
|
||||
INSTALLED_VERSION = line.split(" ")[1]
|
||||
|
||||
print("Installed version: " + INSTALLED_VERSION)
|
||||
|
||||
def semver_check_new(old, new):
|
||||
# Split the version numbers into arrays of numbers
|
||||
old_split = old.split(".")
|
||||
new_split = new.split(".")
|
||||
# Loop through the numbers
|
||||
for i in range(len(old_split)):
|
||||
# If the new version is higher, return true
|
||||
if int(new_split[i]) > int(old_split[i]):
|
||||
return True
|
||||
# If the new version is the same or lower, return false
|
||||
return False
|
||||
|
||||
# Check if the new version is higher than the installed version
|
||||
if semver_check_new(INSTALLED_VERSION, DEB_VERSION):
|
||||
print("New version available!")
|
||||
# Download the deb file
|
||||
urllib.request.urlretrieve(DEB_URL, DEB_NAME)
|
||||
# Install the deb file
|
||||
subprocess.run(["pkexec", "apt", "install", f"./{DEB_NAME}"])
|
||||
# Remove the deb file
|
||||
subprocess.run(["rm", DEB_NAME])
|
||||
else:
|
||||
print("No new version available")
|
Loading…
Reference in New Issue
Block a user