#! /usr/bin/env node // This is an executable fine.. import { readFileSync, writeFileSync } from "fs"; import { dlog } from "./dlog"; import { dvalidation } from "./dvalidation"; // this program read the file, find the patch version, increment it and write the updated version. function autoIncrementVersionInPackageJSON(file: string) { console.log(`Processing ${file}`); try { let data = readFileSync(file); dvalidation.validateOrThrow(data != null, "Not able to read given file"); let data1 = data.toString(); let match_str: string[] | null = data1.match(/"version": "[0-9]?\.[0-9]?\.([0-9]*?)",/); dvalidation.validateOrThrow(match_str != null, "Not able to find patch version number."); let patch_num = parseInt(match_str!![1]); dlog.d(`Creating new version to ${patch_num + 1}`); let result = data1.replace(/("version": "[0-9]?\.[0-9]?\.)([0-9]*?)(",)/, `$1${patch_num + 1}$3`); console.log(result); writeFileSync(file, result); } catch (err) { dlog.ex(err as Error); } } // Main function call dvalidation.validateOrThrow(process.argv.length == 3, "You must pass exactly one args"); autoIncrementVersionInPackageJSON(process.argv[2]);