`
lua
  • 浏览: 76351 次
  • 性别: Icon_minigender_1
  • 来自: 大连
文章分类
社区版块
存档分类
最新评论

一个自动更新VC++项目版本号的Lua脚本

阅读更多

某个项目经常需要在改完代码之后修改版本号,大概有7、8个文件需要一个个改动然后check in。我发现这个操作有个特点就是所有的版本号都是一样的,而且需要修改的字符串非常有规律,就是类似查找1, 6, 0, 16替换成1, 6, 0, 17这样,同时还有1,6,0,16替换成1,6,0,17(区别是逗号后面没有空格)。这种分析查找替换用Lua来做再简单不过了,故此写了这个脚本。

 

如果要使用的话,需要修改下面粗体部分,comment_string是将被作为注释加入clearcase的。old_string和new_string分别是当前版本号以及下一个版本号。projfolder一般只需要修改一次,就是clearcase的项目view目录。使用之前应该安装Lua for windows。如果要用在其他的版本管理工具,就修改最后几行的命令就可以了。

从这个脚本我们可以看出Lua作为utility script的特点:开发快速、使用方便、代码清晰。对于反复重复的手工操作非常适合。

 

---will be used as comment content-------------------------------
local comment_string = "increase version"


----------------------------------------------

-----old string will be replaced by new string
----------------------------------------------
local old_string = "1, 6, 0, 16"
local new_string = "1, 6, 0, 17"
----------------------------------------------

 

----------------------------------------------
local projfolder = [[D:\\VSS3\net_proj]]
----------------------------------------------

 

local files = {
    projfolder .. [[\PrjFolder1\AFXEXRES.RC]],
    projfolder .. [[\PrjRES\prstrres.rc]],
    projfolder .. [[\PrjSCN\enu\1747SCNenu.rc]],
    projfolder .. [[\PrjCNetCnfg\enu\enu.rc]],
    projfolder .. [[\PrjScanner\enu\enu.rc]],
    projfolder .. [[\PrjServices\enu\enu.rc]],
    }

local old_string2 = string.gsub(old_string, " ", "")
print(old_string2)

local new_string2 = string.gsub(new_string, " ", "")
print(new_string2)

 

for _, filename in ipairs(files) do
    print(filename)

 

    -- remove read-only attribute.
    os.execute("attrib -R " .. filename)

    -- open files
    -------------------------------------------------
    local f = assert(io.open(filename, "rb"))
    buffer = f:read("*all")

    buffer = string.gsub(buffer, old_string, new_string)
    buffer = string.gsub(buffer, old_string2, new_string2)
    f:close()

    local outf = assert(io.open(filename, "wb"))
    outf:write(buffer)
    outf:close()

 

    local cmd1 = [[cleartool checkout -reserved -usehijack -c "]] .. comment_string .. [[" ]] .. filename
    print(cmd1)
    os.execute(cmd1)

 

    local cmd2 = [[cleartool checkin -nc ]] .. filename
    print(cmd2)
    os.execute(cmd2)


end

0
0
分享到:
评论

相关推荐

    Lua脚本语言在自动测试中的应用

    2. **整合性**:作为“glue language”,Lua可以将不同组件或模块粘合在一起,形成一个完整的测试解决方案。在Test er这样的自动测试系统中,Lua用于协调软件控制、硬件控制和通信等不同部分,实现各部分之间的无缝...

    vc 程序调用lua脚本简单示例

    它可能包括了创建Lua状态机,加载一个简单的Lua脚本(比如执行一些计算或操作),以及如何在C++和Lua之间交换数据。这个例子对于理解如何在实际项目中使用Lua作为扩展语言非常有帮助。 总结一下,本示例的核心知识...

    delphi调用lua脚本的一个例子

    例如,"luabindings"是一个Delphi绑定到Lua C API的项目,它允许你在Delphi中直接调用Lua函数和访问Lua全局变量。 安装完成后,我们需要在Delphi项目中引入相关的单元文件,如`luabindings.pas`或`luapascalapi.pas...

    LUA脚本|LUA脚本支持库

    "100版"可能表示该库的一个版本号,随着技术的发展,库可能会有多个版本发布,每个新版本可能带来新的特性或修复已知问题。使用新版本时,需要注意与旧版本的兼容性,确保代码的稳定运行。 总结,LUA脚本支持库是...

    lua脚本执行行数和次数统计Dll

    "lua脚本执行行数和次数统计Dll"就是这样一个工具,它能够帮助开发者分析lua脚本的运行行为,提供关于脚本执行的详细信息。 这个Dll动态链接库专门设计用于统计lua脚本的执行行数和次数。通过加载这个Dll,你可以...

    游戏引擎HGE结合Lua脚本 教程.zip

    游戏开发中的一个重要环节是使用游戏引擎来创建交互式体验,而HGE(Hyper Game Engine)是一个面向初学者和专业人士的开源游戏开发框架。这个“游戏引擎HGE结合Lua脚本 教程.zip”压缩包提供了关于如何利用HGE与Lua...

    一个用lua写的游戏脚本实例

    "游戏脚本设计与实现" ...从提供的游戏脚本实例中,我们可以了解到游戏脚本设计的基本结构、游戏任务的设计、游戏机制的实现、游戏逻辑的编写、lua语言在游戏脚本中的应用、游戏脚本的优化和游戏脚本的测试等知识点。

    lua脚本问文件哈哈哈

    lua脚本问文件哈哈哈lua脚本问文件哈哈哈lua脚本问文件哈哈哈lua脚本问文件哈哈哈lua脚本问文件哈哈哈lua脚本问文件哈哈哈lua脚本问文件哈哈哈lua脚本问文件哈哈哈lua脚本问文件哈哈哈lua脚本问文件哈哈哈lua脚本问...

    STM32F103 运行lua脚本例程.rar

    为了在STM32F103上运行Lua,首先需要一个经过优化的Lua编译版本,可能需要使用交叉编译工具链来生成适合微控制器的二进制代码。然后,需要在STM32的存储器中安排lua解释器和脚本的存储位置,通常包括RAM和Flash。...

    lua脚本源码包

    在这个源码包中,"lua_test"是一个用C++编写的测试程序,它展示了如何在C++项目中集成和调用Lua脚本。在Visual Studio 2008中,你可以打开这个项目,查看其源代码,理解如何设置Lua环境,如何加载和运行lua脚本,...

    Lua 脚本

    Lua 是一个小巧的脚本语言。作者是巴西人。该语言的设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。 Lua脚本可以很容易的被C/C++代码调用,也可以反过来调用C/C++的函数,这使得Lua在应用...

    LUa脚本编辑器

    对于Lua,一个良好的编辑器能极大地提升开发效率,例如提供对Lua语法的智能提示和代码格式化。 3. **LuaEdit**:从文件列表中可以看出,"LuaEdit"可能是这个脚本编辑器的名称。它可能包含多个组件,如LuaEdit.exe是...

    基于串口屏LUA脚本—系统参数设置功能V1.0.pdf

    1. 波特率设置:波特率是串口通信中非常关键的一个参数,它指定了串口每秒传输的比特数。在LUA脚本中,通过相应的API函数来设置串口通信的波特率。波特率设置对确保数据正确无误地发送和接收非常关键,不同的应用...

    tolua++ 版helloworld (lua脚本调用C++类的成员函数方法)

    1.启动CodeBlocks新建一个控制台项目。把上面的5个文件覆盖到项目目录。 2.配置项目编译环境,把lua和tolua++类库和搜索路径包括进项目来。 2.双击build_pgk.bat 会新生成lua_hello.h调用文件。 3.运行编译即可看到...

    SpringBoot+Redis执行lua脚本的方法步骤

    * `script` 是第一个参数,为 Lua 5.1 脚本(字符串)。 * `numkeys` 指定后续参数有几个 key。 * `key [key ...]`,被操作的 key,可以多个,在 Lua 脚本中通过 `KEYS[1], KEYS[2]` 获取。 * `arg [arg ...]`,...

    window系统 Lua脚本语言编译器

    在Windows环境中,你可以通过命令行界面(CMD)调用`lua.exe`,并传入一个Lua脚本来运行。如果将`lua.exe`放在系统的PATH环境变量中,那么你可以在任何目录下直接运行lua命令来启动它,无需每次都指定完整路径。 `...

    excel表转Lua脚本工具

    为了解决这个问题,出现了"Excel表转Lua脚本工具",它能将整理好的Excel表格数据一键转换成Lua脚本,极大地提高了工作效率。 首先,我们来理解这个工具的核心功能。Excel是一种广泛使用的电子表格程序,其强大的...

    visual c++ HGE游戏引擎+Lua脚本的结合使用.zip

    1. 创建一个C++项目,引入HGE的源码和库。 2. 设置项目配置,链接HGE所需的库。 3. 在项目中初始化HGE,并加载Lua环境。 4. 编写C++代码来调用Lua脚本,例如加载游戏场景、执行用户输入响应等。 5. 在Lua脚本中定义...

Global site tag (gtag.js) - Google Analytics