javascript 最后一个提交的作者用它的消息创建一个标记(异步getter的例子)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript 最后一个提交的作者用它的消息创建一个标记(异步getter的例子)相关的知识,希望对你有一定的参考价值。

const asyncExec = require('util').promisify(require('child_process').exec);

/**
 * Execute command line in a child process
 * @param  {...String} args Commands
 * @return {String}
 */
async function exec (...args) {
  const { stdout, stderr } = await asyncExec(...args);

  if (stderr) {
    throw new Error(stderr);
  }

  return stdout.trim();
}

/**
 * @typedef           gitData
 * @description       Git data getters
 * @type     {Object}
 * @property {String} author  Author of the last commit
 * @property {String} email   Git user email
 * @property {String} message Most recent commit message
 */
const gitData = Object.defineProperties({}, {
  author:  { get: async () => await exec('git log -1 --pretty=%an') },
  email:   { get: async () => await exec('git log -1 --pretty=%ae') },
  message: { get: async () => await exec('git log -1 --pretty=%B') },
});

/**
 * Create a tag by the last commit's author with it's message
 * @param  {String} tag Tag name (e.g. v1.1.0)
 * no return value
 */
module.exports = async (tag) => {
  const { message, author, email } = gitData;

  try {
    await exec(`git config --global user.name "${await author}"`);
    await exec(`git config --global user.email "${await email}"`);
    await exec(`git tag -a ${tag} -m "${await message}"`);
    await exec(`git push origin refs/tags/${tag}`);
  } catch (error) {
    console.error(error);
    throw error;
  }
};

以上是关于javascript 最后一个提交的作者用它的消息创建一个标记(异步getter的例子)的主要内容,如果未能解决你的问题,请参考以下文章

如何通过单击链接使用 JavaScript 提交表单?

提交消息中的 Git 魔术关键字(签名人、共同作者、修复...)

推送后重写主/主分支上的最后一次提交消息?

有一个带有链接 Javascript 的 HTML 文档我试图在单击提交按钮时添加一条警报消息。我该怎么做呢?

javascript 添加分支名称标记以提交消息

在 Elasticsearch 中,多个***文档可以共享一个嵌套文档吗?