def METHOD_NAME(self, updated):
    if "scripts" in updated:
        for s in ctx.options.scripts:
            if ctx.options.scripts.count(s) > 1:
                raise exceptions.OptionsError("Duplicate script")
        for a in self.addons[:]:
            if a.path not in ctx.options.scripts:
                logger.info("Un-loading script: %s" % a.path)
                ctx.master.addons.remove(a)
                self.addons.remove(a)
        # The machinations below are to ensure that:
        #   - Scripts remain in the same order
        #   - Scripts are not initialized un-necessarily. If only a
        #   script's order in the script list has changed, it is just
        #   moved.
        current = {}
        for a in self.addons:
            current[a.path] = a
        ordered = []
        newscripts = []
        for s in ctx.options.scripts:
            if s in current:
                ordered.append(current[s])
            else:
                sc = Script(s, True)
                ordered.append(sc)
                newscripts.append(sc)
        self.addons = ordered
        for s in newscripts:
            ctx.master.addons.register(s)
            if self.is_running:
                # If we're already running, we configure and tell the addon
                # we're up and running.
                ctx.master.addons.invoke_addon_sync(s, hooks.RunningHook())