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
    
  • 相关阅读:
    脚本编辑器的写法
    图集优化
    数组与链表的区别
    第四课 vi编辑器使用
    第三课下 Linux termina命令行常用快捷键
    第三课上 Linux命令入门
    01.Volatile相关知识
    第二课 Ubuntu环境搭建和图形界面操作
    第一课 不要用老方法学习单片机和ARM
    第八讲 IPC之信号量Semaphore
  • 原文地址:https://www.cnblogs.com/java-koma/p/5307444.html
Copyright © 2011-2022 走看看