首页 > 其他分享 >golang之命令行工具Cobra

golang之命令行工具Cobra

时间:2023-09-28 14:56:44浏览次数:52  
标签:current Cobra cobra golang timezoneCmd 命令行 time date timezone

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)")
}

 

 

 

参考:

  • https://www.digitalocean.com/community/tutorials/how-to-use-the-cobra-package-in-go

 

标签:current,Cobra,cobra,golang,timezoneCmd,命令行,time,date,timezone
From: https://www.cnblogs.com/xingxia/p/golang_cobra.html

相关文章

  • golang-channel
    什么是channel管道channel是goroutine与goroutine之间通信的重要桥梁channel是一个通道,用于端到端的数据传输,这有点像我们平常使用的消息队列,只不过channel的发送方和接受方是 goroutine 对象,属于内存级别的通信。这里涉及到了goroutine概念,goroutine是轻量级的......
  • 结对项目:用python实现一个自动生成小学四则运算题目的命令行程序
    这个作业属于哪个课程计科21级12班这个作业的要求在哪里结对项目这个作业的目标了解结对项目的过程团队成员信息姓名学号肖兴明3121004712徐强3121004713Github链接GithubPSPPSP2.1PersonalSoftwareProcessStages预估耗时(分钟)实......
  • 在windows10上安装多个golang
    在windows10上安装多个golang原理下载不同go版本,然后重命名go可执行文件,然后配置环境变量,不同命令使用不同的版本。其实所有的开发环境都可以这么使用。比如python2,python3方法问的文心一言,哈哈哈哈哈哈总体方法如下,具体可以参考例子,例子更清楚。创建一个新的文件夹,用于......
  • 一个比 ping 更强大、更牛逼的命令行工具
    晚上好,我的网工朋友。遇到网络故障的时候,你一般会最先使用哪条命令进行排障?基本上大家第一个想到的都是Ping吧。但除了Ping,还有Traceroute、Show、Telnet又或是Clear、Debug等等好用命令,你都用过吗?今天给你安排一个Traceroute的命令详解,不仅有原理解读,还有命令格式和使用说明,最后......
  • 一个比 ping 更强大、更牛逼的命令行工具
    晚上好,我的网工朋友。遇到网络故障的时候,你一般会最先使用哪条命令进行排障?基本上大家第一个想到的都是Ping吧。但除了Ping,还有Traceroute、Show、Telnet又或是Clear、Debug等等好用命令,你都用过吗?今天给你安排一个Traceroute的命令详解,不仅有原理解读,还有命令格式和使用说明,最后还......
  • linux-Shell将命令行终端输出结果写入保存到文件中
    (一)将输出与错误写到同一个文件(1)方法1#!bin/bashjava-jarhbase-example.jar2>&1|teehbase_log.txt说明:0,1,2:在linux分别表示标准输入、标准输出和标准错误信息输出。tee默认为写入覆盖,-a参数表示追加内容。#!bin/bashjava-jarhbase-example.jar2>&1|tee-ahbase_......
  • golang-waitgroup
    说明golang通过waitgroup来实现并发控制,用法跟java的CountDownLatch 效果一样 WaitGroup的使用场景和方法我们通过goroutine运行一个或者一组任务,需要关心这组任务执行完了进行通知WaitGroup如同它的字面意思,就是等待一组goroutine运行完成,主要有三个方法组成:Add(de......
  • 一个思路:实现 golang 中的 `__file__` `__line__` 宏
    作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢!cnblogs博客zhihuGithub公众号:一本正经的瞎扯测试zaplog发现,开启caller的调用,会使整个服务增加2%的损耗。其实文件及其行号完全可以在编译期加上去,没必要带来运行期的性能损耗。因此有一个思路,可以解决这......
  • 特别有用!Jmeter命令行执行时设置并发数和循环次数的方法
     Jmeter命令行方式运行概述之前写过一篇文章介绍如何在centos上部署jmeter来执行性能测试,链接如下:因为大多数linux服务器都是没有GUI界面的,这就需要我们通过命令行的方式来运行jmeter脚本,具体如下:jmeter-n-t/opt/jmeter/script/test.jmx-ltest2.jtl参数含义n非gui运行t指定......
  • golang 反射
    参考https://www.cnblogs.com/jiujuan/p/17142703.htmlfloat反射示例packagemainimport( "fmt" "reflect")funcmain(){ varxfloat64=1.2345 fmt.Println("==TypeOf==") t:=reflect.TypeOf(x) fmt.Println("type:&quo......