mirror of
https://github.com/CMiksche/gitea-auto-update
synced 2025-12-10 16:07:23 +01:00
Merge pull request #2 from CMiksche/fix/check-version-after-semver
fix: add function to check the versions after semver
This commit is contained in:
42
functions.py
Normal file
42
functions.py
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
import settings
|
||||||
|
import requests
|
||||||
|
import os
|
||||||
|
|
||||||
|
# Function to download a file
|
||||||
|
def download(url, file_name):
|
||||||
|
# open in binary mode
|
||||||
|
with open(file_name, "wb") as file:
|
||||||
|
# get request
|
||||||
|
response = requests.get(url)
|
||||||
|
# write to file
|
||||||
|
file.write(response.content)
|
||||||
|
|
||||||
|
# Function to build the new version from source
|
||||||
|
def buildFromSource(tag):
|
||||||
|
# Change to source dir
|
||||||
|
os.chdir(settings.source_dir)
|
||||||
|
# Checkout master
|
||||||
|
os.system("git checkout master")
|
||||||
|
# Update
|
||||||
|
os.system("git pull")
|
||||||
|
# Checkout relase branch
|
||||||
|
os.system("git checkout "+tag)
|
||||||
|
# Build from source
|
||||||
|
os.system('TAGS="bindata sqlite sqlite_unlock_notify" make generate build')
|
||||||
|
# Move binary
|
||||||
|
os.system("mv gitea "+settings.gtfile)
|
||||||
|
|
||||||
|
# Function to create a list from a version string
|
||||||
|
def getVersionList(string):
|
||||||
|
return list(map(int, string.split('.')))
|
||||||
|
|
||||||
|
# Function to check if there is a new version
|
||||||
|
def checkVersion(new_version, old_version):
|
||||||
|
new_version_list = getVersionList(new_version)
|
||||||
|
old_version_list = getVersionList(old_version)
|
||||||
|
|
||||||
|
for id, val in enumerate(new_version_list):
|
||||||
|
if val > old_version_list[id]:
|
||||||
|
return True
|
||||||
|
|
||||||
|
return None
|
||||||
19
tests.py
Normal file
19
tests.py
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
import functions
|
||||||
|
import unittest
|
||||||
|
|
||||||
|
class Tests(unittest.TestCase):
|
||||||
|
|
||||||
|
def checkSimpleVersion(self):
|
||||||
|
self.assertTrue(functions.checkVersion('1.9.1', '1.9.0'))
|
||||||
|
|
||||||
|
def checkTwoIntVersion(self):
|
||||||
|
self.assertTrue(functions.checkVersion('1.10.0', '1.9.0'))
|
||||||
|
|
||||||
|
def checkFalseVersion(self):
|
||||||
|
self.assertFalse(functions.checkVersion('1.8.0', '1.9.0'))
|
||||||
|
|
||||||
|
def checkSameVersion(self):
|
||||||
|
self.assertFalse(functions.checkVersion('1.9.7', '1.9.7'))
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
unittest.main()
|
||||||
31
updater.py
31
updater.py
@@ -9,30 +9,7 @@ License: GNU General Public License
|
|||||||
import settings
|
import settings
|
||||||
import requests
|
import requests
|
||||||
import os
|
import os
|
||||||
|
import functions
|
||||||
# Function to download a file
|
|
||||||
def download(url, file_name):
|
|
||||||
# open in binary mode
|
|
||||||
with open(file_name, "wb") as file:
|
|
||||||
# get request
|
|
||||||
response = requests.get(url)
|
|
||||||
# write to file
|
|
||||||
file.write(response.content)
|
|
||||||
|
|
||||||
# Function to build the new version from source
|
|
||||||
def buildFromSource(tag):
|
|
||||||
# Change to source dir
|
|
||||||
os.chdir(settings.source_dir)
|
|
||||||
# Checkout master
|
|
||||||
os.system("git checkout master")
|
|
||||||
# Update
|
|
||||||
os.system("git pull")
|
|
||||||
# Checkout relase branch
|
|
||||||
os.system("git checkout "+tag)
|
|
||||||
# Build from source
|
|
||||||
os.system('TAGS="bindata sqlite sqlite_unlock_notify" make generate build')
|
|
||||||
# Move binary
|
|
||||||
os.system("mv gitea "+settings.gtfile)
|
|
||||||
|
|
||||||
# Version from gitea site
|
# Version from gitea site
|
||||||
current_version = requests.get(settings.gtsite).json()['version']
|
current_version = requests.get(settings.gtsite).json()['version']
|
||||||
@@ -44,7 +21,7 @@ github_version_tag = requests.get(settings.gtgithubapiurl).json()['tag_name']
|
|||||||
github_version = github_version_tag[1:]
|
github_version = github_version_tag[1:]
|
||||||
|
|
||||||
# Check if there is a new version
|
# Check if there is a new version
|
||||||
if github_version > current_version:
|
if functions.checkVersion(github_version, current_version):
|
||||||
|
|
||||||
# Stop systemd service
|
# Stop systemd service
|
||||||
os.system("systemctl stop gitea.service")
|
os.system("systemctl stop gitea.service")
|
||||||
@@ -52,7 +29,7 @@ if github_version > current_version:
|
|||||||
# Should the new version be build from source?
|
# Should the new version be build from source?
|
||||||
if settings.build_from_source:
|
if settings.build_from_source:
|
||||||
|
|
||||||
buildFromSource(github_version_tag)
|
functions.buildFromSource(github_version_tag)
|
||||||
|
|
||||||
else:
|
else:
|
||||||
|
|
||||||
@@ -60,7 +37,7 @@ if github_version > current_version:
|
|||||||
gtdownload = 'https://github.com/go-gitea/gitea/releases/download/'+github_version_tag+'/gitea-'+github_version+'-'+settings.gtsystem
|
gtdownload = 'https://github.com/go-gitea/gitea/releases/download/'+github_version_tag+'/gitea-'+github_version+'-'+settings.gtsystem
|
||||||
|
|
||||||
# Download file
|
# Download file
|
||||||
download(gtdownload, settings.gtfile)
|
functions.download(gtdownload, settings.gtfile)
|
||||||
|
|
||||||
# Start systemd service
|
# Start systemd service
|
||||||
os.system("systemctl start gitea.service")
|
os.system("systemctl start gitea.service")
|
||||||
|
|||||||
Reference in New Issue
Block a user