JOURNAL = f"{HOME}/Journal/{YEAR}"
SECDEV_LIMITED=os.environ.get('SECDEV_LIMITED')
-
+SECDEV_MESSAGE_TEMPLATES=os.environ.get('SECDEV_MESSAGE_TEMPLATES')
+EPICS=os.environ.get('URL_EPICS')
+MESSAGE_TEMPLATES=os.environ.get('URL_MESSAGE_TEMPLATES')
+OLLAMA=os.environ.get('OLLAMA')
# Helper functions for a consistent experience
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)
+ c.run(f"vi {path}", pty=True)
def folder(c, path):
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")
+ print('Ctrl+G to repeat a search in FF')
@task(vasl)
'''Reconcile time off between reporting systems'''
browse(c, "https://outlook.office.com/calendar/view/month")
code(c, f"{HOME}/src/Learn_RobotFramework_IllinoisPTR")
+ browse(c, "http://go.illinois.edu/techservtimeentry")
-@task(journal)
+@task()
def daily(c):
'''Open daily reminders file for this month'''
code(c, f'{JOURNAL}/{MONTH}-daily.md')
-@task(daily)
+
+@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
+def epics(c):
+ browse(c, EPICS)
+
+
+@task(daily, in_progress, epics)
def status(c):
'''Check on status of priorities'''
+ dash(c)
+ pass
- browse(c, 'https://github.com/orgs/techservicesillinois/projects/10/views/11')
@task
browse(c, 'https://github.com/orgs/techservicesillinois/projects/10/views/5')
# Shared folder for archiving Retro notes
- browse(c, f'{SECDEV_LIMITED}')
-
+ 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')
+
+
+@task
+def message_templates(c):
+ browse(c, MESSAGE_TEMPLATES)
+
+@task
+def ollama(c):
+ print(f'ssh -t {OLLAMA} "ollama run glm-4.7-flash"')
+