You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			56 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
			
		
		
	
	
			56 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
// chezmoi:template:left-delimiter="/*{{"
 | 
						|
// chezmoi:template:right-delimiter="}}*/"
 | 
						|
/*{{- /* vim: set filetype=javascript: */ -}}*/
 | 
						|
/*{{ if lookPath "node" -}}*/
 | 
						|
#!/usr/bin/env node
 | 
						|
 | 
						|
const fs = require("fs");
 | 
						|
const childProcess = require("child_process");
 | 
						|
const { promisify } = require("util");
 | 
						|
 | 
						|
const exec = promisify(childProcess.exec);
 | 
						|
const readFile = promisify(fs.readFile);
 | 
						|
const writeFile = promisify(fs.writeFile);
 | 
						|
 | 
						|
const [, , message, mode] = process.argv;
 | 
						|
 | 
						|
async function main() {
 | 
						|
  const file = await readFile(message, { encoding: "utf8" });
 | 
						|
  let result;
 | 
						|
  try {
 | 
						|
    result = await exec("git rev-parse --abbrev-ref HEAD");
 | 
						|
  } catch (err) {
 | 
						|
    return
 | 
						|
  }
 | 
						|
 | 
						|
  if (message.match(/^#/)) {
 | 
						|
    return
 | 
						|
  }
 | 
						|
 | 
						|
  const tags = result.stdout
 | 
						|
    .split("\n")
 | 
						|
    .map(branch => branch.match(/[A-Z]+-\d+/g))
 | 
						|
    .filter(x => !!x)
 | 
						|
    .reduce((allIDs, matchedIDs) => [...allIDs, ...matchedIDs], [])
 | 
						|
    .map(id => `[${id}]`);
 | 
						|
 | 
						|
  if (tags.length === 0) {
 | 
						|
    return;
 | 
						|
  }
 | 
						|
  if (tags.find(tag => file.includes(tag))) {
 | 
						|
    return;
 | 
						|
  }
 | 
						|
 | 
						|
  const newFile = mode === 'message'
 | 
						|
    ? file + '\n\n'  + tags.join(" ")
 | 
						|
    : `\n\n# ` + tags.join(" ") + "\n" + file;
 | 
						|
 | 
						|
  await writeFile(message, newFile);
 | 
						|
}
 | 
						|
 | 
						|
main().catch(err => {
 | 
						|
  console.error(err);
 | 
						|
  process.exit(1);
 | 
						|
});
 | 
						|
/*{{- end }}*/
 |