Agenda

Agenda

文章目录

概述

安装Cobra

cobra既是一个用来创建强大的现代CLI命令行的golang库,也是一个生成程序应用和命令行文件的程序。因为本次项目是一个命令行程序,所以涉及到读写参数问题,之前是使用pflag来实现参数的读入。但是cobra的使用可以快速生成命令行文件程序,构建一个命令行程序的框架。

首先安装被墙的依赖包。

$GOPATH/src/golang.org/x目录下,若没有则自行创建,用git clone下载sys和text项目:

git clone https://github.com/golang/sys
git clone https://github.com/golang/text

然后执行:

go get -v github.com/spf13/cobra/cobra

若成功安装则在 $GOBIN$GOPATH/bin 下出现cobra可执行程序。
然后在命令行中输入cobra:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cWEKKvcf-1571931179495)(image\cobra安装.jpg)]

出现图中提示信息则安装成功。

创建程序

使用cobra init命令初始化程序框架,但是发现提示错误:

Error: required flag(s) "pkg-name" not set

在查看[官方文档][cobragithub]后发现Cobra版本更新后需要增加一个必须参数--pkg-name,就是main函数默认import的包。

Updates to the Cobra generator have now decoupled it from the GOPATH. As such --pkg-name is required.

于是我们使用如下命令初始化:

  1. 先创建目录进入再初始化,此时不需要[name]参数,即目录
mkdir -p newApp
cd newApp
cobra init --pkg-name github.com/github-user/newApp
  1. 直接创建目录新目录
cobra init --pkg-name github.com/github-user/newApp newApp

初始化成功后出现如下提示信息:

Your Cobra applicaton is ready at <path>

此时项目结构应如下:

agenda/
    cmd/
    main.go
    LICENSE

main.go长这个样子:

package main

import "github.com/github-user/agenda/cmd" //pkg-name

func main() {
   
  cmd.Execute()
}

cmd文件夹里放的就是我们接下来要添加的命令。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lTspuo4l-1571931179497)(image\cobra初始化.jpg)]

添加命令

cobra添加命令的指令如下:

cobra add <conmand_name>

于是我们进入刚创建的目录下,执行:

cobra add register
cobra add login

cmd中会自动添加两个go文件:

agenda/
    cmd/
    	register.go
    	login.go
    main.go
    LICENSE

总结

本次作业在难度上比前两次要大很多。本质上来说是实现了一个“翻译”的任务,实现了golang版的selpg。大二操作系统也有写过C语言的命令行程序,所以对CLI也不是一窍不通,不过这一次对管道,重定向有了更深的了解,也简单使用了golang的命令行参数处理包flag和pflag,执行外部指令的exec,还有os和io的一些操作。过程还是比较坎坷,虽然网上参考的博客很多,但是鱼龙混杂,其中很多都有错的或者理解不到位的地方,自己真正会了才可能完整地做出来,否则即使正确的结果也只是简单的摆拍而已。

github地址 -> ?

项目中附测试截图

参考资料

go语言子进程

go语言创建读取写入文件

某博客

某另一博客

开发Linux命令行实用程序

selpg源代码

/home/go-online/go-online-dep/bin/cobra

/home/go-online/go/src/git.go-online.org.cn/tifinity/project7/agenda

/home/go-online/go

[cobra

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值