# ==================================================================================== # Inputs and configuration inputs: # ==================================================================================== # đŸ—ƒī¸ Base content base: description: Base content default: base_indepth: description: Indepth mode default: base_hireable: description: Show `Available for hire!` in header section default: base_skip: description: Skip base content default: repositories: description: Fetched repositories default: repositories_batch: description: Fetched repositories per query default: repositories_forks: description: Include forks default: repositories_affiliations: description: Repositories affiliations default: repositories_skipped: description: Default skipped repositories default: users_ignored: description: Default ignored users default: commits_authoring: description: Identifiers that has been used for authoring commits default: # ==================================================================================== # 🧱 Core token: description: GitHub Personal Access Token required: true user: description: GitHub username default: repo: description: GitHub repository default: committer_token: description: GitHub Token used to commit metrics default: ${{ github.token }} committer_branch: description: Target branch default: committer_message: description: Commit message default: committer_gist: description: Gist id default: filename: description: Output path default: markdown: description: Markdown template path default: markdown_cache: description: Markdown file cache default: output_action: description: Output action default: output_condition: description: Output condition default: optimize: description: Optimization features default: setup_community_templates: description: Community templates to setup default: template: description: Template default: query: description: Query parameters default: extras_css: description: Extra CSS default: extras_js: description: Extra JavaScript default: github_api_rest: description: GitHub REST API endpoint default: github_api_graphql: description: GitHub GraphQL API endpoint default: config_timezone: description: Timezone for dates default: "" config_order: description: Plugin order default: config_twemoji: description: Use twemojis default: config_gemoji: description: Use GitHub custom emojis default: config_octicon: description: Use GitHub octicons default: config_display: description: Display width (for image output formats) default: config_animations: description: Use CSS animations default: config_base64: description: Base64-encoded images default: config_padding: description: Output padding default: config_output: description: Output format default: config_presets: description: Configuration presets default: "" retries: description: Retries in case of failures (for rendering) default: retries_delay: description: Delay between each retry (in seconds, for rendering) default: retries_output_action: description: Retries in case of failures (for output action) default: retries_delay_output_action: description: Delay between each retry (in seconds, for output action) default: clean_workflows: description: Clean previous workflows jobs default: delay: description: Job delay default: quota_required_rest: description: Minimum GitHub REST API requests quota required to run default: quota_required_graphql: description: Minimum GitHub GraphQL API requests quota required to run default: quota_required_search: description: Minimum GitHub Search API requests quota required to run default: notice_releases: description: Notice about new releases of metrics default: use_prebuilt_image: description: >- Use pre-built docker image from [GitHub container registry](https://github.com/lowlighter/metrics/pkgs/container/metrics) default: yes plugins_errors_fatal: description: Fatal plugin errors default: debug: description: Debug mode default: verify: description: SVG validity check default: debug_flags: description: Debug flags default: debug_print: description: Print output in console default: dryrun: description: Dry-run default: experimental_features: description: Experimental features default: use_mocked_data: description: Use mocked data instead of live APIs default: # ==================================================================================== # 📅 Isometric commit calendar plugin_isocalendar: description: Enable isocalendar plugin default: plugin_isocalendar_duration: description: Time range default: # ==================================================================================== # đŸˆˇī¸ Languages activity plugin_languages: description: Enable languages plugin default: plugin_languages_ignored: description: Ignored languages default: plugin_languages_skipped: description: Skipped repositories default: plugin_languages_limit: description: Display limit default: plugin_languages_threshold: description: Display threshold (percentage) default: plugin_languages_other: description: Group unknown, ignored and over-limit languages into "Other" category default: plugin_languages_colors: description: Custom languages colors default: plugin_languages_aliases: description: Custom languages names default: plugin_languages_sections: description: Displayed sections default: plugin_languages_details: description: Additional details default: plugin_languages_indepth: description: Indepth mode default: plugin_languages_indepth_custom: description: Indepth mode - Custom repositories default: plugin_languages_analysis_timeout: description: Indepth mode - Analysis timeout default: plugin_languages_analysis_timeout_repositories: description: Indepth mode - Analysis timeout (repositories) default: plugin_languages_categories: description: Indepth mode - Displayed categories (most-used section) default: plugin_languages_recent_categories: description: Indepth mode - Displayed categories (recently-used section) default: plugin_languages_recent_load: description: Indepth mode - Events to load (recently-used section) default: plugin_languages_recent_days: description: Indepth mode - Events maximum age (day, recently-used section) default: # ==================================================================================== # ✨ Stargazers plugin_stargazers: description: Enable stargazers plugin default: plugin_stargazers_days: description: Time range default: plugin_stargazers_charts: description: Charts default: plugin_stargazers_charts_type: description: Charts display type default: plugin_stargazers_worldmap: description: Stargazers worldmap default: plugin_stargazers_worldmap_token: description: Stargazers worldmap token default: plugin_stargazers_worldmap_sample: description: Stargazers worldmap sample default: # ==================================================================================== # 👨‍đŸ’ģ Lines of code changed plugin_lines: description: Enable lines plugin default: plugin_lines_skipped: description: Skipped repositories default: plugin_lines_sections: description: Displayed sections default: plugin_lines_repositories_limit: description: Display limit default: plugin_lines_history_limit: description: Years to display default: # ==================================================================================== # 📌 Starred topics plugin_topics: description: Enable topics plugin default: plugin_topics_mode: description: Display mode default: plugin_topics_sort: description: Sorting method default: plugin_topics_limit: description: Display limit default: # ==================================================================================== # 🌟 Recently starred repositories plugin_stars: description: Enable stars plugin default: plugin_stars_limit: description: Display limit default: # ==================================================================================== # 📜 Repository licenses plugin_licenses: description: Enable licenses plugin default: plugin_licenses_setup: description: Setup command default: plugin_licenses_ratio: description: Used licenses ratio default: plugin_licenses_legal: description: Permissions, limitations and conditions about used licenses default: # ==================================================================================== # 💡 Coding habits and activity plugin_habits: description: Enable habits plugin default: plugin_habits_from: description: Events to use default: plugin_habits_skipped: description: Skipped repositories default: plugin_habits_days: description: Event maximum age default: plugin_habits_facts: description: Mildly interesting facts default: plugin_habits_charts: description: Charts default: plugin_habits_charts_type: description: Charts display type default: plugin_habits_trim: description: Trim unused hours on charts default: plugin_habits_languages_limit: description: Display limit (languages) default: plugin_habits_languages_threshold: description: Display threshold (percentage) default: # ==================================================================================== # 🏅 Repository contributors plugin_contributors: description: Enable contributors plugin default: plugin_contributors_base: description: Base reference default: plugin_contributors_head: description: Head reference default: plugin_contributors_ignored: description: Ignored users default: plugin_contributors_contributions: description: Contributions count default: plugin_contributors_sections: description: Displayed sections default: plugin_contributors_categories: description: Contribution categories default: # ==================================================================================== # đŸŽŸī¸ Follow-up of issues and pull requests plugin_followup: description: Enable followup plugin default: plugin_followup_sections: description: Displayed sections default: plugin_followup_indepth: description: Indepth analysis default: plugin_followup_archived: description: Include archived repositories default: # ==================================================================================== # 🎭 Comment reactions plugin_reactions: description: Enable reactions plugin default: plugin_reactions_limit: description: Display limit (issues and pull requests comments) default: plugin_reactions_limit_issues: description: Display limit (issues and pull requests, first comment) default: plugin_reactions_limit_discussions: description: Display limit (discussions, first comment) default: plugin_reactions_limit_discussions_comments: description: Display limit (discussions comments) default: plugin_reactions_days: description: Comments maximum age default: plugin_reactions_display: description: Display mode default: plugin_reactions_details: description: Additional details default: plugin_reactions_ignored: description: Ignored users default: # ==================================================================================== # 🧑‍🤝‍🧑 People plugin_people: description: Enable people plugin default: plugin_people_limit: description: Display limit default: plugin_people_identicons: description: Force identicons pictures default: plugin_people_identicons_hide: description: Hide identicons pictures default: plugin_people_size: description: Profile picture display size default: plugin_people_types: description: Displayed sections default: plugin_people_thanks: description: Special thanks default: plugin_people_sponsors_custom: description: Custom sponsors default: plugin_people_shuffle: description: Shuffle data default: # ==================================================================================== # 💝 GitHub Sponsorships plugin_sponsorships: description: Enable sponsorships plugin default: plugin_sponsorships_sections: description: Displayed sections default: plugin_sponsorships_size: description: Profile picture display size default: # ==================================================================================== # 💕 GitHub Sponsors plugin_sponsors: description: Enable sponsors plugin default: plugin_sponsors_sections: description: Displayed sections default: plugin_sponsors_past: description: Past sponsorships default: plugin_sponsors_size: description: Profile picture display size default: plugin_sponsors_title: description: Title caption default: # ==================================================================================== # 📓 Featured repositories plugin_repositories: description: Enable repositories plugin default: plugin_repositories_featured: description: Featured repositories default: plugin_repositories_pinned: description: Pinned repositories default: plugin_repositories_starred: description: Featured most starred repositories default: plugin_repositories_random: description: Featured random repositories default: plugin_repositories_order: description: Featured repositories display order default: plugin_repositories_forks: description: Include repositories forks default: plugin_repositories_affiliations: description: Repositories affiliations default: # ==================================================================================== # đŸ’Ŧ Discussions plugin_discussions: description: Enable discussions plugin default: plugin_discussions_categories: description: Discussion categories default: plugin_discussions_categories_limit: description: Display limit (categories) default: # ==================================================================================== # đŸ’Ģ Star lists plugin_starlists: description: Enable starlists plugin default: plugin_starlists_limit: description: Display limit (star lists) default: plugin_starlists_limit_repositories: description: Display limit (repositories per star list) default: plugin_starlists_languages: description: Star lists languages statistics default: plugin_starlists_limit_languages: description: Display limit (languages per star list) default: plugin_starlists_languages_ignored: description: Ignored languages in star lists default: plugin_starlists_languages_aliases: description: Custom languages names in star lists default: plugin_starlists_shuffle_repositories: description: Shuffle data default: plugin_starlists_ignored: description: Skipped star lists default: plugin_starlists_only: description: Showcased star lists default: # ==================================================================================== # 📆 Commit calendar plugin_calendar: description: Enable calendar plugin default: plugin_calendar_limit: description: Years to display default: # ==================================================================================== # 🏆 Achievements plugin_achievements: description: Enable achievements plugin default: plugin_achievements_threshold: description: Rank threshold filter default: plugin_achievements_secrets: description: Secrets achievements default: plugin_achievements_display: description: Display style default: plugin_achievements_limit: description: Display limit default: plugin_achievements_ignored: description: Ignored achievements default: plugin_achievements_only: description: Showcased achievements default: # ==================================================================================== # 🎩 Notable contributions plugin_notable: description: Enable notable plugin default: plugin_notable_filter: description: Query filter default: plugin_notable_skipped: description: Skipped repositories default: plugin_notable_from: description: Repository owner account type filter default: plugin_notable_repositories: description: Repository name default: plugin_notable_indepth: description: Indepth mode default: plugin_notable_types: description: Contribution types filter default: plugin_notable_self: description: Include own repositories default: # ==================================================================================== # 📰 Recent activity plugin_activity: description: Enable activity plugin default: plugin_activity_limit: description: Display limit default: plugin_activity_load: description: Events to load default: plugin_activity_days: description: Events maximum age default: plugin_activity_visibility: description: Events visibility default: plugin_activity_timestamps: description: Events timestamps default: plugin_activity_skipped: description: Skipped repositories default: plugin_activity_ignored: description: Ignored users default: plugin_activity_filter: description: Events types default: # ==================================================================================== # 🧮 Repositories traffic plugin_traffic: description: Enable traffic plugin default: plugin_traffic_skipped: description: Skipped repositories default: # ==================================================================================== # ♐ Random code snippet plugin_code: description: Enable code plugin default: plugin_code_lines: description: Display limit (lines per code snippets) default: plugin_code_load: description: Events to load default: plugin_code_days: description: Events maximum age default: plugin_code_visibility: description: Events visibility default: plugin_code_skipped: description: Skipped repositories default: plugin_code_languages: description: Showcased languages default: # ==================================================================================== # đŸŽĢ Gists plugin_gists: description: Enable gists plugin default: # ==================================================================================== # đŸ—‚ī¸ GitHub projects plugin_projects: description: Enable projects plugin default: plugin_projects_limit: description: Display limit default: plugin_projects_repositories: description: Featured repositories projects default: plugin_projects_descriptions: description: Projects descriptions default: # ==================================================================================== # 🙋 Introduction plugin_introduction: description: Enable introduction plugin default: plugin_introduction_title: description: Section title default: # ==================================================================================== # 🌇 GitHub Skyline plugin_skyline: description: Enable skyline plugin default: plugin_skyline_year: description: Displayed year default: plugin_skyline_frames: description: Frames count default: plugin_skyline_quality: description: Image quality default: plugin_skyline_compatibility: description: Compatibility mode default: plugin_skyline_settings: description: Advanced settings default: # ==================================================================================== # 💭 GitHub Community Support plugin_support: description: Enable support plugin default: # ==================================================================================== # âąī¸ Google PageSpeed plugin_pagespeed: description: Enable pagespeed plugin default: plugin_pagespeed_token: description: PageSpeed token default: plugin_pagespeed_url: description: Audited website default: plugin_pagespeed_detailed: description: Detailed results default: plugin_pagespeed_screenshot: description: Website screenshot default: plugin_pagespeed_pwa: description: PWA Status default: # ==================================================================================== # 🐤 Latest tweets plugin_tweets: description: Enable tweets plugin default: plugin_tweets_token: description: Twitter API token default: plugin_tweets_user: description: Twitter username default: plugin_tweets_attachments: description: Tweets attachments default: plugin_tweets_limit: description: Display limit default: # ==================================================================================== # đŸ—¨ī¸ Stack Overflow plugin_stackoverflow: description: Enable stackoverflow plugin default: plugin_stackoverflow_user: description: Stackoverflow user id default: plugin_stackoverflow_sections: description: Displayed sections default: plugin_stackoverflow_limit: description: Display limit (entries per section) default: plugin_stackoverflow_lines: description: Display limit (lines per questions and answers) default: plugin_stackoverflow_lines_snippet: description: Display limit (lines per code snippets) default: # ==================================================================================== # 🌸 Anilist watch list and reading list plugin_anilist: description: Enable aniList plugin default: plugin_anilist_user: description: AniList login default: plugin_anilist_medias: description: Medias types default: plugin_anilist_sections: description: Displayed sections default: plugin_anilist_limit: description: Display limit (medias) default: plugin_anilist_limit_characters: description: Display limit (characters) default: plugin_anilist_shuffle: description: Shuffle data default: # ==================================================================================== # đŸŽŧ Music activity and suggestions plugin_music: description: Enable music plugin default: plugin_music_provider: description: Music provider default: plugin_music_token: description: Music provider token default: plugin_music_user: description: Music provider username default: plugin_music_mode: description: Display mode default: plugin_music_playlist: description: Playlist URL default: plugin_music_limit: description: Display limit default: plugin_music_played_at: description: Recently played - Last played timestamp default: plugin_music_time_range: description: Top tracks - Time range default: plugin_music_top_type: description: Top tracks - Display type default: # ==================================================================================== # âœ’ī¸ Recent posts plugin_posts: description: Enable posts plugin default: plugin_posts_source: description: External source default: plugin_posts_user: description: External source username default: plugin_posts_descriptions: description: Posts descriptions default: plugin_posts_covers: description: Posts cover images default: plugin_posts_limit: description: Display limit default: # ==================================================================================== # đŸ—ŧ Rss feed plugin_rss: description: Enable rss plugin default: plugin_rss_source: description: RSS feed source default: plugin_rss_limit: description: Display limit default: # ==================================================================================== # ⏰ WakaTime plugin_wakatime: description: Enable wakatime plugin default: plugin_wakatime_token: description: WakaTime API token default: plugin_wakatime_url: description: WakaTime URL default: plugin_wakatime_user: description: WakaTime username default: plugin_wakatime_sections: description: Displayed sections default: plugin_wakatime_days: description: Time range default: plugin_wakatime_limit: description: Display limit (entries per graph) default: plugin_wakatime_languages_other: description: Other languages default: plugin_wakatime_languages_ignored: description: Ignored languages default: plugin_wakatime_repositories_visibility: description: Repositories visibility default: # ==================================================================================== # đŸ—ŗī¸ Leetcode plugin_leetcode: description: Enable leetcode plugin default: plugin_leetcode_user: description: LeetCode login default: plugin_leetcode_sections: description: Displayed sections default: plugin_leetcode_limit_skills: description: Display limit (skills) default: plugin_leetcode_ignored_skills: description: Ignored skills default: plugin_leetcode_limit_recent: description: Display limit (recent) default: # ==================================================================================== # đŸ•šī¸ Steam plugin_steam: description: Enable steam plugin default: plugin_steam_token: description: Steam token default: plugin_steam_sections: description: Displayed sections default: plugin_steam_user: description: Steam user id plugin_steam_games_ignored: description: Ignored games default: plugin_steam_games_limit: description: Display limit (Most played games) default: plugin_steam_recent_games_limit: description: Display limit (Recently played games) default: plugin_steam_achievements_limit: description: Display limit (Games achievements) default: plugin_steam_playtime_threshold: description: Display threshold (Game playtime in hours) default: # ==================================================================================== # 🧠 16personalities plugin_16personalities: description: Enable 16personalities plugin default: plugin_16personalities_url: description: Profile URL default: plugin_16personalities_sections: description: Displayed sections default: plugin_16personalities_scores: description: Display traits scores default: # ==================================================================================== # â™Ÿī¸ Chess plugin_chess: description: Enable chess plugin default: plugin_chess_token: description: Chess platform token default: plugin_chess_user: description: Chess platform login default: plugin_chess_platform: description: Chess platform default: plugin_chess_animation: description: Animation settings default: # ==================================================================================== # đŸĨ  Fortune plugin_fortune: description: Enable fortune plugin default: # ==================================================================================== # 💉 Nightscout plugin_nightscout: description: Enable nightscout plugin default: plugin_nightscout_url: description: Nightscout URL default: plugin_nightscout_datapoints: description: Number of datapoints shown the graph default: plugin_nightscout_lowalert: description: Threshold for low blood sugar default: plugin_nightscout_highalert: description: Threshold for high blood sugar default: plugin_nightscout_urgentlowalert: description: Threshold for urgently low blood sugar default: plugin_nightscout_urgenthighalert: description: Threshold for urgently high blood sugar default: # ==================================================================================== # 💩 PoopMap plugin plugin_poopmap: description: Enable poopmap plugin default: plugin_poopmap_token: description: PoopMap API token default: plugin_poopmap_days: description: Time range default: # ==================================================================================== # 📸 Website screenshot plugin_screenshot: description: Enable screenshot plugin default: plugin_screenshot_title: description: Title caption default: plugin_screenshot_url: description: Website URL default: plugin_screenshot_selector: description: CSS Selector default: plugin_screenshot_mode: description: Output mode default: plugin_screenshot_viewport: description: Viewport options default: plugin_screenshot_wait: description: Wait time before taking screenshot (ms) default: plugin_screenshot_background: description: Background default: # ==================================================================================== # đŸĻ‘ Splatoon plugin_splatoon: description: Enable splatoon plugin default: plugin_splatoon_token: description: Splatnet token default: plugin_splatoon_sections: description: Displayed sections default: plugin_splatoon_versus_limit: description: Display limit (Versus) default: plugin_splatoon_salmon_limit: description: Display limit (Salmon run) default: plugin_splatoon_statink: description: stat.ink integration default: plugin_splatoon_statink_token: description: stat.ink token default: plugin_splatoon_source: description: Source default: # ==================================================================================== # 💹 Stock prices plugin_stock: description: Enable stock plugin default: plugin_stock_token: description: Yahoo Finance token default: plugin_stock_symbol: description: Company stock symbol default: plugin_stock_duration: description: Time range default: plugin_stock_interval: description: Time interval between points default: # ==================================================================================== # Action metadata name: Metrics embed author: lowlighter description: An infographics generator with 40+ plugins and 300+ 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: | # Check runner compatibility echo "::group::Metrics docker image setup" echo "GitHub action: $METRICS_ACTION ($METRICS_ACTION_PATH)" cd $METRICS_ACTION_PATH for DEPENDENCY in docker jq; do if ! which $DEPENDENCY > /dev/null 2>&1; then echo "::error::\"$DEPENDENCY\" is not installed on current runner but is needed to run metrics" MISSING_DEPENDENCIES=1 fi done if [[ $MISSING_DEPENDENCIES == "1" ]]; then echo "Runner compatibility: missing dependencies" exit 1 else echo "Runner compatibility: compatible" fi # Create environment file from inputs and GitHub variables 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 --rm --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 }}