From 98b82e680e8b34a3962a427830bd212ee3bfb765 Mon Sep 17 00:00:00 2001
From: Romain J <romain.ordi@gmail.com>
Date: Tue, 19 Jan 2021 11:40:49 +0100
Subject: [PATCH] Update README.rst
feat(setup): add updater to setup
---
Makefile | 2 ++
README.rst | 6 ++++--
tuxbot/setup.py | 38 ++++++++++++++++++++++++++++++++++++++
3 files changed, 44 insertions(+), 2 deletions(-)
diff --git a/Makefile b/Makefile
index b38fe41..9553e34 100644
--- a/Makefile
+++ b/Makefile
@@ -13,6 +13,8 @@ install-dev:
$(VENV)/bin/pip install -r dev.requirements.txt
update:
$(VENV)/bin/pip install --upgrade --force-reinstall .
+update_soft:
+ $(VENV)/bin/pip install --upgrade .
# Blackify code
reformat:
diff --git a/README.rst b/README.rst
index ce7cd26..aa1b513 100644
--- a/README.rst
+++ b/README.rst
@@ -1,4 +1,4 @@
-|image0| |image1| |image2|
+|image0| |image1| |image2| |image3|
.. role:: bash(code)
:language: bash
@@ -87,4 +87,6 @@ To update the whole bot after a :bash:`git pull`, just execute
.. |image0| image:: https://img.shields.io/badge/python-3.8%20%7C%203.9%20%7C%203.10-%23007ec6
.. |image1| image:: https://img.shields.io/badge/dynamic/json?color=%23dfb317&label=issues&query=%24.open_issues_count&suffix=%20open&url=https%3A%2F%2Fgit.gnous.eu%2Fapi%2Fv1%2Frepos%2FGnousEU%2Ftuxbot-bot%2F
-.. |image2| image:: https://img.shields.io/badge/code%20style-black-000000.svg
\ No newline at end of file
+.. |image2| image:: https://img.shields.io/badge/code%20style-black-000000.svg
+.. |image3| image:: https://wakatime.com/badge/github/Rom1-J/tuxbot-bot.svg
+ :target: https://wakatime.com/badge/github/Rom1-J/tuxbot-bot
diff --git a/tuxbot/setup.py b/tuxbot/setup.py
index fc95d6b..46bafbe 100644
--- a/tuxbot/setup.py
+++ b/tuxbot/setup.py
@@ -1,11 +1,14 @@
import argparse
import importlib
+import json
import logging
+import os
import re
import sys
from argparse import Namespace
from pathlib import Path
from typing import Union, List
+from urllib.request import urlopen
from rich.prompt import Prompt, IntPrompt
from rich.console import Console
@@ -13,6 +16,7 @@ from rich.rule import Rule
from rich.style import Style
from rich.traceback import install
+from tuxbot import version_info
from tuxbot.core.config import set_for, set_for_key
from tuxbot.logging import formatter
from tuxbot.core.utils.data_manager import config_dir, app_dir, cogs_data_path
@@ -396,6 +400,30 @@ def basic_setup() -> None:
)
+def update() -> None:
+ response = (
+ urlopen(
+ "https://api.github.com/repos/Rom1-J/tuxbot-bot/commits/master"
+ )
+ .read()
+ .decode("utf-8")
+ )
+
+ json_response = json.loads(response)
+
+ if json_response.get("sha")[:6] == version_info.build:
+ print(
+ "Nothing to update, you can run `tuxbot [instance_name]` "
+ "to start the bot"
+ )
+ else:
+ print(f"Updating to {json_response.get('sha')[:6]}...")
+
+ os.popen("/usr/bin/git pull")
+
+ print("Done!")
+
+
def parse_cli_flags(args: list) -> Namespace:
"""Parser for cli values.
@@ -423,6 +451,12 @@ def parse_cli_flags(args: list) -> Namespace:
nargs="+",
help="Execute setup to additional configs",
)
+ parser.add_argument(
+ "-U",
+ "--update",
+ action="store_true",
+ help="Check for update",
+ )
args = parser.parse_args(args)
@@ -433,6 +467,10 @@ def setup() -> None:
cli_flags = parse_cli_flags(sys.argv[1:])
try:
+ if cli_flags.update:
+ update()
+ sys.exit()
+
# Create a new instance.
level = logging.DEBUG
base_logger = logging.getLogger("tuxbot")