Skip to content

Commit 301c0ff

Browse files
authored
Merge pull request #249 from crystal-lang/rework-and-fix-natural-sort
Implements pre-releases
2 parents d0fa97c + ccd53b5 commit 301c0ff

File tree

17 files changed

+478
-118
lines changed

17 files changed

+478
-118
lines changed

CHANGELOG.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,15 @@
22

33
## UNRELEASED
44

5+
Features:
6+
- Experimental support for prereleases. Add a letter to a version number to
7+
declare a pre-release. For example `1.2.3.alpha` or `1.0.0-rc1`.
8+
59
Fixes:
10+
- Approximate operator used to match invalid version numbers (e.g. `~> 0.1.0`
11+
wrongly matched `0.10.0`).
12+
- Unbalanced version numbers, such as `1.0.0` and `1.0.0.1` are now correctly
13+
ordered and compared as `1.0.0.1 > 1.0.0`.
614
- `install -t` isn't supported on macOS.
715

816
## v0.8.1 - 2018-06-17

SPEC.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,8 +79,9 @@ The version number of the library (String, required).
7979

8080
- It must contain digits.
8181
- It may contain dots and dashes but not consecutive ones.
82+
- It may contain a letter to make it a 'prerelease'.
8283

83-
Examples: `1.2.3`, `2.0.0-rc1` or `2016.09`.
84+
Examples: `1.2.3`, `2.0.0.1`, `1.0.0.alpha` `2.0.0-rc1` or `2016.09`.
8485

8586
While Shards doesn't enforce it, following a rational versioning scheme like
8687
[Semantic Versioning](http://semver.org/) or [Calendar Versioning](http://calver.org/)

src/cli.cr

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,6 @@ module Shards
1919
Options:
2020
HELP
2121
puts opts
22-
# info <package>
23-
# search <query>
24-
# update [package package ...]
2522
exit
2623
end
2724

@@ -42,9 +39,6 @@ module Shards
4239
build(path, args[1..-1])
4340
when "check"
4441
Commands::Check.run(path)
45-
#when "info"
46-
# display_help_and_exit(opts) unless args[1]?
47-
# Commands::Info.run(args[1])
4842
when "init"
4943
Commands::Init.run(path)
5044
when "install"
@@ -53,12 +47,8 @@ module Shards
5347
Commands::List.run(path, tree: args.includes?("--tree"))
5448
when "prune"
5549
Commands::Prune.run(path)
56-
# when "search"
57-
# display_help_and_exit(opts) unless args[1]?
58-
# Commands::Search.run(path, args[1])
5950
when "update"
6051
Commands::Update.run(path)
61-
# Commands.update(path, *args[1..-1])
6252
when "version"
6353
Commands::Version.run(args[1]? || path)
6454
else

src/commands/check.cr

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,9 @@
1-
require "../helpers/versions"
21
require "./command"
2+
require "../versions"
33

44
module Shards
55
module Commands
66
class Check < Command
7-
include Helpers::Versions
8-
97
def run(*args)
108
if has_dependencies?
119
locks # ensures that lockfile exists
@@ -45,7 +43,7 @@ module Shards
4543
end
4644

4745
if version = lock["version"]?
48-
if resolve_requirement([version], dependency.version).empty?
46+
if Versions.resolve([version], dependency.version).empty?
4947
Shards.logger.debug { "#{dependency.name}: lock conflict" }
5048
return false
5149
else
@@ -61,7 +59,7 @@ module Shards
6159
# end
6260
#end
6361

64-
if resolve_requirement([spec.version], dependency.version).empty?
62+
if Versions.resolve([spec.version], dependency.version).empty?
6563
Shards.logger.debug { "#{dependency.name}: version mismatch" }
6664
return false
6765
end

src/commands/list.cr

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
require "../helpers/versions"
21
require "./command"
32

43
module Shards

src/commands/version.cr

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
require "../helpers/versions"
21
require "./command"
32

43
module Shards

src/config.cr

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@ module Shards
55
DEFAULT_COMMAND = "install"
66
DEFAULT_VERSION = "0"
77

8+
VERSION_REFERENCE = /^v?\d+[-.][-.a-zA-Z\d]+$/
9+
VERSION_TAG = /^v(\d+[-.][-.a-zA-Z\d]+)$/
10+
811
def self.cache_path
912
@@cache_path ||= find_or_create_cache_path
1013
end

src/helpers/natural_sort.cr

Lines changed: 0 additions & 38 deletions
This file was deleted.

src/helpers/versions.cr

Lines changed: 0 additions & 46 deletions
This file was deleted.

src/package.cr

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,9 @@
11
require "file_utils"
22
require "./resolvers/*"
3-
require "./helpers/versions"
3+
require "./versions"
44

55
module Shards
66
class Package
7-
include Helpers::Versions
8-
97
getter requirements : Array(String)
108
@resolver : Resolver?
119
@available_versions : Array(String)?
@@ -43,7 +41,7 @@ module Shards
4341
end
4442

4543
def matching_versions
46-
resolve_versions(available_versions, requirements)
44+
Versions.resolve(available_versions, requirements)
4745
end
4846

4947
def spec

0 commit comments

Comments
 (0)