mostly

package module
v0.4.9 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 11, 2026 License: MIT Imports: 0 Imported by: 0

README

mostly

Collection of small packages.

stackerr

Use stackerr.Errorf("%w", err) everywhere, and then log.Printf("%+v", err) for helpful error stack trace.

When using slog package, the trace is simplified to a single-line.

Use %w verb to wrap existing errors:

return stackerr.Errorf("parsing file: %w", io.EOF)
// elsewhere, print with slog or log:
slog.Error("reading file", "err", err)
log.Printf("reading file: %+v")
println(fmt.Sprintf("%+v", err))

Use var to swap with fmt.Errorf making refactoring easy.

var Errorf = stackerr.Errorf
var Errorf = fmt.Errorf
// elsewhere:
return Errorf("%w", err)

superchan

Cancellable Channel Context superchan

 import (
 	"context"
 	"os"
 	"syscall"

 	"github.com/aerth/mostly/superchan"
 )

 var (
 	mainctx = superchan.NewMain(newmainctx,
 		syscall.SIGINT, syscall.SIGHUP, syscall.SIGTERM).(*superchan.Superchan[os.Signal])

 	_ context.CancelCauseFunc = mainctx.Cancel
    _ context.Context = mainctx
    _ context.Context = mainctx.Context // to pass only the ctx not a canceller
 )

ncode

encoding, twist arrays ([]string -> []MyString -> []string)

	// example, turn strings to *url.URL
	var urls []*url.URL
	var err error
	urls, err = ncode.TwistParsePtr([]string{"https://google.com", "https://myspace.com"}, url.Parse)

	var envs []string
	envs, err = ncode.TwistParse([]string{"XDG_CONFIG_HOME", "HOME"}, os.Getenv)

mllm

tiny ai client for llm and embeddings

Works with llama.cpp and ollama, using /v1/chat/completions endpoint. The Default function loads a new client from environment (LLM_MODEL, LLM_HOST, LLM_API_KEY)

package main

import (
	"context"

	"github.com/aerth/mostly/mllm"
)

func main() {
	ctx := context.TODO()
	_, err := mllm.Default().Generate(ctx, "[some system prompt]", "[some prompt]", false)
	if err != nil {
		println(err.Error())
	}
}

httpserver

a cancellable, signal handling, httpserver+context combo for all kinds of web server programs

package main

import (
	"fmt"
	"net/http"
	"time"

	"github.com/aerth/mostly/httpserver"
)

func main() {
	srv := httpserver.NewDefault()
	go func() {
		time.Sleep(time.Second * 10)
		srv.Cancel(fmt.Errorf("insert more coin"))
	}()
	srv.HandleFunc("GET /{$}", func(w http.ResponseWriter, r *http.Request) {
		_, _ = fmt.Fprintf(w, "Hello!\n")
	})
	err := srv.ListenAndServeAll(":80", ":443", "cert.pem", "key.pem")
	println("the error is:", err.Error())
}

flagpkg

InverseBoolVar (eg: --no-foo to set foo to false)

	import "github.com/aerth/mostly/flagpkg"
	// example:
	cfg.ComplatePage = true
	flagpkg.InverseBoolVar(&cfg.CompletePage, "no-complete", cfg.CompletePage, "dont make whole html page")

filters

For FilterCopy and FilterInPlace

	// filter evens and odds different ways.
	// notice the Backing has two [7,9] after filters.FilterInPlace.
	nums := []int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
	evenCopy := filters.FilterCopy(nums, func(n int) bool {
		return n%2 == 0
	})
	fmt.Println("Original:", nums)
	fmt.Println("Copy:", evenCopy)
	oddInPlace := filters.FilterInPlace(nums, func(n int) bool {
		return n%2 != 0
	})
	fmt.Println("InPlace:", oddInPlace)
	fmt.Println("Backing:", nums)
	// Output:
	// Original: [1 2 3 4 5 6 7 8 9 10]
	// Copy: [2 4 6 8 10]
	// InPlace: [1 3 5 7 9]
	// Backing: [1 3 5 7 9 6 7 8 9 10]

journalwriter

import (
	"log"

	"github.com/aerth/mostly/journalwriter"
)

func foo() {
	log.SetOutput(journalwriter.GetJournalOrStderr(journalwriter.PriInfo))
	log.Printf("hello systemd journal")
	_ = journalwriter.Send(msg, journalwriter.PriInfo, map[string]string{
		"SYSLOG_IDENTIFIER": "mostly", // instead of program_invocation_short_name(3)
	})
}

Documentation

Overview

Package mostly might be renamed

Directories

Path Synopsis
Package cancellable combines Context, CancelCauseFunc with Wait
Package cancellable combines Context, CancelCauseFunc with Wait
cmd
explainfile command
joker command
Package filters for filtering, both in place and copy
Package filters for filtering, both in place and copy
flagpkg package provides some additional flag functions.
flagpkg package provides some additional flag functions.
Package godotenv is a go port of the ruby dotenv library (https://github.com/bkeepers/dotenv)
Package godotenv is a go port of the ruby dotenv library (https://github.com/bkeepers/dotenv)
httpctx
httpctx package provides context keys for http server handlers.
httpctx package provides context keys for http server handlers.
Package mllm is simple llm client, part of aerth/mostly project
Package mllm is simple llm client, part of aerth/mostly project
Package ncode for twist
Package ncode for twist
constraints
Package constraints defines a set of useful constraints to be used with type parameters.
Package constraints defines a set of useful constraints to be used with type parameters.
Package vector256 represents a 256-dimensional float32 vector for pgvector part of aerth/mostly project
Package vector256 represents a 256-dimensional float32 vector for pgvector part of aerth/mostly project

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL