semver.java icon indicating copy to clipboard operation
semver.java copied to clipboard

Support for '^' is not working

Open RuedigerMoeller opened this issue 8 years ago • 3 comments

Hi, I ran into this issue .. are you planning to support caret ? Semver.create("^1.2.3") java.lang.IllegalArgumentException: found: '^', expected: '0-9+, =, <, <=, >, >= or ~' at com.github.jknack.semver.SemverParser.error(SemverParser.java:189) at com.github.jknack.semver.SemverParser.error(SemverParser.java:184) at com.github.jknack.semver.SemverParser.digits(SemverParser.java:202) at com.github.jknack.semver.SemverParser.versionNumber(SemverParser.java:172) at com.github.jknack.semver.SemverParser.version(SemverParser.java:137) at com.github.jknack.semver.SemverParser.rangeOrVersion(SemverParser.java:105) at com.github.jknack.semver.SemverParser.expression(SemverParser.java:88) at com.github.jknack.semver.SemverParser.parse(SemverParser.java:55) at com.github.jknack.semver.Semver.create(Semver.java:176)

RuedigerMoeller avatar Aug 25 '17 13:08 RuedigerMoeller

workaround (slowish ;) )

        if ( spec.startsWith("^") ) {
            String oldspec = spec;
            String rawversion = oldspec.substring(1);
            String[] split = rawversion.split("\\.");
            int major = Integer.parseInt(split[0]);
            spec = ">="+ rawversion +" < "+(major+1)+".0.0";
            System.out.println("oldspec: "+oldspec+" => "+spec);
        }

Does not work for complex queries (caret can occur inside expressions)

RuedigerMoeller avatar Aug 25 '17 13:08 RuedigerMoeller

another one: System.out.println(Semver.create(">=15.0.0 <16.0.0").matches("16.0.0-beta.5")+" should be false");

RuedigerMoeller avatar Aug 25 '17 14:08 RuedigerMoeller

Try this library, it seems to be more full featured: https://github.com/vdurmont/semver4j

loganvolkers avatar Sep 14 '18 18:09 loganvolkers