added dependency checking

- Dependency install states will be checked and will be automatically installed if it isn't.
This commit is contained in:
Saw, Hansly Kendrich 2022-09-18 13:44:36 +08:00
parent 87bd857bfb
commit 32c837bfb2
1 changed files with 343 additions and 303 deletions

View File

@ -1,3 +1,36 @@
import os
def check_dependencies():
def check_dependency_aiohttp():
while True:
try:
import aiohttp
except:
os.system('pip3 install aiohttp==3.7.4')
else:
break
def check_dependency_hidapi():
while True:
try:
import hid
except:
os.system('pip3 install hidapi'); os.system('pip3 install hid')
else:
break
def check_dependency_websockets():
while True:
try:
import websockets
except:
os.system('pip3 install websockets')
else:
break
check_dependency_aiohttp(); check_dependency_hidapi(); check_dependency_websockets()
import asyncio
import json
import logging
@ -13,14 +46,14 @@ import hid
from aiohttp import WSMsgType, web
from joydance import JoyDance, PairingState
from joydance.constants import (DEFAULT_CONFIG, JOYDANCE_VERSION,
WsSubprotocolVersion)
from joydance.constants import (DEFAULT_CONFIG, JOYDANCE_VERSION, WsSubprotocolVersion)
from pycon import ButtonEventJoyCon, JoyCon
from pycon.constants import JOYCON_PRODUCT_IDS, JOYCON_VENDOR_ID
logging.getLogger('asyncio').setLevel(logging.WARNING)
def main():
try:
class WsCommand(Enum):
GET_JOYCON_LIST = 'get_joycon_list'
CONNECT_JOYCON = 'connect_joycon'
@ -260,24 +293,20 @@ def save_config(parser):
async def on_startup(app):
print('''
Open http://localhost:32623 in your browser.''')
os.system('clear')
# Check for update
async with aiohttp.ClientSession() as session:
async with session.get('https://api.github.com/repos/redphx/joydance/releases/latest', ssl=False) as resp:
json_body = await resp.json()
latest_version = json_body['tag_name'][1:]
print('Running version {}.'.format(JOYDANCE_VERSION))
print('JoyDance V{}.'.format(JOYDANCE_VERSION))
if JOYDANCE_VERSION != latest_version:
print('\033[93m{}\033[00m'.format('Version {} is available: https://github.com/redphx/joydance'.format(latest_version)))
time.sleep(2)
os.system('open "http://localhost:32623"')
async def html_handler(request):
config = dict((parse_config()).items('joydance'))
@ -343,3 +372,14 @@ app.add_routes([
])
web.run_app(app, port=32623)
except KeyboardInterrupt:
os.system('clear')
return(0)
except TypeError:
os.system('clear')
return(0)
check_dependencies()
main()