def trigger_action_by_name(method_sym, custom_dir, from_action, *arguments)
      # First, check if there is a predefined method in the actions folder
      class_ref = class_reference_from_action_name(method_sym)
      unless class_ref
        class_ref = class_reference_from_action_alias(method_sym)
        # notify action that it has been used by alias
        if class_ref.respond_to?(:alias_used)
          orig_action = method_sym.to_s
          arguments = [{}] if arguments.empty?
          class_ref.alias_used(orig_action, arguments.first)
        end
      end

      # It's important to *not* have this code inside the rescue block
      # otherwise all NameErrors will be caught and the error message is
      # confusing
      begin
        return self.try_switch_to_lane(method_sym, arguments)
      rescue LaneNotAvailableError
        # We don't actually handle this here yet
        # We just try to use a user configured lane first
        # and only if there is none, we're gonna check for the
        # built-in actions
      end

      if class_ref
        if class_ref.respond_to?(:run)
          # Action is available, now execute it
          return self.execute_action(method_sym, class_ref, arguments, custom_dir: custom_dir, from_action: from_action)
        else
          UI.user_error!("Action '#{method_sym}' of class '#{class_name}' was found, but has no `run` method.")
        end
      end

      # No lane, no action, let's at least show the correct error message
      if Fastlane.plugin_manager.plugin_is_added_as_dependency?(PluginManager.plugin_prefix + method_sym.to_s)
        # That's a plugin, but for some reason we can't find it
        UI.user_error!("Plugin '#{method_sym}' was not properly loaded, make sure to follow the plugin docs for troubleshooting: #{PluginManager::TROUBLESHOOTING_URL}")
      elsif Fastlane::Actions.formerly_bundled_actions.include?(method_sym.to_s)
        # This was a formerly bundled action which is now a plugin.
        UI.verbose(caller.join("\n"))
        UI.user_error!("The action '#{method_sym}' is no longer bundled with fastlane. You can install it using `fastlane add_plugin #{method_sym}`")
      else
        # So there is no plugin under that name, so just show the error message generated by the lane switch
        UI.verbose(caller.join("\n"))
        UI.user_error!("Could not find action, lane or variable '#{method_sym}'. Check out the documentation for more details: https://docs.fastlane.tools/actions")
      end
    end
def trigger_action_by_name(method_sym, custom_dir, from_action, *arguments)
      # First, check if there is a predefined method in the actions folder
      class_ref = class_reference_from_action_name(method_sym)
      unless class_ref
        class_ref = class_reference_from_action_alias(method_sym)
        # notify action that it has been used by alias
        if class_ref.respond_to?(:alias_used)
          orig_action = method_sym.to_s
          arguments = [{}] if arguments.empty?
          class_ref.alias_used(orig_action, arguments.first)
        end
      end

      # It's important to *not* have this code inside the rescue block
      # otherwise all NameErrors will be caught and the error message is
      # confusing
      begin
        return self.try_switch_to_lane(method_sym, arguments)
      rescue LaneNotAvailableError
        # We don't actually handle this here yet
        # We just try to use a user configured lane first
        # and only if there is none, we're gonna check for the
        # built-in actions
      end

      if class_ref
        if class_ref.respond_to?(:run)
          # Action is available, now execute it
          return self.execute_action(method_sym, class_ref, arguments, custom_dir: custom_dir, from_action: from_action)
        else
          UI.user_error!("Action '#{method_sym}' of class '#{class_name}' was found, but has no `run` method.")
        end
      end

      # No lane, no action, let's at least show the correct error message
      if Fastlane.plugin_manager.plugin_is_added_as_dependency?(PluginManager.plugin_prefix + method_sym.to_s)
        # That's a plugin, but for some reason we can't find it
        UI.user_error!("Plugin '#{method_sym}' was not properly loaded, make sure to follow the plugin docs for troubleshooting: #{PluginManager::TROUBLESHOOTING_URL}")
      elsif Fastlane::Actions.formerly_bundled_actions.include?(method_sym.to_s)
        # This was a formerly bundled action which is now a plugin.
        UI.verbose(caller.join("\n"))
        UI.user_error!("The action '#{method_sym}' is no longer bundled with fastlane. You can install it using `fastlane add_plugin #{method_sym}`")
      else
        # So there is no plugin under that name, so just show the error message generated by the lane switch
        UI.verbose(caller.join("\n"))
        UI.user_error!("Could not find action, lane or variable '#{method_sym}'. Check out the documentation for more details: https://docs.fastlane.tools/actions")
      end
    end
This is being called from `method_missing` from the Fastfile
 It's also used when an action is called from another action
 @param from_action Indicates if this action is being trigged by another action.
                    If so, it won't show up in summary.