@@ -68,6 +68,7 @@ public void BumpAllVersions()
68
68
UpdateChangeLog ( ) ;
69
69
var releaseNotes = GetReleaseNotes ( ) ;
70
70
UpdateOutputModuleManifest ( releaseNotes ) ;
71
+ UpdateDependentModules ( ) ;
71
72
UpdateRollupModuleManifest ( ) ;
72
73
UpdateAssemblyInfo ( ) ;
73
74
Console . WriteLine ( "Finished bumping version " + moduleName + "\n " ) ;
@@ -354,7 +355,7 @@ private void UpdateOutputModuleManifest(List<string> releaseNotes)
354
355
var outputModuleManifestPath = _fileHelper . OutputModuleManifestPath ;
355
356
var projectModuleManifestPath = _fileHelper . ProjectModuleManifestPath ;
356
357
var tempModuleManifestPath = Path . Combine ( outputModuleDirectory , moduleName + "-temp.psd1" ) ;
357
- File . Copy ( outputModuleManifestPath , tempModuleManifestPath ) ;
358
+ File . Copy ( outputModuleManifestPath , tempModuleManifestPath , true ) ;
358
359
var script = "$releaseNotes = @();" ;
359
360
releaseNotes . ForEach ( l => script += "$releaseNotes += \" " + l + "\" ;" ) ;
360
361
script += $ "$env:PSModulePath+=\" ;{ _fileHelper . OutputResourceManagerDirectory } \" ;";
@@ -378,6 +379,34 @@ private void UpdateOutputModuleManifest(List<string> releaseNotes)
378
379
File . Delete ( tempModuleManifestPath ) ;
379
380
}
380
381
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
+
381
410
/// <summary>
382
411
/// Creates a new header for the upcoming release based on the new version.
383
412
/// </summary>
0 commit comments