fsenv

package module
v0.4.0 Latest Latest
Warning

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

Go to latest
Published: Jul 9, 2023 License: MIT Imports: 8 Imported by: 5

README

应用程序运行环境信息

应用程序运行环境信息

Build Status GoCover GoDoc

1.主要接口

全局方法、接口:

// AppRootDir 自动推断出应用根目录
// 目前是采用向上查找go.mod文件
// 若查找不到则返回当前目录(pwd)
func AppRootDir() string

// RootDir (全局)获取应用根目录
func RootDir() string

// SetRootDir (全局)设置应用根目录
func SetRootDir(dir string)

// DataRootDir (全局)设置应用数据根目录
func DataRootDir() string 

// SetDataRootDir (全局)获取应用数据根目录
func SetDataRootDir(dir string)

// LogRootDir (全局)获取应用日志根目录
func LogRootDir() string

// SetLogRootDir (全局)设置应用日志根目录
func SetLogRootDir(dir string)

// ConfRootDir (全局)获取应用配置根目录
func ConfRootDir() string

// SetConfRootDir (全局)设置应用配置根目录
func SetConfRootDir(dir string)

// NewAppEnv 创建新的应用环境信息
func NewAppEnv(opt Value) AppEnv

// SetIDC (全局) 设置idc
func SetIDC(idc string) 

// IDC (全局)获取应用的 IDC
func IDC() string 

// RunMode (全局)获取应用的运行模式
func RunMode() Mode 

// SetRunMode (全局)设置应用的运行模式
func SetRunMode(mode Mode)

注:为了避免环境信息在运行中修改造成混乱,上述SetXXX方法只能调用一次。

2.模块使用自己的环境信息

第三方模块管理自己独特的环境信息,而使用全局的,模块可实现下列接口(或者直接继承使用默认的ModuleEnv):

// WithAppEnv 第三方模块管理环境信息的接口定义
type WithAppEnv interface {
	SetAppEnv(env AppEnv)
	AppEnv() AppEnv
}

Documentation

Overview

Package fsenv 提供应用的基本环境信息

Index

Examples

Constants

This section is empty.

Variables

This section is empty.

Functions

func AppRootDir

func AppRootDir() string

AppRootDir 自动推断、获取应用根目录

 推断顺序:
	1. 环境变量:fsenv.root
	2. 查找 go.mod 文件
	3. 当前目录(pwd)

func ConfRootDir

func ConfRootDir() string

ConfRootDir (全局)获取应用配置根目录

若没有设置值,会尝试从环境变量 fsenv.conf 读取值
默认值 RootDir()/conf
Example
package main

import (
	"fmt"
	"path/filepath"

	"github.com/fsgo/fsenv"
)

func main() {
	dir := fsenv.ConfRootDir()
	fmt.Println("conf root dir=", dir)
	// 输出 {xxx}/conf

	dbUserConfPath := filepath.Join(fsenv.ConfRootDir(), "db", "db_user.toml")
	fmt.Println("db user confPath=", dbUserConfPath)
	// 输出 {xxx}/conf/db/db_user.toml
}
Output:

func DataRootDir

func DataRootDir() string

DataRootDir (全局)设置应用数据根目录

若没有设置值,会尝试从环境变量 fsenv.data 读取值
默认值 RootDir()/data
Example
package main

import (
	"fmt"

	"github.com/fsgo/fsenv"
)

func main() {
	dir := fsenv.DataRootDir()
	fmt.Println("data root dir=", dir)
	// 输出 {xxx}/data
}
Output:

func IDC added in v0.2.0

func IDC() string

IDC (全局)获取应用的 IDC

若没有设置值,会尝试从环境变量 fsenv.idc 读取值
默认值为 test

func LoadEnvFile added in v0.3.0

func LoadEnvFile(fn string) error

LoadEnvFile 加载一个 env 文件到 os.env 里

func LogRootDir

func LogRootDir() string

LogRootDir (全局)获取应用日志根目录

若没有设置值,会尝试从环境变量 fsenv.root 读取值
默认值 RootDir()/log
Example
package main

