golang之命令行工具Cobra
github地址: https://github.com/spf13/cobra
[安装]
go get -u github.com/spf13/cobra@latest
使用cobra_cli工具
go install github.com/spf13/cobra-cli@latest
[使用]
# 初始化工程
cobra-cli init # 添加应用
cobra-cli add timezone
示例:
// timezone.go
/*
Copyright 2023 NAME HERE <EMAIL ADDRESS>
*/
package cmd import (
"fmt"
"time" "github.com/spf13/cobra"
) // timezoneCmd represents the timezone command
var timezoneCmd = &cobra.Command{
Use: "timezone",
Short: "Get the current time in a given timezone",
Long: `Get the current time in a given timezone.
This command takes one argument, the timezone you want to get the current time,
It returns the current time in datetime format.
`,
Args: cobra.ExactArgs(1), // 需要一个额外参数
Run: func(cmd *cobra.Command, args []string) {
fmt.Println("timezone called")
timezone := args[0]
//currentTime, err := getTimeInTimezone(timezone)
//if err != nil {
// log.Fatalln("The timezone string is invalid")
//}
//fmt.Println(currentTime)
//
location, _ := time.LoadLocation(timezone)
currentTime := time.Now().In(location)
dateFlag, _ := cmd.Flags().GetString("date")
var date string
if dateFlag != "" {
date = currentTime.Format(dateFlag)
} else {
date = currentTime.Format(time.RFC1123)
}
fmt.Printf("current timezone:%v , time:%v\n", timezone, date)
},
} func init() {
rootCmd.AddCommand(timezoneCmd) // Here you will define your flags and configuration settings. // Cobra supports Persistent Flags which will work for this command
// and all subcommands, e.g.:
timezoneCmd.PersistentFlags().String("date", "", "returns the date in a time zone in a specialfied format") // Cobra supports local flags which will only run when this command
// is called directly, e.g.:
//timezoneCmd.Flags().String("date", "", "Date for which to get the time (format: yyyy-mm-dd)")
}
参考:
- 示例Demo:https://www.digitalocean.com/community/tutorials/how-to-use-the-cobra-package-in-go
- 更多使用详情: https://xie.infoq.cn/article/915006cf3760c99ad0028d895
golang之命令行工具Cobra的更多相关文章
- go Cobra命令行工具入门
简介 Github:https://github.com/spf13/cobra Star:26.5K Cobra是一个用Go语言实现的命令行工具.并且现在正在被很多项目使用,例如:Kuberne ...
- 通过阿里云命令行工具 aliyuncli 购买服务器
开始想通过 aliyuncli 的 golang 源码进行编译安装(注:python 版的 aliyuncli 已不再维护),但没成功,详见 通过 golang 源码编译阿里云命令行工具 aliyun ...
- GO实现简单(命令行)工具:sftp,文檔压解,RDS备份,RDS备份下载
GO实现简单(命令行)工具:sftp,文檔压解,RDS备份,RDS备份下载 轉載請註明出處:https://www.cnblogs.com/funnyzpc/p/11721978.html 内容提要: ...
- 一个小时学会用 Go 编写命令行工具
前言 最近因为项目需要写了一段时间的 Go ,相对于 Java 来说语法简单同时又有着一些 Python 之类的语法糖,让人大呼"真香". 但现阶段相对来说还是 Python 写的 ...
- windows下的命令行工具babun
什么是babun babun是windows上的一个第三方shell,在这个shell上面你可以使用几乎所有linux,unix上面的命令,他几乎可以取代windows的shell.用官方的题目说就是 ...
- 『.NET Core CLI工具文档』(一).NET Core 命令行工具(CLI)
说明:本文是个人翻译文章,由于个人水平有限,有不对的地方请大家帮忙更正. 原文:.NET Core Command Line Tools 翻译:.NET Core命令行工具 什么是 .NET Core ...
- 命令行工具aspnet_regiis.exe实现加密和解密web.config
命令行工具aspnet_regiis.exe,是一个类似于DOS的命令工具,称之为命令解释器.使用命令行工具加密和解密web.config文件中的数据库连接字符串时,只需要简单的语法命令即可. 加密语 ...
- nodejs 编写(添加时间戳)命令行工具 timestamp
Nodejs除了编写服务器端程序还可以编写命令行工具,如gulp.js就是Nodejs编写的. 接下来我们来实现一个添加时间戳的命令: $ timestamp action https://www.n ...
- 如何用Node编写命令行工具
0. 命令行工具 当全局安装模块之后,我们可以在控制台下执行指定的命令来运行操作,如果npm一样.我把这样的模块称之为命令行工具模块(如理解有偏颇,欢迎指正) 1.用Node编写命令行工具 在Node ...
- Orchard中的命令行工具
在Orchard中提供了一个命令行工具,我们可以使用这个命令行工具创建用户.创建博客.生成代码.配置网站.打包模块等.并且这个命令行工具是可以扩充的,只要我们在自己开发的模块中创建一个Command类 ...
随机推荐
- 【YashanDB知识库】statement级别的触发器在jdbc接口调用executeBatch时被多次触发
问题现象 某客户使用jdbc接口向yashandb的表A插入数据. 表A上有一个语句级触发器,其内容为在触发时执行alter sequence操作:另外还有一个insert时的行级触发器,其内容为将每 ...
- 在stable diffussion中控制生成图片的光线
在摄影中,光线起着至关重要的作用,它对图像的整体质量和氛围有着显著的影响.您可以使用光线来增强主题,创造深度和维度,传达情感,以及突出重要细节. 在这篇文章中,我会告诉你如何在stable diffu ...
- Hugging Face 论文平台 Daily Papers 功能全解析
文/ Adeena, 在快速发展的研究领域,保持对最新进展的关注至关重要.为了帮助开发者和研究人员跟踪 AI 领域的前沿动态,Hugging Face 推出了 Daily Papers 页面.自发布以 ...
- 《Vue.js 设计与实现》读书笔记 - 第12章、组件的实现原理
第12章.组件的实现原理 12.1 渲染组件 在渲染器内部的实现看,一个组件是一个特殊类型的虚拟 DOM 节点.之前在 patch 我们判断了 VNode 的 type 值来处理,现在来处理类型为对象 ...
- Linux_权限理解(详细PLUS)
1.用户 Linux下有两种用户:超级用户(root)和普通用户: 超级用户:可以再linux系统下做任何事情,不受限制 普通用户:在linux下做有限的事情 超级用户的命令提示符是"#&q ...
- CPU缓存伪共享
CPU缓存什么东西?当然这个问题很多人有可能觉得比较傻,CPU缓存什么,肯定是缓存数据(代码)啊,要不然还能缓存啥,这个确实没问题,但是CPU到底缓存什么样的数据呢?因为对CPU来说,无论是指令,还是 ...
- 数据库排行榜|当 DB-Engines 遇见墨天轮国产数据库排行
提到数据库排名,此时脑海里浮现出的是什么?是 DB-Engines,还是墨天轮数据库排行?两者间有什么区别?下面来聊一下业内这两个知名数据库排名平台. 本篇文章约有 3000 字,预计阅读时间 7 分 ...
- iOS中搜索框EVNCustomSearchBar使用小结
最近在项目开发中用到了搜索框,之前都是用的系统的searchbar,现有项目中用的是EVNCustomSearchBar,我试了一下还挺方便,下面说一下具体的用法. 第一步:引入添加相关的委托代理EV ...
- 后台管理系统tabs栏切换思路
页面内容: 使用 element-ui 实现 tabs 标签页 :https://element.eleme.cn/#/zh-CN/component/tabs#tab-pane-attributes ...
- [GXYCTF2019]BabyUpload 1
打开靶机,上传文件抓包 后缀不能带ph,大小写也无法绕过,意味着phtml后缀也无法上传 对后缀只过滤ph,我们转变思路上传图片马,用.htaccess使图片马以php格式打开 上传图片马 上传失败, ...