zoukankan      html  css  js  c++  java
  • node.js小工具--修改Xcode 'Create by'作者名称

    简介

    用Xcode创建源文件时会自动在文件开始位置加入如下注释:

    //
    //  ISSImageCycleScrollView.m
    //  SoftTravel
    //
    //  Created by iss110302000283 on 16/2/26.
    //  Copyright © 2016年 issuser. All rights reserved.
    //
    

    原理

    这个其实是通过Xcode的代码模板(Template)生成的,Xcode的Template目录在这个目录:

    /Applications/Xcode.app/Contents/Developer/Library/Xcode/Templates/File Templates/Source
    

    打开这个目录,可以看到各种文件对应的模板文件,例如:

    //
    //  ___FILENAME___
    //  ___PROJECTNAME___
    //
    //  Created by ___FULLUSERNAME___ on ___DATE___.
    //___COPYRIGHT___
    //
    
    #import <Foundation/Foundation.h>
    
    @protocol ___FILEBASENAMEASIDENTIFIER___ <NSObject>
    
    @end
    

    ___FULLUSERNAME___就是作者名,修改此模板后,在Xcode中创建相应文件时就会生效

    批量脚本

    这里提供一个node.js的脚本,批量修改Xcode的模板,将 ___FULLUSERNAME___作者名修改成我们想要的:

    // updateXcodeTemplate.js
    const fs = require('fs');
    const path = require('path');
    
    // 需要修改的模板文件后缀名
    const extArray = [".h", ".m", ".cpp", ".hpp", ".swift", ".c"]
    
    function updateTemplateFile(filePath)
    {
    	var stat = fs.statSync(filePath);
    	if(stat.isFile())
    	{
    		if(extArray.indexOf(path.extname(filePath)) != -1)
    		{
    			var str = fs.readFileSync(filePath).toString();
    			// 替换作者名
    			var newStr = str.replace(/___FULLUSERNAME___/g, '张学友(___FULLUSERNAME___)');
    			if(str != newStr)
    			{
    				fs.writeFileSync(filePath, newStr);
    				console.log("update file: " + filePath);
    			}
    		}
    	}
    	else if(stat.isDirectory())
    	{
                    // 如果是文件夹,则递归调用
    		var fileList = fs.readdirSync(filePath);
    		for(var i = 0; i < fileList.length; i++)
    		{
    			updateTemplateFile(path.join(filePath, fileList[i]));
    		}
    	}
    }
    
    updateTemplateFile("/Applications/Xcode.app/Contents/Developer/Library/Xcode/Templates/File Templates/Source");
    

    执行脚本:

    // 注意需要用超级用户权限修改,否则会提示没有权限。
    $ sudo node updateXcodeTemplate.js
    
  • 相关阅读:
    如何解决列表框控件宽度不够的问题
    SQL Server 2005的服务器角色(public)的问题
    使用多结果集读取数据减少服务器往返,提高性能
    SQL SERVER的单用户模式以及专用管理员连接
    SQL Server错误严重性级别和异常处理
    使用TransactionScope做分布式事务协调
    通过编程为Outlook 2007添加邮件规则
    微软中国的相关研发团队 交流平台
    有关连接字符串的一些细节
    Web Application和Web Site两个模板的比较
  • 原文地址:https://www.cnblogs.com/java-koma/p/5307444.html
Copyright © 2011-2022 走看看