@@ -183,8 +183,8 @@ exports.handler = async (yargv) => {
183183 entry => entry && ! orderedSelections . includes ( entry ) && vlm . minimatch ( entry . name , glob ) ) ) ) ;
184184 selections = orderedSelections ;
185185 }
186- if ( ! selections . length ) {
187- vlm . warn ( "Assembly selection empty, exiting" ) ;
186+ if ( ! selections . length && ! yargv . versioning ) {
187+ vlm . warn ( "Assembly selection empty and no versioning requested , exiting" ) ;
188188 return {
189189 selectedAssemblies : selections . length , successfulAssemblies : 0 , failedAssemblies : 0 ,
190190 success : true ,
@@ -237,22 +237,29 @@ exports.handler = async (yargv) => {
237237 vlm . info ( `${ assemblyErrors || "No" } errors found during assembly` ) ;
238238 }
239239
240+ let oldVersion , newVersion ;
240241 if ( ! yargv . versioning ) {
241242 vlm . info ( `${ vlm . theme . argument ( "--no-versioning" ) } requested:` ,
242243 `no version update, no git commit, no git tag, no ${ vlm . theme . path ( "package.json" )
243244 } finalizer copying`) ;
244245 } else {
245- if ( assemblyErrors ) throw new Error ( "Versioning requested and errors found during assembly" ) ;
246- vlm . info ( "Updating version, making git commit, creating a lerna git tag and" ,
247- `updating target ${ vlm . theme . path ( "package.json" ) } 's` ) ;
246+ if ( assemblyErrors ) throw new Error ( "Errors found during assembly when trying to bump version" ) ;
247+ vlm . info ( "Updating version, making git commit, creating a lerna git tag and/or" ,
248+ `updating assembly target ${ vlm . theme . path ( "package.json" ) } 's` ) ;
249+ let lernaConfig = await vlm . tryReadFile ( "lerna.json" ) ;
250+ oldVersion = lernaConfig && JSON . parse ( lernaConfig ) . version ;
248251 await vlm . delegate ( [
249252 "lerna version" , {
250253 "conventional-commits" : true , amend : ( yargv . versioning === "amend" ) , push : false , yes : true ,
251- "force-publish" : selections . map ( ( { name } ) => name ) . join ( "," ) ,
254+ ...( ! selections . length ? { } : {
255+ "force-publish" : selections . map ( ( { name } ) => name ) . join ( "," ) ,
256+ } ) ,
252257 } ,
253258 ] ) ;
259+ lernaConfig = await vlm . tryReadFile ( "lerna.json" ) ;
260+ newVersion = lernaConfig && JSON . parse ( lernaConfig ) . version ;
254261 if ( ! yargv . assemble && ! yargv . overwrite ) {
255- vlm . info ( `Skipping ${ vlm . theme . path ( "package.json" ) } version updates` , "as" ,
262+ vlm . info ( `Skipping assembly target ${ vlm . theme . path ( "package.json" ) } version updates` , "as" ,
256263 vlm . theme . argument ( ! yargv . assemble ? "--no-assemble" : "--no-overwrite" ) ,
257264 "was specified" ) ;
258265 } else {
@@ -309,6 +316,8 @@ exports.handler = async (yargv) => {
309316 } ] ,
310317 success : false ,
311318 } ;
319+ if ( oldVersion ) ret . oldVersion = oldVersion ;
320+ if ( newVersion ) ret . version = newVersion ;
312321 ret . assemblyBreakdown . push ( ...selections . map (
313322 ( { name, packageConfig, packageJSONPath, failure } ) => {
314323 const newConfig = JSON . parse ( vlm . shell . head ( { "-n" : 1000000 } , packageJSONPath ) ) ;
@@ -330,7 +339,7 @@ exports.handler = async (yargv) => {
330339 ret . success = true ;
331340 // TODO(iridian): This is less than ideal way to determine the released version. We should be
332341 // able to get it from lerna directly somehow.
333- ret . version = ret . assemblyBreakdown [ 2 ] . version ;
342+ if ( ! ret . version ) ret . version = ret . assemblyBreakdown [ 2 ] . version ;
334343 vlm . info ( vlm . theme . green ( `Successfully assembled all packages` ) , "out of" ,
335344 ret . selectedAssemblies , "selected packages" ) ;
336345 } else if ( ! ret . successfulAssemblies ) {
0 commit comments