diff options
| author | Mistivia <i@mistivia.com> | 2025-11-02 15:27:18 +0800 |
|---|---|---|
| committer | Mistivia <i@mistivia.com> | 2025-11-02 15:27:18 +0800 |
| commit | e9c24f4af7ed56760f6db7941827d09f6db9020b (patch) | |
| tree | 62128c43b883ce5e3148113350978755779bb5de /teleirc/matterbridge/vendor/modernc.org/opt | |
| parent | 58d5e7cfda4781d8a57ec52aefd02983835c301a (diff) | |
add matterbridge
Diffstat (limited to 'teleirc/matterbridge/vendor/modernc.org/opt')
7 files changed, 235 insertions, 0 deletions
diff --git a/teleirc/matterbridge/vendor/modernc.org/opt/AUTHORS b/teleirc/matterbridge/vendor/modernc.org/opt/AUTHORS new file mode 100644 index 0000000..0078f5f --- /dev/null +++ b/teleirc/matterbridge/vendor/modernc.org/opt/AUTHORS @@ -0,0 +1,11 @@ +# This file lists authors for copyright purposes. This file is distinct from +# the CONTRIBUTORS files. See the latter for an explanation. +# +# Names should be added to this file as: +# Name or Organization <email address> +# +# The email address is not required for organizations. +# +# Please keep the list sorted. + +Jan Mercl <0xjnml@gmail.com> diff --git a/teleirc/matterbridge/vendor/modernc.org/opt/CONTRIBUTORS b/teleirc/matterbridge/vendor/modernc.org/opt/CONTRIBUTORS new file mode 100644 index 0000000..5e86f06 --- /dev/null +++ b/teleirc/matterbridge/vendor/modernc.org/opt/CONTRIBUTORS @@ -0,0 +1,9 @@ +# This file lists people who contributed code to this repository. The AUTHORS +# file lists the copyright holders; this file lists people. +# +# Names should be added to this file like so: +# Name <email address> +# +# Please keep the list sorted. + +Jan Mercl <0xjnml@gmail.com> diff --git a/teleirc/matterbridge/vendor/modernc.org/opt/LICENSE b/teleirc/matterbridge/vendor/modernc.org/opt/LICENSE new file mode 100644 index 0000000..11a2e91 --- /dev/null +++ b/teleirc/matterbridge/vendor/modernc.org/opt/LICENSE @@ -0,0 +1,27 @@ +Copyright (c) 2019 The Opt Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the names of the authors nor the names of the +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/teleirc/matterbridge/vendor/modernc.org/opt/Makefile b/teleirc/matterbridge/vendor/modernc.org/opt/Makefile new file mode 100644 index 0000000..8fc8fb4 --- /dev/null +++ b/teleirc/matterbridge/vendor/modernc.org/opt/Makefile @@ -0,0 +1,18 @@ +# Copyright 2022 The Opt Authors. All rights reserved. +# Use of this source code is governed by a BSD-style +# license that can be found in the LICENSE file. + +.PHONY: clean edit editor + +clean: + rm -f log-* cpu.test mem.test *.out + go clean + +edit: + @touch log + @if [ -f "Session.vim" ]; then gvim -S & else gvim -p Makefile *.go & fi + +editor: + gofmt -l -s -w *.go + go test -o /dev/null -c + go install 2>&1 | tee log-editor diff --git a/teleirc/matterbridge/vendor/modernc.org/opt/README.md b/teleirc/matterbridge/vendor/modernc.org/opt/README.md new file mode 100644 index 0000000..f04870f --- /dev/null +++ b/teleirc/matterbridge/vendor/modernc.org/opt/README.md @@ -0,0 +1,11 @@ +# opt + +Package opt implements command-line flag parsing. + +### Installation + + $ go get [-u] modernc.org/opt + +### Documentation + +[godoc.org/modernc.org/opt](http://godoc.org/modernc.org/opt) diff --git a/teleirc/matterbridge/vendor/modernc.org/opt/opt.go b/teleirc/matterbridge/vendor/modernc.org/opt/opt.go new file mode 100644 index 0000000..b4bd828 --- /dev/null +++ b/teleirc/matterbridge/vendor/modernc.org/opt/opt.go @@ -0,0 +1,155 @@ +// Package opt implements command-line flag parsing. +package opt // import "modernc.org/opt" + +import ( + "fmt" + "strings" +) + +type opt struct { + handler func(opt, arg string) error + name string + + arg bool // Enable argument, e.g. `-I foo` or `-I=foo` +} + +// A Set represents a set of defined options. +type Set struct { + cfg map[string]*opt + imm []*opt +} + +// NewSet returns a new, empty option set. +func NewSet() *Set { return &Set{cfg: map[string]*opt{}} } + +// Opt defines a simple option, e.g. `-f`. When the option is found during +// Parse, the handler is called with the value of the option, e.g. "-f". +func (p *Set) Opt(name string, handler func(opt string) error) { + p.cfg[name] = &opt{ + handler: func(opt, arg string) error { return handler(opt) }, + } +} + +// Arg defines a simple option with an argument, e.g. `-I foo` or `-I=foo`. +// Setting imm argument enables additionally `-Ifoo`. When the option is found +// during Parse, the handler is called with the values of the option and the +// argument, e.g. "-I" and "foo" for all of the variants. +func (p *Set) Arg(name string, imm bool, handler func(opt, arg string) error) { + switch { + case imm: + p.imm = append(p.imm, &opt{ + handler: handler, + name: name, + }) + default: + p.cfg[name] = &opt{ + arg: true, + handler: handler, + name: name, + } + } +} + +// Parse parses opts. Must be called after all options are defined. The handler +// is called for all items in opts that were not defined before using Opt or +// Arg. +// +// If any handler returns a non-nil error, Parse will stop. If the error is of +// type Skip, the error returned by Parse will contain all the unprocessed +// items of opts. +// +// The opts slice must not be modified by any handler while Parser is +// executing. +func (p *Set) Parse(opts []string, handler func(string) error) (err error) { + defer func() { + switch err.(type) { + case Skip: + err = Skip(opts) + } + }() + + for len(opts) != 0 { + opt := opts[0] + opt0 := opt + opts = opts[1:] + var arg string + out: + switch { + case strings.HasPrefix(opt, "-"): + name := opt[1:] + for _, cfg := range p.imm { + if strings.HasPrefix(name, cfg.name) { + switch { + case name == cfg.name: + if len(opts) == 0 { + return fmt.Errorf("missing argument of %s", opt) + } + + if err = cfg.handler(opt, opts[0]); err != nil { + return err + } + + opts = opts[1:] + default: + opt = opt[:len(cfg.name)+1] + val := strings.TrimPrefix(name[len(cfg.name):], "=") + if err = cfg.handler(opt, val); err != nil { + return err + } + } + break out + } + } + + if n := strings.IndexByte(opt, '='); n > 0 { + arg = opt[n+1:] + name = opt[1:n] + opt = opt[:n] + } + switch cfg := p.cfg[name]; { + case cfg == nil: + if err = handler(opt0); err != nil { + return err + } + default: + switch { + case cfg.arg: + switch { + case arg != "": + if err = cfg.handler(opt, arg); err != nil { + return err + } + default: + if len(opts) == 0 { + return fmt.Errorf("missing argument of %s", opt) + } + + if err = cfg.handler(opt, opts[0]); err != nil { + return err + } + + opts = opts[1:] + } + default: + if err = cfg.handler(opt, ""); err != nil { + return err + } + } + } + default: + if opt == "" { + break + } + + if err = handler(opt); err != nil { + return err + } + } + } + return nil +} + +// Skip is an error that contains all unprocessed items passed to Parse. +type Skip []string + +func (s Skip) Error() string { return fmt.Sprint([]string(s)) } diff --git a/teleirc/matterbridge/vendor/modernc.org/opt/unconvert.sh b/teleirc/matterbridge/vendor/modernc.org/opt/unconvert.sh new file mode 100644 index 0000000..af3b87f --- /dev/null +++ b/teleirc/matterbridge/vendor/modernc.org/opt/unconvert.sh @@ -0,0 +1,4 @@ +until unconvert -fastmath . &> /dev/null +do + unconvert -fastmath -apply . &> /dev/null +done |
