@GeorgyPy

Как проверить программу на новые обновлении и обновить?

Доброго времени суток! Столкнулся с такой проблемой ):
У меня есть программа написана на click, мне не удобно пользоваться стандартными средствами Windows и я не хочу вписывать кучу не понятны команд из CMD, принял решение написать свою команду для терминала Windows чтоб можно было создать любой проект прямо в терминале например: Flask, React Natavi или electron.js ну или пустой проект в таком случае создастся пустая папка.

Проблема
Я хочу сделать проверку обновления и в случае нового обновления я мог обновиться в писав определённую команду.
Но я не знаю как это сделать ):

Мои предположения
У меня появилась такая мысль что это происходит следующим способом: проект находиться в GitHub а Python скрипт проверяет Git на наличие обновлений файлов и если файлы в GitHub обновились то при вводе какой-то команды появлялось предупреждение о том что можно обновиться на более новую версию и обновить эту программу как и в команды PIP.

Подскажите пожалуйста как мне это сделать?
Ваша помощь для меня всё, возможно в будущем этой программой будут пользоваться и другие программисты!
  • Вопрос задан
  • 175 просмотров
Пригласить эксперта
Ответы на вопрос 1
worldlight
@worldlight
Просто программист
советую вам собрать вашу программу как PyPi библиотеку, сделать sh команду для терминала для проверки обновлений. В вашем github репозитории создайте файл version в него запишите актуальную версию вашей библиотеки, далее в методе который будет вызываться при выполнении вашей команды для проверки обновлений сделайте проверку установленной версии библиотеки на соответствие с той что записана в version на github. Советую использовать GitHub Raw. Ниже дам пример кода для проверки обновлений из файла version на Github, с исполльзованием Github Raw
import pkg_resources
import httpx
import subprocess
import sys
import os

installed_v = pkg_resources.get_distribution("sfmanager").version
v = httpx.get("https://raw.githubusercontent.com/username/library/main/version")

if v.status_code == 200:
	value_v = v.text[0:]
	if str(installed_v) == str(value_v):
		logger.success("No update required")
	else:
		logger.info("Downloading an update using pip")

		subprocess.check_call([sys.executable, "-m", "pip", "install", "library==" + value_v])
		logger.success("library updated, changes will take effect after restart")

                os.chdir(os.path.join(pkg_resources.get_distribution("library").location, "sfmanager"))

где library - название вашей библиотеки ну думаю вы с этим разберетесь
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы