基于VSCode集成开发环境快速制作spec文件的方法及插件工具转让专利

申请号 : CN202210076394.3

文献号 : CN114089981B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 薛炜吴春光齐璇顾郁莲战茅

申请人 : 麒麟软件有限公司

摘要 :

本申请中提供了一种基于VSCode集成开发环境快速制作spec文件的方法及插件工具,在VSCode集成开发环境中开发插件;当spec文件进入文本编辑器时,插件激活并运行,插件接收文本编辑器的输入内容并调用RPM命令,RPM命令根据输入内容实现宏联想输入以及宏定义展开,在编辑spec文件时可以快速联想输入rpm预定义的宏以及当鼠标悬浮或选中预定义宏是自动展开内容,方便开发人员快速编辑spec文件提高开发效率,并且通过在VSCode集成开发环境中以插件的方式提供RPM宏联想输入以及宏定义展开。

权利要求 :

1.一种基于VSCode集成开发环境快速制作spec文件的方法,其特征在于,包括以下步骤:

在VSCode集成开发环境中开发插件;

当spec文件进入文本编辑器时,所述插件激活并运行;

所述插件接收文本编辑器的输入内容并调用RPM命令,所述RPM命令根据所述输入内容实现宏联想输入以及宏定义展开;

所述插件接收文本编辑器的输入内容并调用RPM命令,所述RPM命令根据所述输入内容实现宏联想输入,包括以下步骤:接收所述输入内容;

初始化一个数组用来保存已定义宏列表;

通过exec系统函数调用rpm‑‑showrc命令;

监听所述rpm‑‑showrc命令的标准输出,并逐行解析出系统中已定义的宏,并将宏添加到宏列表数组中;

初始化一个新的数组保存匹配结果;

循环宏列表数组并逐条与输入内容进行正则匹配,将匹配到的宏加入到结果数组中;

将匹配结果发送至所述文本编辑器并输出显示;

所述插件接收文本编辑器的输入内容并调用RPM命令,所述RPM命令根据所述输入内容实现宏定义展开,包括以下步骤:选中已输入的宏定义;

接收当前选中的输入内容;

通过exec系统函数调用rpm‑E命令;

监听所述rpm‑E命令的标准输出,并读取标准输出的内容;

如果输出内容不为空,表示宏已定义,将输出结果发送至所述文本编辑器输出显示。

2.一种基于VSCode集成开发环境快速制作spec文件的插件工具,其特征在于,包括:运行模块,用于当spec文件进入文本编辑器时,所述插件激活并运行;

调用模块,用于所述插件接收文本编辑器的输入内容并调用RPM命令,所述RPM命令根据所述输入内容实现宏联想输入以及宏定义展开;

所述调用模块包括:

第一接收单元,用于接收所述输入内容;

第一保存单元,用于初始化一个数组用来保存已定义宏列表;

第一系统函数调用单元,用于通过exec系统函数调用rpm‑‑showrc命令;

处理单元,用于监听所述rpm‑‑showrc命令的标准输出,并逐行解析出系统中已定义的宏,并将宏添加到宏列表数组中;

第二保存单元,用于初始化一个新的数组保存匹配结果;

匹配单元,用于循环宏列表数组并逐条与输入内容进行正则匹配,将匹配到的宏加入到结果数组中;

第一输出单元,用于将匹配结果发送至所述文本编辑器并输出显示;

选中单元,用于选中已输入的宏定义;

第二接收单元,用于接收当前选中的输入内容;

第二系统函数调用单元,用于通过exec系统函数调用rpm‑E命令;

读取单元,用于监听所述rpm‑E命令的标准输出,并读取标准输出的内容;

第二输出单元,用于如果输出内容不为空,表示宏已定义,将输出结果发送至所述文本编辑器输出显示。

说明书 :

基于VSCode集成开发环境快速制作spec文件的方法及插件

工具

技术领域

[0001] 本申请涉及制作spec文件技术领域,尤其涉及基于VSCode集成开发环境快速制作spec文件的方法及插件工具。

背景技术

[0002] 当前RedHat系linux系统中的软件通常以RPM包进行软件发布,在构建RPM软件包的时候开发人员需要编辑spec文件,来配置包基本信息、构建脚本、包依赖关系等信息。
[0003] RPM软件包管理器定义了一些预定义的宏,各个linux发行版也会提供一些自定义的RPM宏,开发人员在编辑spec文件时可以直接使用,但开发人员如果想查询当前系统中已
经定义的宏列表,只能通过查看/usr/lib/rpm/下的macro文件或在命令行执行rpm‑‑
showrc命令进行查看;在编辑spec文件时操作比较繁琐,需要在编辑器和命令行来回切换。
[0004] 现有的在redhat系linux发行版中编辑spec文件通常使用vim编辑spec,但会存在以下缺点:
[0005] (1)在编辑spec文件是不支持RPM预定义宏联想输入;
[0006] (2)预定义宏无法展开查看其定义内容,需在linux命令行使用rpmspec‑E命令来查看;
[0007] (3)当需要使用预定义宏时,需在linux命令行使用rpm‑‑showrc命令或到预定义宏文件中查看,需要频繁的在命令行与编辑器间进行切换,编辑效率底下。

发明内容

[0008] 本申请实施例提供了一种基于VSCode集成开发环境快速制作spec文件的方法及插件工具,用以解决现有的在VSCode集成开发环境中,编辑spec文件是不支持RPM预定义宏
联想输入,且预定义宏无法展开查看其定义内容,需在linux命令行使用rpmspec‑E命令来
查看,当需要使用预定义宏时,需在linux命令行使用rpm‑‑showrc命令或到预定义宏文件
中查看,需要频繁的在命令行与编辑器间进行切换,编辑效率底下的技术问题。
[0009] 有鉴于此,本申请第一方面提供了一种基于VSCode集成开发环境快速制作spec文件的方法,包括以下步骤:
[0010] 在VSCode集成开发环境中开发插件;
[0011] 当spec文件进入文本编辑器时,所述插件激活并运行;
[0012] 所述插件接收文本编辑器的输入内容并调用RPM命令,所述RPM命令根据所述输入内容实现宏联想输入以及宏定义展开。
[0013] 可选地,所述插件接收文本编辑器的输入内容并调用RPM命令,所述RPM命令根据所述输入内容实现宏联想输入,包括以下步骤:
[0014] 接收所述输入内容;
[0015] 初始化一个数组用来保存已定义宏列表;
[0016] 通过exec系统函数调用rpm‑‑showrc命令;
[0017] 监听所述rpm‑‑showrc命令的标准输出,并逐行解析出系统中已定义的宏,并将宏添加到宏列表数组中;
[0018] 初始化一个新的数组保存匹配结果;
[0019] 循环宏列表数组并逐条与输入内容进行正则匹配,将匹配到的宏加入到结果数组中;
[0020] 将匹配结果发送至所述文本编辑器并输出显示。
[0021] 可选地,所述插件接收文本编辑器的输入内容并调用RPM命令,所述RPM命令根据所述输入内容实现宏定义展开,包括以下步骤:
[0022] 选中已输入的宏定义;
[0023] 接收当前选中的输入内容;
[0024] 通过exec系统函数调用rpm‑E命令;
[0025] 监听所述rpm‑E命令的标准输出,并读取标准输出的内容;
[0026] 如果输出内容不为空,表示宏已定义,将输出结果发送至所述文本编辑器输出显示。
[0027] 本申请第二方面提供了一种基于VSCode集成开发环境快速制作spec文件的插件工具,包括:
[0028] 运行模块,用于当spec文件进入文本编辑器时,所述插件激活并运行;
[0029] 调用模块,用于所述插件接收文本编辑器的输入内容并调用RPM命令,所述RPM命令根据所述输入内容实现宏联想输入以及宏定义展开。
[0030] 可选地,所述调用模块包括:
[0031] 第一接收单元,用于接收所述输入内容;
[0032] 第一保存单元,用于初始化一个数组用来保存已定义宏列表;
[0033] 第一系统函数调用单元,用于通过exec系统函数调用rpm‑‑showrc命令;
[0034] 处理单元,用于监听所述rpm‑‑showrc命令的标准输出,并逐行解析出系统中已定义的宏,并将宏添加到宏列表数组中;
[0035] 第二保存单元,用于初始化一个新的数组保存匹配结果;
[0036] 匹配单元,用于循环宏列表数组并逐条与输入内容进行正则匹配,将匹配到的宏加入到结果数组中;
[0037] 第一输出单元,用于将匹配结果发送至所述文本编辑器并输出显示。
[0038] 可选地,所述调用模块包括:
[0039] 选中单元,用于选中已输入的宏定义;
[0040] 第二接收单元,用于接收当前选中的输入内容;
[0041] 第二系统函数调用单元,用于通过exec系统函数调用rpm‑E命令;
[0042] 读取单元,用于监听所述rpm‑E命令的标准输出,并读取标准输出的内容;
[0043] 第二输出单元,用于如果输出内容不为空,表示宏已定义,将输出结果发送至所述文本编辑器输出显示。
[0044] 从以上技术方案可以看出,本申请实施例具有以下优点:
[0045] 本申请中提供了一种基于VSCode集成开发环境快速制作spec文件的方法及插件工具,在编辑spec文件时可以快速联想输入RPM预定义的宏以及当鼠标悬浮或选中预定义
宏是自动展开内容,方便开发人员快速编辑spec文件提高开发效率,并且通过在VSCode集
成开发环境中以插件的方式提供RPM宏联想输入以及宏定义展开。

附图说明

[0046] 为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施
例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
[0047] 图1为本申请实施例中提供的一种基于VSCode集成开发环境快速制作spec文件的方法的流程示意图;
[0048] 图2为本申请实施例中提供的一种基于VSCode集成开发环境快速制作spec文件的方法的结构示意图;
[0049] 图3为本申请实施例中提供的一种基于VSCode集成开发环境快速制作spec文件的方法的实施例1的流程示意图;
[0050] 图4为本申请实施例中提供的一种基于VSCode集成开发环境快速制作spec文件的方法的编辑spec文件的使用流程示意图;
[0051] 图5为本申请实施例中提供的一种基于VSCode集成开发环境快速制作spec文件的方法的鼠标选中预定义宏时的流程示意图;
[0052] 图6为本申请实施例中提供的一种基于VSCode集成开发环境快速制作spec文件的插件工具的实现宏联想输入模块框图;
[0053] 图7为本申请实施例中提供的一种基于VSCode集成开发环境快速制作spec文件的插件工具的实现宏定义展开模块框图。

具体实施方式

[0054] 为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本
申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在
没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0055] 实施例1
[0056] 为了便于理解,请参阅图1和图2,本申请提供的一种基于VSCode集成开发环境快速制作spec文件的方法的一个实施例,包括以下步骤:
[0057] 在VSCode集成开发环境中开发插件;
[0058] 当spec文件进入文本编辑器时,插件激活并运行;
[0059] 插件接收文本编辑器的输入内容并调用RPM命令,RPM命令根据输入内容实现宏联想输入以及宏定义展开。
[0060] 需要说明的是,如图3所示,在VSCode集成开发环境中开发一个插件,当开发人员在VSCode集成开发环境中编辑spec文件时,插件会自动提供宏的联想输入,当鼠标悬停或
选中RPM预定义宏时,会自动展开宏定义;通过在VSCode集成开发环境中以插件的方式提供
RPM预定义宏的联想输入和在VSCode集成开发环境中以插件的方式提供当鼠标悬浮或选中
RPM预定义宏时自动展开其定义内容,提供了RPM包管理器中定义的宏的一些快捷使用方
式,解决了现有的在VSCode集成开发环境中,编辑spec文件是不支持RPM预定义宏联想输
入,且预定义宏无法展开查看其定义内容,需在linux命令行使用rpmspec ‑E命令来查看,
当需要使用预定义宏时,需在linux命令行使用rpm‑‑showrc命令或到预定义宏文件中查
看,需要频繁的在命令行与编辑器间进行切换,编辑效率底下的技术问题。
[0061] 实施例2
[0062] 为了便于理解,请参阅图4,作为实施例1的进一步改进,插件接收文本编辑器的输入内容并调用RPM命令,RPM命令根据输入内容实现宏联想输入,包括以下步骤:
[0063] 接收输入内容;
[0064] 初始化一个数组用来保存已定义宏列表;
[0065] 通过exec系统函数调用rpm‑‑showrc命令;
[0066] 监听rpm‑‑showrc命令的标准输出,并逐行解析出系统中已定义的宏,并将宏添加到宏列表数组中;
[0067] 初始化一个新的数组保存匹配结果;
[0068] 循环宏列表数组并逐条与输入内容进行正则匹配,将匹配到的宏加入到结果数组中;
[0069] 将匹配结果发送至文本编辑器并输出显示。
[0070] 需要说明的是,如图4所示,1.用户通过在VSCode集成开发环境中打开spec文件,2.在VSCode集成开发环境中进入文本编辑器,3.将插件进行激活并运行,4.然后对spec文
件进行编辑,文本编辑器将输入内容发送至插件,5.插件接收输入内容并调用命令进行查
询已定义的宏列表,首先接收输入内容,初始化一个数组用来保存已定义宏列表,然后通过
exec系统函数调用rpm‑‑showrc命令查询宏定义列表,监听命令的标准输出,并逐行解析出
系统中已定义的宏,并将宏添加到宏定义列表数组中,然后再初始化一个新的数组保存匹
配结果,6.循环宏定义列表数组并逐条与输入内容进行正则匹配,将匹配到的宏加入到结
果数组中,7.然后将匹配结果返回给文本编辑器并输出显示。正则匹配是通过一个预定义
好的正则表达式对字符串进行过滤匹配,符合正则表达式规则的字符串即为匹配到的字符
串,正则表达式是对字符串操作的一种逻辑公式,用事先定义好的一些特定字符、及这些特
定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤
逻辑。在本申请中,如用户输入字符A,那么本申请中的插件接收到了A,然后通过*A*来匹配
所有包含字母A的宏定义,并将结果返回。其中”*A*”就是一个最简单的正则表达式。
[0071] 实施例3
[0072] 为了便于理解,请参阅图5,作为实施例1的进一步改进,插件接收文本编辑器的输入内容并调用RPM命令,RPM命令根据输入内容实现宏定义展开,包括以下步骤:
[0073] 选中已输入的宏定义;
[0074] 接收当前选中的输入内容;
[0075] 通过exec系统函数调用rpm‑E命令;
[0076] 监听rpm‑E命令的标准输出,并读取标准输出的内容;
[0077] 如果输出内容不为空,表示宏已定义,将输出结果发送至文本编辑器输出显示。
[0078] 需要说明的是,如图5所示,1.用户通过在VSCode集成开发环境中打开spec文件,2.在VSCode集成开发环境中进入文本编辑器,3.将插件进行激活并运行,4.选中包括鼠标
悬停和鼠标的选中,用户将鼠标悬停或选中已输入的宏定义,5.接收到当前鼠标选中的输
入内容,通过exec系统函数调用rpm‑E命令展开宏,监听命令的标准输出,并读取标准输出
的内容,如果输出内容不为空,表示宏已定义,6.将输出结果发送至文本编辑器,7.输出显
示给用户。
[0079] 实施例4
[0080] 本申请第二方面还提供了一种基于VSCode集成开发环境快速制作spec文件的插件工具,如图6所示,包括:
[0081] 运行模块,用于当spec文件进入文本编辑器时,插件激活并运行;
[0082] 调用模块,用于插件接收文本编辑器的输入内容并调用RPM命令,RPM命令根据输入内容实现宏联想输入以及宏定义展开。
[0083] 调用模块包括:
[0084] 第一接收单元,用于接收输入内容;
[0085] 第一保存单元,用于初始化一个数组用来保存已定义宏列表;
[0086] 第一系统函数调用单元,用于通过exec系统函数调用rpm‑‑showrc命令;
[0087] 处理单元,用于监听rpm‑‑showrc命令的标准输出,并逐行解析出系统中已定义的宏,并将宏添加到宏列表数组中;
[0088] 第二保存单元,用于初始化一个新的数组保存匹配结果;
[0089] 匹配单元,用于循环宏列表数组并逐条与输入内容进行正则匹配,将匹配到的宏加入到结果数组中;
[0090] 第一输出单元,用于将匹配结果发送至文本编辑器并输出显示。
[0091] 如图7所示,调用模块包括:
[0092] 选中单元,用于选中已输入的宏定义;
[0093] 第二接收单元,用于接收当前选中的输入内容;
[0094] 第二系统函数调用单元,用于通过exec系统函数调用rpm‑E命令;
[0095] 读取单元,用于监听rpm‑E命令的标准输出,并读取标准输出的内容;
[0096] 第二输出单元,用于如果输出内容不为空,表示宏已定义,将输出结果发送至文本编辑器输出显示。
[0097] 本申请的基于VSCode集成开发环境快速制作spec文件的插件工具的工作原理和上述方法的流程相同,在此不做赘述。
[0098] 以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前
述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些
修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。