From c153f3c7b9c90512a64d700e6b9b30b12c866ea0 Mon Sep 17 00:00:00 2001 From: goodbyepavlyi 3 Date: Sun, 26 Mar 2023 09:23:01 +0200 Subject: [PATCH 1/9] Bad interpreter error associated with the NPM release of 2.9.21 (#486) --- .github/ISSUE_TEMPLATE/bug_report.md | 2 +- .github/workflows/docker-build.yml | 2 +- .../nginx-proxy-manager/root/etc/cont-init.d/98-themepark | 2 +- .../root/etc/s6-overlay/s6-rc.d/init-mod-themepark/run | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index a80ace8694..d2069b95da 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -12,7 +12,7 @@ A clear and concise description of what the bug is. **Theme Install Method** (Don't skip) - Docker run / Compose Config - - If using docker mods share your container logs.. + - If using docker mods share your COMPLETE container logs.. - Webserver subfilter Config - Stylus Config diff --git a/.github/workflows/docker-build.yml b/.github/workflows/docker-build.yml index a328399c96..25c94a93ad 100644 --- a/.github/workflows/docker-build.yml +++ b/.github/workflows/docker-build.yml @@ -136,7 +136,7 @@ jobs: docker manifest create ${IMAGE}:${TAG} ${AMD64} ${ARM64} ${ARMV7} docker manifest push ${IMAGE}:${TAG} - name: Latest manifest - if: ${{ github.event.release.target_commitish == 'master' }} + if: ${{ github.event.release.target_commitish == 'master' }} || ${{ github.event.inputs.branch == 'master' }} env: DOCKER_CLI_EXPERIMENTAL: enabled run: | diff --git a/docker-mods/nginx-proxy-manager/root/etc/cont-init.d/98-themepark b/docker-mods/nginx-proxy-manager/root/etc/cont-init.d/98-themepark index 8bdef50bc7..bf9b6647c1 100755 --- a/docker-mods/nginx-proxy-manager/root/etc/cont-init.d/98-themepark +++ b/docker-mods/nginx-proxy-manager/root/etc/cont-init.d/98-themepark @@ -1,4 +1,4 @@ -#!/usr/bin/with-contenv bash +#!/command/with-contenv bash echo '--------------------------------------' echo '| Nginx Proxy Manager theme.park Mod |' diff --git a/docker-mods/nginx-proxy-manager/root/etc/s6-overlay/s6-rc.d/init-mod-themepark/run b/docker-mods/nginx-proxy-manager/root/etc/s6-overlay/s6-rc.d/init-mod-themepark/run index 8bdef50bc7..bf9b6647c1 100755 --- a/docker-mods/nginx-proxy-manager/root/etc/s6-overlay/s6-rc.d/init-mod-themepark/run +++ b/docker-mods/nginx-proxy-manager/root/etc/s6-overlay/s6-rc.d/init-mod-themepark/run @@ -1,4 +1,4 @@ -#!/usr/bin/with-contenv bash +#!/command/with-contenv bash echo '--------------------------------------' echo '| Nginx Proxy Manager theme.park Mod |' From 119841dc40027c4054d72bc6c4cfde68f6ab07f2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samuel=20Bart=C3=ADk?= <63553146+sambartik@users.noreply.github.com> Date: Sat, 8 Apr 2023 19:01:03 +0200 Subject: [PATCH 2/9] Fix Pi-Hole network details table colors (#489) --- css/base/pihole/pihole-base.css | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/css/base/pihole/pihole-base.css b/css/base/pihole/pihole-base.css index 0df2d04a66..77d497a892 100644 --- a/css/base/pihole/pihole-base.css +++ b/css/base/pihole/pihole-base.css @@ -411,11 +411,11 @@ } /* Network */ - .table-striped>tbody>tr:nth-of-type(odd) { + .table-striped>tbody>tr:nth-of-type(odd):not(#network-details .table-striped>tbody>tr:nth-of-type(odd)) { background: var(--transparency-dark-25) !important; } - .table-striped>tbody>tr:nth-of-type(even) { + .table-striped>tbody>tr:nth-of-type(even):not(#network-details .table-striped>tbody>tr:nth-of-type(even)) { background: var(--transparency-dark-50) !important; } From 188d15247e98af8ff0ea154ebce5eb13d76f1ad4 Mon Sep 17 00:00:00 2001 From: rg9400 <39887349+rg9400@users.noreply.github.com> Date: Wed, 26 Apr 2023 23:50:58 -0500 Subject: [PATCH 3/9] Grafana 9.5.1 element support (#492) Adding support for only a few elements in latest version of Grafana --- css/base/grafana/grafana-base.css | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/css/base/grafana/grafana-base.css b/css/base/grafana/grafana-base.css index d22c958e61..654049a520 100644 --- a/css/base/grafana/grafana-base.css +++ b/css/base/grafana/grafana-base.css @@ -58,7 +58,8 @@ p { } .page-header-canvas, -.page-toolbar[class*="css-"] { +.page-toolbar[class*="css-"], +.css-278jzv { background: var(--transparency-dark-25) !important; box-shadow: none !important; border-bottom: none !important; @@ -534,7 +535,8 @@ p { } /* PANEL BACKGROUND COLOR*/ -.panel-container { +.panel-container, +.css-85us1i-panel-container { background: var(--transparency-dark-25); border: transparent; box-shadow: none !important; @@ -1308,4 +1310,4 @@ input:checked+.gf-form-switch__slider { ::-webkit-input-placeholder { color: var(--text-hover) !important; -} \ No newline at end of file +} From 28e66eabb1490394d1d340da1de075669788c643 Mon Sep 17 00:00:00 2001 From: Henry Whitaker <36062479+henrywhitaker3@users.noreply.github.com> Date: Fri, 19 May 2023 14:09:11 +0100 Subject: [PATCH 4/9] Added uptime kuma card css (#494) --- css/base/organizr/organizr-base.css | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/css/base/organizr/organizr-base.css b/css/base/organizr/organizr-base.css index cc2ba61bd3..7600e8a5e0 100644 --- a/css/base/organizr/organizr-base.css +++ b/css/base/organizr/organizr-base.css @@ -1451,6 +1451,10 @@ a:hover, background: var(--transparency-light-20); } +#homepageOrderUptimeKuma .card-body { + background: var(--transparency-light-20); +} + .card, .card-body { border-radius: 3px; From d0e1b3beebeceab6057835d8b2c61bbd61d26fe1 Mon Sep 17 00:00:00 2001 From: GilbN <24592972+GilbN@users.noreply.github.com> Date: Tue, 23 May 2023 22:28:23 +0200 Subject: [PATCH 5/9] Use hashlib instead of git shas --- themes.py | 59 ++++++++++++++++++++++++++++++++----------------------- 1 file changed, 34 insertions(+), 25 deletions(-) diff --git a/themes.py b/themes.py index 6f95ce7904..637afdcb46 100644 --- a/themes.py +++ b/themes.py @@ -1,13 +1,14 @@ #! /usr/bin/env python3 -from os import defpath, listdir, environ as env, chdir +from os import defpath, listdir, environ as env, chdir, getcwd from os.path import isdir, isfile, join, dirname, abspath from json import dump, dumps, loads, load import subprocess +from hashlib import md5 chdir(dirname(abspath(__file__))) # Set working dir -def get_shas(output): +def get_shas(output) -> dict[str, str]: """Returns a dict of CSS files and SHAs""" output_lines = output.splitlines() if output else [] sha_dict = {} @@ -19,9 +20,17 @@ def get_shas(output): return(sha_dict) -def create_addons_json(): - addon_shas = subprocess.check_output(["git", "ls-files", "-s", "./css/addons/*.css"]) if isdir(".git") else [] - SHAS = get_shas(addon_shas) +def get_md5_hash(file_path) -> str: + """Returns the MD5 hash of a file""" + md5_hash = md5() + with open(file_path, "rb") as f: + for byte_block in iter(lambda: f.read(4096), b""): + md5_hash.update(byte_block) + return md5_hash.hexdigest() + +def create_addons_json() -> str: + #addon_shas = subprocess.check_output(["git", "ls-files", "-s", "./css/addons/*.css"]) if isdir(".git") else [] + #SHAS = get_shas(addon_shas) ADDONS = {"addons": {}} addon_root = './css/addons' addon_folders = [name for name in listdir( @@ -38,12 +47,12 @@ def create_addons_json(): f"{addon_root}/{app}/{addon}") if isfile(join(f"{addon_root}/{app}/{addon}", file))] if len([f for f in files if f.endswith('.css')]) > 1: ADDONS["addons"][app][addon].update({ - "css": [f"{scheme}://{DOMAIN}/css/addons/{app}/{addon}/{file}?sha={SHAS.get(file)}" for file in files if file.split(".")[1] == "css"] + "css": [f"{scheme}://{DOMAIN}/css/addons/{app}/{addon}/{file}?sha={get_md5_hash(join(getcwd(),'css','addons',app,addon,file))}" for file in files if file.split(".")[1] == "css"] } ) else: ADDONS["addons"][app].update({ - addon: f"{scheme}://{DOMAIN}/css/addons/{app}/{addon}/{file}?sha={SHAS.get(file)}" for file in files if file.split(".")[1] == "css" + addon: f"{scheme}://{DOMAIN}/css/addons/{app}/{addon}/{file}?sha={get_md5_hash(join(getcwd(),'css','addons',app,addon,file))}" for file in files if file.split(".")[1] == "css" } ) extra_dirs = [dir for dir in listdir( @@ -54,7 +63,7 @@ def create_addons_json(): f"{addon_root}/{app}/{addon}/{dir}") if isfile(join(f"{addon_root}/{app}/{addon}/{dir}", file))] ADDONS["addons"][app][addon].update({ dir: { - "css": [f"{scheme}://{DOMAIN}/css/addons/{app}/{addon}/{dir}/{extra_file}?sha={SHAS.get(extra_file)}" for extra_file in extra_dir_files if extra_file.split(".")[1] == "css"] + "css": [f"{scheme}://{DOMAIN}/css/addons/{app}/{addon}/{dir}/{extra_file}?sha={get_md5_hash(join(getcwd(),'css','addons',app,addon,dir,extra_file))}" for extra_file in extra_dir_files if extra_file.split(".")[1] == "css"] } } ) @@ -64,18 +73,18 @@ def create_addons_json(): def create_json(app_folders: list = None, themes: list = None, community_themes: list = None ,docker_mods: list = None, no_sub_folders=False) -> str: if no_sub_folders: THEMES_DICT = {} - theme_shas = subprocess.check_output(["git", "ls-files", "-s", "./css/theme-options/*.css"]) if isdir(".git") else [] - community_theme_shas = subprocess.check_output(["git", "ls-files", "-s", "./css/community-theme-options/*.css"]) if isdir(".git") else [] - THEME_SHAS = get_shas(theme_shas) - COMMUNITY_THEME_SHAS = get_shas(community_theme_shas) + #theme_shas = subprocess.check_output(["git", "ls-files", "-s", "./css/theme-options/*.css"]) if isdir(".git") else [] + #community_theme_shas = subprocess.check_output(["git", "ls-files", "-s", "./css/community-theme-options/*.css"]) if isdir(".git") else [] + #THEME_SHAS = get_shas(theme_shas) + #COMMUNITY_THEME_SHAS = get_shas(community_theme_shas) THEMES = { theme.split(".")[0].capitalize(): { - "url": f"{scheme}://{DOMAIN}/css/theme-options/{theme}?sha={THEME_SHAS.get(theme)}" + "url": f"{scheme}://{DOMAIN}/css/theme-options/{theme}?sha={get_md5_hash(join(getcwd(),'css','theme-options', theme))}" }for theme in themes if themes } COMMUNITY_THEMES = { theme.split(".")[0].capitalize(): { - "url": f"{scheme}://{DOMAIN}/css/community-theme-options/{theme}?sha={COMMUNITY_THEME_SHAS.get(theme)}" + "url": f"{scheme}://{DOMAIN}/css/community-theme-options/{theme}?sha={get_md5_hash(join(getcwd(),'css','community-theme-options', theme))}" }for theme in community_themes if community_themes } THEMES_DICT.update(dict(sorted({ @@ -93,12 +102,12 @@ def create_json(app_folders: list = None, themes: list = None, community_themes: else: ADDONS = loads(create_addons_json()) APPS = {} - app_shas = subprocess.check_output(["git", "ls-files", "-s", "./css/base/*base.css"]) if isdir(".git") else [] - SHAS = get_shas(app_shas) + #app_shas = subprocess.check_output(["git", "ls-files", "-s", "./css/base/*base.css"]) if isdir(".git") else [] + #SHAS = get_shas(app_shas) APPS.update(dict(sorted({ "applications": { app: { - "base_css": f"{scheme}://{DOMAIN}/css/base/{app}/{app}-base.css?sha={SHAS.get(f'{app}-base.css')}", + "base_css": f"{scheme}://{DOMAIN}/css/base/{app}/{app}-base.css?sha={get_md5_hash(join('css','base', app, f'{app}-base.css'))}", "addons": ADDONS["addons"][app] if app in ADDONS["addons"] else {} } for app in app_folders if not isfile(f'./css/base/{app}/.deprecated') } @@ -106,7 +115,7 @@ def create_json(app_folders: list = None, themes: list = None, community_themes: APPS.update(dict(sorted({ "deprecated": { app: { - "base_css": f"{scheme}://{DOMAIN}/css/base/{app}/{app}-base.css?sha={SHAS.get(f'{app}-base.css')}", + "base_css": f"{scheme}://{DOMAIN}/css/base/{app}/{app}-base.css?sha={get_md5_hash(join('css','base', app, f'{app}-base.css'))}", "addons": ADDONS["addons"][app] if app in ADDONS["addons"] else {} } for app in app_folders if isfile(f'./css/base/{app}/.deprecated') } @@ -122,16 +131,16 @@ def create_json(app_folders: list = None, themes: list = None, community_themes: return dumps(APPS) def create_theme_options() -> None: - app_shas = subprocess.check_output(["git", "ls-files", "-s", "./css/base/*base.css"]) if isdir(".git") else [] - theme_shas = subprocess.check_output(["git", "ls-files", "-s", "./css/theme-options/*.css"]) if isdir(".git") else [] - community_theme_shas = subprocess.check_output(["git", "ls-files", "-s", "./css/community-theme-options/*.css"]) if isdir(".git") else [] - THEME_SHAS = get_shas(theme_shas) - COMMUNITY_THEME_SHAS = get_shas(community_theme_shas) - APP_SHAS = get_shas(app_shas) + #app_shas = subprocess.check_output(["git", "ls-files", "-s", "./css/base/*base.css"]) if isdir(".git") else [] + #theme_shas = subprocess.check_output(["git", "ls-files", "-s", "./css/theme-options/*.css"]) if isdir(".git") else [] + #community_theme_shas = subprocess.check_output(["git", "ls-files", "-s", "./css/community-theme-options/*.css"]) if isdir(".git") else [] + #THEME_SHAS = get_shas(theme_shas) + #COMMUNITY_THEME_SHAS = get_shas(community_theme_shas) + #APP_SHAS = get_shas(app_shas) def create_css(theme, theme_type="standard"): folder = "./css/base" with open(f"{folder}/{app}/{theme.lower()}.css", "w") as create_app: - content = f'@import url("/css/base/{app}/{app}-base.css?sha={APP_SHAS.get(f"{app}-base.css")}");\n@import url("/css/{"theme-options" if theme_type=="standard" else "community-theme-options"}/{theme.lower()}.css?sha={THEME_SHAS.get(f"{theme.lower()}.css") if theme_type=="standard" else COMMUNITY_THEME_SHAS.get(f"{theme.lower()}.css")}");' + content = f'@import url("/css/base/{app}/{app}-base.css?sha={get_md5_hash(join(getcwd(),"css","base",app,f"{app}-base.css"))}");\n@import url("/css/{"theme-options" if theme_type=="standard" else "community-theme-options"}/{theme.lower()}.css?sha={get_md5_hash(join(getcwd(),"css","theme-options",f"{theme.lower()}.css")) if theme_type=="standard" else get_md5_hash(join(getcwd(),"css","community-theme-options",f"{theme.lower()}.css"))}");' create_app.write(content) with open("themes.json") as themes: data = load(themes) From 6f4f9902ff3a73674497bc475d3aa918a5db10a1 Mon Sep 17 00:00:00 2001 From: GilbN <24592972+GilbN@users.noreply.github.com> Date: Mon, 29 May 2023 14:12:14 +0200 Subject: [PATCH 6/9] Fix Latest manifest if logic --- .github/workflows/docker-build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/docker-build.yml b/.github/workflows/docker-build.yml index 25c94a93ad..a8c8624ea5 100644 --- a/.github/workflows/docker-build.yml +++ b/.github/workflows/docker-build.yml @@ -136,7 +136,7 @@ jobs: docker manifest create ${IMAGE}:${TAG} ${AMD64} ${ARM64} ${ARMV7} docker manifest push ${IMAGE}:${TAG} - name: Latest manifest - if: ${{ github.event.release.target_commitish == 'master' }} || ${{ github.event.inputs.branch == 'master' }} + if: github.event.release.target_commitish == 'master' || github.event.inputs.branch == 'master' env: DOCKER_CLI_EXPERIMENTAL: enabled run: | From 90360aa20b73ea2ef19456eda1b08e88d8296eda Mon Sep 17 00:00:00 2001 From: GilbN <24592972+GilbN@users.noreply.github.com> Date: Sat, 3 Jun 2023 15:36:05 +0200 Subject: [PATCH 7/9] qbit update clean_file function. --- docker-mods/qbittorrent/root/etc/cont-init.d/98-themepark | 4 ++-- .../root/etc/s6-overlay/s6-rc.d/init-mod-themepark/run | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docker-mods/qbittorrent/root/etc/cont-init.d/98-themepark b/docker-mods/qbittorrent/root/etc/cont-init.d/98-themepark index dc6916b564..ee7bfc5e05 100755 --- a/docker-mods/qbittorrent/root/etc/cont-init.d/98-themepark +++ b/docker-mods/qbittorrent/root/etc/cont-init.d/98-themepark @@ -98,8 +98,8 @@ sed_file(){ } clean_file() { - perl -i -pe 's/QBT_TR?\(//' "$1" - perl -i -pe 's/\)QBT_TR\[CONTEXT=.*?\]//' "$1" + perl -i -pe 's/QBT_TR?\(//g' "$1" + perl -i -pe 's/\)QBT_TR\[CONTEXT=.*?\]//g' "$1" } if ! grep -q "${TP_DOMAIN}/css/base" /themepark/public/index.html; then diff --git a/docker-mods/qbittorrent/root/etc/s6-overlay/s6-rc.d/init-mod-themepark/run b/docker-mods/qbittorrent/root/etc/s6-overlay/s6-rc.d/init-mod-themepark/run index 0d884081d5..f82cfea7b8 100755 --- a/docker-mods/qbittorrent/root/etc/s6-overlay/s6-rc.d/init-mod-themepark/run +++ b/docker-mods/qbittorrent/root/etc/s6-overlay/s6-rc.d/init-mod-themepark/run @@ -83,8 +83,8 @@ sed_file(){ } clean_file() { - perl -i -pe 's/QBT_TR?\(//' "$1" - perl -i -pe 's/\)QBT_TR\[CONTEXT=.*?\]//' "$1" + perl -i -pe 's/QBT_TR?\(//g' "$1" + perl -i -pe 's/\)QBT_TR\[CONTEXT=.*?\]//g' "$1" } if ! grep -q "${TP_DOMAIN}/css/base" /themepark/public/index.html; then From c04bc22d7604baccf9a809b5e178674450d97799 Mon Sep 17 00:00:00 2001 From: GilbN <24592972+GilbN@users.noreply.github.com> Date: Sun, 4 Jun 2023 11:15:19 +0200 Subject: [PATCH 8/9] remove cleaning note --- docker-mods/qbittorrent/root/etc/cont-init.d/98-themepark | 4 +--- .../root/etc/s6-overlay/s6-rc.d/init-mod-themepark/run | 4 +--- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/docker-mods/qbittorrent/root/etc/cont-init.d/98-themepark b/docker-mods/qbittorrent/root/etc/cont-init.d/98-themepark index ee7bfc5e05..4290a5fa17 100755 --- a/docker-mods/qbittorrent/root/etc/cont-init.d/98-themepark +++ b/docker-mods/qbittorrent/root/etc/cont-init.d/98-themepark @@ -118,9 +118,7 @@ fi # Clean all files printf 'Cleaning files in /themepark for any translation text...\n\n --------------------------------------------------------------------------- -| !!! RESTART THE CONTAINER IF THIS IS THE FIRST TIME CLEANING FILES !!! | ---------------------------------------------------------------------------\n\n' +----------------------------------------------------------------\n\n' find /themepark -type f \( ! -iname "*.svg" \) | while read fname do clean_file $fname diff --git a/docker-mods/qbittorrent/root/etc/s6-overlay/s6-rc.d/init-mod-themepark/run b/docker-mods/qbittorrent/root/etc/s6-overlay/s6-rc.d/init-mod-themepark/run index f82cfea7b8..d081c33c61 100755 --- a/docker-mods/qbittorrent/root/etc/s6-overlay/s6-rc.d/init-mod-themepark/run +++ b/docker-mods/qbittorrent/root/etc/s6-overlay/s6-rc.d/init-mod-themepark/run @@ -103,9 +103,7 @@ fi # Clean all files printf 'Cleaning files in /themepark for any translation text...\n\n --------------------------------------------------------------------------- -| !!! RESTART THE CONTAINER IF THIS IS THE FIRST TIME CLEANING FILES !!! | ---------------------------------------------------------------------------\n\n' +----------------------------------------------------------------\n\n' find /themepark -type f \( ! -iname "*.svg" \) | while read fname do clean_file $fname From 80e58dfc316bd6a3fce9948c3e8e02b16ef4a3cd Mon Sep 17 00:00:00 2001 From: GilbN <24592972+GilbN@users.noreply.github.com> Date: Sun, 4 Jun 2023 11:30:42 +0200 Subject: [PATCH 9/9] use same style msg log --- docker-mods/qbittorrent/root/etc/cont-init.d/98-themepark | 5 +++-- .../root/etc/s6-overlay/s6-rc.d/init-mod-themepark/run | 5 +++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/docker-mods/qbittorrent/root/etc/cont-init.d/98-themepark b/docker-mods/qbittorrent/root/etc/cont-init.d/98-themepark index 4290a5fa17..8993c58fc7 100755 --- a/docker-mods/qbittorrent/root/etc/cont-init.d/98-themepark +++ b/docker-mods/qbittorrent/root/etc/cont-init.d/98-themepark @@ -117,8 +117,9 @@ if ! grep -q "${TP_DOMAIN}/css/base" /themepark/public/index.html; then fi # Clean all files -printf 'Cleaning files in /themepark for any translation text...\n\n -----------------------------------------------------------------\n\n' +echo '------------------------------------------------------------' +echo '| Cleaning files in /themepark for any translation text... |' +echo '------------------------------------------------------------' find /themepark -type f \( ! -iname "*.svg" \) | while read fname do clean_file $fname diff --git a/docker-mods/qbittorrent/root/etc/s6-overlay/s6-rc.d/init-mod-themepark/run b/docker-mods/qbittorrent/root/etc/s6-overlay/s6-rc.d/init-mod-themepark/run index d081c33c61..52892435f7 100755 --- a/docker-mods/qbittorrent/root/etc/s6-overlay/s6-rc.d/init-mod-themepark/run +++ b/docker-mods/qbittorrent/root/etc/s6-overlay/s6-rc.d/init-mod-themepark/run @@ -102,8 +102,9 @@ if ! grep -q "${TP_DOMAIN}/css/base" /themepark/public/index.html; then fi # Clean all files -printf 'Cleaning files in /themepark for any translation text...\n\n -----------------------------------------------------------------\n\n' +echo '------------------------------------------------------------' +echo '| Cleaning files in /themepark for any translation text... |' +echo '------------------------------------------------------------' find /themepark -type f \( ! -iname "*.svg" \) | while read fname do clean_file $fname