Skip to content

Commit 497a50d

Browse files
authored
Fix AzDev module after redesign generation (#27258)
1 parent e50e8ec commit 497a50d

File tree

13 files changed

+193
-13
lines changed

13 files changed

+193
-13
lines changed

tools/AzDev/Tests/ModelTests/ModuleTests.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using System.IO.Abstractions.TestingHelpers;
22
using AzDev.Models.Inventory;
3+
using AzDev.Services;
34

45
namespace AzDev.Tests;
56

@@ -20,7 +21,7 @@ public void CanCreateFromFileSystem()
2021
)}
2122
});
2223

23-
var module = Module.FromFileSystem(fs, path);
24+
var module = Module.FromFileSystem(fs, new NoopLogger(), path);
2425
Assert.Equal(path, module.Path);
2526
Assert.Equal(moduleName, module.Name);
2627
Assert.Single(module.Projects);
@@ -45,7 +46,7 @@ public void CanRecognizeBothProjectTypes()
4546
)},
4647
});
4748

48-
var module = Module.FromFileSystem(fs, path);
49+
var module = Module.FromFileSystem(fs, new NoopLogger(), path);
4950
Assert.Equal(2, module.Projects.Count());
5051
Assert.Equal(ProjectType.AutoRestBased, module.Projects.ElementAt(0).Type);
5152
Assert.Equal(ProjectType.Other, module.Projects.ElementAt(1).Type);

tools/AzDev/Tests/PSTests/InventoryTests.ps1

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,13 @@ BeforeAll {
55
}
66

77
Describe 'Repo inventory' {
8+
It 'Should get all modules and projects' {
9+
(Get-DevModule).Count | Should -BeGreaterThan 0
10+
(Get-DevProject -Type Wrapper).Count | Should -BeGreaterThan 0
11+
(Get-DevProject -Type SdkBased).Count | Should -BeGreaterThan 0
12+
(Get-DevProject -Type AutoRestBased).Count | Should -BeGreaterThan 0
13+
}
14+
815
It 'Every autorest project should have either a Wrapper or SdkBased project' {
916
(Get-DevModule).Project.Count | Should -BeGreaterThan 0
1017
Get-DevModule | ForEach-Object{

tools/AzDev/src/Cmdlets/DevCmdletBase.cs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,10 +75,19 @@ public void OnImport()
7575
{
7676
var contextProvider = new DefaultContextProvider(Constants.DevContextFilePath);
7777
var codebaseProvider = new DefaultCodebaseProvider(contextProvider);
78+
7879
AzDevModule.SetComponent<IContextProvider>(nameof(IContextProvider), contextProvider);
7980
AzDevModule.SetComponent<ICodebaseProvider>(nameof(ICodebaseProvider), codebaseProvider);
8081
}
8182

83+
protected override void BeginProcessing()
84+
{
85+
base.BeginProcessing();
86+
ILogger logger = new PSCmdletLogger(this);
87+
AzDevModule.GetComponent<IContextProvider>(nameof(IContextProvider)).SetLogger(logger);
88+
AzDevModule.GetComponent<ICodebaseProvider>(nameof(ICodebaseProvider)).SetLogger(logger);
89+
}
90+
8291
protected T SelectFrom<T>(string message, IEnumerable<T> options, bool retryIfInvalid = true)
8392
{
8493
if (options == null)

tools/AzDev/src/Models/Inventory/Codebase.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,14 +24,14 @@ internal class Codebase : IFileSystemBasedModel
2424
public string Path { get; internal set; }
2525
public IEnumerable<Module> Modules { get; internal set; }
2626

27-
internal static Codebase FromFileSystem(IFileSystem fs, string path)
27+
internal static Codebase FromFileSystem(IFileSystem fs, ILogger logger, string path)
2828
{
2929
return new Codebase()
3030
{
3131
Path = path,
3232
Modules = fs.Directory.GetDirectories(path)
3333
.Where(dir => !Conventions.IsExcludedModuleDirectory(dir))
34-
.Select(dir => Module.FromFileSystem(fs, dir))
34+
.Select(dir => Module.FromFileSystem(fs, logger, dir))
3535
.Where(module => module != null)
3636
.ToList()
3737
};

tools/AzDev/src/Models/Inventory/Module.cs

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,15 +33,20 @@ protected Module(IFileSystem fs, string path)
3333
FileSystem = fs;
3434
Path = path;
3535
}
36-
internal Module() {}
36+
internal Module() { }
3737

38-
public static Module FromFileSystem(IFileSystem fs, string path)
38+
public static Module FromFileSystem(IFileSystem fs, ILogger logger, string path)
3939
{
4040
Module m = new Module(fs, path)
4141
{
4242
Name = fs.Path.GetFileName(path),
4343
Projects = fs.Directory.GetDirectories(path)
44-
.Where(dir => !Conventions.IsExcludedProjectDirectory(fs, dir, out _))
44+
.Where(dir =>
45+
{
46+
var exclude = Conventions.IsExcludedProjectDirectory(fs, dir, out var r);
47+
if (exclude) logger.Debug($"Excluding project directory '{dir}' because {r}");
48+
return !exclude;
49+
})
4550
.Select(dir => Project.FromFileSystem(fs, dir))
4651
.ToList()
4752
};

tools/AzDev/src/Services/Conventions.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -107,11 +107,13 @@ internal static bool IsExcludedProjectDirectory(IFileSystem fs, string path, out
107107
return true;
108108
}
109109

110-
if (!TryGetOnlyCsprojPath(fs, path, out var _, out var cannotFindCsproj))
110+
if (!TryGetOnlyCsprojPath(fs, path, out var _, out var cannotFindCsproj)
111+
&& !IsAutorestBasedProject(path, out var notAutorestBased))
111112
{
112-
reason = $"Path does not contain a single .csproj file: {cannotFindCsproj}";
113+
reason = $"Path does not contain a single .csproj file: {cannotFindCsproj} and is not autorest based: {notAutorestBased}";
113114
return true;
114115
}
116+
115117
reason = null;
116118
return false;
117119
}

tools/AzDev/src/Services/DefaultCodebaseProvider.cs

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,34 +12,47 @@
1212
// limitations under the License.
1313
// ----------------------------------------------------------------------------------
1414

15+
using System;
1516
using System.IO.Abstractions;
1617
using AzDev.Models.Inventory;
1718

1819
namespace AzDev.Services
1920
{
2021
internal class DefaultCodebaseProvider : ICodebaseProvider
2122
{
22-
private IContextProvider _contextProvider;
23-
private IFileSystem _fs;
23+
private ILogger _logger = new NoopLogger();
24+
private readonly IContextProvider _contextProvider;
25+
private readonly IFileSystem _fs;
2426
private Codebase _codebase;
2527

2628
public DefaultCodebaseProvider(IContextProvider contextProvider)
2729
: this(contextProvider, new FileSystem()) { }
2830

2931
public DefaultCodebaseProvider(IContextProvider contextProvider, IFileSystem fs)
3032
{
31-
_contextProvider = contextProvider;
33+
_contextProvider = contextProvider ?? throw new ArgumentNullException(nameof(contextProvider));
3234
_fs = fs;
3335
}
3436

37+
public void SetLogger(ILogger logger)
38+
{
39+
_logger = logger ?? throw new ArgumentNullException(nameof(logger));
40+
}
41+
3542
public Codebase GetCodebase()
3643
{
44+
_logger.Verbose("Loading codebase information");
45+
3746
if (_codebase == null)
3847
{
3948
var path = _contextProvider.LoadContext().AzurePowerShellRepositoryRoot;
49+
_logger.Verbose($"Codebase path: {path}");
4050
var src = _fs.Path.Combine(path, FileOrDirNames.Src);
41-
_codebase = _codebase ?? Codebase.FromFileSystem(_fs, src);
51+
_codebase = _codebase ?? Codebase.FromFileSystem(_fs, _logger, src);
4252
}
53+
54+
_logger.Verbose("Codebase loaded successfully");
55+
4356
return _codebase;
4457
}
4558
}

tools/AzDev/src/Services/DefaultContextProvider.cs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
// limitations under the License.
1313
// ----------------------------------------------------------------------------------
1414

15+
using System;
1516
using System.IO.Abstractions;
1617
using System.Text.Json;
1718
using AzDev.Models;
@@ -20,6 +21,7 @@ namespace AzDev.Services
2021
{
2122
internal class DefaultContextProvider : IContextProvider
2223
{
24+
private ILogger _logger;
2325
private readonly string _contextFilePath;
2426
private IFileSystem _fileSystem;
2527
private DevContext _cachedContext;
@@ -35,10 +37,17 @@ public DefaultContextProvider(string contextFilePath, IFileSystem fileSystem)
3537
_cachedContext = null;
3638
}
3739

40+
public void SetLogger(ILogger logger)
41+
{
42+
_logger = logger ?? throw new ArgumentNullException(nameof(logger));
43+
}
44+
3845
public string ContextPath => _contextFilePath;
3946

4047
public DevContext LoadContext()
4148
{
49+
_logger.Verbose($"Loading context from {_contextFilePath}");
50+
4251
if (_cachedContext != null)
4352
{
4453
return _cachedContext;
@@ -52,6 +61,9 @@ public DevContext LoadContext()
5261

5362
string json = _fileSystem.File.ReadAllText(_contextFilePath);
5463
_cachedContext = JsonSerializer.Deserialize<DevContext>(json);
64+
65+
_logger.Verbose($"Context loaded successfully");
66+
5567
return _cachedContext;
5668
}
5769

tools/AzDev/src/Services/ICodebaseProvider.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,5 +19,6 @@ namespace AzDev.Services
1919
internal interface ICodebaseProvider
2020
{
2121
Codebase GetCodebase();
22+
void SetLogger(ILogger logger);
2223
}
2324
}

tools/AzDev/src/Services/IContextProvider.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,5 +21,6 @@ internal interface IContextProvider
2121
string ContextPath { get; }
2222
DevContext LoadContext();
2323
void SaveContext(DevContext context);
24+
void SetLogger(ILogger logger);
2425
}
2526
}

0 commit comments

Comments
 (0)