Skip to content

Latest commit

 

History

169 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

go-tools

A comprehensive Go utility library providing various components, modules, and utilities for common development tasks.

go report

Requirements

  • Go 1.25.0 and above

Installation

go get github.com/alomerry/go-tools

Overview

This library is organized into three main categories:

  • Components: Reusable client wrappers for various services
  • Modules: Standalone tools and utilities
  • Utils: General-purpose utility functions

Components

Configuration Management

  • Apollo (components/apollo): Apollo configuration center client with change listeners

Databases

  • MySQL (components/mysql): MySQL database client
  • MongoDB (components/mongo): MongoDB client wrapper
  • Redis (components/redis): Redis client with key generation utilities

Message Queue & Streaming

  • Kafka (components/kafka): Kafka client for topic management, message production, and metadata operations

Object Storage (OSS)

  • OSS (components/oss): Unified OSS client supporting multiple providers:
    • Qiniu Kodo
    • MinIO
    • AWS S3
    • Cloudflare R2

Time Series Database

  • TSDB (components/tsdb): Time series database client, currently supports InfluxDB

Search & Analytics

  • Elasticsearch (components/es): Elasticsearch typed client wrapper

Infrastructure

  • Kubernetes (components/k8s): Kubernetes client for managing deployments, pods, services, and resources
  • gRPC (components/grpc): gRPC utilities including custom header matchers

Monitoring & Logging

  • Monitor (components/monitor): System monitoring with CPU, memory, disk, and network statistics
  • Log (components/log): Logrus formatter and logging utilities

Modules

DNS Tools

  • DNS (modules/dns): DNS management tools supporting:
    • Alibaba Cloud DNS (AliDNS)
    • Cloudflare DNS

File Management

  • Pusher (modules/pusher): File upload tool for OSS with support for:
    • File existence checking
    • Automatic upload on file changes
    • Cloudflare R2 support

Excel Processing

  • SGS (modules/sgs): Excel processing tools for delay analysis and reporting

Utils

Data Structures

  • Algorithm (utils/algorithm):
    • Binary Search Tree (BST)
    • Queue
    • Set (generic implementation)

Database Utilities

  • DB (utils/db): Database backup tools
    • MySQL dump functionality
    • MongoDB ObjectID utilities

File Operations

  • Files (utils/files): File manipulation utilities
  • Tar (utils/tar): TAR archive operations
  • Zip (utils/zip): ZIP archive operations

Data Processing

  • JSON (utils/json): JSON processing utilities
  • Array (utils/array): Array manipulation functions
  • Maps (utils/maps): Concurrent map implementations
  • String (utils/string): String utility functions
  • Random (utils/random): Random string generation

Network & Web

  • Net (utils/net): Network utilities
  • UA (utils/ua): User-Agent parsing utilities

Security & Authentication

  • JWT (utils/jwt): JWT token generation and validation

Time & Context

  • Time (utils/time): Time utility functions
  • Context (utils/context.go): Context utilities

Other Utilities

  • Base (utils/base): Base utility functions
  • Vars (utils/vars): Variable utilities
  • Func (utils/func.go): Function utilities
  • Struct (utils/struct.go): Struct reflection utilities

Static

The static directory contains configuration constants, environment variable helpers, and error definitions:

  • Cons (static/cons): Application constants
  • Env (static/env): Environment variable helpers
  • Errors (static/errors): Error definitions

Usage Examples

OSS Client

import "github.com/alomerry/go-tools/components/oss"
import "github.com/alomerry/go-tools/components/oss/meta"

cfg := meta.Config{
    Type:   meta.ClientTypeR2,
    Bucket: "my-bucket",
    // ... other config
}

client, err := oss.NewClient(cfg)
if err != nil {
    log.Fatal(err)
}

Kafka Client

import "github.com/alomerry/go-tools/components/kafka"

client := kafka.NewKafkaClient(ctx,
    kafka.WithAddresses("localhost:9092"),
)

topics, err := client.ListTopics()
if err != nil {
    log.Fatal(err)
}

System Monitor

import "github.com/alomerry/go-tools/components/monitor"

monitor := monitor.NewSystemMonitor(
    monitor.WithContext(ctx),
    monitor.WithInterval(30*time.Second),
    monitor.WithCallback(func(stats *monitor.SystemStats) error {
        log.Printf("CPU: %.2f%%, Memory: %.2f%%", 
            stats.CPUUsage, stats.MemoryUsage)
        return nil
    }),
)

monitor.Watch()

Database Dump

import "github.com/alomerry/go-tools/utils/db"
import "github.com/alomerry/go-tools/static/cons"

tool := db.NewDumpTool(
    db.MySQLDumpCmdParam("user:pass@tcp(localhost:3306)/dbname"),
    db.SetDumpPath("/tmp/backups"),
)

files, err := tool.DumpDbs(cons.Database{
    Type: cons.MySQL,
    Name: "mydb",
})

Set Operations

import "github.com/alomerry/go-tools/utils/algorithm"

set := algorithm.Instance[string]()
set.Insert("a").Insert("b").Insert("c")

if set.Has("a") {
    fmt.Println("Set contains 'a'")
}

items := set.ToArray()

License

See LICENSE file for details.

Thanks

Thanks for free JetBrains Open Source license

About

go tools contains serveral tools, includes data struct, oss pusher...

Topics

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages