/github-actions-cron-readme-weather-api

Partially works. Fahrenheit temps are zero. GitHub Actions call Release calling API. Update your README with the current weather forcast using Go Templates, Docker, GitHub Actions

Primary LanguageGo

Today's Weather

Boston, United States of America - 25/10/2023

Partly cloudy

Hour 00:0001:0002:0003:0004:0005:0006:0007:0008:0009:0010:0011:0012:0013:0014:0015:0016:0017:0018:0019:0020:0021:0022:0023:00
Weather
Condition OvercastOvercastCloudyOvercastOvercastOvercastOvercastCloudyPartly cloudyPartly cloudyPartly cloudySunnySunnySunnyPartly cloudyPartly cloudySunnySunnyClearPartly cloudyCloudyClearClearClear
Temperature 0 °F0 °F0 °F0 °F0 °F0 °F0 °F0 °F0 °F0 °F0 °F0 °F0 °F0 °F0 °F0 °F0 °F0 °F0 °F0 °F0 °F0 °F0 °F0 °F
Wind 0 mph0 mph0 mph0 mph0 mph0 mph0 mph0 mph0 mph0 mph0 mph0 mph0 mph0 mph0 mph0 mph0 mph0 mph0 mph0 mph0 mph0 mph0 mph0 mph

Weather For Next 3 days

Date 25/10/202326/10/202327/10/2023
Weather
Condition Partly cloudyPartly cloudyPatchy rain possible
Temperature 0 - 0 °F0 - 0 °F0 - 0 °F
Wind 0 mph0 mph0 mph

Updated at: 2023-10-26T10:20:21Z

GitHub Actions: Embed up-to-date Weather in your README

View

You can easily embed tables in your README.md using GitHub Actions by following these simple steps:

Step 1: In your repository, create a file named README.md.template.

Step 2: Write anything you want within the README.md.template file.

Step 3: Embed one of the following entities within your README.md.template:

  • Today's Weather Table:
{{ template "hourly-table" $.TodayWeather.HourlyWeathers }}
  • Daily Weather Table:
{{ template "daily-table" .Weathers }}
  • Updated at:
{{ formatTime .UpdatedAt }}

If you are familiar with Go templates, you have access to the root variable, which includes the following fields:

  • Weathers: An array of daily Weather. You can view the Weather struct definition in model/weather.go.
  • UpdatedAt: This field contains the timestamp in the format of time.Date.

Step 4: Register Github Action

  • Create a file .github/workflows/update-weather.yml in your repository.
name: "Cronjob"
on:
schedule:
- cron: '15 * * * *'

jobs:
    update-weather:
        permissions: write-all
        runs-on: ubuntu-latest
        steps:
            - uses: actions/checkout@v3
            - name: Generate README
              uses: coding-to-music/github-actions-cron-readme-weather-api@v1.0.2
              with:
                city: HaNoi
                days: 7
                weather-api-key: ${{ secrets.WEATHER_API_KEY }}
                template-file: 'README.md.template'
                out-file: 'README.md'
            - name: Commit
              run: |
                if git diff --exit-code; then
                  echo "No changes to commit."
                  exit 0
                else
                  git config user.name github-actions
                  git config user.email github-actions@github.com
                  git add .
                  git commit -m "update"
                  git push origin main
                fi
  • Update some variable in this file:
    • city: The city that you want to forecast weather
    • days: number of forecast days
    • template-file: Path to the above template file. Eg. template/README.md.template
    • out-file: your README.md file name
    • weather-api-key:
      • Register free API key in https://weatherapi.com
      • Setup secrets with name WEATHER_API_KEY in Your repo > settings > Secrets and variables > Actions > New repository secret

Step 5: Commit your change, then Github actions will run as your specificed cron to update Weather into your README.md file

Usage

View

Install

go install https://github.com/coding-to-music/github-actions-cron-readme-weather-api

Run

Usage:
weather-forecast update-weather [flags]

Flags:
--city string              City
--days int                 Days of forecast (default 7)
-h, --help                     help for update-weather
-o, --out-file string          Output file path
-f, --template-file string     Readme template file path
-k, --weather-api-key string   weatherapi.com API key

Sample

weather-forecast update-weather \
--days=7 \
--weather-api-key="$WEATHER_API_KEY" \
--template-file='template/README.md.template' \
--city=HaNoi \
--out-file='README.md'

Docker

docker run --rm \
-v ./:/app/data \
weather-forecast \
--weather-api-key='XXXX' \
--city=HaNoi \
--out-file=data/README.md \
--template-file=data/README.md.template