github.com/yoheimuta/protolint@v0.49.8-0.20240515023657-4ecaebb7575d/bdist/js/version.mjs (about) 1 import * as child_process from 'child_process'; 2 import * as fs from 'fs'; 3 import * as path from 'path'; 4 import npmlog from 'npmlog'; 5 import semver from 'semver'; 6 7 import { dirname } from 'path'; 8 import { fileURLToPath } from 'url'; 9 10 const __dirname = dirname(fileURLToPath(import.meta.url)); 11 12 const command = child_process.spawn("git", ["describe", "--tag"], {cwd: __dirname}); 13 var gdt = ""; 14 var done = undefined; 15 command.stdout.on("data", (data) => { gdt += data; }); 16 command.stderr.on("data", (data) => { npmlog.warn("protolint-version[git]", "git ran into the following error: %s", data) }); 17 command.on("error", (err) => { npmlog.error("protolint-version[git]", "Failed to start git executable: %s", err) }); 18 command.on("close", (exit_code) => { done = exit_code; }); 19 20 while (done === undefined) { 21 await new Promise(resolve => setTimeout(resolve, 1000)); 22 } 23 24 if (done !== 0) 25 { 26 npmlog.error("protolint-version", "Failed to get git tag: %i", done); 27 process.exit(done); 28 } 29 30 var version = semver.coerce(gdt); 31 if (!semver.valid(version)) { 32 npmlog.error("protolint-version", "Cannot parse %s to a valid version: %s", gdt, version); 33 } 34 35 npmlog.info("protolint-version", "Preparing to publish %s", version); 36 const package_json_file = path.join(__dirname, "package.json"); 37 var package_json = JSON.parse(fs.readFileSync(package_json_file)); 38 package_json["version"] = version.version; 39 fs.writeFileSync(package_json_file, JSON.stringify(package_json, undefined, 2)); 40 41 npmlog.info("protolint-version", "Successfully written version %s to %s", version, package_json_file);