github-release-notes icon indicating copy to clipboard operation
github-release-notes copied to clipboard

customize changelog date format?

Open seiyria opened this issue 7 years ago • 12 comments

Instead of DD/MM/YYYY, I'd like to use YYYY-MM-DD. I don't see an option for that.

seiyria avatar Mar 06 '18 18:03 seiyria

@seiyria you can customize your own templates if you are using a configuration file. Best bet might be using a .grenrc.js file with something like this:

    module.exports = {
      "template": {
        "commit": "- [{{message}}]({{url}}) - @{{author}}",
        "issue": "- {{labels}} {{name}} [{{text}}]({{url}})",
        "label": "[**{{label}}**]",
        "noLabel": "closed",
        "group": "\n#### {{heading}}\n",
        "changelogTitle": "# Changelog\n\n",
        "release": function (placeholders) {
          // Here you either set a new date with the desired format based on `placeholders.date`, ie:
          // new Date(placeholders.date).toLocaleDateString("sv-SE");
          // Or you just placeholders.replace(/\./,'-')
          return `## ${placeholders.release}} (${placeholders.date})\n{{body}}`
        },
        "releaseSeparator": "\n---\n\n"
      }
    }

phun-ky avatar Mar 07 '18 19:03 phun-ky

Ah. I see. Thanks. I was hoping there's be a way to do it from a yml config file instead (just to keep all of my configs in the same format).

On Wed, Mar 7, 2018, 13:26 Alexander Vassbotn Røyne-Helgesen < [email protected]> wrote:

@seiyria https://github.com/seiyria you can customize your own templates if you are using a configuration file. Best bet might be using a .grenrc.js file with something like this:

module.exports = {
  "template": {
    "commit": "- [{{message}}]({{url}}) - @{{author}}",
    "issue": "- {{labels}} {{name}} [{{text}}]({{url}})",
    "label": "[**{{label}}**]",
    "noLabel": "closed",
    "group": "\n#### {{heading}}\n",
    "changelogTitle": "# Changelog\n\n",
    "release": function (placeholders) {
      // Here you either set a new date with the desired format based on `placeholders.date`, ie:
      // new Date().toLocaleDateString("sv-SE");
      // Or you just placeholders.replace(/\./,'-')
      return `## ${placeholders.release}} (${placeholders.date})\n{{body}}`
    },
    "releaseSeparator": "\n---\n\n"
  }
}

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/github-tools/github-release-notes/issues/147#issuecomment-371254441, or mute the thread https://github.com/notifications/unsubscribe-auth/AAum2TmjyQ-QkO1cgGu2uy7Nfnz9Axqxks5tcDQFgaJpZM4SfKqe .

seiyria avatar Mar 07 '18 19:03 seiyria

@seiyria perhaps you are looking for a feature to set the desired date format via options?

Something like this?

{
  "template": {
    "locale": "sv-SE",
    ...
  }
}

phun-ky avatar Mar 07 '18 19:03 phun-ky

Hmm. I'm not sure about setting the locale. In all honesty it'd be nice to use a library like moment.js and just support their date parsing formats, so you could pass in mm/dd/yyyy or yyyy-mm-dd or whatever you wanted. If you wanted to add seconds for the timestamp for example.

seiyria avatar Mar 07 '18 19:03 seiyria

You rarely want to set the date format to anything other than the locale for the application, so why would you? What is the use case for this? You can do what you want, providing you use the correct locale:

new Date(1520452614000).toLocaleDateString('sv-SE')
// Produces 2018-03-07

phun-ky avatar Mar 07 '18 20:03 phun-ky

But, regardless, I support a feature to specify the date format, either by locale, or template strings

phun-ky avatar Mar 07 '18 20:03 phun-ky

Well, I stated my use case: changing the format of the date. I had no idea that sv-SE formatted dates like that and that's not the first thing I'd think of when trying to format a date. However, if that is how it would be configured then that's fine.

On Wed, Mar 7, 2018, 14:00 Alexander Vassbotn Røyne-Helgesen < [email protected]> wrote:

You rarely want to set the date format to anything other than the locale for the application, so why would you? What is the use case for this? You can do what you want, providing you use the correct locale:

new Date(1520452614000).toLocaleDateString('sv-SE')// Produces 2018-03-07

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/github-tools/github-release-notes/issues/147#issuecomment-371265491, or mute the thread https://github.com/notifications/unsubscribe-auth/AAum2V_UkTuybtwueSqDtlGbtoCE5IyWks5tcDxwgaJpZM4SfKqe .

seiyria avatar Mar 07 '18 20:03 seiyria

Yeah, you can use moment.js in that configuration file :)

phun-ky avatar Mar 08 '18 08:03 phun-ky

Right, but I'd have to change formats. I'd prefer an option to set instead of changing my config file to have code.

On Thu, Mar 8, 2018, 02:53 Alexander Vassbotn Røyne-Helgesen < [email protected]> wrote:

Yeah, you can use moment.js in that configuration file :=

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/github-tools/github-release-notes/issues/147#issuecomment-371421476, or mute the thread https://github.com/notifications/unsubscribe-auth/AAum2aEvNzHG6FTEGJP9VRnGqxvL8VAfks5tcPFBgaJpZM4SfKqe .

seiyria avatar Mar 08 '18 13:03 seiyria

Had to play around a little, but got this working with following template. There were a few pieces of @phun-ky code that needed tweaked

module.exports = {
    // NOTE: check if author is present as might be returned as null.
    commit: ({ message, url, author, name }) => `- [${message}](${url}) - ${author ? `@${author}` : name}`,
    issue: '- {{labels}} {{name}} [{{text}}]({{url}})',
    label: '[**{{label}}**]',
    noLabel: 'closed',
    group: '\n#### {{heading}}\n',
    changelogTitle: '# Changelog\n\n',
    template: {
      release: function (placeholders,body) {
        var fDate = new Date(placeholders.date).toLocaleDateString("sv-SE");
        return `## ${placeholders.release} ${fDate}\n${placeholders.body}`
     },
      releaseSeparator: '\n- - - -\n\n'
   }
};

harvash avatar Feb 11 '20 17:02 harvash

Honestly, it seems that there should be at least a basic option to use either the locale date or ISO 8601 date, which is the standard.

cjbarth avatar Jan 07 '21 16:01 cjbarth

@phun-ky I'm interested in adding support for locales and date formatting using the Intl.DateTimeFormat library. Do you have guidance on how you'd like to see that added? It feels like it would be an option, but the way options are set up in this tool, it seems a more natural fit would be a template. In either case, it also feels like it wouldn't be a good fit for _utils.js because options would have to be passed in.

cjbarth avatar Jan 09 '21 18:01 cjbarth