import (
	"fmt"
	"path/filepath"

	"github.com/fsgo/fsenv"
)

func main() {
	dir := fsenv.LogRootDir()
	fmt.Println("log root dir=", dir)
	// 输出 {xxx}/log

	dbLogPath := filepath.Join(dir, "db", "mysql.log")
	fmt.Println("db log path=", dbLogPath)
	// 输出 {xxx}/log/db/mysql.log
}
Output:

func MustLoadEnvFile added in v0.3.0

func MustLoadEnvFile(fn string)

MustLoadEnvFile 加载一个 env 文件到 os.env 里。 若有异常,会 panic

func ParserEnvContent added in v0.3.0

func ParserEnvContent(content []byte) (map[string]string, error)

ParserEnvContent 解析 env 文件的内容

func ParserEnvFile added in v0.3.0

func ParserEnvFile(fn string) (map[string]string, error)

ParserEnvFile 解析一个 env 文件

func RootDir

func RootDir() string

RootDir (全局)获取应用根目录

若没有设置值,会尝试从环境变量 fsenv.root 读取值
默认值 go.mod 所在目录 或者 pwd
Example
package main

import (
	"fmt"

	"github.com/fsgo/fsenv"
)

func main() {
	dir := fsenv.RootDir()
	fmt.Println("root dir=", dir)
}
Output:

func SetConfRootDir

func SetConfRootDir(dir string)

SetConfRootDir (全局)设置应用配置根目录

func SetDataRootDir

func SetDataRootDir(dir string)

SetDataRootDir (全局)获取应用数据根目录

func SetIDC added in v0.2.0

func SetIDC(idc string)

SetIDC (全局) 设置idc

func SetLogRootDir

func SetLogRootDir(dir string)

SetLogRootDir (全局)设置应用日志根目录

func SetRootDir

func SetRootDir(dir string)

SetRootDir (全局)设置应用根目录

func SetRunMode added in v0.2.0

func SetRunMode(mode Mode)

SetRunMode (全局)设置应用的运行模式

Types

type AppConfEnv added in v0.2.0

type AppConfEnv interface {
	HasConfRootDir
	CanSetConfRootDir
}

AppConfEnv 配置环境信息

func NewAppConfEnv

func NewAppConfEnv(dir string) AppConfEnv

NewAppConfEnv 创建新的配置环境信息

type AppDataEnv added in v0.2.0

type AppDataEnv interface {
	HasDataRootDir
	CanSetDataRootDir
}

AppDataEnv 数据目录环境信息

func NewAppDataEnv

func NewAppDataEnv(dir string) AppDataEnv

NewAppDataEnv 创建新的数据目录环境

type AppEnv

type AppEnv interface {
	RootDir() string
	DataRootDir() string
	LogRootDir() string
	ConfRootDir() string
	IDC() string
	RunMode() Mode
	Value() Value
}

AppEnv 应用环境信息完整的接口定义

func NewAppEnv

func NewAppEnv(opt Value) AppEnv

NewAppEnv 创建新的应用环境

type AppEnvRW added in v0.2.0

type AppEnvRW interface {
	AppRootEnv
	AppDataEnv
	AppLogEnv
	AppConfEnv
	AppIDCEnv
	AppRunMode

	Value() Value
}

AppEnvRW 可读写的接口定义

var Default AppEnvRW

Default (全局)默认的环境信息

type AppIDCEnv added in v0.2.0

type AppIDCEnv interface {
	HasIDC
	CanSetIDC
}

AppIDCEnv 机房信息

func NewAppIDCEnv added in v0.2.0

func NewAppIDCEnv(idc string) AppIDCEnv

NewAppIDCEnv 创建新的配置环境信息

type AppLogEnv added in v0.2.0

type AppLogEnv interface {
	HasLogRootDir
	CanSetLogRootDir
}

AppLogEnv 日志目录环境信息

func NewAppLogEnv

func NewAppLogEnv(dir string) AppLogEnv

NewAppLogEnv 创建新的日志目录环境信息

type AppRootEnv added in v0.2.0

