package funkin.util;

import thx.semver.Version;
import thx.semver.VersionRule;

/**
 * Remember, increment the patch version (1.0.x) if you make a bugfix,
 * increment the minor version (1.x.0) if you make a new feature (but previous content is still compatible),
 * and increment the major version (x.0.0) if you make a breaking change (e.g. new API or reorganized file format).
 */
class VersionUtil
{
	/**
	 * Checks that a given verison number satisisfies a given version rule.
	 * Version rule can be complex, e.g. "1.0.x" or ">=1.0.0,<1.1.0", or anything NPM supports.
	 */
	public static function validateVersion(version:String, versionRule:String):Bool
	{
		try
		{
			var v:Version = version; // Perform a cast.
			var vr:VersionRule = versionRule; // Perform a cast.
			return v.satisfies(vr);
		}
		catch (e)
		{
			trace('[VERSIONUTIL] Invalid semantic version: ${version}');
			return false;
		}
	}
}