Fixes #15: Long Program Name (#16)

* fix: fixes long language issue

* fix: removed reduant line
This commit is contained in:
Jovial Joe Jayarson 2020-07-22 15:39:59 +05:30 committed by GitHub
parent c487876563
commit fd7a6214c1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

30
main.py
View File

@ -4,10 +4,10 @@ WakaTime progress visualizer
import re import re
import os import os
import sys
import base64 import base64
import datetime import datetime
import requests import requests
import sys
from github import Github, GithubException from github import Github, GithubException
START_COMMENT = '<!--START_SECTION:waka-->' START_COMMENT = '<!--START_SECTION:waka-->'
@ -19,13 +19,15 @@ waka_key = os.getenv('INPUT_WAKATIME_API_KEY')
ghtoken = os.getenv('INPUT_GH_TOKEN') ghtoken = os.getenv('INPUT_GH_TOKEN')
show_title = os.getenv("INPUT_SHOW_TITLE") show_title = os.getenv("INPUT_SHOW_TITLE")
def this_week() -> str: def this_week() -> str:
'''Returns a week's streak''' '''Returns a week streak'''
week_end = datetime.datetime.today() - datetime.timedelta(days=1) week_end = datetime.datetime.today() - datetime.timedelta(days=1)
week_start = week_end - datetime.timedelta(days=7) week_start = week_end - datetime.timedelta(days=7)
print("Week's header Created") print("Week header created")
return f"Week: {week_start.strftime('%d %B, %Y')} - {week_end.strftime('%d %B, %Y')}" return f"Week: {week_start.strftime('%d %B, %Y')} - {week_end.strftime('%d %B, %Y')}"
def make_graph(percent: float) -> str: def make_graph(percent: float) -> str:
'''Make progress graph from API graph''' '''Make progress graph from API graph'''
done_block = '' done_block = ''
@ -38,18 +40,22 @@ def get_stats() -> str:
'''Gets API data and returns markdown progress''' '''Gets API data and returns markdown progress'''
data = requests.get( data = requests.get(
f"https://wakatime.com/api/v1/users/current/stats/last_7_days?api_key={waka_key}").json() f"https://wakatime.com/api/v1/users/current/stats/last_7_days?api_key={waka_key}").json()
try: try:
lang_data = data['data']['languages'] lang_data = data['data']['languages']
except KeyError: except KeyError:
print("Please Add your Wakatime API Key to the Repository Secrets") print("Please Add your WakaTime API Key to the Repository Secrets")
sys.exit(1) sys.exit(1)
data_list = [] data_list = []
for l in lang_data[:5]: pad = len(max([l['name'] for l in lang_data[:5]], key=len))
ln = len(l['name']) for lang in lang_data[:5]:
ln_text = len(l['text']) lth = len(lang['name'])
fmt_percent = format(l['percent'], '0.2f').zfill(5) # to provide a neat finish. ln_text = len(lang['text'])
# following line provides a neat finish
fmt_percent = format(lang['percent'], '0.2f').zfill(5)
data_list.append( data_list.append(
f"{l['name']}{' '*(12-ln)}{l['text']}{' '*(20-ln_text)}{make_graph(l['percent'])} {fmt_percent} %") f"{lang['name']}{' '*(pad + 3 - lth)}{lang['text']}{' '*(16 - ln_text)}{make_graph(lang['percent'])} {fmt_percent} %")
print("Graph Generated") print("Graph Generated")
data = ' \n'.join(data_list) data = ' \n'.join(data_list)
if show_title == 'true': if show_title == 'true':
@ -66,7 +72,7 @@ def decode_readme(data: str) -> str:
return str(decoded_bytes, 'utf-8') return str(decoded_bytes, 'utf-8')
def generate_new_readme(stats: str, readme: str) ->str: def generate_new_readme(stats: str, readme: str) -> str:
'''Generate a new Readme.md''' '''Generate a new Readme.md'''
stats_in_readme = f"{START_COMMENT}\n{stats}\n{END_COMMENT}" stats_in_readme = f"{START_COMMENT}\n{stats}\n{END_COMMENT}"
return re.sub(listReg, stats_in_readme, readme) return re.sub(listReg, stats_in_readme, readme)
@ -84,5 +90,5 @@ if __name__ == '__main__':
rdmd = decode_readme(contents.content) rdmd = decode_readme(contents.content)
new_readme = generate_new_readme(stats=waka_stats, readme=rdmd) new_readme = generate_new_readme(stats=waka_stats, readme=rdmd)
if new_readme != rdmd: if new_readme != rdmd:
repo.update_file(path=contents.path, message='Updated with Dev Metrics', content=new_readme, sha=contents.sha, branch='master') repo.update_file(path=contents.path, message='Updated with Dev Metrics',
content=new_readme, sha=contents.sha, branch='master')