diff --git a/.github/readme/partials/documentation/setup/docker.md b/.github/readme/partials/documentation/setup/docker.md index f38e3260..07e568ea 100644 --- a/.github/readme/partials/documentation/setup/docker.md +++ b/.github/readme/partials/documentation/setup/docker.md @@ -8,7 +8,7 @@ A machine with a recent version of [docker](https://www.docker.com/) is required The command to use is similar to the following: ```shell -docker run --env INPUT_TOKEN=**** --env INPUT_USER=user --volume=/tmp:/renders ghcr.io/lowlighter/metrics:latest +docker run --rm --env INPUT_TOKEN=**** --env INPUT_USER=user --volume=/tmp:/renders ghcr.io/lowlighter/metrics:latest ``` To pass parameters, pass environment variable with the same name as the corresponding action option but in uppercase and prefixed with `INPUT_`. diff --git a/.github/readme/partials/documentation/setup/web.md b/.github/readme/partials/documentation/setup/web.md index be880d5c..5c538ffb 100644 --- a/.github/readme/partials/documentation/setup/web.md +++ b/.github/readme/partials/documentation/setup/web.md @@ -104,7 +104,7 @@ PUBLISHED_PORT=80 And start the container using the following command: ```shell -docker run --entrypoint="" -p=127.0.0.1:$PUBLISHED_PORT:$SERVICE_PORT --volume=$SETTINGS:/metrics/settings.json ghcr.io/lowlighter/metrics:$VERSION npm start +docker run --rm --entrypoint="" -p=127.0.0.1:$PUBLISHED_PORT:$SERVICE_PORT --volume=$SETTINGS:/metrics/settings.json ghcr.io/lowlighter/metrics:$VERSION npm start ``` ## 4️ Add images to your profile `README.md` diff --git a/.github/scripts/files/examples.yml b/.github/scripts/files/examples.yml index 6bcd6066..c3eeeec3 100644 --- a/.github/scripts/files/examples.yml +++ b/.github/scripts/files/examples.yml @@ -44,7 +44,7 @@ jobs: - name: Screenshot markdown example if: ${{ success() || failure() }} run: | - docker run --entrypoint="" --volume=/tmp:/tmp ghcr.io/lowlighter/metrics:master node /metrics/.github/scripts/markdown_example.mjs + docker run --rm --entrypoint="" --volume=/tmp:/tmp ghcr.io/lowlighter/metrics:master node /metrics/.github/scripts/markdown_example.mjs sudo mv /tmp/metrics.markdown.png /metrics_renders/ - name: Publish examples if: ${{ success() || failure() }} diff --git a/.github/workflows/examples.yml b/.github/workflows/examples.yml index 7df694dc..3b7acfde 100644 --- a/.github/workflows/examples.yml +++ b/.github/workflows/examples.yml @@ -1197,12 +1197,12 @@ jobs: user: lowlighter plugins_errors_fatal: yes if: ${{ success() || failure() }} - + - name: Screenshot markdown example if: ${{ success() || failure() }} run: | - docker run --entrypoint="" --volume=/tmp:/tmp ghcr.io/lowlighter/metrics:master node /metrics/.github/scripts/markdown_example.mjs + docker run --rm --entrypoint="" --volume=/tmp:/tmp ghcr.io/lowlighter/metrics:master node /metrics/.github/scripts/markdown_example.mjs sudo mv /tmp/metrics.markdown.png /metrics_renders/ - name: Publish examples if: ${{ success() || failure() }} diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index d7989a0f..f7848abd 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -46,7 +46,7 @@ jobs: - name: Build lowlighter/metrics:${{ github.head_ref || 'master' }} run: docker build -t lowlighter/metrics:$(echo ${{ github.head_ref || 'master' }} | sed 's/\//-/g') . - name: Run tests - run: docker run --entrypoint="" lowlighter/metrics:$(echo ${{ github.head_ref || 'master' }} | sed 's/\//-/g') npm run test-metrics + run: docker run --rm --entrypoint="" lowlighter/metrics:$(echo ${{ github.head_ref || 'master' }} | sed 's/\//-/g') npm run test-metrics # Run CodeQL on branch analyze: diff --git a/action.yml b/action.yml index ac4847cd..c00d4d05 100644 --- a/action.yml +++ b/action.yml @@ -5,1154 +5,1154 @@ inputs: # ==================================================================================== # 🗃️ Base content - + base: description: Base content default: - + base_indepth: description: Indepth mode default: - + repositories: description: Repositories to fetch default: - + repositories_batch: description: Repositories to fetch at a time 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: - + 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: - + delay: description: Job delay 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: - + # ==================================================================================== # 🈷️ Most used languages - + 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 a single "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 (⚠️ read documentation first) default: - + plugin_languages_analysis_timeout: description: Indepth mode - Analysis timeout 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: Events to load (recently-used section) default: - + plugin_languages_recent_days: description: Events maximum age (day, recently-used section) 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: Display used licenses ratio default: - + plugin_licenses_legal: description: Display permissions, limitations and conditions about licenses default: - + # ==================================================================================== # 💡 Coding habits - + plugin_habits: description: Enable habits plugin default: - + plugin_habits_from: description: Events to use default: - + plugin_habits_days: description: Event maximum age default: - + plugin_habits_facts: description: Toggle midly interesting facts display default: - + plugin_habits_charts: description: Toggle charts display default: - + plugin_habits_charts_type: description: Charts display type default: - + plugin_habits_trim: description: Trim unused hours on charts default: - + # ==================================================================================== # 🏅 Repository contributors - + plugin_contributors: description: Enable contributors plugin default: - + plugin_contributors_base: description: Base reference (commit, tag, branch, etc.) default: - + plugin_contributors_head: description: Head reference (commit, tag, branch, etc.) default: - + plugin_contributors_ignored: description: Ignored users default: - + plugin_contributors_contributions: description: Toggle number of contributions display default: - + plugin_contributors_sections: description: Displayed sections default: - + plugin_contributors_categories: description: Configure 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: - + # ==================================================================================== # 🎭 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 - + plugin_people: description: Enable people plugin default: - + plugin_people_limit: description: Display limit default: - + plugin_people_identicons: description: Toggle identicons display default: - + plugin_people_identicons_hide: description: Hide identicons display default: - + plugin_people_size: description: Profile picture display size default: - + plugin_people_types: description: Displayed sections (order is respected) default: - + plugin_people_thanks: description: Special thanks default: - + plugin_people_sponsors_custom: description: Custom sponsors default: - + plugin_people_shuffle: description: Shuffle data for varied output default: - + # ==================================================================================== # ✨ Stargazers over last weeks - + plugin_stargazers: description: Enable stargazers plugin default: - + plugin_stargazers_charts_type: description: Charts display type default: - + # ==================================================================================== # 🗂️ Active projects - + plugin_projects: description: Enable projects plugin default: - + plugin_projects_limit: description: Display limit default: - + plugin_projects_repositories: description: List of repositories projects default: - + plugin_projects_descriptions: description: Toggle projects descriptions display default: - + # ==================================================================================== # ♐ Code snippet of the day - + plugin_code: description: Enable code plugin default: - + plugin_code_lines: description: Display limit for 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: Restrict display to specific languages 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: Display events timestamps default: - + plugin_activity_skipped: description: Skipped repositories default: - + plugin_activity_ignored: description: Ignored users default: - + plugin_activity_filter: description: Events types default: - + # ==================================================================================== # 🏆 Achievements - + plugin_achievements: description: Enable achievements plugin default: - + plugin_achievements_threshold: description: Display rank threshold default: - + plugin_achievements_secrets: description: Display secrets achievements default: - + plugin_achievements_display: description: Display style default: - + plugin_achievements_limit: description: Display limit default: - + plugin_achievements_ignored: description: Hide specified achievements default: - + plugin_achievements_only: description: Restrict display to specified 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: Filter by repository owner account type default: - + plugin_notable_repositories: description: Toggle repository name display default: - + plugin_notable_indepth: description: Indepth mode default: - + plugin_notable_types: description: Contribution types filter default: - + # ==================================================================================== # 💬 Discussions - + plugin_discussions: description: Enable discussions plugin default: - + plugin_discussions_categories: description: Toggle discussion categories display default: - + plugin_discussions_categories_limit: description: Display limit (categories) default: - + # ==================================================================================== # 💭 GitHub Community Support - + plugin_support: description: Enable support plugin default: - + # ==================================================================================== # 👨‍💻 Lines of code changed - + plugin_lines: description: Enable lines plugin default: - + plugin_lines_skipped: description: Skipped repositories default: - + # ==================================================================================== # 🧮 Repositories traffic - + plugin_traffic: description: Enable traffic plugin default: - + plugin_traffic_skipped: description: Skipped repositories default: - + # ==================================================================================== # 📓 Repositories - + plugin_repositories: description: Enable repositories plugin default: - + plugin_repositories_featured: description: List of featured repositories default: - + # ==================================================================================== # 🎫 Gists - + plugin_gists: description: Enable gists plugin default: - + # ==================================================================================== # 🙋 Introduction - + plugin_introduction: description: Display account or repository introduction default: - + plugin_introduction_title: description: Display introduction section title default: - + # ==================================================================================== # 💕 GitHub Sponsors - + plugin_sponsors: description: Enable sponsors plugin default: - + plugin_sponsors_sections: description: Displayed sections default: - + plugin_sponsors_past: description: Display past sponsorships default: - + plugin_sponsors_size: description: Profile picture display size default: - + # ==================================================================================== # 💫 Starlists - + 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: Toggle star list languages statistics default: - + plugin_starlists_limit_languages: description: Disply limit (languages per star list) default: - + plugin_starlists_shuffle_repositories: description: Shuffle data for varied outputs default: - + plugin_starlists_ignored: description: Skipped star lists default: - + plugin_starlists_only: description: Restrict display to specified star lists default: - + # ==================================================================================== # 📆 Calendar - + plugin_calendar: description: Enable calendar plugin default: - + plugin_calendar_limit: description: Years to display default: - + # ==================================================================================== # 🌇 GitHub Skyline 3D calendar - + 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: - + # ==================================================================================== # ⏱️ Website performances - + plugin_pagespeed: description: Enable pagespeed plugin default: - + plugin_pagespeed_url: description: Audited website default: - + plugin_pagespeed_detailed: description: Detailed results default: - + plugin_pagespeed_screenshot: description: Display a website screenshot default: - + plugin_pagespeed_token: description: PageSpeed token default: - + # ==================================================================================== # 🗨️ StackOverflow plugin - + 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 (per section) default: - + plugin_stackoverflow_lines: description: Display limit for questions and answers default: - + plugin_stackoverflow_lines_snippet: description: Display limit for code snippets default: - + # ==================================================================================== # 🌸 Anilist watch list and reading list - + plugin_anilist: description: Enable aniList plugin default: - + plugin_anilist_medias: description: Display 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 for varied outputs default: - + plugin_anilist_user: description: AniList login default: - + # ==================================================================================== # 🐤 Latest tweets - + plugin_tweets: description: Enable tweets plugin default: - + plugin_tweets_token: description: Twitter API token default: - + plugin_tweets_attachments: description: Display tweets attachments (images, video previews, etc.) default: - + plugin_tweets_limit: description: Display limit default: - + plugin_tweets_user: description: Twitter username default: - + # ==================================================================================== # ✒️ Recent posts - + plugin_posts: description: Enable posts plugin default: - + plugin_posts_source: description: External source default: - + plugin_posts_descriptions: description: Toggle posts descriptions display default: - + plugin_posts_covers: description: Toggle posts cover images display default: - + plugin_posts_limit: description: Display limit default: - + plugin_posts_user: description: External source username default: - + # ==================================================================================== # 🎼 Music plugin - + plugin_music: description: Enable music plugin default: - + plugin_music_provider: description: Music provider default: - + plugin_music_token: description: Music provider token 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 - Toggle last played timestamp display default: - + plugin_music_time_range: description: Top tracks - Time range for `top` mode default: - + plugin_music_top_type: description: Top tracks - Display type default: - + plugin_music_user: description: Music provider username 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 - + plugin_wakatime: description: Enable wakatime plugin default: - + plugin_wakatime_token: description: WakaTime API token default: - + plugin_wakatime_days: description: Time range default: - + plugin_wakatime_sections: description: Displayed sections default: - + plugin_wakatime_limit: description: Display limit (per graph) default: - + plugin_wakatime_url: description: WakaTime url default: - + plugin_wakatime_user: description: WakaTime username default: - + plugin_wakatime_languages_other: description: Include other languages 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_background: description: Display background 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 (relative to current date) default: - + plugin_stock_interval: description: Time interval between points default: - + # ==================================================================================== # Action metadata @@ -1244,7 +1244,7 @@ runs: 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 + 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: diff --git a/source/app/action/action.yml b/source/app/action/action.yml index 2acc214d..7d2b8948 100644 --- a/source/app/action/action.yml +++ b/source/app/action/action.yml @@ -99,7 +99,7 @@ runs: 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 + 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: