似乎每个开发人员都在试图找到一种聪明的方法来引起人们的注意。这样,您可能会偶然发现许多有趣的项目完成各种事情。但是,您可以做的一个简单简单的项目是为自己制作名片(伪装成CLI程序)!
为此,我们将在GO中编写我们的CLI程序,并利用cobra,这是一个很棒的GO库来快速有效地创建此卡。
为了给我们的程序一些角色,我们将在本教程中利用box-cli-marker,这是一个很棒的项目,您应该检查!
在开始之前为什么要去?
Go是该项目使用的一种很好的语言,因为它是一种编译语言,这意味着它可以快速且易于使用,因为编译器会为您捕获大多数错误。由于已编译,因此也很容易将您的程序分发给其他人。
另外,Go在this上有文章,但我个人一直在与GO合作,发现与之合作非常有趣。从我发现的东西来看,社区和语言本身对CLI的支持也非常出色。
但是,关于为什么要去的足够,让我们开始!
入门
首先,让我们创建一个新的Go project(GO的官方文档是一个不错的起点)。
然后,让我们安装眼镜蛇及其CLI。 Cobra是GO的绝佳CLI库,CLI是快速入门的好工具。
go get -u github.com/spf13/cobra@latest
go install github.com/spf13/cobra-cli@latest
现在我们已经安装了眼镜蛇CLI,让我们通过使用1个简单命令运行来设置一些样板。
cobra-cli init businesscard
请注意,businesscard
是此示例的CLI的名称,但是您可以将其命名(例如:Jdvert是我用于自己的卡片)。
这将为您为您生成一个cmd
目录。这是您的大部分代码居住的地方
看一切是否正常,让我们安装我们的CLI并运行它!
go install
businesscard
您应该看到以下输出(默认的眼镜蛇输出):
A longer description that spans multiple lines and likely contains
examples and usage of using your application. For example:
Cobra is a CLI library for Go that empowers applications.
This application is a tool to generate the needed files
to quickly create a Cobra application.
实际卡
确认一切正常后,我们就可以开始创建我们的自定义卡。
让我们更新命令以显示带有文本的框,而不是它显示的当前文本。
首先,让我们安装盒子式制造商库。这是一个很棒的库,可让您在其中创建带有文本的框。
go get -u github.com/Delta456/box-cli-maker
现在让我们更新我们的root.go
文件以通过查找rootCmd
并将其更新为以下内容:
:
var rootCmd = &cobra.Command{
Use: "businesscard",
Short: "A personal business card CLI",
Long: "businesscard is a personal business card because who has time to actually spend printing real ones.",
Run: func(cmd *cobra.Command, args []string) {
// This is where we will add our box which can be found looking at https://github.com/Delta456/box-cli-maker#usage
// and the examples in the README are a great place to start!
Box := box.New(box.Config{Px: 4, Py: 1, Type: "Double", Color: "Cyan", ContentAlign: "Center"})
Box.Print(
"John Doe",
"Let's build something fun!\n"+
"\n\n"+
"Thanks for checking out my card! Happy coding!",
)
},
}
现在让我们通过运行go install
然后再次尝试我们的新卡。
现在您在运行命令时应该看到以下内容!
您可以根据自己的意愿自定义卡,而box-cli-marker有很多有关如何做到这一点的示例。更改颜色,图标,大小等。天空是极限!
结论
在教程的第一部分中,我们设置了GO名片CLI计划,并在我们的终端看起来很棒。但是,这仍然是一个程序,而不是实际卡。因此,我们需要某种方法来允许用户与之互动!看看如何在第2部分(即将推出)中执行此操作。
愉快的编码,并随意给我一个指向您卡的链接,以便我可以检查一下!
在这里,我的帖子托管在GitHub
上