Skip to content

Commit 799882a

Browse files
authored
Merge pull request CommunityToolkit#369 from CommunityToolkit/refactor/component-folder-structure
Organize component folders
2 parents 34cde2c + 4b8cd9a commit 799882a

17 files changed

+36
-46
lines changed

CommunityToolkit.App.Shared/Renderers/ToolkitDocumentationRenderer.xaml.cs

Lines changed: 3 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -162,24 +162,14 @@ private static async Task<string> GetDocumentationFileContents(ToolkitFrontMatte
162162
var isAllExperimentHead = assemblyName.StartsWith("CommunityToolkit.", StringComparison.OrdinalIgnoreCase);
163163
var isProjectTemplateHead = assemblyName.StartsWith("ProjectTemplate");
164164
var isSingleExperimentHead = !isAllExperimentHead && !isProjectTemplateHead;
165-
165+
166166
if (metadata.FilePath is null || string.IsNullOrWhiteSpace(metadata.FilePath))
167167
throw new InvalidOperationException("Missing or malformed path to markdown file. Unable to continue;");
168168

169+
// Normalize the path separators
169170
var path = metadata.FilePath;
170171

171-
if (isSingleExperimentHead || isProjectTemplateHead)
172-
{
173-
var experimentName = assemblyName.Split(new[] { "." }, StringSplitOptions.RemoveEmptyEntries)[0];
174-
175-
// Our assembly has 'ProjectTemplateExperiment.Samples', but our folder is 'ProjectTemplate.Samples'
176-
experimentName = experimentName.Replace("Experiment", "");
177-
178-
path = path.Split(new[] { $"\\{experimentName}.Samples" }, StringSplitOptions.RemoveEmptyEntries)[1];
179-
path = $"{experimentName}.Samples{path}";
180-
}
181-
182-
var fileUri = new Uri($"ms-appx:///SourceAssets/{path}");
172+
var fileUri = new Uri($"ms-appx:///SourceAssets/{(isSingleExperimentHead ? Path.GetFileName(path.Replace('\\', '/')) : path)}");
183173

184174
try
185175
{

CommunityToolkit.App.Shared/Renderers/ToolkitSampleRenderer.xaml.cs

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -190,13 +190,11 @@ private async Task LoadData()
190190

191191
try
192192
{
193-
#if __WASM__
194193
// Workaround for https://github.com/unoplatform/uno/issues/8649
195194
if (fileExtension.Contains(".cs"))
196195
{
197196
fileExtension = fileExtension.Replace(".cs", ".cs.dat");
198197
}
199-
#endif
200198

201199
var finalPath = $"ms-appx:///{filePath}.{fileExtension.Trim('.')}";
202200

@@ -226,7 +224,7 @@ private static string GetRelativePathToFileWithoutExtension(Type type)
226224
if (string.IsNullOrWhiteSpace(assemblyName))
227225
throw new InvalidOperationException();
228226

229-
var isAllExperimentHead = assemblyName.StartsWith("CommunityToolkit.Labs.", StringComparison.OrdinalIgnoreCase);
227+
var isAllExperimentHead = assemblyName.StartsWith("CommunityToolkit.", StringComparison.OrdinalIgnoreCase);
230228
var isProjectTemplateHead = assemblyName.StartsWith("ProjectTemplate");
231229
var isSingleExperimentHead = !isAllExperimentHead && !isProjectTemplateHead;
232230

@@ -247,19 +245,19 @@ private static string GetRelativePathToFileWithoutExtension(Type type)
247245
if (folderPath.Length != 0)
248246
folderPath += "/";
249247

250-
// Component assembly names are formatted as 'ProjectTemplateComponent.Samples'
248+
// Component assembly names are formatted as 'ProjectTemplateExperiment.Samples'
251249
// but the content folder is formatted as 'ProjectTemplate.Samples'
252250
simpleAssemblyName = simpleAssemblyName.Replace("Experiment", "");
253251

254252
if (isSingleExperimentHead || isProjectTemplateHead)
255253
{
256-
return $"SourceAssets/{simpleAssemblyName}/{folderPath}{type.Name}";
254+
return $"SourceAssets/{folderPath}{type.Name}";
257255
}
258256

259257
if (isAllExperimentHead)
260258
{
261259
var sampleName = simpleAssemblyName.Replace(".Samples", "");
262-
return $"SourceAssets/{sampleName}/samples/{simpleAssemblyName}/{folderPath}{type.Name}";
260+
return $"SourceAssets/{sampleName}/samples/{folderPath}{type.Name}";
263261
}
264262

265263
throw new InvalidOperationException("Unable to determine if running in a single or all experiment solution.");

CommunityToolkit.Tooling.SampleGen.Tests/ToolkitSampleMetadataTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -473,7 +473,7 @@ from assembly in AppDomain.CurrentDomain.GetAssemblies()
473473

474474
if (!string.IsNullOrWhiteSpace(markdown))
475475
{
476-
var text = new InMemoryAdditionalText(@"C:\pathtorepo\labs\experiment\samples\experiment.Samples\documentation.md", markdown);
476+
var text = new InMemoryAdditionalText(@"C:\pathtorepo\components\experiment\samples\experiment.Samples\documentation.md", markdown);
477477

478478
driver = driver.AddAdditionalTexts(ImmutableArray.Create<AdditionalText>(text));
479479
}

CommunityToolkit.Tooling.SampleGen/ToolkitSampleMetadataGenerator.Documentation.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@ private ImmutableArray<ToolkitFrontMatter> GatherDocumentFrontMatter(SourceProdu
148148
}
149149

150150
// Get the filepath we need to be able to load the markdown file in sample app.
151-
var filepath = file.Path.Split(new string[] { @"\labs\", "/labs/", @"\template\", "/template/" }, StringSplitOptions.RemoveEmptyEntries).LastOrDefault();
151+
var filepath = file.Path.Split(new string[] { @"\components\", "/components/", @"\template\", "/template/" }, StringSplitOptions.RemoveEmptyEntries).LastOrDefault();
152152

153153
// Look for sample id tags
154154
var matches = MarkdownRegexSampleTag.Matches(content);

GenerateAllSolution.ps1

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -64,9 +64,9 @@ if ($IncludeHeads -ne 'uwp')
6464
[void]$projects.Add(".\common\ProjectHeads\AllComponents\**\*.Wasm.csproj")
6565

6666
# Individual projects
67-
[void]$projects.Add(".\labs\**\src\*.csproj")
68-
[void]$projects.Add(".\labs\**\samples\*.Samples\*.Samples.csproj")
69-
[void]$projects.Add(".\labs\**\tests\*.Tests\*.shproj")
67+
[void]$projects.Add(".\components\**\src\*.csproj")
68+
[void]$projects.Add(".\components\**\samples\*.Samples.csproj")
69+
[void]$projects.Add(".\components\**\tests\*.Tests\*.shproj")
7070

7171
if ($UseDiagnostics.IsPresent)
7272
{

GenerateVSCodeLaunchConfig.ps1

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,12 @@ function CreateVsCodeLaunchConfigJson {
2020
`"/p:UnoSourceGeneratorUseGenerationHost=true`",
2121
`"/p:UnoSourceGeneratorUseGenerationController=false`",
2222
`"/p:UnoRemoteControlPort=443`",
23-
`"--project=`$`{workspaceFolder`}/labs/$projectName/samples/$projectName.Wasm/$projectName.Wasm.csproj`"
23+
`"--project=`$`{workspaceFolder`}/components/$projectName/samples/$projectName.Wasm/$projectName.Wasm.csproj`"
2424
],
2525
`"presentation`": {
2626
`"group`": `"2`"
2727
},
28-
`"cwd`": `"`$`{workspaceFolder`}/labs/$projectName/samples/$projectName.Wasm`"
28+
`"cwd`": `"`$`{workspaceFolder`}/components/$projectName/samples/$projectName.Wasm`"
2929
}";
3030
}
3131

MultiTarget/GenerateAllProjectReferences.ps1

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ Remove-Item -Path $projectPropsOutputDir -Recurse -Force -ErrorAction SilentlyCo
1111
New-Item -ItemType Directory -Force -Path $projectPropsOutputDir -ErrorAction SilentlyContinue | Out-Null;
1212

1313
# Discover projects in provided paths
14-
foreach ($projectPath in Get-ChildItem -Directory -Depth 0 -Path "$PSScriptRoot/../../labs/") {
14+
foreach ($projectPath in Get-ChildItem -Directory -Depth 0 -Path "$PSScriptRoot/../../components/*") {
1515
# Normalize project path
1616
$projectName = $projectPath.Name;
1717

@@ -21,7 +21,7 @@ foreach ($projectPath in Get-ChildItem -Directory -Depth 0 -Path "$PSScriptRoot/
2121
$srcPath = Resolve-Path "$($projectPath.FullName)\src";
2222
$srcProjectPath = Get-ChildItem -File "$srcPath\*.csproj";
2323

24-
$samplePath = Resolve-Path "$($projectPath.FullName)\samples\$projectName.Samples";
24+
$samplePath = Resolve-Path "$($projectPath.FullName)\samples";
2525
$sampleProjectPath = Get-ChildItem -File "$samplePath\*.csproj";
2626

2727
if ($srcProjectPath.Length -eq 0) {

ProjectHeads/AllComponents/Tests.Head.AllComponents.props

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<Import Project="$(RepositoryDirectory)common\CommunityToolkit.Tests.Shared\CommunityToolkit.Tests.Shared.projitems" Label="Unit Testing Helpers" />
44

55
<!-- Visual Studio likes to delete the following line - but it's needed to find the tests -->
6-
<Import Project="$(RepositoryDirectory)\labs\**\*.Tests.projitems" Label="Shared" />
6+
<Import Project="$(RepositoryDirectory)\components\**\*.Tests.projitems" Label="Shared" />
77

88
<!-- Include all base code to be tested -->
99
<Import Project="$(RepositoryDirectory)common\MultiTarget\Generated\*.props" />

ProjectHeads/App.Head.props

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -36,34 +36,36 @@
3636
<!-- See https://github.com/CommunityToolkit/Labs-Windows/issues/142 -->
3737
<ItemGroup Condition="'$(IsAllExperimentHead)' == 'true'">
3838
<!-- These are also included in the Samples props file, but added here to workaround https://github.com/unoplatform/uno/issues/2502 -->
39-
<Content Include="$(RepositoryDirectory)labs\**\samples\*.Samples\**\*.md" Exclude="$(RepositoryDirectory)**\**\samples\*.Samples\obj\**\*.md;$(RepositoryDirectory)**\**\samples\*.Samples\bin\**\*.md;$(RepositoryDirectory)\**\SourceAssets\**\*.md">
39+
<Content Include="$(RepositoryDirectory)components\**\samples\**\*.md" Exclude="$(RepositoryDirectory)**\**\samples\obj\**\*.md;$(RepositoryDirectory)**\**\samples\bin\**\*.md;$(RepositoryDirectory)\**\SourceAssets\**\*.md">
4040
<Link>SourceAssets/%(RecursiveDir)%(FileName)%(Extension)</Link>
4141
</Content>
4242

43-
<Content Include="$(RepositoryDirectory)labs\**\samples\*.Samples\**\*.xaml" Exclude="$(RepositoryDirectory)**\**\samples\*.Samples\obj\**\*.xaml;$(RepositoryDirectory)**\**\samples\*.Samples\bin\**\*.xaml;$(RepositoryDirectory)\**\SourceAssets\**\*.xaml">
43+
<Content Include="$(RepositoryDirectory)components\**\samples\**\*.xaml" Exclude="$(RepositoryDirectory)**\**\samples\obj\**\*.xaml;$(RepositoryDirectory)**\**\samples\bin\**\*.xaml;$(RepositoryDirectory)\**\SourceAssets\**\*.xaml">
4444
<Link>SourceAssets/%(RecursiveDir)%(FileName)%(Extension)</Link>
4545
</Content>
4646

4747
<!-- Link/.dat is a workaround for https://github.com/unoplatform/uno/issues/8649 -->
48-
<Content Include="$(RepositoryDirectory)labs\**\samples\*.Samples\**\*.cs" Exclude="$(RepositoryDirectory)**\**\samples\*.Samples\obj\**\*.cs;$(RepositoryDirectory)**\**\samples\*.Samples\bin\**\*.cs">
49-
<Link Condition="$(IsWasm) == 'true'">SourceAssets/%(RecursiveDir)%(FileName)%(Extension).dat</Link>
48+
<Content Include="$(RepositoryDirectory)components\**\samples\**\*.cs" Exclude="$(RepositoryDirectory)**\**\samples\obj\**\*.cs;$(RepositoryDirectory)**\**\samples\bin\**\*.cs">
49+
<Link>SourceAssets/%(RecursiveDir)%(FileName)%(Extension).dat</Link>
5050
</Content>
5151

5252
<!-- Include markdown files from all samples so the head can access them in the source generator -->
53-
<AdditionalFiles Include="$(RepositoryDirectory)labs\**\samples\*.Samples\**\*.md" Exclude="$(RepositoryDirectory)**\**\samples\*.Samples\**\obj\**\*.md;$(RepositoryDirectory)**\**\samples\*.Samples\**\bin\**\*.md"/>
53+
<AdditionalFiles Include="$(RepositoryDirectory)components\**\samples\**\*.md" Exclude="$(RepositoryDirectory)**\**\samples\**\obj\**\*.md;$(RepositoryDirectory)**\**\samples\**\bin\**\*.md"/>
5454
</ItemGroup>
5555

5656
<!-- See https://github.com/CommunityToolkit/Labs-Windows/issues/142 -->
5757
<ItemGroup Condition="'$(IsSingleExperimentHead)' == 'true' or '$(IsProjectTemplateHead)' == 'true'">
5858
<!-- These are also included in the Samples props file, but added here to workaround https://github.com/unoplatform/uno/issues/2502 -->
59-
<Content Include="$(MSBuildProjectDirectory)\..\..\samples\*.Samples\**\*.md" Exclude="$(MSBuildProjectDirectory)\..\..\samples\*.Samples\obj\**\*.md;$(MSBuildProjectDirectory)\..\..\samples\*.Samples\bin\**\*.md;$(MSBuildProjectDirectory)\..\..\**\SourceAssets\**\*.md" Link="SourceAssets/%(RecursiveDir)%(FileName)%(Extension)"/>
60-
<Content Include="$(MSBuildProjectDirectory)\..\..\samples\*.Samples\**\*.xaml" Exclude="$(MSBuildProjectDirectory)\..\..\samples\*.Samples\obj\**\*.xaml;$(MSBuildProjectDirectory)\..\..\samples\*.Samples\bin\**\*.xaml;$(MSBuildProjectDirectory)\..\..\**\SourceAssets\**\*.xaml" Link="SourceAssets/%(RecursiveDir)%(FileName)%(Extension)"/>
59+
<Content Include="$(MSBuildProjectDirectory)\..\..\samples\**\*.md" Exclude="$(MSBuildProjectDirectory)\..\..\samples\obj\**\*.md;$(MSBuildProjectDirectory)\..\..\samples\bin\**\*.md;$(MSBuildProjectDirectory)\..\..\**\SourceAssets\**\*.md" Link="SourceAssets/%(RecursiveDir)%(FileName)%(Extension)"/>
60+
<Content Include="$(MSBuildProjectDirectory)\..\..\samples\**\*.xaml" Exclude="$(MSBuildProjectDirectory)\..\..\samples\obj\**\*.xaml;$(MSBuildProjectDirectory)\..\..\samples\bin\**\*.xaml;$(MSBuildProjectDirectory)\..\..\**\SourceAssets\**\*.xaml" Link="SourceAssets/%(RecursiveDir)%(FileName)%(Extension)"/>
6161

6262
<!-- Link/.dat is a workaround for https://github.com/unoplatform/uno/issues/8649 -->
63-
<Content Include="$(MSBuildProjectDirectory)\..\..\samples\*.Samples\**\*.cs" Exclude="$(MSBuildProjectDirectory)\..\..\samples\*.Samples\obj\**\*.cs;$(MSBuildProjectDirectory)\..\..\samples\*.Samples\bin\**\*.cs" Link="SourceAssets/%(RecursiveDir)%(FileName)%(Extension).dat" />
63+
<Content Include="$(MSBuildProjectDirectory)\..\..\samples\**\*.cs" Exclude="$(MSBuildProjectDirectory)\..\..\samples\obj\**\*.cs;$(MSBuildProjectDirectory)\..\..\samples\bin\**\*.cs">
64+
<Link>SourceAssets/%(RecursiveDir)%(FileName)%(Extension).dat</Link>
65+
</Content>
6466

6567
<!-- Include markdown files from all samples so the head can access them in the source generator -->
66-
<AdditionalFiles Include="$(MSBuildProjectDirectory)\..\..\samples\*.Samples\**\*.md" Exclude="$(MSBuildProjectDirectory)\..\..\**\obj\**\*.md;$(MSBuildProjectDirectory)\..\..\**\bin\**\*.md"/>
68+
<AdditionalFiles Include="$(MSBuildProjectDirectory)\..\..\samples\*.md" Exclude="$(MSBuildProjectDirectory)\..\..\**\obj\**\*.md;$(MSBuildProjectDirectory)\..\..\**\bin\**\*.md"/>
6769
</ItemGroup>
6870

6971
<PropertyGroup>

ProjectHeads/GenerateSingleSampleHeads.ps1

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ Push-Location $componentPath
5555
dotnet new ct-tooling-heads -n $componentName
5656

5757
# Rename folder from component name (dotnet tooling default) to 'heads'
58-
Rename-Item -Path "$componentPath/$componentName" -NewName $headsFolderName -Force
58+
Rename-Item -Path "$componentName" -NewName $headsFolderName -Force
5959

6060
# Remove template, as just for script
6161
dotnet new --uninstall "$PSScriptRoot/SingleComponent"

0 commit comments

Comments
 (0)