diff options
Diffstat (limited to '')
-rw-r--r-- | forged/internal/common/ansiec/colors.go (renamed from forged/internal/ansiec/colors.go) | 20 | ||||
-rw-r--r-- | forged/internal/common/ansiec/doc.go (renamed from forged/internal/ansiec/ansiec.go) | 0 | ||||
-rw-r--r-- | forged/internal/common/ansiec/reset.go (renamed from forged/internal/ansiec/reset.go) | 1 | ||||
-rw-r--r-- | forged/internal/common/ansiec/style.go (renamed from forged/internal/ansiec/style.go) | 1 | ||||
-rw-r--r-- | forged/internal/common/argon2id/LICENSE (renamed from LICENSE.MIT) | 0 | ||||
-rw-r--r-- | forged/internal/common/argon2id/argon2id.go (renamed from forged/internal/argon2id/argon2id.go) | 0 | ||||
-rw-r--r-- | forged/internal/common/bare/LICENSE (renamed from LICENSE.APACHE) | 0 | ||||
-rw-r--r-- | forged/internal/common/bare/doc.go (renamed from forged/internal/bare/package.go) | 0 | ||||
-rw-r--r-- | forged/internal/common/bare/errors.go (renamed from forged/internal/bare/errors.go) | 4 | ||||
-rw-r--r-- | forged/internal/common/bare/limit.go (renamed from forged/internal/bare/limit.go) | 2 | ||||
-rw-r--r-- | forged/internal/common/bare/marshal.go (renamed from forged/internal/bare/marshal.go) | 2 | ||||
-rw-r--r-- | forged/internal/common/bare/reader.go (renamed from forged/internal/bare/reader.go) | 4 | ||||
-rw-r--r-- | forged/internal/common/bare/unions.go (renamed from forged/internal/bare/unions.go) | 6 | ||||
-rw-r--r-- | forged/internal/common/bare/unmarshal.go (renamed from forged/internal/bare/unmarshal.go) | 0 | ||||
-rw-r--r-- | forged/internal/common/bare/varint.go (renamed from forged/internal/bare/varint.go) | 0 | ||||
-rw-r--r-- | forged/internal/common/bare/writer.go (renamed from forged/internal/bare/writer.go) | 6 | ||||
-rw-r--r-- | forged/internal/common/cmap/LICENSE (renamed from LICENSE.BSD) | 0 | ||||
-rw-r--r-- | forged/internal/common/cmap/comparable_map.go (renamed from forged/internal/cmap/comparable_map.go) | 2 | ||||
-rw-r--r-- | forged/internal/common/cmap/map.go (renamed from forged/internal/cmap/map.go) | 2 | ||||
-rw-r--r-- | forged/internal/common/humanize/bytes.go (renamed from forged/internal/humanize/bytes.go) | 0 | ||||
-rw-r--r-- | forged/internal/common/misc/back.go (renamed from forged/internal/misc/back.go) | 0 | ||||
-rw-r--r-- | forged/internal/common/misc/iter.go (renamed from forged/internal/misc/iter.go) | 0 | ||||
-rw-r--r-- | forged/internal/common/misc/misc.go (renamed from forged/internal/render/render.go) | 4 | ||||
-rw-r--r-- | forged/internal/common/misc/net.go | 42 | ||||
-rw-r--r-- | forged/internal/common/misc/slices.go (renamed from forged/internal/misc/misc.go) | 1 | ||||
-rw-r--r-- | forged/internal/common/misc/trivial.go (renamed from forged/internal/misc/trivial.go) | 4 | ||||
-rw-r--r-- | forged/internal/common/misc/unsafe.go (renamed from forged/internal/misc/unsafe.go) | 4 | ||||
-rw-r--r-- | forged/internal/common/misc/url.go (renamed from forged/internal/misc/url.go) | 0 | ||||
-rw-r--r-- | forged/internal/common/scfg/.golangci.yaml (renamed from forged/internal/scfg/.golangci.yaml) | 0 | ||||
-rw-r--r-- | forged/internal/common/scfg/LICENSE | 18 | ||||
-rw-r--r-- | forged/internal/common/scfg/reader.go (renamed from forged/internal/scfg/reader.go) | 8 | ||||
-rw-r--r-- | forged/internal/common/scfg/scfg.go (renamed from forged/internal/scfg/scfg.go) | 0 | ||||
-rw-r--r-- | forged/internal/common/scfg/struct.go (renamed from forged/internal/scfg/struct.go) | 0 | ||||
-rw-r--r-- | forged/internal/common/scfg/unmarshal.go (renamed from forged/internal/scfg/unmarshal.go) | 0 | ||||
-rw-r--r-- | forged/internal/common/scfg/writer.go (renamed from forged/internal/scfg/writer.go) | 0 |
35 files changed, 98 insertions, 33 deletions
diff --git a/forged/internal/ansiec/colors.go b/forged/internal/common/ansiec/colors.go index 8e5f54b..8be2a0c 100644 --- a/forged/internal/ansiec/colors.go +++ b/forged/internal/common/ansiec/colors.go @@ -3,18 +3,16 @@ package ansiec +// ANSI color codes const ( - Black = "\x1b[30m" - Red = "\x1b[31m" - Green = "\x1b[32m" - Yellow = "\x1b[33m" - Blue = "\x1b[34m" - Magenta = "\x1b[35m" - Cyan = "\x1b[36m" - White = "\x1b[37m" -) - -const ( + Black = "\x1b[30m" + Red = "\x1b[31m" + Green = "\x1b[32m" + Yellow = "\x1b[33m" + Blue = "\x1b[34m" + Magenta = "\x1b[35m" + Cyan = "\x1b[36m" + White = "\x1b[37m" BrightBlack = "\x1b[30;1m" BrightRed = "\x1b[31;1m" BrightGreen = "\x1b[32;1m" diff --git a/forged/internal/ansiec/ansiec.go b/forged/internal/common/ansiec/doc.go index 542c564..542c564 100644 --- a/forged/internal/ansiec/ansiec.go +++ b/forged/internal/common/ansiec/doc.go diff --git a/forged/internal/ansiec/reset.go b/forged/internal/common/ansiec/reset.go index c5b6ba6..51bb312 100644 --- a/forged/internal/ansiec/reset.go +++ b/forged/internal/common/ansiec/reset.go @@ -3,4 +3,5 @@ package ansiec +// Reset the colors and styles const Reset = "\x1b[0m" diff --git a/forged/internal/ansiec/style.go b/forged/internal/common/ansiec/style.go index dd37344..95edbbe 100644 --- a/forged/internal/ansiec/style.go +++ b/forged/internal/common/ansiec/style.go @@ -3,6 +3,7 @@ package ansiec +// ANSI text styles const ( Bold = "\x1b[1m" Underline = "\x1b[4m" diff --git a/LICENSE.MIT b/forged/internal/common/argon2id/LICENSE index 3649823..3649823 100644 --- a/LICENSE.MIT +++ b/forged/internal/common/argon2id/LICENSE diff --git a/forged/internal/argon2id/argon2id.go b/forged/internal/common/argon2id/argon2id.go index 88df8f6..88df8f6 100644 --- a/forged/internal/argon2id/argon2id.go +++ b/forged/internal/common/argon2id/argon2id.go diff --git a/LICENSE.APACHE b/forged/internal/common/bare/LICENSE index 6b0b127..6b0b127 100644 --- a/LICENSE.APACHE +++ b/forged/internal/common/bare/LICENSE diff --git a/forged/internal/bare/package.go b/forged/internal/common/bare/doc.go index 2f12f55..2f12f55 100644 --- a/forged/internal/bare/package.go +++ b/forged/internal/common/bare/doc.go diff --git a/forged/internal/bare/errors.go b/forged/internal/common/bare/errors.go index 39c951a..4634f0c 100644 --- a/forged/internal/bare/errors.go +++ b/forged/internal/common/bare/errors.go @@ -9,12 +9,12 @@ import ( "reflect" ) -var ErrInvalidStr = errors.New("String contains invalid UTF-8 sequences") +var ErrInvalidStr = errors.New("string contains invalid UTF-8 sequences") type UnsupportedTypeError struct { Type reflect.Type } func (e *UnsupportedTypeError) Error() string { - return fmt.Sprintf("Unsupported type for marshaling: %s\n", e.Type.String()) + return fmt.Sprintf("unsupported type for marshaling: %s\n", e.Type.String()) } diff --git a/forged/internal/bare/limit.go b/forged/internal/common/bare/limit.go index 212bc05..7eece8c 100644 --- a/forged/internal/bare/limit.go +++ b/forged/internal/common/bare/limit.go @@ -32,7 +32,7 @@ func MaxMapSize(size uint64) { // Use MaxUnmarshalBytes to prevent this error from occuring on messages which // are large by design. -var ErrLimitExceeded = errors.New("Maximum message size exceeded") +var ErrLimitExceeded = errors.New("maximum message size exceeded") // Identical to io.LimitedReader, except it returns our custom error instead of // EOF if the limit is reached. diff --git a/forged/internal/bare/marshal.go b/forged/internal/common/bare/marshal.go index 1ce942d..d4c338e 100644 --- a/forged/internal/bare/marshal.go +++ b/forged/internal/common/bare/marshal.go @@ -54,7 +54,7 @@ func MarshalWriter(w *Writer, val interface{}) error { t := reflect.TypeOf(val) v := reflect.ValueOf(val) if t.Kind() != reflect.Ptr { - return errors.New("Expected val to be pointer type") + return errors.New("expected val to be pointer type") } return getEncoder(t.Elem())(w, v.Elem()) diff --git a/forged/internal/bare/reader.go b/forged/internal/common/bare/reader.go index 58325e3..7e872f4 100644 --- a/forged/internal/bare/reader.go +++ b/forged/internal/common/bare/reader.go @@ -10,7 +10,7 @@ import ( "math" "unicode/utf8" - "go.lindenii.runxiyu.org/forge/forged/internal/misc" + "go.lindenii.runxiyu.org/forge/forged/internal/common/misc" ) type byteReader interface { @@ -157,7 +157,7 @@ func (r *Reader) ReadString() (string, error) { // Reads a fixed amount of arbitrary data, defined by the length of the slice. func (r *Reader) ReadDataFixed(dest []byte) error { - var amt int = 0 + var amt int for amt < len(dest) { n, err := r.base.Read(dest[amt:]) if err != nil { diff --git a/forged/internal/bare/unions.go b/forged/internal/common/bare/unions.go index 0270a5f..1020fa0 100644 --- a/forged/internal/bare/unions.go +++ b/forged/internal/common/bare/unions.go @@ -21,8 +21,10 @@ type UnionTags struct { types map[uint64]reflect.Type } -var unionInterface = reflect.TypeOf((*Union)(nil)).Elem() -var unionRegistry map[reflect.Type]*UnionTags +var ( + unionInterface = reflect.TypeOf((*Union)(nil)).Elem() + unionRegistry map[reflect.Type]*UnionTags +) func init() { unionRegistry = make(map[reflect.Type]*UnionTags) diff --git a/forged/internal/bare/unmarshal.go b/forged/internal/common/bare/unmarshal.go index d55f32c..d55f32c 100644 --- a/forged/internal/bare/unmarshal.go +++ b/forged/internal/common/bare/unmarshal.go diff --git a/forged/internal/bare/varint.go b/forged/internal/common/bare/varint.go index a185ac8..a185ac8 100644 --- a/forged/internal/bare/varint.go +++ b/forged/internal/common/bare/varint.go diff --git a/forged/internal/bare/writer.go b/forged/internal/common/bare/writer.go index bada045..1b23c9f 100644 --- a/forged/internal/bare/writer.go +++ b/forged/internal/common/bare/writer.go @@ -9,7 +9,7 @@ import ( "io" "math" - "go.lindenii.runxiyu.org/forge/forged/internal/misc" + "go.lindenii.runxiyu.org/forge/forged/internal/common/misc" ) // A Writer for BARE primitive types. @@ -92,7 +92,7 @@ func (w *Writer) WriteString(str string) error { // Writes a fixed amount of arbitrary data, defined by the length of the slice. func (w *Writer) WriteDataFixed(data []byte) error { - var amt int = 0 + var amt int for amt < len(data) { n, err := w.base.Write(data[amt:]) if err != nil { @@ -109,7 +109,7 @@ func (w *Writer) WriteData(data []byte) error { if err != nil { return err } - var amt int = 0 + var amt int for amt < len(data) { n, err := w.base.Write(data[amt:]) if err != nil { diff --git a/LICENSE.BSD b/forged/internal/common/cmap/LICENSE index d5dfee8..d5dfee8 100644 --- a/LICENSE.BSD +++ b/forged/internal/common/cmap/LICENSE diff --git a/forged/internal/cmap/comparable_map.go b/forged/internal/common/cmap/comparable_map.go index cd9d4ce..e89175c 100644 --- a/forged/internal/cmap/comparable_map.go +++ b/forged/internal/common/cmap/comparable_map.go @@ -3,7 +3,7 @@ // Copyright 2024 Runxi Yu (porting it to generics) // Copyright 2016 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE.BSD file. +// license that can be found in the LICENSE file. package cmap diff --git a/forged/internal/cmap/map.go b/forged/internal/common/cmap/map.go index 4f43627..7a1fe5b 100644 --- a/forged/internal/cmap/map.go +++ b/forged/internal/common/cmap/map.go @@ -3,7 +3,7 @@ // Copyright 2024 Runxi Yu (porting it to generics) // Copyright 2016 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE.BSD file. +// license that can be found in the LICENSE file. // Package cmap provides a generic Map safe for concurrent use. package cmap diff --git a/forged/internal/humanize/bytes.go b/forged/internal/common/humanize/bytes.go index bea504c..bea504c 100644 --- a/forged/internal/humanize/bytes.go +++ b/forged/internal/common/humanize/bytes.go diff --git a/forged/internal/misc/back.go b/forged/internal/common/misc/back.go index 5351359..5351359 100644 --- a/forged/internal/misc/back.go +++ b/forged/internal/common/misc/back.go diff --git a/forged/internal/misc/iter.go b/forged/internal/common/misc/iter.go index 61a96f4..61a96f4 100644 --- a/forged/internal/misc/iter.go +++ b/forged/internal/common/misc/iter.go diff --git a/forged/internal/render/render.go b/forged/internal/common/misc/misc.go index 465e410..e9e10ab 100644 --- a/forged/internal/render/render.go +++ b/forged/internal/common/misc/misc.go @@ -1,5 +1,5 @@ // SPDX-License-Identifier: AGPL-3.0-only // SPDX-FileCopyrightText: Copyright (c) 2025 Runxi Yu <https://runxiyu.org> -// Package render provides functions to render code and READMEs. -package render +// Package misc provides miscellaneous functions and other definitions. +package misc diff --git a/forged/internal/common/misc/net.go b/forged/internal/common/misc/net.go new file mode 100644 index 0000000..967ea77 --- /dev/null +++ b/forged/internal/common/misc/net.go @@ -0,0 +1,42 @@ +package misc + +import ( + "context" + "errors" + "fmt" + "net" + "syscall" +) + +func ListenUnixSocket(ctx context.Context, path string) (listener net.Listener, replaced bool, err error) { + listenConfig := net.ListenConfig{} //exhaustruct:ignore + listener, err = listenConfig.Listen(ctx, "unix", path) + if errors.Is(err, syscall.EADDRINUSE) { + replaced = true + unlinkErr := syscall.Unlink(path) + if unlinkErr != nil { + return listener, false, fmt.Errorf("remove existing socket %q: %w", path, unlinkErr) + } + listener, err = listenConfig.Listen(ctx, "unix", path) + } + if err != nil { + return listener, replaced, fmt.Errorf("listen on unix socket %q: %w", path, err) + } + return listener, replaced, nil +} + +func Listen(ctx context.Context, net_, addr string) (listener net.Listener, err error) { + if net_ == "unix" { + listener, _, err = ListenUnixSocket(ctx, addr) + if err != nil { + return listener, fmt.Errorf("listen unix socket for web: %w", err) + } + } else { + listenConfig := net.ListenConfig{} //exhaustruct:ignore + listener, err = listenConfig.Listen(ctx, net_, addr) + if err != nil { + return listener, fmt.Errorf("listen %s for web: %w", net_, err) + } + } + return listener, nil +} diff --git a/forged/internal/misc/misc.go b/forged/internal/common/misc/slices.go index 398020a..3ad0211 100644 --- a/forged/internal/misc/misc.go +++ b/forged/internal/common/misc/slices.go @@ -1,7 +1,6 @@ // SPDX-License-Identifier: AGPL-3.0-only // SPDX-FileCopyrightText: Copyright (c) 2025 Runxi Yu <https://runxiyu.org> -// Package misc provides miscellaneous functions and other definitions. package misc import "strings" diff --git a/forged/internal/misc/trivial.go b/forged/internal/common/misc/trivial.go index e59c17e..83901e0 100644 --- a/forged/internal/misc/trivial.go +++ b/forged/internal/common/misc/trivial.go @@ -28,13 +28,13 @@ func QueryEscape(s string) string { } // Dereference dereferences a pointer. -func Dereference[T any](p *T) T { +func Dereference[T any](p *T) T { //nolint:ireturn return *p } // DereferenceOrZero dereferences a pointer. If the pointer is nil, the zero // value of its associated type is returned instead. -func DereferenceOrZero[T any](p *T) T { +func DereferenceOrZero[T any](p *T) T { //nolint:ireturn if p != nil { return *p } diff --git a/forged/internal/misc/unsafe.go b/forged/internal/common/misc/unsafe.go index 6c2192f..d827e7f 100644 --- a/forged/internal/misc/unsafe.go +++ b/forged/internal/common/misc/unsafe.go @@ -9,12 +9,12 @@ import "unsafe" // Memory is borrowed from the string. // The resulting byte slice must not be modified in any form. func StringToBytes(s string) (bytes []byte) { - return unsafe.Slice(unsafe.StringData(s), len(s)) + return unsafe.Slice(unsafe.StringData(s), len(s)) //#nosec G103 } // BytesToString converts a byte slice to a string without copying the bytes. // Memory is borrowed from the byte slice. // The source byte slice must not be modified. func BytesToString(b []byte) string { - return unsafe.String(unsafe.SliceData(b), len(b)) + return unsafe.String(unsafe.SliceData(b), len(b)) //#nosec G103 } diff --git a/forged/internal/misc/url.go b/forged/internal/common/misc/url.go index 346ff76..346ff76 100644 --- a/forged/internal/misc/url.go +++ b/forged/internal/common/misc/url.go diff --git a/forged/internal/scfg/.golangci.yaml b/forged/internal/common/scfg/.golangci.yaml index 59f1970..59f1970 100644 --- a/forged/internal/scfg/.golangci.yaml +++ b/forged/internal/common/scfg/.golangci.yaml diff --git a/forged/internal/common/scfg/LICENSE b/forged/internal/common/scfg/LICENSE new file mode 100644 index 0000000..3649823 --- /dev/null +++ b/forged/internal/common/scfg/LICENSE @@ -0,0 +1,18 @@ +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/forged/internal/scfg/reader.go b/forged/internal/common/scfg/reader.go index 6a2bedc..b0e2cc0 100644 --- a/forged/internal/scfg/reader.go +++ b/forged/internal/common/scfg/reader.go @@ -15,12 +15,16 @@ import ( const maxNestingDepth = 1000 // Load loads a configuration file. -func Load(path string) (Block, error) { +func Load(path string) (block Block, err error) { f, err := os.Open(path) if err != nil { return nil, err } - defer f.Close() + defer func() { + if cerr := f.Close(); err == nil && cerr != nil { + err = cerr + } + }() return Read(f) } diff --git a/forged/internal/scfg/scfg.go b/forged/internal/common/scfg/scfg.go index 4533e63..4533e63 100644 --- a/forged/internal/scfg/scfg.go +++ b/forged/internal/common/scfg/scfg.go diff --git a/forged/internal/scfg/struct.go b/forged/internal/common/scfg/struct.go index 98ec943..98ec943 100644 --- a/forged/internal/scfg/struct.go +++ b/forged/internal/common/scfg/struct.go diff --git a/forged/internal/scfg/unmarshal.go b/forged/internal/common/scfg/unmarshal.go index 8befc10..8befc10 100644 --- a/forged/internal/scfg/unmarshal.go +++ b/forged/internal/common/scfg/unmarshal.go diff --git a/forged/internal/scfg/writer.go b/forged/internal/common/scfg/writer.go index 02a07fe..02a07fe 100644 --- a/forged/internal/scfg/writer.go +++ b/forged/internal/common/scfg/writer.go |