Show More
Commit Commit message Age Author Refs
r25:8e3a110fd54f
Updated deps and removed private registry
0
r24:4deb7b0e7c8a
Removed artifacts
0
r23:b769a46db24c
Registries apparently dislike relative paths in package.json
0
r22:82a762ce9b36
Removed dist folder
0
r21:8aba78428eb8
Yet another registry fix
0
r20:f5248daf0f55
Making things simpler
0
r19:157cddeeaae9
Making things simpler
0
r18:32b0d6ccd3ce
registry fix
0
r17:56f60456fa51
Fixed issue with package incrementing not working
0
r16:68aa5d2fb526
Updated gitignore
0
< 1 2 3 >

chronver

The chronological versioner.

Install

$ npm i chronver

Usage

Node.js

import chronver from "chronver";

new chronver({ increment: "change", version: "2030.04.03" }).version;
// ^ Returns 2030.04.03.1

new chronver({ increment: "year", version: "2030.04.03" }).version;
// ^ Returns 2031.04.03

new chronver({ increment: "month", version: "2030.04.03" }).version;
// ^ Returns 2030.05.03

new chronver({ increment: "day", version: "2030.04.03" }).version;
// ^ Returns 2030.04.04

new chronver({ coerce: "2030.4.3" }).version;
// ^ Returns 2030.04.03

new chronver().version;
// ^ Returns the current date in ChronVer format
// Here is how a full response looks
ChronVer {
  change: 0,
  day: 3,
  month: 4,
  raw: "2030.04.03",
  version: "2030.04.03",
  year: 2030
}

package.json:

{
  "scripts": {
    "increment": "chronver --increment package"
  }
}

This allows you to run npm run increment and have your package.json version incremented to ChronVer's spec. However if you want to have this happen automatically when committing to a repo, employ husky like so:

{
  "husky": {
    "hooks": {
      "pre-commit": "npm run increment && git add -A :/"
    }
  }
}

API

new chronver({ coerce?, increment?, parse?, version? })

ChronVer must be instantiated with the new keyword.

coerce

Type: string (optional)

  • Given a string that represents a date, coerce will attempt to format it into a ChronVer object.
  • If supplied value is blank (""), a ChronVer object representing today's date will be returned.

increment

Type: string (optional)

  • Intended for use with the version parameter.
  • Available options:
  • change: increments supplied version...version by one.
  • day: increments supplied version year by one.
  • month: increments supplied version year by one.
  • year: increments supplied version year by one.
  • If supplied value is blank (""):
  • If version parameter is not supplied along with an increment option:
  • If supplied value is in the past:
  • A ChronVer object representing today's date will be returned.

parse

Type: string | CVType (optional)

  • Given a string that represents a date (or a ChronVer object), parse will test the validity of it and return a formatted ChronVer object.
  • If supplied value is blank (""), a ChronVer object representing today's date will be returned.

version

  • When used alone, behaves like parse.

CLI

       __
      / /
 ____/ /  _______  _____  __________
/ __/ _ \/ __/ _ \/ _ | |/ / -_/ __/
\__/_//_/_/  \___/_//_|___/\__/_/

A JavaScript implementation of the https://chronver.org specification
Copyright © netop://ウエハ (Paul Anthony Webb)

Usage: chronver [options] <version>
Prints valid ChronVer versions

Options:
-c --coerce
        Coerce a string into ChronVer if possible, silently fail otherwise.

-? -h --help
        Show this help message.

-i --inc --increment [<level>]
        Increment a version by the specified level. Level can be one of: year,
        month, day, or change. Default level is "change".

        Only one version may be specified.

        The version returned will always default to the present. However,
        supplied versions with a future date will remain in the future.

        ex. Passing "1970.04.03 -i month" to ChronVer will return the present
        date but passing "3027.04.03 -i month" will return "3027.05.03".

--init --initialize
        Creates a ChronVer string, defaulting to the present.

ChronVer exits upon failure.



Examples:
$ chronver --initialize
$ chronver --increment month 2030.03.03
$ chronver --increment package

Tests

You will need to first download this repo, cd into it, and npm i before proceeding further.

# Run all tests, sequentially
$ npm test

# Test dependencies for latest versions
$ npm run test:dependencies

# Lint "bin" and "lib" directories
$ npm run test:typescript

# Run this module through its paces
# PLEASE run this so I can feel my time writing and troubleshooting these tests were worth it
$ npm run test:assert

License

MIT © netop://ウエハ