golib

module
v0.2.13 Latest Latest
Warning

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

Go to latest
Published: May 8, 2024 License: MIT

README ¶

golib

Common libraries for Go.

test Codecov Go Report Card Release License

Getting Started

package main

import (
	"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 Examples

	num := netutil.IPString2Uint("16.187.191.122")
	fmt.Println(num) // 280739706

	// --------------------------------------
	// retry Examples

	var count int
	_ = retry.Times(5).WithInterval(time.Second).Do(func() error {
		count++
		return nil
	})
	fmt.Println(count) // 1

	count = 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.

🔋 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.

JetBrains Logo (Main) logo.

Directories ¶

Path Synopsis
Package cliutil is common command line utils for Go.
Package cliutil is common command line utils for Go.
Package crtutil is common certificate related utils for Go.
Package crtutil is common certificate related utils for Go.
cryptoutil
xaes
Package xaes provides useful functions for AES encryption/decryption algorithms, only CBC mode is supported.
Package xaes provides useful functions for AES encryption/decryption algorithms, only CBC mode is supported.
xmd5
Package xmd5 provides useful functions for MD5 encryption/decryption algorithms.
Package xmd5 provides useful functions for MD5 encryption/decryption algorithms.
xsha256
Package xsha256 provides useful functions for SHA256 encryption/decryption algorithms.
Package xsha256 provides useful functions for SHA256 encryption/decryption algorithms.
Package fsutil is common file system utils for Go.
Package fsutil is common file system utils for Go.
Package netutil is common network utils for Go.
Package netutil is common network utils for Go.
Package retry provide the retry function.
Package retry provide the retry function.
Package strutil is common string utils for Go.
Package strutil is common string utils for Go.
Package sysutil is common system utils for Go.
Package sysutil is common system utils for Go.

Jump to

Keyboard shortcuts

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