1
0
mirror of https://github.com/CMiksche/gitea-auto-update synced 2025-12-10 07:57:23 +01:00

29 Commits

Author SHA1 Message Date
Christoph Miksche
52855058fc feat: release new version
Release new version with fix for SELinux
2021-06-15 21:13:45 +02:00
Christoph Daniel Miksche
26efce05b5 Merge pull request #23 from maloo1/patch-1
Changes for SELinux, closes #23
2021-06-15 21:03:56 +02:00
Paul Johnston
c6621fa117 fix: Also cleaning up the build dir 2021-06-16 02:56:03 +08:00
Paul Johnston
d926a19b6c Changed mv to cp to preserve SELinux permissions 2021-06-16 02:37:18 +08:00
Paul Johnston
af7941f10a Change mv to cp to preserve SELinux permissions 2021-06-16 02:27:10 +08:00
Christoph Daniel Miksche
f44d7c8954 Merge pull request #20 from CMiksche/dependabot/add-v2-config-file
Upgrade to GitHub-native Dependabot
2021-04-30 01:11:19 +02:00
dependabot-preview[bot]
4e5df22f2e ci: Upgrade Dependabot
Upgrade to GitHub-native Dependabot
2021-04-30 01:09:44 +02:00
Christoph Miksche
c52491ae2e ci: switch to drone
Switch the CI system from travis to drone

Closes #19
2021-04-20 18:33:52 +02:00
Christoph Daniel Miksche
4f5bd47ea6 docs: update download stats
Change download statistics to pepy.tech (pypistats.org is currently down)
2020-08-13 00:08:35 +02:00
Christoph Miksche
65bfa64517 feat: release new version
There were many changes since the last release.
2020-05-09 21:02:21 +02:00
Christoph Miksche
054999a72e feat: add pre-commit hooks
Add pre-commit hooks for running pylint and gitlint.
2020-05-08 11:42:39 +02:00
Christoph Miksche
b92496fc0d refactor: follow PEP standards
Follow Python Enhancement Proposals and add PyLint to enforce them.
2020-03-27 16:56:05 +01:00
Christoph Daniel Miksche
ae8d54d018 docs: add download stats
Add download statistics from PyPI to README
2020-02-26 21:47:39 +01:00
Christoph Daniel Miksche
72951e8dde docs: update funding methods
Add new funding methods.
2019-12-24 14:58:50 +01:00
Christoph Daniel Miksche
b5b09085b3 docs: create FUNDING.yml
Create a file about possibilities for supporting this project.
2019-11-03 16:59:33 +01:00
Christoph Daniel Miksche
8a58d0d57f feat: gitlint
Add gitlint settings to the master.
2019-09-11 13:53:51 +02:00
Christoph Miksche
cf53f7b9dc docs: update development instructions
Add more instructions for development to the README.md
2019-09-11 13:49:18 +02:00
Christoph Miksche
d0b0374d57 feat: add gitlint
Add gitlint to enforce Angular style commit messages.
2019-09-11 13:39:26 +02:00
Christoph Miksche
0fe58ec95c feat: add gitlint
Add gitlint to enforce Angular style commit messages.

WIP. Doesn't work currently.
2019-09-08 18:58:17 +02:00
Christoph Miksche
fad65bc0be docs: update README.md and .gitignore
- Add development instructions to README.md
- Add the update.log file to .gitignore
2019-09-08 18:49:52 +02:00
Christoph Miksche
480604dce3 docs: add contributor, update version & .gitignore
- Add the new contributor @iwalton3 to the README.md
- Update the version for publishing in PyPI
- Update .gitignore to ignore distribution files
2019-09-04 15:36:33 +02:00
Christoph Daniel Miksche
70b6653b73 Merge pull request #11 from iwalton3/master
Fixes: Make binary executable, fix isTool method signature, handle corrupted binary, and README tweaks.
2019-09-04 15:18:26 +02:00
Ian Walton
bce9a482d7 feat: Update README with working configuration.
The current configuration in the README does not install the update from
the binary. It also instructs the user to use pip instead of pip3, which
is the command to install using the script for python2 on most systems.
2019-09-03 14:31:06 -04:00
Ian Walton
0005c23b38 feat: Handle nonexistent binary.
This patches the version component to return a version of 0.0.0 if it
fails to detect a version. This allows the update script to install the
binary if it does not already exist or is corrupted.
2019-09-03 14:28:35 -04:00
Ian Walton
52bf4cb835 fix: Make downloaded binary executable.
Current gitea releases do not ship with the binary in the archive
executable. This results in the service failing to start after updating.
This commit ensures the binary is always executable.
2019-09-03 14:26:58 -04:00
Ian Walton
ef91988312 fix: Fix exception when updating via binary.
Attempting to update Gitea using the binary mode results in an exception
because `isTool` did not have a `self` parameter. This fixes the issue,
allowing binary updates.
2019-09-03 14:25:44 -04:00
Christoph Miksche
3828e07d90 feat: add restriction for python 3
Add a restriction for python 3 so that installing this software with python 2 isn't possible.

Should fix GH-10.
2019-09-02 13:47:29 +02:00
Christoph Daniel Miksche
d291779fa7 Update README.md 2019-08-26 23:31:36 +02:00
Christoph Daniel Miksche
43778a1b7b Update README.md 2019-08-26 23:18:23 +02:00
17 changed files with 350 additions and 215 deletions

11
.drone.yml Normal file
View File

@@ -0,0 +1,11 @@
kind: pipeline
name: default
steps:
- name: test
image: python
commands:
- pip install pipenv
- pipenv install
- pipenv run gitlint
- pipenv run pylint setup.py gitea_auto_update
- pipenv run python -m unittest

12
.github/FUNDING.yml vendored Normal file
View File

@@ -0,0 +1,12 @@
# These are supported funding model platforms
github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
patreon: cmiksche
open_collective: # Replace with a single Open Collective username
ko_fi: # Replace with a single Ko-fi username
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
liberapay: CMiksche
issuehunt: # Replace with a single IssueHunt username
otechie: # Replace with a single Otechie username
custom: ['https://www.paypal.me/CMiksche', 'https://buymeacoff.ee/WmgU5Sk'] # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']

8
.github/dependabot.yml vendored Normal file
View File

@@ -0,0 +1,8 @@
version: 2
updates:
- package-ecosystem: pip
directory: "/"
schedule:
interval: daily
time: "04:00"
open-pull-requests-limit: 10

4
.gitignore vendored
View File

@@ -2,3 +2,7 @@ __pycache__
.pyc
.idea
Pipfile.lock
dist
build
*.egg-info
update.log

5
.gitlint Normal file
View File

@@ -0,0 +1,5 @@
[general]
contrib=contrib-title-conventional-commits
[contrib-title-conventional-commits]
types = build,ci,docs,feat,fix,perf,refactor,style,test

17
.pre-commit-config.yaml Normal file
View File

@@ -0,0 +1,17 @@
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v2.5.0
hooks:
- id: trailing-whitespace
- id: end-of-file-fixer
- id: check-yaml
- id: check-added-large-files
- repo: https://github.com/PyCQA/pylint
rev: pylint-2.5.0
hooks:
- id: pylint
additional_dependencies: ['packaging', 'requests']
- repo: https://github.com/jorisroovers/gitlint
rev: v0.13.1
hooks:
- id: gitlint

View File

@@ -1,10 +0,0 @@
dist: xenial
language: python
python:
- "3.7"
cache: pip
install:
- pip install pipenv
- pipenv install
script:
- python tests.py

View File

@@ -7,3 +7,4 @@ All good contributions which add a new feature or close a issue will be accepted
1. Commit messages should follow the Angular Commit Message Format: https://github.com/angular/angular/blob/master/CONTRIBUTING.md#commit
2. New features should be added with a new function, if a new function is possible.
3. Test-driven development (TDD) should be followed - this means you should always create unit tests for your function before you create the corresponding function.
4. You should use the linter

View File

@@ -10,6 +10,9 @@ requests = "*"
packaging = "*"
fire = "*"
configparser = "*"
gitlint = "*"
pylint = "*"
pre-commit = "*"
[requires]
python_version = "3.7"
python_version = "3"

View File

@@ -1,6 +1,8 @@
# Gitea Auto Update
[![Build Status](https://travis-ci.org/CMiksche/gitea-auto-update.svg?branch=master)](https://travis-ci.org/CMiksche/gitea-auto-update)
[![Build Status](https://cloud.drone.io/api/badges/CMiksche/gitea-auto-update/status.svg)](https://cloud.drone.io/CMiksche/gitea-auto-update)
[![PyPI version](https://badge.fury.io/py/gitea-auto-update.svg)](https://badge.fury.io/py/gitea-auto-update)
[![Downloads](https://pepy.tech/badge/gitea-auto-update)](https://pepy.tech/project/gitea-auto-update)
Script for a automatic update of gitea. Should be run locally on the gitea server. Has options for updating via new binary file or build from source.
@@ -37,15 +39,15 @@ apiUrl=https://api.github.com/repos/go-gitea/gitea/releases/latest
system=linux-amd64
file=/usr/local/bin/gitea
tmpDir=/tmp/
buildFromSource=None
sourceDir=/home/git/go/src/code.gitea.io/gitea
buildFromSource=
sourceDir=
logFile=update.log
````
Use the following command to install all gitea-auto-update.
Use the following command to install gitea-auto-update.
```
sudo pip install gitea-auto-update
sudo pip3 install gitea-auto-update
```
Enter the command `gite-auto-update --settings=/path/to/settings.ini` in your commandline.
@@ -57,9 +59,28 @@ If you want to schedule your updates, edit your /etc/crontab file.
* English: http://blog.m5e.de/gitea/update/upgrade/bash/script/2018/11/26/gitea-auto-update-script.html
* German: https://blog.wronnay.net/automatische-gitea-updates/
## Development
The following instructions help you for developing.
* Check out the [Contribution Guidelines](CONTRIBUTING.md).
* Clone this git repo
* Install pipenv: `pip install pipenv`
* Install all dependencies: `pipenv install`
* Install git pre-commit hooks (for pylint and gitlint) with `pre-commit install`
* You can run the tests with `python -m unittest`
* After pushing, you should check the build status which currently checks the tests, pylint and the commit message format.
### Notes
The following steps are automatically executed via pre-commit hooks.
* You can run pylint with `pylint gitea_auto_update`
* After changes and commit, you can check if your commit message follows the contribution guidelines with `gitlint`. If there is a problem, gitlint will show you a error message.
## Contributors
- [@Eideen](https://github.com/Eideen)
See https://github.com/CMiksche/gitea-auto-update/graphs/contributors
Thank you for your support!

View File

@@ -1,24 +1,20 @@
'''
Gitea Auto Updater
Copyright 2018, 2019 The Gitea-Auto-Update Authors
Copyright 2018, 2019, 2020 The Gitea-Auto-Update Authors
All rights reserved.
License: GNU General Public License
'''
import os
class Build:
def __init__(self, gtFile, sourceDir):
self.gtFile = gtFile
self.sourceDir = sourceDir
def fromSource(self, tag):
# Function to build the new version from source
os.chdir(self.sourceDir)
def build_from_source(tag, gt_file, source_dir):
"""Function to build the new version from source"""
os.chdir(source_dir)
os.system("git checkout master")
os.system("git pull")
os.system("git checkout " + tag)
os.system('TAGS="bindata sqlite sqlite_unlock_notify" make generate build')
os.system("mv gitea " + self.gtFile)
os.system("cp gitea " + gt_file)
os.system("rm -f gitea")

View File

@@ -1,77 +1,95 @@
'''
Gitea Auto Updater
Copyright 2018, 2019 The Gitea-Auto-Update Authors
Copyright 2018, 2019, 2020 The Gitea-Auto-Update Authors
All rights reserved.
License: GNU General Public License
'''
import requests
import os
import sys
import logging
from shutil import which # from whichcraft import which
import requests
class Download:
def __init__(self, tmpDir, githubVersion, githubVersionTag, gtSystem, gtFile):
if not self.isTool("xz"):
logging.error('Download: missing dependency: xz')
quit()
self.tmpDir = tmpDir
self.githubVersion = githubVersion
self.githubVersionTag = githubVersionTag
self.gtSystem = gtSystem
self.gtFile = gtFile
self.downloadGiteaFiles()
self.checkAndExtract()
def isTool(name):
# Function to check if tool is available
##Check whether `name` is on PATH and marked as executable.
def is_tool(name):
"""Function to check if tool is available"""
# Check whether `name` is on PATH and marked as executable.
return which(name) is not None
def download(self, url, fileName):
# Function to download a file
def download(url, file_name):
"""Function to download a file"""
# open in binary mode
with open(fileName, "wb") as file:
with open(file_name, "wb") as file:
# get request
response = requests.get(url)
# write to file
file.write(response.content)
def downloadGiteaFiles(self):
def sha_check():
"""Check sha for gitea file"""
return os.system("sha256sum -c gitea.xz.sha256 > /dev/null") == 0
class Download:
"""Class for downloading gitea"""
def __init__(self, tmp_dir, github_version_tag, gt_system, gt_file):
if not is_tool("xz"):
logging.error('Download: missing dependency: xz')
sys.exit()
self.tmp_dir = tmp_dir
self.github_version_tag = github_version_tag
self.github_version = self.github_version_tag[1:]
self.gt_system = gt_system
self.gt_file = gt_file
self.download_gitea_files()
self.check_and_extract()
def download_gitea_files(self):
"""Download gitea files"""
# Set download url
gtDownload = 'https://github.com/go-gitea/gitea/releases/download/' + self.githubVersionTag + '/gitea-' + self.githubVersion + '-' + self.gtSystem + '.xz'
logging.info('Download: Gitea file: %s', gtDownload)
shaDownload = gtDownload + '.sha256'
logging.info('Download: SHA file: %s', shaDownload)
gt_download = 'https://github.com/go-gitea/gitea/releases/download/' \
+ self.github_version_tag + '/gitea-' + self.github_version \
+ '-' + self.gt_system + '.xz'
logging.info('Download: Gitea file: %s', gt_download)
sha_download = gt_download + '.sha256'
logging.info('Download: SHA file: %s', sha_download)
# Download file
logging.info('Download: downloading sha256 hashsum')
self.download(shaDownload, self.tmpDir + 'gitea.xz.sha256')
logging.info('Download: downloading %s', self.githubVersionTag + 'gitea.xz')
self.tmpXz = self.tmpDir +'gitea-' + self.githubVersion + '-' + self.gtSystem + '.xz'
self.download(gtDownload, self.tmpXz)
download(sha_download, self.tmp_dir + 'gitea.xz.sha256')
logging.info('Download: downloading %s', self.github_version_tag + 'gitea.xz')
self.tmp_xz = self.tmp_dir + 'gitea-' + self.github_version + '-' + self.gt_system + '.xz'
download(gt_download, self.tmp_xz)
def shaCheck(self):
return os.system("sha256sum -c gitea.xz.sha256 > /dev/null") == 0
def extractFile(self):
def extract_file(self):
"""Extract gitea file"""
logging.info('Download: sha ok, extracting file to location')
# extracting download file
cmd = "xz -d " + self.tmpXz
cmd = "xz -d " + self.tmp_xz
os.system(cmd)
# moving temp file to gtfile location
cmd = 'mv ' + self.tmpDir + 'gitea-' + self.githubVersion + '-' + self.gtSystem + ' ' + self.gtFile
# copying temp file to gtfile location.
# Copying preserves SELinux permissions, see issue #22
cmd = 'cp ' + self.tmp_dir + 'gitea-' + self.github_version \
+ '-' + self.gt_system + ' ' + self.gt_file
os.system(cmd)
# cleaning up tmp file
cmd = 'rm -f ' + self.tmp_dir + 'gitea-' + self.github_version + '-' + self.gt_system
os.system(cmd)
cmd = 'chmod +x ' + self.gt_file
os.system(cmd)
def checkAndExtract(self):
os.chdir(self.tmpDir)
if self.shaCheck():
self.extractFile()
def check_and_extract(self):
"""Check file and extract"""
os.chdir(self.tmp_dir)
if sha_check():
self.extract_file()
else:
logging.error('Download: error: sha256sum failed')
quit()
sys.exit()

View File

@@ -0,0 +1,52 @@
'''
Gitea Auto Updater
Copyright 2019, 2020 The Gitea-Auto-Update Authors
All rights reserved.
License: GNU General Public License
'''
import unittest
import gitea_auto_update.lib.version
VERSION = gitea_auto_update.lib.version
class TestVersion(unittest.TestCase):
"""Test the version class"""
def test_simple_version(self):
"""1.9.1 should be newer than 1.9.0"""
self.assertTrue(VERSION.check_version('1.9.1', '1.9.0'))
def test_two_int_version(self):
"""1.10.0 should be newer than 1.9.0"""
self.assertTrue(VERSION.check_version('1.10.0', '1.9.0'))
def test_false_version(self):
"""1.8.0 should be older than 1.9.0"""
self.assertFalse(VERSION.check_version('1.8.0', '1.9.0'))
def test_same_version(self):
"""1.9.7 should be the same as 1.9.7"""
self.assertFalse(VERSION.check_version('1.9.7', '1.9.7'))
def test_int(self):
"""9 should be newer than 8"""
self.assertTrue(VERSION.check_version('9', '8'))
def test_suffix(self):
"""1.9.0+dev-264-g8de76b6e6 should be newer than 1.8.0"""
self.assertTrue(VERSION.check_version('1.9.0+dev-264-g8de76b6e6', '1.8.0'))
def test_parse_file_version(self):
"""It should get the version from a string"""
string = 'Gitea version 1.8.1 built with go1.12.2 : bindata, sqlite, sqlite_unlock_notify'
self.assertEqual(
VERSION.parse_file_version(string),
'1.8.1'
)
if __name__ == '__main__':
unittest.main()

View File

@@ -1,48 +1,60 @@
'''
Gitea Auto Updater
Copyright 2018, 2019 The Gitea-Auto-Update Authors
Copyright 2018, 2019, 2020 The Gitea-Auto-Update Authors
All rights reserved.
License: GNU General Public License
'''
from packaging import version
import os
import requests
import logging
from packaging import version
import requests
class Version:
def __init__(self, gtSite, gtFile):
self.gtSite = gtSite
self.gtFile = gtFile
def get_github_version_tag(api_url):
"""Get the version from github"""
version_tag = requests.get(api_url).json()['tag_name']
logging.info('Version: github_version_tag = %s', version_tag)
return version_tag
def checkVersion(self, newVersion, oldVersion):
# Function to check if there is a new version
return version.parse(newVersion) > version.parse(oldVersion)
def parseFileVersion(self, string):
def parse_file_version(string):
"""Get the version from a file"""
return string.split(" ")[2]
def getVersionFromFile(self):
versionString = os.popen(self.gtFile + " -v").read()
return self.parseFileVersion(versionString)
def getCurrentVersion(self):
# Function to get the current version
def check_version(new_version, old_version):
"""Function to check if there is a new version"""
return version.parse(new_version) > version.parse(old_version)
class Version:
"""Class to get and check the gitea version"""
def __init__(self, gt_site, gt_file):
self.gt_site = gt_site
self.gt_file = gt_file
def get_version_from_file(self):
"""Read the version from the gitea file"""
version_string = os.popen(self.gt_file + " -v").read()
return parse_file_version(version_string)
def get_current_version(self):
"""Function to get the current version"""
try:
# Try to get the version from the file
currentVersion = self.getVersionFromFile()
except:
current_version = self.get_version_from_file()
except IOError:
# Get the version via the web api if the file does fail
currentVersion = requests.get(self.gtSite).json()['version']
if currentVersion.status_code != 200:
currentVersion = self.getVersionFromFile()
try:
current_version = requests.get(self.gt_site).json()['version']
if current_version.status_code != 200:
raise RuntimeError("Could not download version.") from None
except RuntimeError:
# To allow installation, return a default version of "0.0.0".
current_version = "0.0.0"
finally:
logging.info('Version: current_version = %s', currentVersion)
return currentVersion
def getGithubVersionTag(self, apiUrl):
versionTag = requests.get(apiUrl).json()['tag_name']
logging.info('Version: github_version_tag = %s', versionTag)
return versionTag
logging.info('Version: current_version = %s', current_version)
return current_version

View File

@@ -1,12 +1,13 @@
'''
Gitea Auto Updater
Copyright 2018, 2019 The Gitea-Auto-Update Authors
Copyright 2018, 2019, 2020 The Gitea-Auto-Update Authors
All rights reserved.
License: GNU General Public License
'''
import os
import sys
import logging
import configparser
import fire
@@ -14,68 +15,80 @@ import gitea_auto_update.lib.version
import gitea_auto_update.lib.download
import gitea_auto_update.lib.build
class Update:
"""
Main class to update gitea
"""
def __init__(self, gtSite, gtFile, sourceDir, apiUrl, buildFromSource, tmpDir, gtSystem):
self.gtSite = gtSite
self.gtFile = gtFile
self.sourceDir = sourceDir
self.apiUrl = apiUrl
self.buildFromSource = buildFromSource
self.tmpDir = tmpDir
self.gtSystem = gtSystem
def __init__(self,
config):
self.config = config
self.initVersionAndBuild()
self.getVersionAndTag()
self.checkAndUpdate()
# Get version tag from github and remove first char (v)
self.github_version_tag = gitea_auto_update.lib.version.get_github_version_tag(
config.get('Gitea', 'apiUrl')
)
# Get version from version tag
self.github_version = self.github_version_tag[1:]
def initVersionAndBuild(self):
self.version = gitea_auto_update.lib.version.Version(self.gtSite, self.gtFile)
self.build = gitea_auto_update.lib.build.Build(self.gtFile, self.sourceDir)
self.check_and_update()
def getVersionAndTag(self):
self.currentVersion = self.version.getCurrentVersion() # Version from gitea site
self.githubVersionTag = self.version.getGithubVersionTag(self.apiUrl) # Get version tag from github and remove first char (v)
self.githubVersion = self.githubVersionTag[1:] # Get version from version tag
def do_update(self):
"""Execute the update"""
def doUpdate(self):
if self.buildFromSource: # Should the new version be build from source?
self.build.fromSource(self.githubVersionTag)
# Should the new version be build from source?
if self.config.get('Gitea', 'buildFromSource'):
gitea_auto_update.lib.build.build_from_source(
self.github_version_tag,
self.config.get('Gitea', 'file'),
self.config.get('Gitea', 'sourceDir')
)
else:
self.download = gitea_auto_update.lib.download.Download(self.tmpDir,
self.githubVersion,
self.githubVersionTag,
self.gtSystem,
self.gtFile)
gitea_auto_update.lib.download.Download(
self.config.get('Gitea', 'tmpDir'),
self.github_version_tag,
self.config.get('Gitea', 'system'),
self.config.get('Gitea', 'file')
)
def checkAndUpdate(self):
if self.version.checkVersion(self.githubVersion, self.currentVersion): # Check if there is a new version
def check_and_update(self):
"""Check if a update is possible and do it if it is"""
# Version from gitea site
version = gitea_auto_update.lib.version.Version(
self.config.get('Gitea', 'site'),
self.config.get('Gitea', 'file')
)
current_version = version.get_current_version()
# Check if there is a new version
if gitea_auto_update.lib.version.check_version(self.github_version, current_version):
logging.info('Update: new version available, stopping service')
os.system("systemctl stop gitea.service")
self.doUpdate()
self.do_update()
logging.info('Update: starting gitea.service')
os.system("systemctl start gitea.service")
print("update successfully")
else:
print("current version is uptodate")
def updater(settings='settings.ini'):
"""Get the config and set logging"""
# Config
config = configparser.ConfigParser()
config.read(settings)
# Create a log file
logging.basicConfig(filename=config.get('Gitea', 'logFile'), level=logging.DEBUG)
# Start update
Update(config.get('Gitea', 'site'),
config.get('Gitea', 'file'),
config.get('Gitea', 'sourceDir'),
config.get('Gitea', 'apiUrl'),
config.get('Gitea', 'buildFromSource'),
config.get('Gitea', 'tmpDir'),
config.get('Gitea', 'system'))
Update(config)
def main():
"""Main func"""
if not sys.version_info[0] == 3:
sys.exit("Sorry, Python 2 is not supported. Please update to Python 3.")
fire.Fire(updater)
if __name__ == '__main__':
main()

View File

@@ -1,12 +1,21 @@
'''
Gitea Auto Updater
Copyright 2018, 2019, 2020 The Gitea-Auto-Update Authors
All rights reserved.
License: GNU General Public License
'''
import setuptools
with open("README.md", "r") as fh:
long_description = fh.read()
LONG_DESCRIPTION = fh.read()
setuptools.setup(name='gitea_auto_update',
version='2.0.5',
setuptools.setup(
name='gitea_auto_update',
version='2.0.9',
description='A script which can update gitea to a new version.',
long_description=long_description,
long_description=LONG_DESCRIPTION,
long_description_content_type="text/markdown",
url='https://github.com/CMiksche/gitea-auto-update',
author='Christoph Miksche',
@@ -18,6 +27,7 @@ setuptools.setup(name='gitea_auto_update',
"Operating System :: Unix",
],
keywords=['gitea', 'update', 'debian', 'linux'],
python_requires='>=3',
install_requires=[
'requests',
'packaging',

View File

@@ -1,38 +0,0 @@
'''
Gitea Auto Updater
Copyright 2019 The Gitea-Auto-Update Authors
All rights reserved.
License: GNU General Public License
'''
import gitea_auto_update.lib.version
import unittest
version = gitea_auto_update.lib.version.Version('', '')
class Tests(unittest.TestCase):
def testSimpleVersion(self):
self.assertTrue(version.checkVersion('1.9.1', '1.9.0'))
def testTwoIntVersion(self):
self.assertTrue(version.checkVersion('1.10.0', '1.9.0'))
def testFalseVersion(self):
self.assertFalse(version.checkVersion('1.8.0', '1.9.0'))
def testSameVersion(self):
self.assertFalse(version.checkVersion('1.9.7', '1.9.7'))
def testInt(self):
self.assertTrue(version.checkVersion('9', '8'))
def testSuffix(self):
self.assertTrue(version.checkVersion('1.9.0+dev-264-g8de76b6e6', '1.8.0'))
def testParseFileVersion(self):
self.assertEqual(version.parseFileVersion('Gitea version 1.8.1 built with go1.12.2 : bindata, sqlite, sqlite_unlock_notify'), '1.8.1')
if __name__ == '__main__':
unittest.main()