# ==================================================================================== # Inputs and configuration inputs: # ==================================================================================== # 🗃️ Base content base: description: Base content repositories: description: Repositories to fetch repositories_batch: description: Repositories to fetch at a time repositories_forks: description: Include forks repositories_affiliations: description: Repositories affiliations repositories_skipped: description: Default skipped repositories users_ignored: description: Default ignored users commits_authoring: description: Identifiers that has been used for authoring commits # ==================================================================================== # 🧱 Core token: description: GitHub Personal Access Token required: true user: description: GitHub username repo: description: GitHub repository committer_token: description: GitHub Token used to commit metrics committer_branch: description: Target branch committer_message: description: Commit message committer_gist: description: Gist id filename: description: Output path markdown: description: Markdown template path markdown_cache: description: Markdown file cache output_action: description: Output action output_condition: description: Output condition optimize: description: Optimization features setup_community_templates: description: Community templates to setup template: description: Template query: description: Query parameters extras_css: description: Extra CSS extras_js: description: Extra JavaScript config_timezone: description: Timezone for dates config_order: description: Plugin order config_twemoji: description: Use twemojis config_gemoji: description: Use GitHub custom emojis config_display: description: Display width (for image output formats) config_animations: description: Use CSS animations config_base64: description: Base64-encoded images config_padding: description: Output padding config_output: description: Output format retries: description: Retries in case of failures (for rendering) retries_delay: description: Delay between each retry (in seconds, for rendering) retries_output_action: description: Retries in case of failures (for output action) retries_delay_output_action: description: Delay between each retry (in seconds, for output action) delay: description: Job delay use_prebuilt_image: description: >- Use pre-built docker image from [GitHub container registry](https://github.com/lowlighter/metrics/pkgs/container/metrics) plugins_errors_fatal: description: Fatal plugin errors debug: description: Debug mode verify: description: SVG validity check debug_flags: description: Debug flags dryrun: description: Dry-run experimental_features: description: Experimental features use_mocked_data: description: Use mocked data instead of live APIs # ==================================================================================== # 📅 Isometric commit calendar plugin_isocalendar: description: Enable isocalendar plugin plugin_isocalendar_duration: description: Time range # ==================================================================================== # 🈷️ Most used languages plugin_languages: description: Enable languages plugin plugin_languages_ignored: description: Ignored languages plugin_languages_skipped: description: Skipped repositories plugin_languages_limit: description: Display limit plugin_languages_threshold: description: Display threshold (percentage) plugin_languages_colors: description: Custom languages colors plugin_languages_aliases: description: Custom languages names plugin_languages_sections: description: Displayed sections plugin_languages_details: description: Additional details plugin_languages_indepth: description: Indepth mode (⚠️ read documentation first) plugin_languages_analysis_timeout: description: Indepth mode - Analysis timeout plugin_languages_categories: description: Indepth mode - Displayed categories (most-used section) plugin_languages_recent_categories: description: Indepth mode - Displayed categories (recently-used section) plugin_languages_recent_load: description: Events to load (recently-used section) plugin_languages_recent_days: description: Events maximum age (day, recently-used section) # ==================================================================================== # 📌 Starred topics plugin_topics: description: Enable topics plugin plugin_topics_mode: description: "Display mode:" plugin_topics_sort: description: "Sorting method:" plugin_topics_limit: description: Display limit # ==================================================================================== # 🌟 Recently starred repositories plugin_stars: description: Enable stars plugin plugin_stars_limit: description: Display limit # ==================================================================================== # 📜 Repository licenses plugin_licenses: description: Enable licenses plugin plugin_licenses_setup: description: Setup command plugin_licenses_ratio: description: Display used licenses ratio plugin_licenses_legal: description: Display permissions, limitations and conditions about licenses # ==================================================================================== # 💡 Coding habits plugin_habits: description: Enable habits plugin plugin_habits_from: description: Events to use plugin_habits_days: description: Event maximum age plugin_habits_facts: description: Toggle midly interesting facts display plugin_habits_charts: description: Toggle charts display plugin_habits_trim: description: Trim unused hours on charts # ==================================================================================== # 🏅 Repository contributors plugin_contributors: description: Enable contributors plugin plugin_contributors_base: description: Base reference (commit, tag, branch, etc.) plugin_contributors_head: description: Head reference (commit, tag, branch, etc.) plugin_contributors_ignored: description: Ignored users plugin_contributors_contributions: description: Toggle number of contributions display plugin_contributors_sections: description: Displayed sections plugin_contributors_categories: description: Configure contribution categories # ==================================================================================== # 🎟️ Follow-up of issues and pull requests plugin_followup: description: Enable followup plugin plugin_followup_sections: description: Displayed sections plugin_followup_indepth: description: Indepth analysis # ==================================================================================== # 🎭 Comment reactions plugin_reactions: description: Enable reactions plugin plugin_reactions_limit: description: Display limit (issues and pull requests comments) plugin_reactions_limit_issues: description: Display limit (issues and pull requests, first comment) plugin_reactions_limit_discussions: description: Display limit (discussions, first comment) plugin_reactions_limit_discussions_comments: description: Display limit (discussions comments) plugin_reactions_days: description: Comments maximum age plugin_reactions_display: description: Display mode plugin_reactions_details: description: Additional details plugin_reactions_ignored: description: Ignored users # ==================================================================================== # 🧑‍🤝‍🧑 People plugin plugin_people: description: Enable people plugin plugin_people_limit: description: Display limit plugin_people_identicons: description: Toggle identicons display plugin_people_size: description: Profile picture display size plugin_people_types: description: Displayed sections (order is respected) plugin_people_thanks: description: Special thanks plugin_people_sponsors_custom: description: Custom sponsors plugin_people_shuffle: description: Shuffle data for varied output # ==================================================================================== # ✨ Stargazers over last weeks plugin_stargazers: description: Enable stargazers plugin # ==================================================================================== # 🗂️ Active projects plugin_projects: description: Enable projects plugin plugin_projects_limit: description: Display limit plugin_projects_repositories: description: List of repositories projects plugin_projects_descriptions: description: Toggle projects descriptions display # ==================================================================================== # ♐ Code snippet of the day plugin_code: description: Enable code plugin plugin_code_lines: description: Display limit for code snippets plugin_code_load: description: Events to load plugin_code_visibility: description: Events visibility plugin_code_skipped: description: Skipped repositories plugin_code_languages: description: Restrict display to specific languages # ==================================================================================== # 📰 Recent activity plugin_activity: description: Enable activity plugin plugin_activity_limit: description: Display limit plugin_activity_load: description: Events to load plugin_activity_days: description: Events maximum age plugin_activity_visibility: description: Events visibility plugin_activity_timestamps: description: Display events timestamps plugin_activity_skipped: description: Skipped repositories plugin_activity_ignored: description: Ignored users plugin_activity_filter: description: Events types # ==================================================================================== # 🏆 Achievements plugin_achievements: description: Enable achievements plugin plugin_achievements_threshold: description: Display rank threshold plugin_achievements_secrets: description: Display secrets achievements plugin_achievements_display: description: Display style plugin_achievements_limit: description: Display limit plugin_achievements_ignored: description: Hide specified achievements plugin_achievements_only: description: Restrict display to specified achievements # ==================================================================================== # 🎩 Notable contributions plugin_notable: description: Enable notable plugin plugin_notable_filter: description: Query filter plugin_notable_skipped: description: Skipped repositories plugin_notable_from: description: Filter by repository owner account type plugin_notable_repositories: description: Toggle repository name display plugin_notable_indepth: description: Indepth mode # ==================================================================================== # 💬 Discussions plugin_discussions: description: Enable discussions plugin plugin_discussions_categories: description: Toggle discussion categories display plugin_discussions_categories_limit: description: Display limit (categories) # ==================================================================================== # 💭 GitHub Community Support plugin_support: description: Enable support plugin # ==================================================================================== # 👨‍💻 Lines of code changed plugin_lines: description: Enable lines plugin plugin_lines_skipped: description: Skipped repositories # ==================================================================================== # 🧮 Repositories traffic plugin_traffic: description: Enable traffic plugin plugin_traffic_skipped: description: Skipped repositories # ==================================================================================== # 📓 Repositories plugin_repositories: description: Enable repositories plugin plugin_repositories_featured: description: List of featured repositories # ==================================================================================== # 🎫 Gists plugin_gists: description: Enable gists plugin # ==================================================================================== # 🙋 Introduction plugin_introduction: description: Display account or repository introduction plugin_introduction_title: description: Display introduction section title # ==================================================================================== # 💕 GitHub Sponsors plugin_sponsors: description: Enable sponsors plugin plugin_sponsors_sections: description: Displayed sections # ==================================================================================== # 💫 Starlists plugin_starlists: description: Enable starlists plugin plugin_starlists_limit: description: Display limit (star lists) plugin_starlists_limit_repositories: description: Display limit (repositories per star list) plugin_starlists_shuffle_repositories: description: Shuffle data for varied outputs plugin_starlists_ignored: description: Skipped star lists plugin_starlists_only: description: Restrict display to specified star lists # ==================================================================================== # 🌇 GitHub Skyline 3D calendar plugin_skyline: description: Enable skyline plugin plugin_skyline_year: description: Displayed year plugin_skyline_frames: description: Frames count plugin_skyline_quality: description: Image quality plugin_skyline_compatibility: description: Compatibility mode # ==================================================================================== # ⏱️ Website performances plugin_pagespeed: description: Enable pagespeed plugin plugin_pagespeed_url: description: Audited website plugin_pagespeed_detailed: description: Detailed results plugin_pagespeed_screenshot: description: Display a website screenshot plugin_pagespeed_token: description: PageSpeed token # ==================================================================================== # 🎼 Music plugin plugin_music: description: Enable music plugin plugin_music_provider: description: Music provider plugin_music_token: description: Music provider token plugin_music_mode: description: Display mode plugin_music_playlist: description: Playlist URL plugin_music_limit: description: Display limit plugin_music_played_at: description: Recently played - Toggle last played timestamp display plugin_music_time_range: description: Top tracks - Time range for `top` mode plugin_music_top_type: description: Top tracks - Display type plugin_music_user: description: Music provider username # ==================================================================================== # 🗨️ StackOverflow plugin plugin_stackoverflow: description: Enable stackoverflow plugin plugin_stackoverflow_user: description: Stackoverflow user id plugin_stackoverflow_sections: description: Displayed sections plugin_stackoverflow_limit: description: Display limit (per section) plugin_stackoverflow_lines: description: Display limit for questions and answers plugin_stackoverflow_lines_snippet: description: Display limit for code snippets # ==================================================================================== # 🌸 Anilist watch list and reading list plugin_anilist: description: Enable aniList plugin plugin_anilist_medias: description: Display medias types plugin_anilist_sections: description: Displayed sections plugin_anilist_limit: description: Display limit (medias) plugin_anilist_limit_characters: description: Display limit (characters) plugin_anilist_shuffle: description: Shuffle data for varied outputs plugin_anilist_user: description: AniList login # ==================================================================================== # 🐤 Latest tweets plugin_tweets: description: Enable tweets plugin plugin_tweets_token: description: Twitter API token plugin_tweets_attachments: description: Display tweets attachments (images, video previews, etc.) plugin_tweets_limit: description: Display limit plugin_tweets_user: description: Twitter username # ==================================================================================== # ✒️ Recent posts plugin_posts: description: Enable posts plugin plugin_posts_source: description: External source plugin_posts_descriptions: description: Toggle posts descriptions display plugin_posts_covers: description: Toggle posts cover images display plugin_posts_limit: description: Display limit plugin_posts_user: description: External source username # ==================================================================================== # 🗼 Rss feed plugin_rss: description: Enable rss plugin plugin_rss_source: description: RSS feed source plugin_rss_limit: description: Display limit # ==================================================================================== # ⏰ WakaTime plugin plugin_wakatime: description: Enable wakatime plugin plugin_wakatime_token: description: WakaTime API token plugin_wakatime_days: description: Time range plugin_wakatime_sections: description: Displayed sections plugin_wakatime_limit: description: Display limit (per graph) plugin_wakatime_url: description: WakaTime url plugin_wakatime_user: description: WakaTime username # ==================================================================================== # 💉 Nightscout plugin_nightscout: description: Enable nightscout plugin plugin_nightscout_url: description: Nightscout URL plugin_nightscout_datapoints: description: Number of datapoints shown the graph plugin_nightscout_lowalert: description: Threshold for low blood sugar plugin_nightscout_highalert: description: Threshold for high blood sugar plugin_nightscout_urgentlowalert: description: Threshold for urgently low blood sugar plugin_nightscout_urgenthighalert: description: Threshold for urgently high blood sugar # ==================================================================================== # 💩 PoopMap plugin plugin_poopmap: description: Enable poopmap plugin plugin_poopmap_token: description: PoopMap API token plugin_poopmap_days: description: Time range # ==================================================================================== # 📸 Website screenshot plugin_screenshot: description: Enable screenshot plugin plugin_screenshot_title: description: Title caption plugin_screenshot_url: description: Website url plugin_screenshot_selector: description: CSS Selector plugin_screenshot_background: description: Display background # ==================================================================================== # 💹 Stock prices plugin_stock: description: Enable stock plugin plugin_stock_token: description: Yahoo Finance token plugin_stock_symbol: description: Company stock symbol plugin_stock_duration: description: Time range (relative to current date) plugin_stock_interval: description: Time interval between points # ==================================================================================== # Action metadata name: Metrics embed author: lowlighter description: An infographics generator with 30+ plugins and 200+ options to display stats about your GitHub account! branding: icon: user-check color: gray-dark # The action will parse its name to check if it's the official action or if it's a forked one # On the official action, it'll use the docker image published on GitHub registry when using a released version, allowing faster runs # On a forked action, it'll rebuild the docker image from Dockerfile to take into account changes you made runs: using: composite steps: - run: | # Create environment file from inputs and GitHub variables echo "::group::Metrics docker image setup" echo "GitHub action: $METRICS_ACTION ($METRICS_ACTION_PATH)" cd $METRICS_ACTION_PATH touch .env for INPUT in $(echo $INPUTS | jq -r 'to_entries|map("INPUT_\(.key|ascii_upcase)=\(.value|@uri)")|.[]'); do echo $INPUT >> .env done env | grep -E '^(GITHUB|ACTIONS|CI|TZ)' >> .env echo "Environment variables: loaded" # Renders output folder METRICS_RENDERS="/metrics_renders" sudo mkdir -p $METRICS_RENDERS echo "Renders output folder: $METRICS_RENDERS" # Source repository (picked from action name) METRICS_SOURCE=$(echo $METRICS_ACTION | sed -E 's/metrics.*?$//g' | sed -E 's/_//g') echo "Source: $METRICS_SOURCE" # Version (picked from package.json) METRICS_VERSION=$(grep -Po '(?<="version": ").*(?=")' package.json) echo "Version: $METRICS_VERSION" # Image tag (extracted from version or from env) METRICS_TAG=v$(echo $METRICS_VERSION | sed -r 's/^([0-9]+[.][0-9]+).*/\1/') echo "Image tag: $METRICS_TAG" # Image name # Official action if [[ $METRICS_SOURCE == "lowlighter" ]]; then # Use registry with pre-built images if [[ ! $METRICS_USE_PREBUILT_IMAGE =~ ^([Ff]alse|[Oo]ff|[Nn]o|0)$ ]]; then # Is released version set +e METRICS_IS_RELEASED=$(expr $(expr match $METRICS_VERSION .*-beta) == 0) set -e echo "Is released version: $METRICS_IS_RELEASED" if [[ "$METRICS_IS_RELEASED" -eq "0" ]]; then METRICS_TAG="$METRICS_TAG-beta" echo "Image tag (updated): $METRICS_TAG" fi METRICS_IMAGE=ghcr.io/lowlighter/metrics:$METRICS_TAG echo "Using pre-built version $METRICS_TAG, will pull docker image from GitHub registry" if ! docker image pull $METRICS_IMAGE; then echo "Failed to fetch docker image from GitHub registry, will rebuild it locally" METRICS_IMAGE=metrics:$METRICS_VERSION fi # Rebuild image else echo "Using an unreleased version ($METRICS_VERSION)" METRICS_IMAGE=metrics:$METRICS_VERSION fi # Forked action else echo "Using a forked version" METRICS_IMAGE=metrics:forked-$METRICS_VERSION fi echo "Image name: $METRICS_IMAGE" # Build image if necessary set +e docker image inspect $METRICS_IMAGE METRICS_IMAGE_NEEDS_BUILD="$?" set -e if [[ "$METRICS_IMAGE_NEEDS_BUILD" -gt "0" ]]; then echo "Image $METRICS_IMAGE is not present locally, rebuilding it from Dockerfile" docker build -t $METRICS_IMAGE . else echo "Image $METRICS_IMAGE is present locally" fi echo "::endgroup::" # Run docker image with current environment docker run --init --volume $GITHUB_EVENT_PATH:$GITHUB_EVENT_PATH --volume $METRICS_RENDERS:/renders --env-file .env $METRICS_IMAGE rm .env shell: bash env: METRICS_ACTION: ${{ github.action }} METRICS_ACTION_PATH: ${{ github.action_path }} METRICS_USE_PREBUILT_IMAGE: ${{ inputs.use_prebuilt_image }} INPUTS: ${{ toJson(inputs) }} TZ: ${{ inputs.config_timezone }}