Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/shipengqi/golib
Common libraries for Go.
https://github.com/shipengqi/golib
Last synced: 3 months ago
JSON representation
Common libraries for Go.
- Host: GitHub
- URL: https://github.com/shipengqi/golib
- Owner: shipengqi
- License: mit
- Created: 2021-11-04T06:29:21.000Z (about 3 years ago)
- Default Branch: main
- Last Pushed: 2024-09-11T01:27:36.000Z (4 months ago)
- Last Synced: 2024-10-05T02:34:01.701Z (3 months ago)
- Language: Go
- Homepage:
- Size: 248 KB
- Stars: 1
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# golib
Common libraries for Go.
[![test](https://github.com/shipengqi/golib/actions/workflows/test.yaml/badge.svg)](https://github.com/shipengqi/golib/actions/workflows/test.yaml)
[![Codecov](https://codecov.io/gh/shipengqi/golib/branch/main/graph/badge.svg?token=SMU4SI304O)](https://codecov.io/gh/shipengqi/golib)
[![Go Report Card](https://goreportcard.com/badge/github.com/shipengqi/golib)](https://goreportcard.com/report/github.com/shipengqi/golib)
[![Release](https://img.shields.io/github/release/shipengqi/golib.svg)](https://github.com/shipengqi/golib/releases)
[![License](https://img.shields.io/github/license/shipengqi/golib)](https://github.com/shipengqi/golib/blob/main/LICENSE)## Getting Started
```go
package mainimport (
"context"
"errors"
"fmt"
"os"
"time""github.com/shipengqi/golib/cliutil"
"github.com/shipengqi/golib/convutil"
"github.com/shipengqi/golib/crtutil"
"github.com/shipengqi/golib/crtutil/tmpl"
"github.com/shipengqi/golib/cryptoutil/xsha256"
"github.com/shipengqi/golib/fsutil"
"github.com/shipengqi/golib/netutil"
"github.com/shipengqi/golib/retry"
"github.com/shipengqi/golib/strutil"
"github.com/shipengqi/golib/sysutil"
)func main() {
// --------------------------------------
// cliutil Examples// retrieve value of the given flag from args.
cliutil.RetrieveFlag(os.Args, "--name", "-n")// execute the given command.
output, _ := cliutil.ExecContext(context.TODO(), "/bin/sh", "-c", "ls -l")
fmt.Println(output)// execute the given command with a pipe.
pipecmd := "echo 1;echo 2;echo 3;echo 4"
var lines []string
_ = cliutil.ExecPipe(context.TODO(), func(line []byte) {
lines = append(lines, string(line))
}, "/bin/sh", "-c", pipecmd)
fmt.Println(lines)
// output like the following:
// [1, 2, 3, 4]// --------------------------------------
// convutil Examples// convert []byte to string.
output = convutil.B2S([]byte("abc")) // output: "abc"
// convert string to []byte.
_ = convutil.S2B("abc")// --------------------------------------
// crtutil Examples// read certificate file
x509Crt, _ := crtutil.ReadAsX509FromFile("server.crt")// converts a slice of x509.Certificate into PEM block, in the order they are passed.
pemData, _ := crtutil.EncodeX509ChainToPEM(x509Crt, nil)// read private key file
pkey, _ := crtutil.ReadAsSignerFromFile("server.key")// output certificate content using the default template
outputb, _ := tmpl.BuildDefaultCertTemplate(x509Crt[0], true)
fmt.Println(outputb)
// output like the following:
// Serial: 5577006791947779410
// Valid: 2022-09-23 06:09 UTC to 2032-09-30 06:09 UTC
// Signature: SHA256-RSA (self-signed)
// BitLength: 4096
// Subject Key ID: 6D:E9:2B:2B:1D:59:AB:B5:46:8C:7B:93:C3:49:7E:95:B0:20:E5:4C
// Basic Constraints: CA:true, pathlen:-1
// --------------------------------------
// cryptoutil Examples// encrypts string with SHA256 algorithms.
output = xsha256.Encrypt("Hello, World!")
fmt.Println(output) // dffd6021bb2bd5b0af676290809ec3a53191dd81c7f70a4b28688a362182986f
// --------------------------------------
// fsutil Examples// copies a file or directory from src to dst.
_ = fsutil.Copy("testdata/src", "testdata/dst")// create a new archive.
_ = fsutil.Tar("testdata/src", "testdata/dst.tar")// extract all files from an archive.
_ = fsutil.UnTar("testdata/dst.tar", "testdata/src")// like Tar but will use gzip to compress.
_ = fsutil.Compress("testdata/src", "testdata/dst.tgz")// like UnTar but will use gzip to decompress.
_ = fsutil.DeCompress("testdata/dst.tgz", "testdata/src")// --------------------------------------
// netutil Examplesnum := netutil.IPString2Uint("16.187.191.122")
fmt.Println(num) // 280739706// --------------------------------------
// retry Examplesvar count int
_ = retry.Times(5).WithInterval(time.Second).Do(func() error {
count++
return nil
})
fmt.Println(count) // 1count = 0
_ = retry.Times(5).WithInterval(time.Second).Do(func() error {
count++
return errors.New("test err")
})
fmt.Println(count) // 5// --------------------------------------
// strutil Examples// check if str1 contains str2 ignoring case sensitivity
contains := strutil.ContainsIgnoreCase("STR", "str")
fmt.Println(contains) // true// like strings.ContainsAny but does an "only" instead of "any".
// If all characters in s are found in chars, the function returns true.
contains = strutil.ContainsOnly("234234", "0123456789")
fmt.Println(contains) // true// --------------------------------------
// sysutil Examples// returns home directory of current user.
homedir := sysutil.HomeDir()// retrieves the value of the environment variable named
// by the key
v := sysutil.EnvOr("TEST_ENV_KEY", "default-value")// returns the FQDN of current node.
fqdn, _ := sysutil.FQDN()
}
```## Documentation
You can find the docs at [go docs](https://pkg.go.dev/github.com/shipengqi/golib).
## 🔋 JetBrains OS licenses
`golib` had been being developed with **IntelliJ IDEA** under the **free JetBrains Open Source license(s)** granted by JetBrains s.r.o., hence I would like to express my thanks here.