diff --git a/local/StakeholderOutputVariables.env b/local/StakeholderOutputVariables.env new file mode 100644 index 0000000..27f527a --- /dev/null +++ b/local/StakeholderOutputVariables.env @@ -0,0 +1,23 @@ +################################################### +# Modify these values to suit +################################################### + +############################################################################# +#SET THIS NEXT VARIABLE OR NOTHING WILL WORK!!!! + +export PipelineClientWorkingDir="D:/tsys/@ReachableCEO/DSR-Pipeline-ClientExample/local" + +#SET THE PREVIOUS VARIABLE OR NOTHING WILL WORK!!!! +############################################################################# + +########################################## +# Layout/title page /formatting options +########################################## + +export ReportAuthor="First Middle Last" +export AuthorTagline="Your.Tagline.Here." +export AuthorLogo="" +export SourceCode="https://git.knownelement.com/reachableceo/MarkdownResume-Pipeline" +export URLCOLOR="blue" +export PAGEBACKGROUND="./background3.pdf" +export PANDOC_TEMPLATE="eisvogel" \ No newline at end of file diff --git a/local/demo-data/DemoDSR.md b/local/demo-data/DemoDSR.md new file mode 100644 index 0000000..4053065 --- /dev/null +++ b/local/demo-data/DemoDSR.md @@ -0,0 +1,6 @@ +# Demo Report + +# Time log + +1:00: + - stuff \ No newline at end of file diff --git a/local/dsr-gather/README.md b/local/dsr-gather/README.md new file mode 100644 index 0000000..ce51d7f --- /dev/null +++ b/local/dsr-gather/README.md @@ -0,0 +1,19 @@ +# Data Gathering for the @ReachableCEO daily stakeholder report + +## Introduction + +I'm trying to life a fully instrumented CTO/founder life and #buildInPublic. And unlike most of the founders doing so, I'm actually publishing daily reports and live streaming my workstation all dya. + +I want to automate the instrumentation/reporting process as much as possible to get the highest fidelity information for stakeholders consumption. + +## Data sources + +- Apple Health (exporting via AutoHealthExport) +- Workout (evaluating a cou +- Nutrition +- Daily habit tracking +- ActivityWatch +- WakaAPI + + +## Scripts \ No newline at end of file diff --git a/local/dsr-gather/dsr-gather-gitea.sh b/local/dsr-gather/dsr-gather-gitea.sh new file mode 100644 index 0000000..f352cea --- /dev/null +++ b/local/dsr-gather/dsr-gather-gitea.sh @@ -0,0 +1,83 @@ +#!/bin/bash + +# Script to query Gitea API for a user's activity on a specific date + +######################################################################################################## +#Obtain gitea api key from bitwarden +######################################################################################################## + +#################################### +## Step 0: Set to use tsys server +#################################### +bw logout + +echo "Setting cli to use tsys bitwarden server..." +bw config server https://pwvault.turnsys.com + +#################################### +## Step 1: login to bitwarden +#################################### + +# From: https://bitwarden.com/help/cli/#using-an-api-key + +### Set apikey environment varaible + +echo "Sourcing clientid/apikey data..." +source D:/tsys/secrets/bitwarden/data/apikey-bitwarden-reachableceo + +### Login to vault using apikey... + +echo "Logging in..." +bw login --apikey $BW_CLIENTID $BW_CLIENTSECRET + +### Step 1.1: unlock / save session id + +echo "Unlocking..." +export BW_SESSION="$(bw unlock --passwordenv TSYS_BW_PASSWORD_REACHABLECEO --raw)" + + +### Step 2: retrive a value into an environment variable + +export GITEA_APIKEY="$(bw get password APIKEY-Gitea)" + +######################################################################################################## +# Accrss gitea data +######################################################################################################## + +# Script to query Gitea API for a user's activity on a specific date + +# Usage: ./get_gitea_user_activity.sh [GITEA_URL] [TOKEN] + +# Set username, date, and default Gitea URL +USERNAME="${1:-reachableceo}" # Default to "reachableceo" if not provided +DATE="${2:-$(date +%Y-%m-%d)}" # Default to today's date if not provided +GITEA_URL="${3:-https://git.knownelement.com}" # Default Gitea URL if not provided +TOKEN="${GITEA_APIKEY}" # Use APIKEY-GItea or passed argument + +# API Endpoint for user activities +API_ENDPOINT="$GITEA_URL/api/v1/users/$USERNAME/timeline" + +# Make the API call +if [ -n "$TOKEN" ]; then + # If token is provided, use it in the Authorization header + RESPONSE=$(curl -s -H "Authorization: token $TOKEN" "$API_ENDPOINT") +else + # If no token is provided, make an unauthenticated request + RESPONSE=$(curl -s "$API_ENDPOINT") +fi + +# Check for API errors +if [[ "$RESPONSE" == "Not found" || -z "$RESPONSE" ]]; then + echo "Error: User '$USERNAME' not found, or endpoint is incorrect." + exit 1 +fi + +# Validate JSON response +if ! echo "$RESPONSE" | jq empty >/dev/null 2>&1; then + echo "Error: Invalid JSON response from Gitea API." + echo "Response: $RESPONSE" + exit 1 +fi + +# Filter the activity by date using jq +echo "$RESPONSE" | jq --arg date "$DATE" '[.[] | select(.created_at | startswith($date))]' \ No newline at end of file diff --git a/local/dsr-gather/dsr-gather-joplin-today.sh b/local/dsr-gather/dsr-gather-joplin-today.sh new file mode 100644 index 0000000..943d39a --- /dev/null +++ b/local/dsr-gather/dsr-gather-joplin-today.sh @@ -0,0 +1,59 @@ +#!/bin/bash + +# Functions + +# Search for a note by title and return its ID +search_note() { + local title="$1" + echo "Searching for note with title: $title" + note_id=$(joplin search "$title" --fields id --limit 1 --json | jq -r '.[0].id') + + if [[ -z "$note_id" || "$note_id" == "null" ]]; then + echo "Error: Note with title '$title' not found." + exit 1 + fi + + echo "Found note with ID: $note_id" + echo "$note_id" +} + +# Export the note by ID to the specified directory +export_note() { + local note_id="$1" + local output_dir="$2" + + echo "Exporting note ID: $note_id to directory: $output_dir" + mkdir -p "$output_dir" || { + echo "Error: Unable to create directory $output_dir" + exit 1 + } + + # Export the note with attachments to the specified directory + joplin export "$note_id" --format md --output "$output_dir" || { + echo "Error: Failed to export note ID $note_id" + exit 1 + } + + echo "Note exported successfully to $output_dir" +} + +# Main function +main() { + if [[ $# -lt 2 ]]; then + echo "Usage: $0 " + exit 1 + fi + + local note_title="$1" + local output_dir="$2" + + # Search for the note and get its ID + local note_id + note_id=$(search_note "$note_title") + + # Export the note + export_note "$note_id" "$output_dir" +} + +# Run the main function with all script arguments +main "$@" diff --git a/local/dsr-gather/dsr-gather-redmine.sh b/local/dsr-gather/dsr-gather-redmine.sh new file mode 100644 index 0000000..f352cea --- /dev/null +++ b/local/dsr-gather/dsr-gather-redmine.sh @@ -0,0 +1,83 @@ +#!/bin/bash + +# Script to query Gitea API for a user's activity on a specific date + +######################################################################################################## +#Obtain gitea api key from bitwarden +######################################################################################################## + +#################################### +## Step 0: Set to use tsys server +#################################### +bw logout + +echo "Setting cli to use tsys bitwarden server..." +bw config server https://pwvault.turnsys.com + +#################################### +## Step 1: login to bitwarden +#################################### + +# From: https://bitwarden.com/help/cli/#using-an-api-key + +### Set apikey environment varaible + +echo "Sourcing clientid/apikey data..." +source D:/tsys/secrets/bitwarden/data/apikey-bitwarden-reachableceo + +### Login to vault using apikey... + +echo "Logging in..." +bw login --apikey $BW_CLIENTID $BW_CLIENTSECRET + +### Step 1.1: unlock / save session id + +echo "Unlocking..." +export BW_SESSION="$(bw unlock --passwordenv TSYS_BW_PASSWORD_REACHABLECEO --raw)" + + +### Step 2: retrive a value into an environment variable + +export GITEA_APIKEY="$(bw get password APIKEY-Gitea)" + +######################################################################################################## +# Accrss gitea data +######################################################################################################## + +# Script to query Gitea API for a user's activity on a specific date + +# Usage: ./get_gitea_user_activity.sh [GITEA_URL] [TOKEN] + +# Set username, date, and default Gitea URL +USERNAME="${1:-reachableceo}" # Default to "reachableceo" if not provided +DATE="${2:-$(date +%Y-%m-%d)}" # Default to today's date if not provided +GITEA_URL="${3:-https://git.knownelement.com}" # Default Gitea URL if not provided +TOKEN="${GITEA_APIKEY}" # Use APIKEY-GItea or passed argument + +# API Endpoint for user activities +API_ENDPOINT="$GITEA_URL/api/v1/users/$USERNAME/timeline" + +# Make the API call +if [ -n "$TOKEN" ]; then + # If token is provided, use it in the Authorization header + RESPONSE=$(curl -s -H "Authorization: token $TOKEN" "$API_ENDPOINT") +else + # If no token is provided, make an unauthenticated request + RESPONSE=$(curl -s "$API_ENDPOINT") +fi + +# Check for API errors +if [[ "$RESPONSE" == "Not found" || -z "$RESPONSE" ]]; then + echo "Error: User '$USERNAME' not found, or endpoint is incorrect." + exit 1 +fi + +# Validate JSON response +if ! echo "$RESPONSE" | jq empty >/dev/null 2>&1; then + echo "Error: Invalid JSON response from Gitea API." + echo "Response: $RESPONSE" + exit 1 +fi + +# Filter the activity by date using jq +echo "$RESPONSE" | jq --arg date "$DATE" '[.[] | select(.created_at | startswith($date))]' \ No newline at end of file