stateDiagram-v2
[*] --> FunctionDetected
FunctionDetected --> CheckIfSudo
CheckIfSudo --> SudoCommand: is sudo
CheckIfSudo --> CheckPromptSetting: not sudo
SudoCommand --> CheckSudoSetting
CheckSudoSetting --> PromptUser: sudo_always_prompt=True
CheckSudoSetting --> AutoGrant: sudo_always_prompt=False
CheckPromptSetting --> PromptUser: prompt_enabled=True
CheckPromptSetting --> AutoGrant: prompt_enabled=False
PromptUser --> UserDecision
UserDecision --> ExecuteFunction: Allow
UserDecision --> GrantForSession: Allow for session
UserDecision --> DenyFunction: Deny
UserDecision --> ModifyCommand: Modify
AutoGrant --> ExecuteFunction
GrantForSession --> ExecuteFunction
GrantForSession --> UpdatePermissions
ModifyCommand --> PromptUser
ExecuteFunction --> ReturnResult
DenyFunction --> ReturnDeniedMessage
ReturnResult --> [*]
ReturnDeniedMessage --> [*]
UpdatePermissions --> [*]