carry previous date string
This commit is contained in:
		| @@ -9,13 +9,18 @@ import { CopyrightOptions } from './copyright_options'; | ||||
|  | ||||
| export class CopyrightGenerator { | ||||
|   public static get_copyright_notice ( | ||||
|     opt: CopyrightOptions | ||||
|     opt: CopyrightOptions, | ||||
|     date_str?: string | ||||
|   ): string { | ||||
|     let notice = ''; | ||||
|     const date = (new Date); | ||||
|     const dtf = new Intl.DateTimeFormat ('en', { month: 'long' }); | ||||
|     const year = date.getFullYear (); | ||||
|     const month = dtf.format (date); | ||||
|     let date_string = date_str; | ||||
|     if (typeof date_str === 'undefined') { | ||||
|       const date = (new Date); | ||||
|       const dtf = new Intl.DateTimeFormat ('en', { month: 'long' }); | ||||
|       const year = date.getFullYear (); | ||||
|       const month = dtf.format (date); | ||||
|       date_string = `${month} ${year}`; | ||||
|     } | ||||
|  | ||||
|     if (opt.has_license) { | ||||
|       notice = `${'/*'} | ||||
| @@ -23,7 +28,7 @@ export class CopyrightGenerator { | ||||
|  * This file is part of ${opt.software} which is released under ${ | ||||
|   opt.license}. | ||||
|  * See file 'LICENSE' for full license details. | ||||
|  * Created by ${opt.author} <${opt.email}>, ${month} ${year} | ||||
|  * Created by ${opt.author} <${opt.email}>, ${date_string} | ||||
|  */ | ||||
|  | ||||
| `; | ||||
| @@ -31,7 +36,7 @@ export class CopyrightGenerator { | ||||
|     else { | ||||
|       notice = `${'/*'} | ||||
|  * Copyright (C) ${opt.company || opt.author} - All Rights Reserved | ||||
|  * Created by ${opt.author} <${opt.email}>, ${month} ${year} | ||||
|  * Created by ${opt.author} <${opt.email}>, ${date_string} | ||||
|  */ | ||||
|  | ||||
| `; | ||||
|   | ||||
| @@ -42,9 +42,7 @@ export default class Copyright implements Snippet { | ||||
|  | ||||
|     await modify_json ((json) => { | ||||
|       json.author = `${options.author} <${options.email}>`; | ||||
|       json.license = options.has_license | ||||
|         ? options.license | ||||
|         : 'UNLICENSED'; | ||||
|       json.license = options.has_license ? options.license : 'UNLICENSED'; | ||||
|       return json; | ||||
|     }); | ||||
|  | ||||
| @@ -59,11 +57,14 @@ export default class Copyright implements Snippet { | ||||
|       ); | ||||
|     } | ||||
|  | ||||
|     if (!this._loaded_from_config && await new Confirm ( | ||||
|       { message: 'should those settings be saved for the next run?' } | ||||
|     if ( | ||||
|       !this._loaded_from_config | ||||
|       && (await new Confirm ( | ||||
|         { message: 'should those settings be saved for the next run?' } | ||||
|       ) | ||||
|         .run () | ||||
|         .catch (DialogHandler.catch)) | ||||
|     ) | ||||
|       .run () | ||||
|       .catch (DialogHandler.catch)) | ||||
|       this.save_options_file (); | ||||
|   } | ||||
|  | ||||
| @@ -81,10 +82,9 @@ export default class Copyright implements Snippet { | ||||
|     this._options.software = await new Input ({ message: 'software name' }) | ||||
|       .run () | ||||
|       .catch (DialogHandler.catch); | ||||
|     this._options.has_license = await new Confirm ({ | ||||
|       message: | ||||
|        'would you like to specify a license?' | ||||
|     }) | ||||
|     this._options.has_license = await new Confirm ( | ||||
|       { message: 'would you like to specify a license?' } | ||||
|     ) | ||||
|       .run () | ||||
|       .catch (DialogHandler.catch); | ||||
|     if (this._options.has_license) { | ||||
| @@ -104,9 +104,7 @@ export default class Copyright implements Snippet { | ||||
|     this._options = null; | ||||
|  | ||||
|     if (await fs.pathExists (file_path)) { | ||||
|       const options = JSON.parse ( | ||||
|         await fs.readFile (file_path, 'utf-8') | ||||
|       ); | ||||
|       const options = JSON.parse (await fs.readFile (file_path, 'utf-8')); | ||||
|  | ||||
|       // eslint-disable-next-line no-console | ||||
|       console.log (`author: ${options.author} | ||||
| @@ -135,21 +133,23 @@ license: ${options.license}`); | ||||
|     ); | ||||
|   } | ||||
|  | ||||
|   private fix_file_license ( | ||||
|     data: string, | ||||
|     filename: string | ||||
|   ): string | null { | ||||
|     const regex = /\/\*\s+\*\sCopyright[\s\S]*?\*\/\n{0,2}/gu; | ||||
|   private fix_file_license (data: string, filename: string): string | null { | ||||
|     // eslint-disable-next-line max-len | ||||
|     const regex = /\/\*\s+\*\sCopyright[\s\S]*?(?:Created by.*?, (?<date>[a-z]+ [0-9]+)[\s\S]*?|\s)\*\/\n{0,2}/gu; | ||||
|     const shebang = /^#!.*?\n\n/gu; | ||||
|     const shebang_line = shebang.exec (data); | ||||
|  | ||||
|     if (!(/\.(?:js|ts|mjs)$/u).test (filename) && !regex.test (data)) | ||||
|       return null; | ||||
|     return (shebang_line ? shebang_line[0] : '') | ||||
|      + CopyrightGenerator.get_copyright_notice ( | ||||
|        this._options as CopyrightOptions | ||||
|      ) | ||||
|      + data.replace (regex, '') | ||||
|        .replace (shebang, ''); | ||||
|     const res = regex.exec (data); | ||||
|     return ( | ||||
|       (shebang_line ? shebang_line[0] : '') | ||||
|       + CopyrightGenerator.get_copyright_notice ( | ||||
|         this._options as CopyrightOptions, | ||||
|         res?.groups?.date | ||||
|       ) | ||||
|       + data.replace (regex, '') | ||||
|         .replace (shebang, '') | ||||
|     ); | ||||
|   } | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user