@@ -65,6 +65,32 @@ impl File {
6565 } )
6666 }
6767
68+ fn get_version ( value : & CargoDependencyValue ) -> anyhow:: Result < SemverVersion > {
69+ match value {
70+ CargoDependencyValue :: Simple ( version) => SemverVersion :: new ( version) . map_err ( |error| {
71+ anyhow ! (
72+ "Unexpected semver {version} found while computing dependency changes: \
73+ {error}",
74+ )
75+ } ) ,
76+ CargoDependencyValue :: Detailed ( DetailedCargoDependency { version, .. } ) => {
77+ SemverVersion :: new ( version) . map_err ( |_| {
78+ anyhow ! (
79+ "Unexpected semver version `{version}` found while computing \
80+ dependency changes"
81+ )
82+ } )
83+ }
84+ CargoDependencyValue :: Git ( GitCargoDependency { git } ) => {
85+ log:: warn!(
86+ "Git dependency `{git}` found, but version change detection for git \
87+ dependencies is not currently supported"
88+ ) ;
89+ SemverVersion :: new ( "0" ) . map_err ( |_| unreachable ! ( "Version 0 should be valid" ) )
90+ }
91+ }
92+ }
93+
6894 fn get_changes_from_current_dependencies (
6995 current_dependencies : & BTreeMap < String , CargoDependencyValue > ,
7096 previous_dependencies : & BTreeMap < String , CargoDependencyValue > ,
@@ -73,53 +99,11 @@ impl File {
7399 result : & mut String ,
74100 ) -> anyhow:: Result < ( ) > {
75101 for ( name, current_value) in current_dependencies {
76- let current_version = match current_value {
77- CargoDependencyValue :: Simple ( version) => {
78- match SemverVersion :: new ( version) {
79- Ok ( value) => value,
80- Err ( error) => return Err ( anyhow ! ( error) . context (
81- "Unexpected semver version found while computing dependency changes" ,
82- ) ) ,
83- }
84- }
85- CargoDependencyValue :: Detailed ( DetailedCargoDependency { version, .. } ) => {
86- match SemverVersion :: new ( version) {
87- Ok ( value) => value,
88- Err ( error) => return Err ( anyhow ! ( error) . context (
89- "Unexpected semver version `{version}` found while computing dependency changes"
90- )
91- )
92- }
93- } ,
94- CargoDependencyValue :: Git ( GitCargoDependency { git } ) => {
95- log:: warn!( "Git dependency `{git}` found, but version change detection for git dependencies is not currently supported" ) ;
96- SemverVersion :: new ( "0" ) . expect ( "`0` should be a valid semver version" )
97- }
98- } ;
102+ let current_version = Self :: get_version ( current_value) ?;
99103 if let Some ( previous_value) = previous_dependencies. get ( name) {
100104 // Handle dependencies in previous and current (filtering for ones with changed
101105 // versions)
102- let previous_version = match previous_value {
103- CargoDependencyValue :: Simple ( version) => match SemverVersion :: new ( version) {
104- Ok ( value) => value,
105- Err ( error) => return Err ( anyhow ! ( error) . context (
106- "Unexpected semver version found while computing dependency changes" ,
107- ) ) ,
108- } ,
109- CargoDependencyValue :: Detailed ( DetailedCargoDependency { version, .. } ) => {
110- match SemverVersion :: new ( version) {
111- Ok ( value) => value,
112- Err ( error) => return Err ( anyhow ! ( error) . context (
113- "Unexpected semver version `{version}` found while computing dependency changes"
114- )
115- )
116- }
117- }
118- CargoDependencyValue :: Git ( GitCargoDependency { git } ) => {
119- log:: warn!( "Git dependency `{git}` found, but version change detection for git dependencies is not currently supported" ) ;
120- SemverVersion :: new ( "0" ) . expect ( "`0` should be a valid semver version" )
121- }
122- } ;
106+ let previous_version = Self :: get_version ( previous_value) ?;
123107
124108 // Housekeeping to make previous keys into a list of only crates removed in the
125109 // current Cargo.toml
@@ -130,42 +114,48 @@ Ok(value) => value,
130114 Some ( Ordering :: Greater ) => {
131115 if let Some ( label_value) = label {
132116 result. push_str ( & format ! (
133- "{change_type} bump {name} {label_value} from {previous_version} to {current_version}\n " ,
117+ "{change_type} bump {name} {label_value} from {previous_version} \
118+ to {current_version}\n ",
134119 ) ) ;
135120 } else {
136121 result. push_str ( & format ! (
137- "{change_type} bump {name} from {previous_version} to {current_version}\n " ,
122+ "{change_type} bump {name} from {previous_version} to \
123+ {current_version}\n ",
138124 ) ) ;
139125 }
140126 }
141127 Some ( Ordering :: Equal ) => { }
142128 Some ( Ordering :: Less ) => {
143129 if let Some ( label_value) = label {
144130 result. push_str ( & format ! (
145- "{change_type} drop {name} {label_value} from {previous_version} to {current_version}\n "
131+ "{change_type} drop {name} {label_value} from {previous_version} to \
132+ {current_version}\n "
146133 ) ) ;
147134 } else {
148135 result. push_str ( & format ! (
149- "{change_type} drop {name} from {previous_version} to {current_version}\n "
150- ) ) ;
136+ "{change_type} drop {name} from {previous_version} to \
137+ {current_version}\n "
138+ ) ) ;
151139 }
152140 }
153141 None => {
154142 if let Some ( label_value) = label {
155143 result. push_str ( & format ! (
156- "{change_type} change {name} {label_value} from {previous_version} to {current_version}\n "
144+ "{change_type} change {name} {label_value} from {previous_version} \
145+ to {current_version}\n "
157146 ) ) ;
158147 } else {
159148 result. push_str ( & format ! (
160- "{change_type} change {name} from {previous_version} to {current_version}\n "
149+ "{change_type} change {name} from {previous_version} to \
150+ {current_version}\n "
161151 ) ) ;
162152 }
163153 }
164154 }
165155 } else {
166156 // Handle added dependencies
167157 if let Some ( label_value) = label {
168- result. push_str ( & format ! ( "✨ add {name} {label_value} {current_version}\n " , ) ) ;
158+ result. push_str ( & format ! ( "✨ add {name} {label_value} {current_version}\n " ) ) ;
169159 } else {
170160 result. push_str ( & format ! ( "✨ add {name} {current_version}\n " , ) ) ;
171161 }
0 commit comments