(服务计算)CLI 命令行实用程序开发实战 - Agenda

2024-01-17 02:38

本文主要是介绍(服务计算)CLI 命令行实用程序开发实战 - Agenda,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

goonline分享地址:http://139.9.57.167:20080/share/bmn4she76kvs669u22jg?secret=false

任务描述

使用cobra实现简单的agenda,由于是经过简化的项目,所以只实现了两个功能,一个用户的注册,一个用户的登录。

任务要求

  1. 使用json储存用户信息
  2. 将最近使用的用户使用curUser.txt文件中
  3. 使用log记录命令执行情况

实现过程

  1. 首先是安装cobra
    在$GOPATH/src/golang.org/x目录下执行git https://github.com/golang/textgit https://github.com/golang/sys,然后再执行go get -v github.com/spf13/cobra/cobra获取包,最后执行go install github.com/spf13/cobra/cobra进行安装。

  2. 创建cobra项目
    执行cobra init --pkg-name demo,其中demo为项目名称创建项目,创建成功后会在src/目录下生成对应的demo文件,在此文件夹下会有cmd文件夹与main.go。

  3. 添加命令
    添加register命令,执行cobra add register,即可在cmd文件夹下看到register.go文件,然后对此文件进行编写。在init函数中可以获取用户的命令行输入,具体方法是调用registerCmd.Flags()来获取,后面加.StringP表示获取一个string变量。
    在这里插入图片描述
    然后在registercmd=&cobra.Command中对输入的参数进行识别操作。首先调用函数获取输入的参数:
    在这里插入图片描述
    然后对输入的用户名进行查找,在data.json中寻找这个用户是否被注册(data.json文件用来储存注册的用户信息)。
    在这里插入图片描述
    其中readinfo函数是用来获取整个json文件中的所有信息:
    在这里插入图片描述
    如果在用户信息中有这个用户,就返回错误信息,如果没有,就注册成功,并保存在用户信息里,然后将命令信息记录在log文件中。
    在这里插入图片描述
    在这里写入的时候由于是对json文件的写入,所以需要将其转换为相应的格式:

    us := readinfo()
    us.Id=append(us.Id,str)
    data, _:= json.Marshal(us)
    saveinfo(data)
    

    在这里插入图片描述

    添加命令login:cobra add login,然后打开cmd目录下的login.go进行编写。
    同样首先在init函数中识别命令行的输入的参数,然后在Run函数中对其进行处理。对登录的用户的识别通过输入的用户名和密码来进行匹配,首先获取整个文件里的用户信息,然后对其进行遍历,寻找是否有匹配的。
    在这里插入图片描述
    判断完毕后同样返回给用户登录情况,然后将相关信息写入log文件中。
    在这里插入图片描述
    这里登录成功之后还需要将此用户信息写入curUser.txt中储存起来,表示目前正在操作的用户。

运行情况

注册一个testuser
在这里插入图片描述
在data.json文件中查看
在这里插入图片描述
登录此用户
在这里插入图片描述
在curUser.txt文件中查看
在这里插入图片描述
查看日志文件
在这里插入图片描述
至此基本的功能实现完成。

项目地址

这篇关于(服务计算)CLI 命令行实用程序开发实战 - Agenda的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/614670

相关文章

SQL Server跟踪自动统计信息更新实战指南

《SQLServer跟踪自动统计信息更新实战指南》本文详解SQLServer自动统计信息更新的跟踪方法,推荐使用扩展事件实时捕获更新操作及详细信息,同时结合系统视图快速检查统计信息状态,重点强调修... 目录SQL Server 如何跟踪自动统计信息更新:深入解析与实战指南 核心跟踪方法1️⃣ 利用系统目录

java中pdf模版填充表单踩坑实战记录(itextPdf、openPdf、pdfbox)

《java中pdf模版填充表单踩坑实战记录(itextPdf、openPdf、pdfbox)》:本文主要介绍java中pdf模版填充表单踩坑的相关资料,OpenPDF、iText、PDFBox是三... 目录准备Pdf模版方法1:itextpdf7填充表单(1)加入依赖(2)代码(3)遇到的问题方法2:pd

PyQt5 GUI 开发的基础知识

《PyQt5GUI开发的基础知识》Qt是一个跨平台的C++图形用户界面开发框架,支持GUI和非GUI程序开发,本文介绍了使用PyQt5进行界面开发的基础知识,包括创建简单窗口、常用控件、窗口属性设... 目录简介第一个PyQt程序最常用的三个功能模块控件QPushButton(按钮)控件QLable(纯文本

PyTorch中的词嵌入层(nn.Embedding)详解与实战应用示例

《PyTorch中的词嵌入层(nn.Embedding)详解与实战应用示例》词嵌入解决NLP维度灾难,捕捉语义关系,PyTorch的nn.Embedding模块提供灵活实现,支持参数配置、预训练及变长... 目录一、词嵌入(Word Embedding)简介为什么需要词嵌入?二、PyTorch中的nn.Em

在IntelliJ IDEA中高效运行与调试Spring Boot项目的实战步骤

《在IntelliJIDEA中高效运行与调试SpringBoot项目的实战步骤》本章详解SpringBoot项目导入IntelliJIDEA的流程,教授运行与调试技巧,包括断点设置与变量查看,奠定... 目录引言:为良驹配上好鞍一、为何选择IntelliJ IDEA?二、实战:导入并运行你的第一个项目步骤1

Spring Boot3.0新特性全面解析与应用实战

《SpringBoot3.0新特性全面解析与应用实战》SpringBoot3.0作为Spring生态系统的一个重要里程碑,带来了众多令人兴奋的新特性和改进,本文将深入解析SpringBoot3.0的... 目录核心变化概览Java版本要求提升迁移至Jakarta EE重要新特性详解1. Native Ima

Spring Boot 与微服务入门实战详细总结

《SpringBoot与微服务入门实战详细总结》本文讲解SpringBoot框架的核心特性如快速构建、自动配置、零XML与微服务架构的定义、演进及优缺点,涵盖开发环境准备和HelloWorld实战... 目录一、Spring Boot 核心概述二、微服务架构详解1. 微服务的定义与演进2. 微服务的优缺点三

SpringBoot集成MyBatis实现SQL拦截器的实战指南

《SpringBoot集成MyBatis实现SQL拦截器的实战指南》这篇文章主要为大家详细介绍了SpringBoot集成MyBatis实现SQL拦截器的相关知识,文中的示例代码讲解详细,有需要的小伙伴... 目录一、为什么需要SQL拦截器?二、MyBATis拦截器基础2.1 核心接口:Interceptor

基于Python开发一个图像水印批量添加工具

《基于Python开发一个图像水印批量添加工具》在当今数字化内容爆炸式增长的时代,图像版权保护已成为创作者和企业的核心需求,本方案将详细介绍一个基于PythonPIL库的工业级图像水印解决方案,有需要... 目录一、系统架构设计1.1 整体处理流程1.2 类结构设计(扩展版本)二、核心算法深入解析2.1 自

RabbitMQ消息总线方式刷新配置服务全过程

《RabbitMQ消息总线方式刷新配置服务全过程》SpringCloudBus通过消息总线与MQ实现微服务配置统一刷新,结合GitWebhooks自动触发更新,避免手动重启,提升效率与可靠性,适用于配... 目录前言介绍环境准备代码示例测试验证总结前言介绍在微服务架构中,为了更方便的向微服务实例广播消息,