mac shell 批量修改 plist文件(shelljs,PlistBuddy)

目标: 根据配置生成多个plist文件,并修改url参数值

前置条件

  1. 需要有配置文件,配置文件中包含多个plist配置项
  2. 使用nodejs 并依赖shelljs github
  3. 我的json配置项 config.json
[
  {
    "plist": "app1",
    "url": "https://xxx.com/app1/xxx.ipa"
  },
  {
    "plist": "app2",
    "url": "https://xxx.com/app3/xxx.ipa"
  },
  {
    "plist": "app3",
    "url": "https://xxx.com/app3/xxx.ipa"
  }
]
  1. 我的base.plist




    items
    
        
            assets
            
                
                    kind
                    software-package
                    url
                    http://xxx.com/xxx.ipa
                
            
            metadata
            
                bundle-identifier
                com.xxx.xxx
                bundle-version
                1.0.0
                kind
                software
                title
                App名称
            
        
    



开始

  1. 创建项目
mkdir app
cd app
  1. npm 初始化
npm init -y
  1. 安装 shelljs
npm i shelljs
  1. 生成上面的base.plistconfig.json 放到项目目录中
  2. 创建plist目录
mkdir plist
  1. 创建 main.js
touch main.js
  1. 编辑 main.js
let fs = require('fs');
let shell = require('shelljs');
// 读取 json文件
function readConfig(target_path) {
    try {
        let data = fs.readFileSync(target_path, 'utf-8'); // 同步操作!
        return JSON.parse(data);
    } catch (error) {
        console.log(error);
    }
    return null;
}
// 生成目标plist文件
function createPlist(info) {
    for (let i = 0; i < info.length; i++) {
        let dict = info[i];
        let plist_name = dict.plist;
        let ipa_url = dict.url;
        let opt = `/usr/libexec/PlistBuddy -c "Set :items:0:assets:0:url ${ipa_url}" base.plist`
        shell.exec(opt); // 修改plist文件中url参数值
        shell.cp('base.plist', `plist/${plist_name}.plist`); // 拷贝文件至目标目录(并改名)
    }
}
// 入口方法
function start() {
    let info = readConfig('config.json'); // 读取 json文件
    if (info === null) {
        console.log('配置文件读取失败!')
        return;
    }
    createPlist(info); // 生成目标plist文件
}

start(); // 执行
  1. 执行操作
node main.js
  1. 产出


    mac shell 批量修改 plist文件(shelljs,PlistBuddy)_第1张图片
    生成的plist文件.png
  2. 查看文件


    mac shell 批量修改 plist文件(shelljs,PlistBuddy)_第2张图片
    app1.plist.png

    mac shell 批量修改 plist文件(shelljs,PlistBuddy)_第3张图片
    app2.plist.png

    mac shell 批量修改 plist文件(shelljs,PlistBuddy)_第4张图片
    app3.plist.png

你可能感兴趣的:(mac shell 批量修改 plist文件(shelljs,PlistBuddy))