(服务计算)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

相关文章

基于 Cursor 开发 Spring Boot 项目详细攻略

《基于Cursor开发SpringBoot项目详细攻略》Cursor是集成GPT4、Claude3.5等LLM的VSCode类AI编程工具,支持SpringBoot项目开发全流程,涵盖环境配... 目录cursor是什么?基于 Cursor 开发 Spring Boot 项目完整指南1. 环境准备2. 创建

MyBatis分页查询实战案例完整流程

《MyBatis分页查询实战案例完整流程》MyBatis是一个强大的Java持久层框架,支持自定义SQL和高级映射,本案例以员工工资信息管理为例,详细讲解如何在IDEA中使用MyBatis结合Page... 目录1. MyBATis框架简介2. 分页查询原理与应用场景2.1 分页查询的基本原理2.1.1 分

使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解

《使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解》本文详细介绍了如何使用Python通过ncmdump工具批量将.ncm音频转换为.mp3的步骤,包括安装、配置ffmpeg环... 目录1. 前言2. 安装 ncmdump3. 实现 .ncm 转 .mp34. 执行过程5. 执行结

Python实现精确小数计算的完全指南

《Python实现精确小数计算的完全指南》在金融计算、科学实验和工程领域,浮点数精度问题一直是开发者面临的重大挑战,本文将深入解析Python精确小数计算技术体系,感兴趣的小伙伴可以了解一下... 目录引言:小数精度问题的核心挑战一、浮点数精度问题分析1.1 浮点数精度陷阱1.2 浮点数误差来源二、基础解决

SpringBoot 多环境开发实战(从配置、管理与控制)

《SpringBoot多环境开发实战(从配置、管理与控制)》本文详解SpringBoot多环境配置,涵盖单文件YAML、多文件模式、MavenProfile分组及激活策略,通过优先级控制灵活切换环境... 目录一、多环境开发基础(单文件 YAML 版)(一)配置原理与优势(二)实操示例二、多环境开发多文件版

使用docker搭建嵌入式Linux开发环境

《使用docker搭建嵌入式Linux开发环境》本文主要介绍了使用docker搭建嵌入式Linux开发环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录1、前言2、安装docker3、编写容器管理脚本4、创建容器1、前言在日常开发全志、rk等不同

Three.js构建一个 3D 商品展示空间完整实战项目

《Three.js构建一个3D商品展示空间完整实战项目》Three.js是一个强大的JavaScript库,专用于在Web浏览器中创建3D图形,:本文主要介绍Three.js构建一个3D商品展... 目录引言项目核心技术1. 项目架构与资源组织2. 多模型切换、交互热点绑定3. 移动端适配与帧率优化4. 可

sysmain服务可以禁用吗? 电脑sysmain服务关闭后的影响与操作指南

《sysmain服务可以禁用吗?电脑sysmain服务关闭后的影响与操作指南》在Windows系统中,SysMain服务(原名Superfetch)作为一个旨在提升系统性能的关键组件,一直备受用户关... 在使用 Windows 系统时,有时候真有点像在「开盲盒」。全新安装系统后的「默认设置」,往往并不尽编

从原理到实战解析Java Stream 的并行流性能优化

《从原理到实战解析JavaStream的并行流性能优化》本文给大家介绍JavaStream的并行流性能优化:从原理到实战的全攻略,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的... 目录一、并行流的核心原理与适用场景二、性能优化的核心策略1. 合理设置并行度:打破默认阈值2. 避免装箱

Maven中生命周期深度解析与实战指南

《Maven中生命周期深度解析与实战指南》这篇文章主要为大家详细介绍了Maven生命周期实战指南,包含核心概念、阶段详解、SpringBoot特化场景及企业级实践建议,希望对大家有一定的帮助... 目录一、Maven 生命周期哲学二、default生命周期核心阶段详解(高频使用)三、clean生命周期核心阶