def Run(self, cmd_val):
        # type: (cmd_value__Argv) -> int
        attrs, offset = arg_def.ParseCmdVal('unset', cmd_val)
        n = len(cmd_val.argv)
        arg = arg_types.unset(attrs)

        # TODO: Could use arg_r.Rest()
        for i in xrange(offset, n):
            name = cmd_val.argv[i]
            spid = cmd_val.arg_spids[i]

            if arg.f:
                if name in self.funcs:
                    del self.funcs[name]

            elif arg.v:
                if not self._UnsetVar(name, spid, False):
                    return 1

            else:
                # proc_fallback: Try to delete var first, then func.
                if not self._UnsetVar(name, spid, True):
                    return 1

        return 0
Beispiel #2
0
    def Run(self, cmd_val):
        # type: (cmd_value__Argv) -> int
        attrs, arg_r = flag_spec.ParseCmdVal('unset', cmd_val)
        arg = arg_types.unset(attrs.attrs)

        argv, arg_spids = arg_r.Rest2()
        for i, name in enumerate(argv):
            spid = arg_spids[i]

            if arg.f:
                if name in self.funcs:
                    del self.funcs[name]

            elif arg.v:
                if not self._UnsetVar(name, spid, False):
                    return 1

            else:
                # proc_fallback: Try to delete var first, then func.
                if not self._UnsetVar(name, spid, True):
                    return 1

        return 0