X-Git-Url: https://apps.delaporte.us/gitweb/dotfiles.git/blobdiff_plain/9351611814176368a0f45f359335083c61b6a507..62948ab334680d2ea2ce4505faedaf98af0014a2:/files/ts/tasks.py diff --git a/files/ts/tasks.py b/files/ts/tasks.py index d6a6fdc..d51d8ed 100644 --- a/files/ts/tasks.py +++ b/files/ts/tasks.py @@ -1,4 +1,6 @@ # This file is meant to sit in ~ for use from all shells. +# ln -s ~/dotfiles/files/ts/tasks.py ~/tasks.py + from invoke import task from datetime import datetime as dt @@ -7,13 +9,27 @@ import os HOME = os.path.expanduser('~') TODAY = dt.now().strftime('%Y.%m.%d') +MONTH = dt.now().strftime('%m') +YEAR = dt.now().strftime('%Y') +JOURNAL = f"{HOME}/Journal/{YEAR}" + +SECDEV_LIMITED=os.environ.get('SECDEV_LIMITED') +SECDEV_MESSAGE_TEMPLATES=os.environ.get('SECDEV_MESSAGE_TEMPLATES') +BOX_EPICS=os.environ.get('BOX_EPICS') + +# Helper functions for a consistent experience + +@task +def journal(c): + code(c, f'{HOME}/Journal') + def browse(c, url): - c.run(f"firefox {url}") + c.run(f"firefox {url}", asynchronous=True) def code(c, path): - c.run(f"codium {path}") + c.run(f"codium {path}", asynchronous=True) def folder(c, path): @@ -27,10 +43,19 @@ def debug(c): print(result.ok) +@task() +def dash(c): + c.run('wtfutil') + +@task +def calendar_week(c): + browse(c, "https://outlook.office.com/calendar/view/week") + + @task def vasl(c): '''Submit time off''' - c.run(f"firefox https://my.techservices.illinois.edu/vacation/submitdays.asp") + browse(c, "https://my.techservices.illinois.edu/vacation/submitdays.asp") browse(c, "https://outlook.office.com/calendar/view/week") @@ -40,11 +65,26 @@ def timesheets(c): browse(c, "https://outlook.office.com/calendar/view/month") code(c, f"{HOME}/src/Learn_RobotFramework_IllinoisPTR") +@task(journal) +def daily(c): + '''Open daily reminders file for this month''' + code(c, f'{JOURNAL}/{MONTH}-daily.md') -@task + + +@task() +def in_progress(c): + '''Show in progress items on the Kan-Ban board''' + browse(c, 'https://github.com/orgs/techservicesillinois/projects/10/views/11') + + +@task(daily, in_progress) def status(c): '''Check on status of priorities''' - browse('https://github.com/orgs/techservicesillinois/projects/10') + browse(c, BOX_EPICS) + dash(c) + pass + @task @@ -52,15 +92,65 @@ def backlog(c): '''Prep for backlog grooming''' browse(c, 'https://github.com/orgs/techservicesillinois/projects/10/views/7') -JOURNAL = f"{HOME}/Journal" -@task +@task(journal) def retro(c): + '''Prep for team retrospective meeting''' + # Create and open retro notes file retro_file = f'{JOURNAL}/{TODAY}.Retro.md' if(not os.path.exists(retro_file)): c.run(f'{HOME}/envs/jinja/bin/jinja2 -D DATE={TODAY} {JOURNAL}/Retro.Template.md > {retro_file}') - code(c, retro_file) + # Close issues this sprint + browse(c, 'https://github.com/orgs/techservicesillinois/projects/10/views/5') + + # Shared folder for archiving Retro notes + browse(c, SECDEV_LIMITED) + + +@task(journal) +def engagements_ods(c): + '''For recording engagements''' + c.run(f'soffice {JOURNAL}/Data/engagements.ods', asynchronous=True) + # TODO: Launch Jupyter container on this folder as well + +@task +def gather_data(c): + raise NotImplementedError() + # TODO: Add GH command to gather latest data files. + + +@task(engagements_ods) +def wins(c): + '''For recording team wins''' + code(c, f'{JOURNAL}/{YEAR}-Wins.md') + +@task +def co_authors(c): + browse(c, 'https://github.com/orgs/techservicesillinois/projects/10?pane=info') + +@task +def limited(c): + browse(c, SECDEV_LIMITED) + +@task(engagements_ods, calendar_week) +def engage(c): + # Cybersecrity Development Message Templates + browse(c, SECDEV_MESSAGE_TEMPLATES) + + +@task +def juice_shop(c): + '''Run a copy of intentionally vulnerable OWASP Juice Shop web app, for demonstrations''' + c.run('podman run -d -p 3000:3000 bkimminich/juice-shop', asynchronous=True) + print('Visit localhost:3000 for juice shop.') + + +@task +def bookmarks(c): + code(c, f'{JOURNAL}/bookmarks.md') + +