File tree Expand file tree Collapse file tree 5 files changed +80
-5
lines changed
Expand file tree Collapse file tree 5 files changed +80
-5
lines changed Original file line number Diff line number Diff line change 11[package ]
22name = " semverator"
3- version = " 0.9.1 "
3+ version = " 0.10.0 "
44edition = " 2021"
55license = " Apache-2.0"
66readme = " ../README.md"
@@ -13,7 +13,7 @@ categories = ["command-line-utilities"]
1313[dependencies ]
1414anyhow = " 1.0.97"
1515clap = { version = ' 4.5.34' , features = [' cargo' ] }
16- libsemverator = { path = " ../lib" , version = " 0.9.1 " }
16+ libsemverator = { path = " ../lib" , version = " 0.10.0 " }
1717
1818[lints .rust ]
1919unexpected_cfgs = { level = " allow" , check-cfg = [' cfg(tarpaulin_include)' ] }
Original file line number Diff line number Diff line change 11[package ]
22name = " libsemverator"
3- version = " 0.9.1 "
3+ version = " 0.10.0 "
44edition = " 2021"
55license = " Apache-2.0"
66readme = " ../README.md"
Original file line number Diff line number Diff line change @@ -39,6 +39,46 @@ impl Range {
3939 }
4040 Ok ( Self { raw, set } )
4141 }
42+
43+ pub fn any ( ) -> Self {
44+ Self {
45+ raw : "*" . to_string ( ) ,
46+ set : vec ! [ Constraint :: Any ] ,
47+ }
48+ }
49+
50+ pub fn single ( v : & str ) -> Result < Self > {
51+ let raw = format ! ( "={}" , v) ;
52+ let set = vec ! [ Constraint :: Single (
53+ Semver :: parse( v) . context( "invalid version" ) ?,
54+ ) ] ;
55+ Ok ( Self { raw, set } )
56+ }
57+
58+ pub fn contiguous ( v1 : & str , v2 : & str ) -> Result < Self > {
59+ let raw = format ! ( ">={}<{}" , v1, v2) ;
60+ let set = vec ! [ Constraint :: Contiguous (
61+ Semver :: parse( v1) . context( "invalid version" ) ?,
62+ Semver :: parse( v2) . context( "invalid version" ) ?,
63+ ) ] ;
64+ Ok ( Self { raw, set } )
65+ }
66+
67+ pub fn caret ( v : & str ) -> Result < Self > {
68+ let raw = format ! ( "^{}" , v) ;
69+ let set = vec ! [ Constraint :: parse( & raw) ?] ;
70+ Ok ( Self { raw, set } )
71+ }
72+
73+ pub fn tilde ( v : & str ) -> Result < Self > {
74+ let raw = format ! ( "~{}" , v) ;
75+ let set = vec ! [ Constraint :: parse( & raw) ?] ;
76+ Ok ( Self { raw, set } )
77+ }
78+
79+ pub fn from_semver ( v : & Semver ) -> Result < Self > {
80+ Self :: single ( & v. raw )
81+ }
4282}
4383
4484impl Constraint {
Original file line number Diff line number Diff line change @@ -281,6 +281,41 @@ fn test_display() -> Result<()> {
281281 Ok ( ( ) )
282282}
283283
284+ #[ test]
285+ fn test_constructors ( ) -> Result < ( ) > {
286+ let ra = Range :: parse ( "*" ) ?;
287+ let rb = Range :: any ( ) ;
288+
289+ assert_eq ! ( ra. raw, rb. raw) ;
290+
291+ let rc = Range :: parse ( "=1.2.3" ) ?;
292+ let rd = Range :: single ( "1.2.3" ) ?;
293+
294+ assert_eq ! ( rc. raw, rd. raw) ;
295+
296+ let re = Range :: parse ( ">=1.2.3<2.0.0" ) ?;
297+ let rf = Range :: contiguous ( "1.2.3" , "2.0.0" ) ?;
298+
299+ assert_eq ! ( re. raw, rf. raw) ;
300+
301+ let rg = Range :: parse ( "^1.2.3" ) ?;
302+ let rh = Range :: caret ( "1.2.3" ) ?;
303+
304+ assert_eq ! ( rg. raw, rh. raw) ;
305+
306+ let ri = Range :: parse ( "~1.2.3" ) ?;
307+ let rj = Range :: tilde ( "1.2.3" ) ?;
308+
309+ assert_eq ! ( ri. raw, rj. raw) ;
310+
311+ let sa = Semver :: parse ( "1.2.3" ) ?;
312+ let rk = Range :: from_semver ( & sa) ?;
313+
314+ assert_eq ! ( rd. raw, rk. raw) ;
315+
316+ Ok ( ( ) )
317+ }
318+
284319#[ cfg( feature = "serde" ) ]
285320#[ test]
286321fn test_serde ( ) -> Result < ( ) > {
You can’t perform that action at this time.
0 commit comments