Semantic versioning for Lua
Go to file
2012-01-15 01:37:20 +01:00
spec small fixes in the way the prereleases are specified and parsed 2012-01-15 01:37:20 +01:00
MIT-LICENSE.txt initial version 2012-01-14 00:08:47 +01:00
README.textile Update README.textile 2012-01-14 03:38:04 +01:00
semver.lua small fixes in the way the prereleases are specified and parsed 2012-01-15 01:37:20 +01:00

h1. semver.lua 

Semantic versioning for Lua.

See http://semver.org/ for details about semantic versioning.

h1. Documentation

<pre class="lua">
local v = require 'semver'

-- accepts integers and numbers
v1 = v(1,0,0)
v2_5_1 = v('2.5.1')

-- major, minor and patch attributes
v2_5_1.major -- 2
v2_5_1.minor -- 5
v2_5_1.patch -- 1

-- also accepts prerelease/build parameters:
a = v(1,0,0,'-alpha')
a.prerelease -- 'alpha'

b = v'0.9.5+no.extensions.22'
b.build -- 'no.extensions.22'

-- comparison & sorting
v'1.2.3' == v(1,2,3) -- true
v'1.2.3' < v(4,5,6)  -- true

-- "pessimistic upgrade" operator: ^
-- a ^ b returns true if it's safe to update from a to b
v'2.0.1' ^ v'2.5.1' -- true - it's safe to upgrade from 2.0.1 to 2.5.1
v'1.0.0' ^ v'2.0.0' -- false - 2.0.0 is not supposed to be backwards-compatible
v'2.5.1' ^ v'2.0.1' -- false - 2.5.1 is more modern than 2.0.1.

-- bumping
v(1,0,0):nextPatch() -- v1.0.1
v(1,2,3):nextMinor() -- v1.3.0 . Notice the patch resets to 0
v(1,2,3):nextMajor() -- v2.0.0 . Minor and patch are reset to 0

</pre>


h1. Installation

Just copy the semver.lua file wherever you want it (for example on a lib/ folder). Then write this in any Lua file where you want to use it. You must assign the require to a global or local variable (I use a local @v@):

<pre>local v = require 'semver'</pre>

Using @v@ allows for the following nice syntax: @v'1.2.3'@.

The @package.path@ variable must be configured so that the folder in which middleclass.lua is copied is available, of course.

Please make sure that you read the license, too (for your convenience it's now included at the beginning of the semver.lua file).

h1. Specs

This project uses "telescope":https://github.com/norman/telescope for its specs. If you want to run the specs, you will have to install telescope first. Then just execute the following from the root inspect folder:

<pre>
tsc -f spec/*
</pre>