31 Commits

Author SHA1 Message Date
Simon Schneegans
54d929a33e 📝 Use new version in the README 2022-05-15 12:48:09 +02:00
Simon Schneegans
69871bdad6 📝 Add changelog entry 2022-05-15 12:47:06 +02:00
Simon Schneegans
383ef89559 🔀 Merge pull request #12 from LucasWolfgang/master 2022-05-14 20:45:03 +02:00
Wolfgang
b82eb1a788 🪲 Changed ColorRange val type
Using const for val causes the action to fail if it is out of bounds. It can happen in cases were these values are estimated, but not known in advance, such as max number of errors.
2022-04-23 14:20:36 -03:00
Simon Schneegans
2973573357 📝 Update tags in READM.md 2022-04-18 20:55:53 +02:00
Simon Schneegans
3425d0daa8 📝 Tweak badge description 2022-04-18 20:42:43 +02:00
Simon Schneegans
5673706ac3 📝 Update link 2022-04-18 20:37:12 +02:00
Simon Schneegans
a6775a6487 📝 Add changelog entry 2022-04-18 14:06:49 +02:00
Simon Schneegans
7ce4e745e5 🔧 USe color range for example badge 2022-04-18 13:55:29 +02:00
Simon Schneegans
a3f7e7f029 📝 Improve documentation 2022-04-18 13:50:35 +02:00
Simon Schneegans
6511e529e9 📝 Tweak documentation 2022-04-18 13:38:34 +02:00
Simon Schneegans
e43bdee88e Tweak formatting of the code 2022-04-18 13:14:24 +02:00
Simon Schneegans
3dd7c22d76 Apply clang-format 2022-04-18 13:09:18 +02:00
Simon Schneegans
ee320739c6 🔧 Fix typo 2022-04-18 13:08:50 +02:00
Simon Schneegans
9bce11bffe :Thanks again! : Merge pull request #11 from LucasWolfgang/master 2022-04-18 13:08:15 +02:00
Wolfgang
53c821a382 🎉 Added saturation and lightness parameters
🎉 Added saturation and lightness parameters to ColorRange feature
2022-04-17 11:51:01 -03:00
Wolfgang
6363528813 🎉 Added saturation and lightness parameters
🎉 Added saturation and lightness parameters to ColorRange feature
2022-04-17 11:47:07 -03:00
Wolfgang
f3547450fa Update index.js
Reduce the lightness from 50% to 40%.
2022-04-17 11:22:56 -03:00
Wolfgang
6d79bf4c0a Update index.js
Removed automatically set message.

Co-authored-by: Simon Schneegans <code@simonschneegans.de>
2022-04-17 11:16:41 -03:00
Wolfgang
b718050283 Apply suggestions from code review
Co-authored-by: Simon Schneegans <code@simonschneegans.de>
2022-04-16 10:51:12 -03:00
LucasWolfgang
0ba52741d3 🔧 Improved messages for color range feature 2022-04-16 02:05:36 -03:00
LucasWolfgang
a690d6b4cb 🪲 Fixed empty message bug in range feature
Fixed by adding back 'console.' which was removed for testing
2022-04-16 01:47:26 -03:00
LucasWolfgang
517bd6931a 🎉 Added more functionalities to color range
Now the Range can be inverted and doesn't use the message anymore
2022-04-15 23:55:40 -03:00
LucasWolfgang
3bcfbf7edc 🎉 Added range based message coloring 2022-04-15 13:11:20 -03:00
Simon Schneegans
8da8f7816f 📝 Update tags in README.md 2022-03-27 06:55:03 +02:00
Simon Schneegans
65787a717d 📝 Add changelog 2022-03-26 12:31:56 +01:00
Simon Schneegans
cfd1eebb35 🔧 Do not print result body 2022-03-26 10:50:40 +01:00
Simon Schneegans
42207bfa4c 📝 Add note on gist file name 2022-03-26 10:47:07 +01:00
Simon Schneegans
4c1242cfa4 Merge pull request #9 from Bhupesh-V/minor-docs-improvement
clearify using custom colors in labels
2021-12-20 20:36:13 +01:00
Bhupesh Varshney
7788d4f27b Update README.md 2021-12-18 22:45:54 +05:30
Simon Schneegans
a298000e06 📝 Update tags in README.md 2021-06-16 20:07:09 +02:00
5 changed files with 163 additions and 33 deletions

View File

@@ -15,7 +15,9 @@ jobs:
auth: ${{ secrets.GIST_SECRET }}
gistID: 2ab8f1d386f13aaebccbd87dac94068d
filename: answer.json
label: The Answer is
message: ${{ env.ANSWER }}
color: green
label: The Answer
message: is ${{ env.ANSWER }}
valColorRange: ${{ env.ANSWER }}
maxColorRange: 100
minColorRange: 0

View File

@@ -8,7 +8,7 @@ This action allows you to create badges for your README.md with [shields.io](htt
This action supports all [configuration options of shields.io/endpoint](https://shields.io/endpoint) and can be used in various ways:
* Show custom CI statistics from GitHub actions, such as code coverage or detailed test results.
* Show metadata of your repository such as [lines of code, comment line percentage](https://schneegans.github.io/tutorials/2020/08/16/badges), ...
* Show metadata of your repository such as [lines of code, comment line percentage](https://schneegans.github.io/tutorials/2022/04/18/badges), ...
* Basically anything which may change from commit to commit!
## How Does It Work?
@@ -33,13 +33,13 @@ https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/schneegan
## Configuration
1. Head over to [gist.github.com](https://gist.github.com/) and create a new gist. You will need the ID of the gist (this is the long alphanumerical part of its URL) later.
1. Head over to [gist.github.com](https://gist.github.com/) and create a new gist. You can name the file `test.json`, but this can be changed later as well. You will need the ID of the gist (this is the long alphanumerical part of its URL) later.
2. Navigate to [github.com/settings/tokens](https://github.com/settings/tokens) and create a new token with the *gist* scope.
3. Go to the *Secrets* page of the settings of your repository and add this token as a new secret. You can give it any name, for example `GIST_SECRET`.
4. Add something like the following to your workflow:
```yml
- name: Create Awesome Badge
uses: schneegans/dynamic-badges-action@v1.0.0
uses: schneegans/dynamic-badges-action@v1.4.0
with:
auth: ${{ secrets.GIST_SECRET }}
gistID: <gist-ID>
@@ -58,20 +58,26 @@ Embed the badge with:
![badge](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/<user>/<gist-ID>/raw/test.json)
```
### Input Parameters
### Required Input Parameters
The **Badge Parameters** are directly passed to [shields.io](https://shields.io). See the [official documentation](https://shields.io/endpoint) for more detailed explanations.
Gist Parameter | Description
Parameter | Description
----------|------------
`auth` | A secret token with the *gist* scope.
`gistID` | The ID of the target gist. Something like `8f6459c2417de7534f64d98360dde866`.
`filename` | The target filename - each gist may contain several files. This should have the `.json` extension.
### Shields.io Parameters (optional)
All these parameters are optional.
They are directly passed to [shields.io](https://shields.io). See the [official documentation](https://shields.io/endpoint) for more detailed explanations.
Parameter | Description
----------|------------
`auth` | Required. A secret token with the *gist* scope.
`gistID` | Required. The ID of the target gist. Something like `8f6459c2417de7534f64d98360dde866`.
`filename` | Required. The target filename - each gist may contain several files. This should have the `.json` extension.
**Badge Parameter** | **Description**
`label` | Required. The left text of the badge.
`message` | Required. The right text of the badge.
`labelColor` | The left color of the badge.
`color` | The right color of the badge.
`color` | The right color of the badge. For custom colors wrap color string in quotes `"#bf155b"`. This parameter is ignored if the `valColorRange`, `maxColorRange`, and `minColorRange` are set.
`isError` | The color will be red and cannot be overridden.
`namedLogo` | A logo name from [simpleicons.org](http://simpleicons.org/).
`logoSvg` | An svg-string to be used as logo.
@@ -81,25 +87,46 @@ Gist Parameter | Description
`style` | The style like "flat" or "social".
`cacheSeconds` | The cache lifetime in seconds (must be greater than 300).
### Color Range Parameters (optional)
Starting with version 1.3.0 of this action, the color of the right side of the badge can be computed automatically on a green-to-red color-scale.
For this, the following parameters can be used.
Parameter | Description
----------|------------
`valColorRange` | A numerical value used to define the message color. Usually this should be between `maxColorRange` and `minColorRange`. This is required if you want to use the color range feature.
`maxColorRange` | If `valColorRange` assumes this value, the badge will be green. This is required if you want to use the color range feature.
`minColorRange` | If `valColorRange` assumes this value, the badge will be red. This is required if you want to use the color range feature.
`invertColorRange` | If the range should be inverted, causing a smaller value to have green color. Defaults to `false`.
`colorRangeSaturation` | Saturation used by the color range feature. Defaults to 100.
`colorRangeLightness` | Lightness used by the color range feature. Defaults to 40.
### Using Environment Variables as Parameters [![badge](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/schneegans/2ab8f1d386f13aaebccbd87dac94068d/raw/answer.json)](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/schneegans/2ab8f1d386f13aaebccbd87dac94068d/raw/answer.json)
A common usage pattern of this action is to create environment variables in previous steps of a job and later use them as message in your badge. This can be achieved like this:
A common usage pattern of this action is to create environment variables in previous steps of a job and later use them as message in your badge.
How this can be done, is shown in the following example.
This example also shows how to use the automatic color range feature: If the answer is <= 0, the badge will be red, if it's >= 100 it will be green.
For all values in between, the color will be interpolated.
```yml
- name: Get the Numbers
run: echo "ANSWER=42" >> $GITHUB_ENV
- name: Create the Badge
uses: schneegans/dynamic-badges-action@v1.0.0
uses: schneegans/dynamic-badges-action@v1.4.0
with:
auth: ${{ secrets.GIST_SECRET }}
gistID: <gist-ID>
filename: answer.json
label: The Answer is
message: ${{ env.ANSWER }}
color: green
label: The Answer
message: is ${{ env.ANSWER }}
valColorRange: ${{ env.ANSWER }}
maxColorRange: 100
minColorRange: 0
```
# Contributing to Dynamic Badges Action
## Contributing to Dynamic Badges Action
Whenever you encounter a :beetle: **bug** or have :tada: **feature request**,
report this via [Github issues](https://github.com/schneegans/dynamic-badges-action/issues).
@@ -107,7 +134,7 @@ report this via [Github issues](https://github.com/schneegans/dynamic-badges-act
We are happy to receive contributions in the form of **pull requests** via Github.
Feel free to fork the repository, implement your changes and create a merge request to the `master` branch.
## Git Commit Messages
### Git Commit Messages
Commits should start with a Capital letter and should be written in present tense (e.g. __:tada: Add cool new feature__ instead of __:tada: Added cool new feature__).
You should also start your commit message with **one** applicable emoji. This does not only look great but also makes you rethink what to add to a commit. Make many but small commits!
@@ -126,7 +153,7 @@ Emoji | Description
:fire: `:fire:` | When you removed something.
:truck: `:truck:` | When you moved / renamed something.
## Version Numbers
### Version Numbers
Version numbers will be assigned according to the [Semantic Versioning](https://semver.org/) scheme.
This means, given a version number MAJOR.MINOR.PATCH, we will increment the:

View File

@@ -1,5 +1,5 @@
name: 'Dynamic Badges'
description: 'Creates badge descriptions to be used with shields.io/endpoint and uploads them to a gist.'
description: 'Create badges via shields.io/endpoint for your README.md which may change with every commit.'
branding:
icon: 'tag'
color: 'green'
@@ -49,6 +49,24 @@ inputs:
cacheSeconds:
description: 'The cache lifetime in seconds (must be greater than 300)'
required: false
valColorRange:
description: 'A numerical value used to define the message color. Usually this should be between maxColorRange and minColorRange. This is required if you want to use the color range feature.'
required: false
maxColorRange:
description: 'If valColorRange assumes this value, the badge will be green. This is required if you want to use the color range feature.'
required: false
minColorRange:
description: 'If valColorRange assumes this value, the badge will be red. This is required if you want to use the color range feature.'
required: false
invertColorRange:
description: 'If the range should be inverted, causing a smaller value to have green color. Defaults to false.'
required: false
colorRangeSaturation:
description: 'Saturation used by the color range feature. Defaults to 100.'
required: false
colorRangeLightness:
description: 'Lightness used by the color range feature. Defaults to 40.'
required: false
runs:
using: 'node12'
main: 'index.js'

46
changelog.md Normal file
View File

@@ -0,0 +1,46 @@
# Changelog of the Dynamic Badges Action
## [Dynamic Badges Action 1.4.0](https://github.com/Schneegans/dynamic-badges-action/tree/v1.4.0)
**Release Date:** 2022-05-15
#### Changes
* Fixed a bug which caused the action to fail if the value for the automatic color range was out of bounds. Thanks to [@LucasWolfgang](https://github.com/LucasWolfgang) for this fix!
## [Dynamic Badges Action 1.3.0](https://github.com/Schneegans/dynamic-badges-action/tree/v1.3.0)
**Release Date:** 2022-04-18
#### Changes
* Added the possibility to generate the badge color automatically between red and green based on a numerical value and its bounds. Thanks to [@LucasWolfgang](https://github.com/LucasWolfgang) for this contribution!
## [Dynamic Badges Action 1.2.0](https://github.com/Schneegans/dynamic-badges-action/tree/v1.2.0)
**Release Date:** 2022-03-26
#### Changes
* The action does not log the response of writing the Gist anymore.
* Added this changelog.
## [Dynamic Badges Action 1.1.0](https://github.com/Schneegans/dynamic-badges-action/tree/v1.1.0)
**Release Date:** 2021-06-16
#### Changes
* The action now logs an error message when writing the Gist failed.
* Used new API for setting environment variables in the README.md examples.
## [Dynamic Badges Action 1.0.0](https://github.com/Schneegans/dynamic-badges-action/tree/v1.0.0)
**Release Date:** 2020-08-16
#### Changes
* Initial publication on GitHub.

View File

@@ -13,9 +13,49 @@ try {
message: core.getInput('message')
};
// Compute the message color based on the given inputs.
const color = core.getInput('color');
const valColorRange = core.getInput('valColorRange');
const minColorRange = core.getInput('minColorRange');
const maxColorRange = core.getInput('maxColorRange');
const invertColorRange = core.getInput('invertColorRange');
const colorRangeSaturation = core.getInput('colorRangeSaturation');
const colorRangeLightness = core.getInput('colorRangeLightness');
if (minColorRange != '' && maxColorRange != '' && valColorRange != '') {
const max = parseFloat(maxColorRange);
const min = parseFloat(minColorRange);
let val = parseFloat(valColorRange);
if (val < min) val = min;
if (val > max) val = max;
let hue = 0;
if (invertColorRange == '') {
hue = Math.floor((val - min) / (max - min) * 120);
} else {
hue = Math.floor((max - val) / (max - min) * 120);
}
let sat = 100;
if (colorRangeSaturation != '') {
sat = parseFloat(colorRangeSaturation);
}
let lig = 40;
if (colorRangeLightness != '') {
lig = parseFloat(colorRangeLightness);
}
content.color = 'hsl(' + hue + ', ' + sat + '%, ' + lig + '%)';
} else if (color != '') {
content.color = color;
}
// Get all optional attributes and add them to the content object if given.
const labelColor = core.getInput('labelColor');
const color = core.getInput('color');
const isError = core.getInput('isError');
const namedLogo = core.getInput('namedLogo');
const logoSvg = core.getInput('logoSvg');
@@ -29,10 +69,6 @@ try {
content.labelColor = labelColor;
}
if (color != '') {
content.color = color;
}
if (isError != '') {
content.isError = isError;
}
@@ -87,11 +123,12 @@ try {
},
res => {
if (res.statusCode < 200 || res.statusCode >= 400) {
core.setFailed('Failed to create gist, response status code: ' + res.statusCode + ', status message: ' + res.statusMessage);
core.setFailed(
'Failed to create gist, response status code: ' + res.statusCode +
', status message: ' + res.statusMessage);
} else {
console.log('Success!');
}
let body = '';
res.on('data', data => body += data);
res.on('end', () => console.log('result:' + body));
});
req.write(request);