@@ -68,6 +68,7 @@ public void BumpAllVersions()
6868 UpdateChangeLog ( ) ;
6969 var releaseNotes = GetReleaseNotes ( ) ;
7070 UpdateOutputModuleManifest ( releaseNotes ) ;
71+ UpdateDependentModules ( ) ;
7172 UpdateRollupModuleManifest ( ) ;
7273 UpdateAssemblyInfo ( ) ;
7374 Console . WriteLine ( "Finished bumping version " + moduleName + "\n " ) ;
@@ -354,7 +355,7 @@ private void UpdateOutputModuleManifest(List<string> releaseNotes)
354355 var outputModuleManifestPath = _fileHelper . OutputModuleManifestPath ;
355356 var projectModuleManifestPath = _fileHelper . ProjectModuleManifestPath ;
356357 var tempModuleManifestPath = Path . Combine ( outputModuleDirectory , moduleName + "-temp.psd1" ) ;
357- File . Copy ( outputModuleManifestPath , tempModuleManifestPath ) ;
358+ File . Copy ( outputModuleManifestPath , tempModuleManifestPath , true ) ;
358359 var script = "$releaseNotes = @();" ;
359360 releaseNotes . ForEach ( l => script += "$releaseNotes += \" " + l + "\" ;" ) ;
360361 script += $ "$env:PSModulePath+=\" ;{ _fileHelper . OutputResourceManagerDirectory } \" ;";
@@ -378,6 +379,34 @@ private void UpdateOutputModuleManifest(List<string> releaseNotes)
378379 File . Delete ( tempModuleManifestPath ) ;
379380 }
380381
382+ /// <summary>
383+ /// Update the ModuleVersion of the bumped module in any dependent module's RequiredModule field.
384+ /// </summary>
385+ private void UpdateDependentModules ( )
386+ {
387+ var moduleName = _fileHelper . ModuleName ;
388+ var projectDirectories = _fileHelper . ProjectDirectories ;
389+ foreach ( var projectDirectory in projectDirectories )
390+ {
391+ var moduleManifestPaths = Directory . GetFiles ( projectDirectory , "*.psd1" , SearchOption . AllDirectories )
392+ . Where ( f => ! f . Contains ( "Netcore" ) &&
393+ ! f . Contains ( "bin" ) &&
394+ ! f . Contains ( "dll-Help" ) &&
395+ ! ModuleFilter . IsAzureStackModule ( f ) )
396+ . ToList ( ) ;
397+ foreach ( var moduleManifestPath in moduleManifestPaths )
398+ {
399+ var file = File . ReadAllLines ( moduleManifestPath ) ;
400+ var pattern = @"ModuleName(\s*)=(\s*)(['\""])" + moduleName + @"(['\""])(\s*);(\s*)ModuleVersion(\s*)=(\s*)(['\""])" + "\\ d+(\\ .\\ d+)+" + @"(['\""])" ;
401+ if ( file . Where ( l => Regex . IsMatch ( l , pattern ) ) . Any ( ) )
402+ {
403+ var updatedFile = file . Select ( l => Regex . Replace ( l , pattern , "ModuleName = '" + moduleName + "'; ModuleVersion = '" + _newVersion + "'" ) ) ;
404+ File . WriteAllLines ( moduleManifestPath , updatedFile ) ;
405+ }
406+ }
407+ }
408+ }
409+
381410 /// <summary>
382411 /// Creates a new header for the upcoming release based on the new version.
383412 /// </summary>
0 commit comments