1
0
mirror of https://github.com/CMiksche/gitea-auto-update synced 2025-12-10 16:07:23 +01:00
Files
gitea-auto-update/gitea_auto_update/lib/download.py
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

92 lines
2.9 KiB
Python

'''
Gitea Auto Updater
Copyright 2018, 2019, 2020 The Gitea-Auto-Update Authors
All rights reserved.
License: GNU General Public License
'''
import os
import sys
import logging
from shutil import which # from whichcraft import which
import requests
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(url, file_name):
"""Function to download a file"""
# open in binary mode
with open(file_name, "wb") as file:
# get request
response = requests.get(url)
# write to file
file.write(response.content)
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
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')
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 extract_file(self):
"""Extract gitea file"""
logging.info('Download: sha ok, extracting file to location')
# extracting download file
cmd = "xz -d " + self.tmp_xz
os.system(cmd)
# moving temp file to gtfile location
cmd = 'mv ' + self.tmp_dir + 'gitea-' + self.github_version \
+ '-' + self.gt_system + ' ' + self.gt_file
os.system(cmd)
cmd = 'chmod +x ' + self.gt_file
os.system(cmd)
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')
sys.exit()