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

相关文章

网页解析 lxml 库--实战

lxml库使用流程 lxml 是 Python 的第三方解析库,完全使用 Python 语言编写,它对 XPath表达式提供了良好的支 持,因此能够了高效地解析 HTML/XML 文档。本节讲解如何通过 lxml 库解析 HTML 文档。 pip install lxml lxm| 库提供了一个 etree 模块,该模块专门用来解析 HTML/XML 文档,下面来介绍一下 lxml 库

这15个Vue指令,让你的项目开发爽到爆

1. V-Hotkey 仓库地址: github.com/Dafrok/v-ho… Demo: 戳这里 https://dafrok.github.io/v-hotkey 安装: npm install --save v-hotkey 这个指令可以给组件绑定一个或多个快捷键。你想要通过按下 Escape 键后隐藏某个组件,按住 Control 和回车键再显示它吗?小菜一碟: <template

Hadoop企业开发案例调优场景

需求 (1)需求:从1G数据中,统计每个单词出现次数。服务器3台,每台配置4G内存,4核CPU,4线程。 (2)需求分析: 1G / 128m = 8个MapTask;1个ReduceTask;1个mrAppMaster 平均每个节点运行10个 / 3台 ≈ 3个任务(4    3    3) HDFS参数调优 (1)修改:hadoop-env.sh export HDFS_NAMENOD

性能分析之MySQL索引实战案例

文章目录 一、前言二、准备三、MySQL索引优化四、MySQL 索引知识回顾五、总结 一、前言 在上一讲性能工具之 JProfiler 简单登录案例分析实战中已经发现SQL没有建立索引问题,本文将一起从代码层去分析为什么没有建立索引? 开源ERP项目地址:https://gitee.com/jishenghua/JSH_ERP 二、准备 打开IDEA找到登录请求资源路径位置

嵌入式QT开发:构建高效智能的嵌入式系统

摘要: 本文深入探讨了嵌入式 QT 相关的各个方面。从 QT 框架的基础架构和核心概念出发,详细阐述了其在嵌入式环境中的优势与特点。文中分析了嵌入式 QT 的开发环境搭建过程,包括交叉编译工具链的配置等关键步骤。进一步探讨了嵌入式 QT 的界面设计与开发,涵盖了从基本控件的使用到复杂界面布局的构建。同时也深入研究了信号与槽机制在嵌入式系统中的应用,以及嵌入式 QT 与硬件设备的交互,包括输入输出设

OpenHarmony鸿蒙开发( Beta5.0)无感配网详解

1、简介 无感配网是指在设备联网过程中无需输入热点相关账号信息,即可快速实现设备配网,是一种兼顾高效性、可靠性和安全性的配网方式。 2、配网原理 2.1 通信原理 手机和智能设备之间的信息传递,利用特有的NAN协议实现。利用手机和智能设备之间的WiFi 感知订阅、发布能力,实现了数字管家应用和设备之间的发现。在完成设备间的认证和响应后,即可发送相关配网数据。同时还支持与常规Sof

活用c4d官方开发文档查询代码

当你问AI助手比如豆包,如何用python禁止掉xpresso标签时候,它会提示到 这时候要用到两个东西。https://developers.maxon.net/论坛搜索和开发文档 比如这里我就在官方找到正确的id描述 然后我就把参数标签换过来

C#实战|大乐透选号器[6]:实现实时显示已选择的红蓝球数量

哈喽,你好啊,我是雷工。 关于大乐透选号器在前面已经记录了5篇笔记,这是第6篇; 接下来实现实时显示当前选中红球数量,蓝球数量; 以下为练习笔记。 01 效果演示 当选择和取消选择红球或蓝球时,在对应的位置显示实时已选择的红球、蓝球的数量; 02 标签名称 分别设置Label标签名称为:lblRedCount、lblBlueCount

【区块链 + 人才服务】可信教育区块链治理系统 | FISCO BCOS应用案例

伴随着区块链技术的不断完善,其在教育信息化中的应用也在持续发展。利用区块链数据共识、不可篡改的特性, 将与教育相关的数据要素在区块链上进行存证确权,在确保数据可信的前提下,促进教育的公平、透明、开放,为教育教学质量提升赋能,实现教育数据的安全共享、高等教育体系的智慧治理。 可信教育区块链治理系统的顶层治理架构由教育部、高校、企业、学生等多方角色共同参与建设、维护,支撑教育资源共享、教学质量评估、

poj 1113 凸包+简单几何计算

题意: 给N个平面上的点,现在要在离点外L米处建城墙,使得城墙把所有点都包含进去且城墙的长度最短。 解析: 韬哥出的某次训练赛上A出的第一道计算几何,算是大水题吧。 用convexhull算法把凸包求出来,然后加加减减就A了。 计算见下图: 好久没玩画图了啊好开心。 代码: #include <iostream>#include <cstdio>#inclu