Allow sudo -u as a legit usage of sudo since ynh_exec_as ain't official

This commit is contained in:
Alexandre Aubin 2020-03-31 04:30:11 +02:00
parent 794abd57fd
commit 73741c225f

View file

@ -493,6 +493,15 @@ class Script():
return any(command in line return any(command in line
for line in [' '.join(line) for line in self.lines]) for line in [' '.join(line) for line in self.lines])
def containsregex(self, regex):
"""
Iterate on lines to check if command is contained in line
For instance, "app setting" is contained in "yunohost app setting $app ..."
"""
return any(re.match(regex, line)
for line in [' '.join(line) for line in self.lines])
def analyze(self): def analyze(self):
print_header(self.name.upper() + " SCRIPT") print_header(self.name.upper() + " SCRIPT")
@ -594,7 +603,7 @@ class Script():
print_error("[YEP-2.12] You should avoid using 'rm -rf', please use 'ynh_secure_remove' instead") print_error("[YEP-2.12] You should avoid using 'rm -rf', please use 'ynh_secure_remove' instead")
if self.contains("sed -i"): if self.contains("sed -i"):
print_warning("[YEP-2.12] You should avoid using 'sed -i', please use 'ynh_replace_string' instead") print_warning("[YEP-2.12] You should avoid using 'sed -i', please use 'ynh_replace_string' instead")
if self.contains("sudo "): if self.containsregex(r"sudo \w"): # \w is here to not match sudo -u, legit use because ynh_exec_as not official yet...
print_warning( print_warning(
"[YEP-2.12] You should not need to use 'sudo', the script is being run as root. " "[YEP-2.12] You should not need to use 'sudo', the script is being run as root. "
"(If you need to run a command using a specific user, use 'ynh_exec_as')" "(If you need to run a command using a specific user, use 'ynh_exec_as')"