Golang如何打包配置文件

技术Golang如何打包配置文件这篇文章主要介绍了Golang如何打包配置文件,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。背景最近在写一个涉及到管理阿里

本文主要介绍了Golang如何打包配置文件,具有一定的参考价值。有兴趣的朋友可以参考一下。希望大家看完这篇文章后有很多收获。让边肖带你去了解一下。

00-1010最近写了一个与管理阿里巴巴云ECS相关的CLI工具。这里当然要考虑阿里巴巴云资源的安全性。要求阿里巴巴云账号的访问密钥Id和访问密钥集不能分发给CLI工具的用户。

Golang如何打包配置文件

因此,这里我们选择将一个包含访问密钥和访问密钥集的配置文件打包到命令行界面工具中。默认情况下,命令行界面工具的用户将使用打包的配置文件。当然,他们也可以通过指定配置文件或传递参数来使用新的配置信息。

00-1010

背景

这里有一个Golang的库,Go-Binata,可以将任意文件转换成Go代码,可以用来将二进制文件嵌入到Go程序中。同时,它还支持在转换为原始字节片之前使用gzip压缩文件数据。

这个工具的具体介绍请跳转到https://github.com/go-bindata/go-bindata。

00-1010使用go-bindata工具将包含敏感信息的配置文件转换为go的源代码。下面是项目Makefile的一部分,工具名是mycli。

名称=mycli

CONFIG=configs/config.yaml

. PHONY:build

build:

cp$(CONFIG)config.yaml

mkdir-pcmd/mycli/asset

go-bindata-pkgasset-ocmd/my CLI/asset/asset . go \

脚本/.\

config.yaml

CGO _ ENABLED=0 GOOS=LinUxGoarch=amd 64 obuild-obin/Linux/my clicmd/my CLI/*。去

CGO _ ENABLED=0GOOS=Darwangoarch=amd64 obuild-obin/Darwin/my clicmd/my CLI/*。去

chmod x./bin/linux/mycli。/bin/darwin/mycli

rm-fconfig.yamlmycli

将文件转换为Go源代码的部分如下:

go-bindata-pkgasset-ocmd/my CLI/asset/asset . go \

脚本/.\

go-bindata命令行工具选项的描述:

-pkg指定包名,调用将被写入asset。资产(' config.yaml ')

-o指定生成的Go源代码的存储位置。

生成的asset.go代码如下:

//Codegeneratedbygo-bindata。

//来源:

//脚本/create.sh

//scripts/sub/delete.sh

//config.yaml

//DONOTEDIT!

packageasset

funcbindataRead(数据[]字节,名称字符串)([]字节,错误){ 0

.

}

typesassetstruct {

字节[]字节

infoos。文件信息

}

typebindataFileInfostruct(

名称字符串

sizeint64

莫多斯。文件模式

modTimetime。时间

}

func(fibindataFileInfo)名称(字符串){ 0

returnfi.name

}

func(FiBindatafileinfo)Size()int 64

returnfi.size

}

功能模式。文件模式{

returnfi.mode

}

func(FiBindatafileinfo)ModTime()time。时间{

returnfi.modTime

}

func(FiBindataFileInfo)IsDir(bool ){ 0

returnfalse

}

func(fibindataFileInfo)Sys()接口{ } { 0

返回零

}

.

实现

使用资产方法加载打包的配置文件:

constpraloadconfigfile=' config . YAML '

typeConfigstruct { 0

.

}

funcproadconfig()(* Config,错误){ 0

b,err:=资产。资产(预加载配置文件)

伊弗。=零

返回零,fmt。错误f('failedtoreadconfig:%v ',错误)

}

varconfig*Config

err=yaml。取消标记(b,配置)

returnconfig,错误

}感谢您仔细阅读本文。希望边肖分享的文章《如何在Golang打包配置文件》对大家有所帮助。同时希望大家多多支持,关注行业信息渠道,多了解!

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/142789.html

(0)

相关推荐

  • 什么绿什么红,红、白、绿萝卜的主要不同吃法

    技术什么绿什么红,红、白、绿萝卜的主要不同吃法红萝卜炖菜什么绿什么红、做馅、做汤白萝卡做汤绿萝淹咸菜、晒干做咸菜。你好!
    红、白萝卜常用来烧菜、做馅。北方人吃红白萝卜的方法,除了炖萝卜、做馅以外,最多的,是和牛羊肉一块炖

    生活 2021年10月21日
  • 有哪些更改数据库密码的方式

    技术有哪些更改数据库密码的方式这篇文章主要讲解了“有哪些更改数据库密码的方式”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“有哪些更改数据库密码的方式”吧!1.忘记 roo

    攻略 2021年10月22日
  • 怎样鉴别银手镯的真假,如何鉴定自己买的银手镯是真假

    技术怎样鉴别银手镯的真假,如何鉴定自己买的银手镯是真假颜色怎样鉴别银手镯的真假、柔韧性好在挑选白银手镯时,首先可以看它的颜色,纯度越高,颜色就越洁白,但很容易被氧化,而呈现黑色,尽管被氧化过色泽有些黑但很光亮。真正的纯银

    生活 2021年10月30日
  • typescript中实用类型(typescript是什么类型)

    技术TypeScript 映射类型是怎样的这期内容当中小编将会给大家带来有关TypeScript 映射类型是怎样的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。前言:TypeScrip

    攻略 2021年12月14日
  • golang中的原子操作atomic包

    技术golang中的原子操作atomic包 golang中的原子操作atomic包1. 概念 原子操作 atomic 包 加锁操作涉及到内核态的上下文切换,比较耗时,代价高, 针对基本数据类型我们还可以

    礼包 2021年11月10日
  • 合并HTTP请求与并行HTTP请求哪个更快

    技术合并HTTP请求与并行HTTP请求哪个更快本篇内容介绍了“合并HTTP请求与并行HTTP请求哪个更快”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希

    攻略 2021年11月11日