Compare commits
25 commits
Author | SHA1 | Date | |
---|---|---|---|
426253b09c | |||
920ec231c3 | |||
62b046e08b | |||
9ce0ef483c | |||
9ba9b9cc8c | |||
c2f8e8e028 | |||
70b7e79e6a | |||
4ea18d12cc | |||
f115b2ac50 | |||
ba6f13bf02 | |||
862e5898ad | |||
e2be96f26d | |||
07c2468f3b | |||
b8e899e3d9 | |||
f2c47e46f7 | |||
6fc67f285a | |||
1ee00554e4 | |||
a258a857cb | |||
c163dbf9c7 | |||
5ecd464fbe | |||
a8517d5733 | |||
f451b07764 | |||
6535237f6d | |||
812f1bfe51 | |||
053891690e |
8 changed files with 242 additions and 139 deletions
|
@ -1,91 +0,0 @@
|
|||
name: "lint, build and push"
|
||||
on:
|
||||
schedule:
|
||||
- cron: "27 10 * * SUN"
|
||||
push:
|
||||
branches: [ master ]
|
||||
pull_request:
|
||||
|
||||
# Variables: https://docs.github.com/en/actions/writing-workflows/choosing-what-your-workflow-does/store-information-in-variables#default-environment-variables + https://forgejo.org/docs/latest/user/actions/#env-1
|
||||
|
||||
jobs:
|
||||
lint:
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
- name: Run Gitleaks
|
||||
uses: docker://zricethezav/gitleaks:v8.21.2
|
||||
with:
|
||||
args: detect --no-git --verbose --source ${{ github.workspace }}
|
||||
- name: Run hadolint
|
||||
uses: docker://pipelinecomponents/hadolint:0.26.4
|
||||
with:
|
||||
args: hadolint Dockerfile
|
||||
# - name: Run ShellCheck
|
||||
# uses: sudo-bot/action-shellcheck@latest
|
||||
# with:
|
||||
# cli-args: "shell.sh"
|
||||
- name: Send notification
|
||||
uses: dawidd6/action-send-mail@v3
|
||||
if: failure()
|
||||
with:
|
||||
connection_url: smtp://docker10.mgrote.net:1025
|
||||
secure: false
|
||||
ignore_cert: true
|
||||
to: michael.grote@posteo.de
|
||||
from: Gitea Actions <gitea@mgrote.net>
|
||||
subject: "CI ${{ job.status }} in ${{ github.repository }}"
|
||||
body: |
|
||||
Repo: ${{ github.repository }}
|
||||
Job: ${{ github.action }}
|
||||
Status: ${{ job.status }}
|
||||
Source: ${{ github.head_ref }}
|
||||
|
||||
build:
|
||||
needs: [gitleaks, hadolint] # shellcheck
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
- name: Extract repository name
|
||||
id: name
|
||||
run: |
|
||||
echo REPO_NAME=$(echo ${GITHUB_REPOSITORY} | awk -F"/" '{print $2}') >> $GITHUB_OUTPUT
|
||||
- name: Docker meta
|
||||
id: meta
|
||||
uses: docker/metadata-action@v5
|
||||
with:
|
||||
images: |
|
||||
registry.mgrote.net/${{ steps.name.outputs.REPO_NAME }}
|
||||
tags: |
|
||||
type=raw,value=latest,enable={{is_default_branch}}
|
||||
type=ref,event=branch
|
||||
type=ref,event=pr
|
||||
- name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v3
|
||||
# - name: Login to Docker Hub
|
||||
# uses: docker/login-action@v3
|
||||
# with:
|
||||
# username: ${{ secrets.DOCKERHUB_USERNAME }}
|
||||
# password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||
- name: Build and push Docker image
|
||||
uses: https://github.com/docker/build-push-action@v6
|
||||
with:
|
||||
context: .
|
||||
file: ./Dockerfile
|
||||
push: true
|
||||
tags: ${{ steps.meta.outputs.tags }}
|
||||
- name: Send notification
|
||||
uses: dawidd6/action-send-mail@v3
|
||||
if: failure()
|
||||
with:
|
||||
connection_url: smtp://docker10.mgrote.net:1025
|
||||
secure: false
|
||||
ignore_cert: true
|
||||
to: michael.grote@posteo.de
|
||||
from: Gitea Actions <gitea@mgrote.net>
|
||||
subject: "CI ${{ job.status }} in ${{ github.repository }}"
|
||||
body: |
|
||||
Repo: ${{ github.repository }}
|
||||
Job: ${{ github.action }}
|
||||
Status: ${{ job.status }}
|
||||
Source: ${{ github.head_ref }}
|
61
.woodpecker/build.yml
Normal file
61
.woodpecker/build.yml
Normal file
|
@ -0,0 +1,61 @@
|
|||
---
|
||||
depends_on:
|
||||
- lint
|
||||
|
||||
clone:
|
||||
git:
|
||||
image: "woodpeckerci/plugin-git:2.5.0"
|
||||
settings:
|
||||
depth: 9999 # wird benötigt um die Commits zählen zu können
|
||||
lfs: false
|
||||
partial: false
|
||||
|
||||
steps:
|
||||
set_variables:
|
||||
image: "registry.mgrote.net/allzweckcontainer:latest"
|
||||
commands:
|
||||
# set version
|
||||
- |
|
||||
MAJOR="1"
|
||||
MINOR="1"
|
||||
PATCH="$(git rev-list --count "$CI_COMMIT_BRANCH")"
|
||||
VERSION="v$MAJOR.$MINOR.$PATCH"
|
||||
if [ "$CI_COMMIT_BRANCH" != "main" ] && [ "$CI_COMMIT_BRANCH" != "master" ]; then
|
||||
VERSION=$VERSION-dev
|
||||
fi
|
||||
echo "VERSION=$VERSION" >> .variables
|
||||
# set date
|
||||
- |
|
||||
DATE=$(date --iso-8601=seconds)
|
||||
echo "DATE=$DATE" >> .variables
|
||||
when:
|
||||
- event: [push, pull_request]
|
||||
evaluate: 'CI_COMMIT_AUTHOR_EMAIL != "renovate@mgrote.net"'
|
||||
|
||||
build_and_push: # damit dieser Step laufen kann muss das Repo in der Woodpecker-GUI "privilegiert" sein
|
||||
image: "docker:26.1.1"
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
commands:
|
||||
- cat .variables
|
||||
- source .variables
|
||||
# https://unix.stackexchange.com/questions/748633/error-multiple-platforms-feature-is-currently-not-supported-for-docker-driver
|
||||
- docker buildx create --use --platform=linux/amd64 --name multi-platform-builder
|
||||
- docker buildx inspect --bootstrap
|
||||
- |
|
||||
docker buildx build \
|
||||
--platform=linux/amd64 \
|
||||
--push \
|
||||
--tag registry.mgrote.net/${CI_REPO_NAME}:${CI_COMMIT_SHA:0:8} \
|
||||
--tag registry.mgrote.net/${CI_REPO_NAME}:${CI_COMMIT_BRANCH} \
|
||||
--tag registry.mgrote.net/${CI_REPO_NAME}:latest \
|
||||
--tag registry.mgrote.net/${CI_REPO_NAME}:$VERSION \
|
||||
--label org.opencontainers.image.url=$CI_REPO_URL \
|
||||
--label org.opencontainers.image.source=$CI_REPO_URL \
|
||||
--label org.opencontainers.image.revision=$CI_COMMIT_SHA \
|
||||
--label org.opencontainers.image.created=$DATE \
|
||||
--file Dockerfile .
|
||||
when:
|
||||
- event: [push, pull_request]
|
||||
evaluate: 'CI_COMMIT_AUTHOR_EMAIL != "renovate@mgrote.net"'
|
||||
...
|
32
.woodpecker/lint.yml
Normal file
32
.woodpecker/lint.yml
Normal file
|
@ -0,0 +1,32 @@
|
|||
---
|
||||
steps:
|
||||
gitleaks:
|
||||
image: zricethezav/gitleaks:v8.18.2
|
||||
commands:
|
||||
- gitleaks detect --no-git --verbose --source $CI_WORKSPACE
|
||||
when:
|
||||
- event: [push, pull_request]
|
||||
evaluate: 'CI_COMMIT_AUTHOR_EMAIL != "renovate@mgrote.net"'
|
||||
|
||||
hadolint:
|
||||
image: pipelinecomponents/hadolint:0.26.1
|
||||
commands:
|
||||
- hadolint Dockerfile
|
||||
when:
|
||||
- event: [push, pull_request]
|
||||
evaluate: 'CI_COMMIT_AUTHOR_EMAIL != "renovate@mgrote.net"'
|
||||
|
||||
shellcheck:
|
||||
image: "koalaman/shellcheck-alpine:v0.10.0"
|
||||
commands:
|
||||
- |
|
||||
find . -type f -not -path './.git/*' -not -path './collections/*' -exec file {} \; | while IFS= read -r line; do
|
||||
if echo "$line" | grep -q "shell script"; then
|
||||
file_path=$(echo "$line" | awk -F':' '{print $1}')
|
||||
shellcheck "$file_path"
|
||||
fi
|
||||
done
|
||||
when:
|
||||
- event: [push, pull_request]
|
||||
evaluate: 'CI_COMMIT_AUTHOR_EMAIL != "renovate@mgrote.net"'
|
||||
...
|
|
@ -1,4 +1,4 @@
|
|||
FROM alpine:3.20.3
|
||||
FROM alpine:3.19.1
|
||||
|
||||
# hadolint ignore=DL3018
|
||||
RUN apk add --no-cache \
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
# miniflux-filter
|
||||
|
||||
[![status-badge](https://ci.mgrote.net/api/badges/9/status.svg)](https://ci.mgrote.net/repos/9)
|
||||
|
||||
<!-- TOC titleSize:3 tabSpaces:2 depthFrom:2 depthTo:6 withLinks:1 updateOnSave:1 orderedList:0 skip:0 title:1 charForUnorderedList:* -->
|
||||
### Table of Contents
|
||||
* [Introduction](#introduction)
|
||||
|
@ -75,10 +77,9 @@ If `MF_DEBUG` is set to `1`, `miniflux-filter` will print extra output to stdou
|
|||
|
||||
| RC | Description |
|
||||
| --- | ------------------------------- |
|
||||
| 1 | `$MF_FILTERLIST_FILE` not found |
|
||||
| 1 | `$MF_FILTERLIST` not set |
|
||||
| 2 | `$MF_AUTH_TOKEN` not set |
|
||||
| 3 | `$MF_API_URL` not set |
|
||||
| 4 | `$MF_FILTERLIST_FILE` is a dir |
|
||||
| 5 | `jq` is not installed |
|
||||
| 6 | `curl` is not installed |
|
||||
| 7 | could not connect to `miniflux` |
|
||||
|
|
14
docker-compose.yml
Normal file
14
docker-compose.yml
Normal file
|
@ -0,0 +1,14 @@
|
|||
version: '3.2'
|
||||
services:
|
||||
mf-filter:
|
||||
container_name: mf-filter
|
||||
restart: always
|
||||
environment:
|
||||
- TZ=Europe/Berlin
|
||||
- MF_AUTH_TOKEN=XN2klsvvD[...]-dcHPaeQ=
|
||||
- MF_API_URL=https://miniflux.[...].net/v1
|
||||
- MF_SLEEP=60
|
||||
#- MF_DEBUG=1
|
||||
image: quotengrote/miniflux-filter:latest
|
||||
volumes:
|
||||
- ./filter.txt:/data/filter.txt
|
164
filter.sh
164
filter.sh
|
@ -5,9 +5,7 @@ if [[ $MF_DEBUG -eq 1 ]]; then
|
|||
printf "miniflux-filter - git.mgrote.net/mg/miniflux-filter\n"
|
||||
fi
|
||||
|
||||
### datei mit filter ausdruecken
|
||||
MF_FILTERLIST_FILE="${MF_FILTERLIST_FILE:=/data/filter.txt}"
|
||||
### wartezeit zwischen durchlaeufen
|
||||
### wartezeit zwischen laeufen
|
||||
MF_SLEEP="${MF_SLEEP:=30}"
|
||||
### MF_DEBUG output
|
||||
# standardmäßig 0 = aus
|
||||
|
@ -25,7 +23,6 @@ Usage:
|
|||
|
||||
Options:
|
||||
-h, --help displays this text
|
||||
* script gets executed
|
||||
|
||||
EOF
|
||||
}
|
||||
|
@ -84,17 +81,11 @@ function check_vars {
|
|||
echo [ERROR] '"$MF_API_URL"' not set.
|
||||
exit 3
|
||||
fi
|
||||
# prüfe ob filter-datei ein ordner ist
|
||||
# kann bei einem falschen bind-mount passieren
|
||||
if [[ -d "$MF_FILTERLIST_FILE" ]]; then
|
||||
# shellcheck disable=SC2102
|
||||
echo [ERROR] "$MF_FILTERLIST_FILE" is a directory!
|
||||
exit 4
|
||||
fi
|
||||
# pruefe ob filter-datei NICHT existiert
|
||||
if [[ ! -e "$MF_FILTERLIST_FILE" ]]; then
|
||||
if [[ -z "${MF_FILTERLIST}" ]]; then
|
||||
# shellcheck disable=SC2016
|
||||
# shellcheck disable=SC2102
|
||||
echo [ERROR] "$MF_FILTERLIST_FILE" not readable!
|
||||
echo [ERROR] '"$MF_FILTERLIST"' not set.
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
@ -142,11 +133,9 @@ function check_api_connectivity {
|
|||
function debug_output {
|
||||
if [[ $MF_DEBUG -eq 1 ]]; then
|
||||
echo -----------------------------------------------------
|
||||
echo [DEBUG] Filterlist-File: "$MF_FILTERLIST_FILE"
|
||||
echo [DEBUG] Sleep-Intervall: "$MF_SLEEP"
|
||||
echo [DEBUG] Auth-Token: "$MF_AUTH_TOKEN"
|
||||
echo [DEBUG] MF-Url: "$MF_API_URL"
|
||||
echo [DEBUG] Anzahl Filter: "$(wc -l < "$MF_FILTERLIST_FILE")"
|
||||
echo [DEBUG] MF-URL: "$MF_API_URL"
|
||||
echo -----------------------------------------------------
|
||||
fi
|
||||
}
|
||||
|
@ -165,8 +154,8 @@ function get_unread_entries {
|
|||
}
|
||||
function filter_entries {
|
||||
echo "[INFO] Filtering entries..."
|
||||
# fuer jede Zeile in $MF_FILTERLIST_FILE
|
||||
while read -r line; do
|
||||
# fuer jede Zeile in $MF_FILTERLIST
|
||||
echo "$MF_FILTERLIST" | while read -r line; do
|
||||
if [[ $MF_DEBUG -eq 1 ]]; then
|
||||
echo "[DEBUG] set search values"
|
||||
fi
|
||||
|
@ -189,42 +178,70 @@ function filter_entries {
|
|||
fi
|
||||
# das leerzeichen am anfang ist notwendig, trennt die zahlenwerte
|
||||
# suche in titel
|
||||
marked_entries+=" $(echo "$unread_entries" | jq --arg url "$url" --arg suchbegriff "$suchbegriff" '.entries[] | select(.feed.site_url | ascii_downcase | contains($url)) | select(.title | ascii_downcase | contains($suchbegriff)) | .id' )"
|
||||
titles+=" $(echo "$unread_entries" | jq --arg url "$url" --arg suchbegriff "$suchbegriff" '.entries[] | select(.feed.site_url | ascii_downcase | contains($url)) | select(.title | ascii_downcase | contains($suchbegriff)) | .id' )"
|
||||
# suche in content
|
||||
marked_entries+=" $(echo "$unread_entries" | jq --arg url "$url" --arg suchbegriff "$suchbegriff" '.entries[] | select(.feed.site_url | ascii_downcase | contains($url)) | select(.content | ascii_downcase | contains($suchbegriff)) | .id' )"
|
||||
content+=" $(echo "$unread_entries" | jq --arg url "$url" --arg suchbegriff "$suchbegriff" '.entries[] | select(.feed.site_url | ascii_downcase | contains($url)) | select(.content | ascii_downcase | contains($suchbegriff)) | .id' )"
|
||||
fi
|
||||
fi
|
||||
done < "$MF_FILTERLIST_FILE"
|
||||
# sortiere und forme marked_entries um
|
||||
marked_entries="$title $content"
|
||||
# https://unix.stackexchange.com/questions/353321/remove-all-duplicate-word-from-string-using-shell-script
|
||||
# entfernt doppelte eintraege innerhalb einer zeile
|
||||
marked_entries=$(echo marked_entries | xargs -n1 | sort -u | xargs | sed -r 's/\s/\, /g')
|
||||
echo "$marked_entries" #d
|
||||
done
|
||||
}
|
||||
function mark_as_read {
|
||||
# https://stackoverflow.com/questions/3869072/test-for-non-zero-length-string-in-bash-n-var-or-var
|
||||
# wenn variabler NICHT leer...
|
||||
# wenn variable NICHT leer...
|
||||
# sende in put request mit curl
|
||||
# der wert muss escaped werden, aber NICHT die variable die uebergeben wird
|
||||
if [[ $MF_DEBUG -eq 1 ]]; then
|
||||
echo "[DEBUG] mark entries as read"
|
||||
echo "[DEBUG] marked entry ids:"
|
||||
# https://unix.stackexchange.com/questions/353321/remove-all-duplicate-word-from-string-using-shell-script
|
||||
# entfernt doppelte eintraege innerhalb einer zeile
|
||||
echo "$marked_entries" | xargs -n1 | sort -u | xargs | sed -r 's/\s/\, /g'
|
||||
echo "$marked_entries"
|
||||
fi
|
||||
# wenn NICHT leer
|
||||
# sed wandelt 123 345 456 in 123, 245, 345 um.
|
||||
if [[ $(echo "$marked_entries" | xargs -n1 | sort -u | xargs | sed -r 's/\s/\, /g') ]]; then
|
||||
curl --request PUT --silent --header "X-Auth-Token: $MF_AUTH_TOKEN" --header "Content-Type: application/json" --data "{\"entry_ids\": [$(echo "$marked_entries" | xargs -n1 | sort -u | xargs | sed -r 's/\s/\, /g')], \"status\": \"read\"}" "$MF_API_URL/entries"
|
||||
# gebe entry-titel aus
|
||||
for i in $(echo "$marked_entries" | xargs -n1 | sort -u | xargs); do
|
||||
# gebe aus welcher eintrag gefiltert wurde, cut begrenzt die maximale laenge auf 100 zeichen
|
||||
# jq "XXX", fügt XXX in ausgabe hinzu
|
||||
echo [INFO] Filtered entry "$i" - "$(curl --silent --header "X-Auth-Token: $MF_AUTH_TOKEN" "$MF_API_URL"/entries/"$i" | jq --join-output '"url: ",.feed.site_url," - title: ", .title' | cut -c -100)".
|
||||
done
|
||||
if [[ -n "$marked_entries" ]]; then
|
||||
curl --request PUT --silent --header "X-Auth-Token: $MF_AUTH_TOKEN" --header "Content-Type: application/json" --data "{"entry_ids":"$marked_entries"],"status":"read"}" "$MF_API_URL/entries"
|
||||
# gebe entry-titel aus
|
||||
for i in "$marked_entries" ; do
|
||||
# gebe aus welcher eintrag gefiltert wurde, cut begrenzt die maximale laenge auf 100 zeichen
|
||||
# jq "XXX", fügt XXX in ausgabe hinzu
|
||||
echo [INFO] Filtered entry "$i" - "$(curl --silent --header "X-Auth-Token: $MF_AUTH_TOKEN" "$MF_API_URL"/entries/"$i" | jq --join-output '"url: ",.feed.site_url," - title: ", .title' | cut -c -100)".
|
||||
done
|
||||
fi
|
||||
# setze variablen auf leer
|
||||
marked_entries=""
|
||||
}
|
||||
|
||||
|
||||
|
||||
# debug
|
||||
MF_FILTERLIST="
|
||||
golem.de::Anzeige
|
||||
golem.de::Aus dem Verlag:
|
||||
golem.de::Elon Musk
|
||||
golem.de::Fifa
|
||||
golem.de::Fussball
|
||||
golem.de::Fußball
|
||||
golem.de::(g+)
|
||||
golem.de::Golem Karrierewelt
|
||||
golem.de::PODCAST BESSER WISSEN:
|
||||
golem.de::Sonst noch was?
|
||||
golem.de::Star Trek:
|
||||
golem.de::Tech Talks:
|
||||
golem.de::Twitter
|
||||
golem.de::Wochenrückblick
|
||||
heise.de::Dienstag:
|
||||
heise.de::Die Produktwerker
|
||||
heise.de::Elon Musk
|
||||
heise.de::Ferris Talk
|
||||
heise.de::FIFA
|
||||
heise.de::Freitag
|
||||
heise.de::Fußball-WM
|
||||
heise.de::heise+
|
||||
"
|
||||
# Doing
|
||||
case "$1" in
|
||||
--help | -h | help)
|
||||
|
@ -245,3 +262,82 @@ case "$1" in
|
|||
sleep "$MF_SLEEP"
|
||||
done
|
||||
esac
|
||||
|
||||
|
||||
|
||||
# curl --request PUT --header "X-Auth-Token: hLPp23gO8QeZWPYXXXXXXXMs0jG0XTYgNZBgRA=" --header "Content-Type: application/json" --data '{"entry_ids":[388229, 388211], "status":"read"}' https://miniflux.mgrote.net/v1/entries
|
||||
|
||||
|
||||
|
||||
lese suchwörter per feedurl ein
|
||||
suche pro feed url nach suchwortern
|
||||
markiere als gelesen
|
||||
|
||||
|
||||
|
||||
|
||||
get all feeds where are unread entries+
|
||||
check if for that feeds a filter is defined
|
||||
search for keywords for this feedsunread entries
|
||||
mark entries as read
|
||||
|
||||
|
||||
token: hLPp23gO8QeZWPYzK3jYgmGbABvMs0jG0XTYgNZBgRA= # später tauschen
|
||||
|
||||
|
||||
curl -H "X-Auth-Token: hLPp23gO8QeZWPYzK3jYgmGbABvMs0jG0XTYgNZBgRA=" https://miniflux.mgrote.net/v1/me
|
||||
|
||||
|
||||
#!/bin/bash
|
||||
# get all feeds where are unread entries+
|
||||
|
||||
token="X-Auth-Token: hLPp23gO8QeZWPYzK3jYgmGbABvMs0jG0XTYgNZBgRA="
|
||||
url="https://miniflux.mgrote.net/v1/"
|
||||
for feed in $(curl --silent -H $token $url/feeds | jq .[].id) ; do
|
||||
unread_entries=$(curl --silent -H $token $url/feeds/$feed/entries?status=unread)
|
||||
done
|
||||
|
||||
|
||||
|
||||
|
||||
----
|
||||
#!/bin/bash
|
||||
# get all feeds where are unread entries+
|
||||
|
||||
MF_FILTERLIST="
|
||||
golem.de::Anzeige
|
||||
golem.de::Aus dem Verlag:
|
||||
golem.de::Elon Musk
|
||||
golem.de::Fifa
|
||||
golem.de::Fussball
|
||||
golem.de::Fußball
|
||||
golem.de::(g+)
|
||||
"
|
||||
|
||||
token="X-Auth-Token: hLPp23gO8QeZWPYzK3jYgmGbABvMs0jG0XTYgNZBgRA="
|
||||
url="https://miniflux.mgrote.net/v1"
|
||||
|
||||
# für jeden feed
|
||||
for feed in $(curl --silent -H "$token" "$url/feeds" | jq .[].id) ; do
|
||||
echo for1
|
||||
unread_entries=$(curl --silent -H "$token" "$url/feeds/$feed/entries?status=unread" | jq .total)
|
||||
# der ungelesen einträge hat
|
||||
if [[ $unread_entries -gt 0 ]] ; then
|
||||
echo if1
|
||||
fi
|
||||
done
|
||||
|
||||
echo "$MF_FILTERLIST" | while read -r line ; do
|
||||
echo while1
|
||||
filter_url=$(echo "$line" | tr '[:upper:]' '[:lower:]' | awk --field-separator="::" '{print $1}')
|
||||
echo $filter_url
|
||||
mf_site_url=$(curl --silent -H "$token" "$url/feeds/$feed" | jq --raw-output .site_url)
|
||||
echo $mf_site_url
|
||||
# prufe ob ein filter dafur existiert
|
||||
echo "$filter_url" | grep "$mf_site_url"
|
||||
if [[ $(echo "$filter_url" | grep --silent "$mf_site_url") ]] ; then
|
||||
echo for2
|
||||
echo "id: $feed"
|
||||
echo "$mf_site_url $filter_url"
|
||||
fi
|
||||
done
|
||||
|
|
|
@ -1,13 +1,3 @@
|
|||
{
|
||||
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
|
||||
"extends": [
|
||||
":dependencyDashboard",
|
||||
":semanticPrefixFixDepsChoreOthers",
|
||||
":ignoreModulesAndTests",
|
||||
"group:monorepos",
|
||||
"group:recommended",
|
||||
"replacements:all",
|
||||
"workarounds:all",
|
||||
"mergeConfidence:all-badges"
|
||||
]
|
||||
"$schema": "https://docs.renovatebot.com/renovate-schema.json"
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue