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);