mirror of
https://github.com/YunoHost/apps.git
synced 2024-09-03 20:06:07 +02:00
Add autopatch for new permission system
This commit is contained in:
parent
175fd4156e
commit
77b148f67d
4 changed files with 79 additions and 2 deletions
|
@ -59,7 +59,7 @@ def build_cache():
|
||||||
|
|
||||||
for app in progressbar(apps(), "Git cloning: ", 40):
|
for app in progressbar(apps(), "Git cloning: ", 40):
|
||||||
folder = os.path.join(".apps_cache", app["id"])
|
folder = os.path.join(".apps_cache", app["id"])
|
||||||
reponame = app["url"].rsplit("/", 1)
|
reponame = app["url"].rsplit("/", 1)[-1]
|
||||||
git(f"clone --quiet --depth 1 --single-branch {app['url']} {folder}")
|
git(f"clone --quiet --depth 1 --single-branch {app['url']} {folder}")
|
||||||
git(f"remote add fork https://{login}:{token}@github.com/{login}/{reponame}", in_folder=folder)
|
git(f"remote add fork https://{login}:{token}@github.com/{login}/{reponame}", in_folder=folder)
|
||||||
|
|
||||||
|
@ -85,7 +85,7 @@ def diff():
|
||||||
print("Changes in : " + app["id"])
|
print("Changes in : " + app["id"])
|
||||||
print("=================================")
|
print("=================================")
|
||||||
print("\n")
|
print("\n")
|
||||||
os.system(f"cd {folder} && git diff")
|
os.system(f"cd {folder} && git --no-pager diff")
|
||||||
|
|
||||||
|
|
||||||
def push(patch):
|
def push(patch):
|
||||||
|
|
66
autopatches/patches/new-permission-system/patch.sh
Normal file
66
autopatches/patches/new-permission-system/patch.sh
Normal file
|
@ -0,0 +1,66 @@
|
||||||
|
|
||||||
|
cd scripts/
|
||||||
|
|
||||||
|
if grep -q 'ynh_legacy_permissions' upgrade || grep -q 'ynh_permission_' install
|
||||||
|
then
|
||||||
|
# App already using the new permission system - not patching anything
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! grep -q "protected_\|skipped_" install
|
||||||
|
then
|
||||||
|
# App doesn't has any (un)protected / skipped setting ?
|
||||||
|
# Probably not a webapp or permission ain't relevant for it ?
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
CONFIGURE_PERMISSION_DURING_INSTALL='
|
||||||
|
# Make app public if necessary
|
||||||
|
if [ \"\$is_public\" -eq 1 ]
|
||||||
|
then
|
||||||
|
ynh_permission_update --permission=\"main\" --add=\"visitors\"
|
||||||
|
fi
|
||||||
|
'
|
||||||
|
|
||||||
|
MIGRATE_LEGACY_PERMISSIONS='
|
||||||
|
#=================================================
|
||||||
|
# Migrate legacy permissions to new system
|
||||||
|
#=================================================
|
||||||
|
if ynh_legacy_permissions_exists
|
||||||
|
then
|
||||||
|
ynh_legacy_permissions_delete_all
|
||||||
|
|
||||||
|
ynh_app_setting_delete --app=\$app --key=is_public
|
||||||
|
fi'
|
||||||
|
|
||||||
|
for SCRIPT in "remove upgrade backup restore change_url"
|
||||||
|
do
|
||||||
|
[[ -e $SCRIPT ]] || continue
|
||||||
|
|
||||||
|
perl -p0e 's@.*ynh_app_setting_.*protected_.*@@g' -i $SCRIPT
|
||||||
|
perl -p0e 's@.*ynh_app_setting_.*skipped_.*@@g' -i $SCRIPT
|
||||||
|
perl -p0e 's@\s*if.*-z.*is_public.*(.|\n)*?fi\s@\n@g' -i $SCRIPT
|
||||||
|
perl -p0e 's@\s*if.*is_public.*(-eq|=).*(.|\n)*?fi\s@\n@g' -i $SCRIPT
|
||||||
|
perl -p0e 's@is_public=.*\n@@g' -i $SCRIPT
|
||||||
|
perl -p0e 's@ynh_app_setting_.*is_public.*@@g' -i $SCRIPT
|
||||||
|
perl -p0e 's@.*# Make app .*@@g' -i $SCRIPT
|
||||||
|
perl -p0e 's@.*# Fix is_public as a boolean.*@@g' -i $SCRIPT
|
||||||
|
perl -p0e 's@.*# If app is public.*@@g' -i $SCRIPT
|
||||||
|
perl -p0e 's@.*# .*allow.*credentials.*anyway.*@@g' -i $SCRIPT
|
||||||
|
perl -p0e 's@.*ynh_script_progression.*SSOwat.*@@g' -i $SCRIPT
|
||||||
|
perl -p0e 's@#=*\s#.*SETUP SSOWAT.*\s#=*\s@@g' -i $SCRIPT
|
||||||
|
done
|
||||||
|
|
||||||
|
|
||||||
|
perl -p0e 's@.*domain_regex.*@@g' -i install
|
||||||
|
perl -p0e 's@.*# If app is public.*@@g' -i install
|
||||||
|
perl -p0e 's@.*# Make app .*@@g' -i install
|
||||||
|
perl -p0e 's@.*# .*allow.*credentials.*anyway.*@@g' -i install
|
||||||
|
perl -p0e "s@if.*is_public.*(-eq|=)(.|\n){0,100}setting(.|\n)*?fi\n@$CONFIGURE_PERMISSION_DURING_INSTALL@g" -i install
|
||||||
|
perl -p0e 's@.*ynh_app_setting_.*is_public.*\s@@g' -i install
|
||||||
|
perl -p0e 's@.*ynh_app_setting_.*protected_.*@@g' -i install
|
||||||
|
perl -p0e 's@.*ynh_app_setting_.*skipped_.*@@g' -i install
|
||||||
|
|
||||||
|
grep -q 'is_public=' install || perl -p0e 's@(.*Configuring SSOwat.*)@\1\nynh_permission_update --permission=\"main\" --add=\"visitors\"@g' -i install
|
||||||
|
|
||||||
|
perl -p0e "s@ynh_abort_if_errors@ynh_abort_if_errors\n$MIGRATE_LEGACY_PERMISSIONS@g" -i upgrade
|
10
autopatches/patches/new-permission-system/pr_body.md
Normal file
10
autopatches/patches/new-permission-system/pr_body.md
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
|
||||||
|
NB. : this is an ***automated*** attempt to migrate the app to the new permission system
|
||||||
|
|
||||||
|
You should ***not*** blindly trust the proposed changes. In particular, the auto-patch will not handle:
|
||||||
|
- situations which are more complex than "if is_public is true, allow visitors"
|
||||||
|
- situations where the app needs to be temporarily public (then possible private) during initial configuration
|
||||||
|
- apps using non-standard syntax
|
||||||
|
- other specific use cases
|
||||||
|
|
||||||
|
***PLEASE*** carefully review, test and amend the proposed changes if you find that the autopatch did not do a proper job.
|
1
autopatches/patches/new-permission-system/pr_title.md
Normal file
1
autopatches/patches/new-permission-system/pr_title.md
Normal file
|
@ -0,0 +1 @@
|
||||||
|
Autopatch to migrate to new permission system
|
Loading…
Add table
Reference in a new issue