type AppRootEnv interface {
	HasRootDir
	CanSetRootDir
}

AppRootEnv 应用更目录环境信息

func NewAppRootEnv

func NewAppRootEnv(root string) AppRootEnv

NewAppRootEnv 创建新的应用更目录环境

type AppRunMode added in v0.2.0

type AppRunMode interface {
	HasRunMode
	CanSetRunMode
}

AppRunMode 机房信息

func NewAppRunModeEnv added in v0.2.0

func NewAppRunModeEnv(mode Mode) AppRunMode

NewAppRunModeEnv 创建新的配置环境信息

type CanSetAppEnv added in v0.2.1

type CanSetAppEnv interface {
	SetAppEnv(env AppEnv)
}

CanSetAppEnv 允许设置 app 的 env

type CanSetConfRootDir added in v0.2.1

type CanSetConfRootDir interface {
	SetConfRootDir(dir string)
}

CanSetConfRootDir 运行设置配置目录

type CanSetDataRootDir added in v0.2.1

type CanSetDataRootDir interface {
	SetDataRootDir(dir string)
}

CanSetDataRootDir 允许设置数据目录

type CanSetIDC added in v0.2.1

type CanSetIDC interface {
	SetIDC(idc string)
}

CanSetIDC 运行设置 idc

type CanSetLogRootDir added in v0.2.1

type CanSetLogRootDir interface {
	SetLogRootDir(dir string)
}

CanSetLogRootDir 可以设置日志根目录

type CanSetRootDir added in v0.2.1

type CanSetRootDir interface {
	SetRootDir(dir string)
}

CanSetRootDir 可以设置根目录

type CanSetRunMode added in v0.2.1

type CanSetRunMode interface {
	SetRunMode(mode Mode)
}

CanSetRunMode 允许设置 runMode

type HasAppEnv added in v0.2.1

type HasAppEnv interface {
	AppEnv() AppEnv
}

HasAppEnv 可以获取 app env

type HasConfRootDir added in v0.2.1

type HasConfRootDir interface {
	ConfRootDir() string
}

HasConfRootDir 可以获取配置目录

type HasDataRootDir added in v0.2.1

type HasDataRootDir interface {
	DataRootDir() string
}

HasDataRootDir 可以获取数据目录

type HasIDC added in v0.2.1

type HasIDC interface {
	IDC() string
}

HasIDC 可以获取 idc

type HasLogRootDir added in v0.2.1

type HasLogRootDir interface {
	LogRootDir() string
}

HasLogRootDir 可以获取日志根目录

type HasRootDir added in v0.2.1

type HasRootDir interface {
	RootDir() string
}

HasRootDir 可以获取根目录

type HasRunMode added in v0.2.1

type HasRunMode interface {
	RunMode() Mode
}

HasRunMode 可以获取 runMode

type Mode added in v0.2.0

type Mode string

Mode 运行模式

const (
	// ModeDebug 运行模式-调试
	ModeDebug Mode = "debug"

	// ModeProduct 运行模式-线上发布
	ModeProduct Mode = "product"
)

func RunMode added in v0.2.0

func RunMode() Mode

RunMode (全局)获取应用的运行模式

若没有设置值,会尝试从环境变量 fsenv.mode 读取值
默认值为 product

type Value

type Value struct {
	RootDir string
	DataDir string
	LogDir  string
	ConfDir string
	IDC     string
	RunMode Mode
}

Value 具体的环境信息

func (*Value) String

func (v *Value) String() string

String 序列化,方便查看

type WithAppEnv added in v0.2.0

type WithAppEnv struct {
	// contains filtered or unexported fields
}

WithAppEnv 用于第三方模块管理环境信息

func (*WithAppEnv) AppEnv added in v0.2.2

func (m *WithAppEnv) AppEnv() AppEnv

AppEnv 获取环境信息

func (*WithAppEnv) SetAppEnv added in v0.2.2

func (m *WithAppEnv) SetAppEnv(env AppEnv)

SetAppEnv 设置自定义的环境信息,只允许设置一次

Directories

Path Synopsis
internal

Jump to

Keyboard shortcuts

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