Skip to content

Commit b14d074

Browse files
Resolved #58 and added support for #65
1 parent f583e90 commit b14d074

File tree

7 files changed

+137
-35
lines changed

7 files changed

+137
-35
lines changed

Maverick.PCF.Builder.Common/ControlManifestHelper.cs

+5
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,11 @@ public ControlManifestDetails GetControlManifestDetails(string controlFolder)
6262
ControlDetails.PreviewImagePath = $"{currentDir}\\{sanitizedPreviewImageRelativePath}";
6363
}
6464

65+
if (xmlReader.GetAttribute("control-type") != null && xmlReader.GetAttribute("control-type") == "virtual")
66+
{
67+
ControlDetails.IsVirtual = true;
68+
}
69+
6570
break;
6671
case "data-set":
6772
ControlDetails.IsDatasetTemplate = true;

Maverick.PCF.Builder.DataObjects/ControlManifestDetails.cs

+2
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ public ControlManifestDetails()
1818
PreviewImagePath = null;
1919
Properties = new List<ControlProperty>();
2020
Features = new List<Feature>();
21+
IsVirtual = false;
2122
}
2223

2324
public string WorkingFolderPath { get; set; }
@@ -27,6 +28,7 @@ public ControlManifestDetails()
2728
public string ControlName { get; set; }
2829
public string ControlDisplayName { get; set; }
2930
public string ControlDescription { get; set; }
31+
public bool IsVirtual { get; set; }
3032
public List<TypeGroup> TypeGroups { get; set; }
3133
public string PreviewImagePath { get; set; }
3234
public string Version { get; set; }

Maverick.PCF.Builder.Helper/Commands.cs

+12
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,18 @@ public static string PcfInit(string controlNamespace, string controlName, string
7575
return $"pac pcf init --namespace {controlNamespace} --name {controlName} --template {controlTemplate.ToLower()}";
7676
}
7777

78+
/// <summary>
79+
/// pac pcf init --namespace controlNamespace --name controlName --template controlTemplate.ToLower() --framework react
80+
/// </summary>
81+
/// <param name="controlNamespace"></param>
82+
/// <param name="controlName"></param>
83+
/// <param name="controlTemplate"></param>
84+
/// <returns></returns>
85+
public static string PcfInitVirtual(string controlNamespace, string controlName, string controlTemplate)
86+
{
87+
return $"pac pcf init --namespace {controlNamespace} --name {controlName} --template {controlTemplate.ToLower()} --framework react";
88+
}
89+
7890
/// <summary>
7991
/// pac solution init --publisher-name publisherName --publisher-prefix customizationPrefix
8092
/// </summary>

Maverick.PCF.Builder/PCFBuilder.cs

+48-6
Original file line numberDiff line numberDiff line change
@@ -320,6 +320,7 @@ private void Routine_NewComponent()
320320
txtControlName.Clear();
321321
txtControlDisplayName.Clear();
322322
txtControlDescription.Clear();
323+
cboxControlType.SelectedIndex = -1;
323324
cboxTemplate.SelectedIndex = -1;
324325
cboxAdditionalPackages.SelectedIndex = -1;
325326
txtComponentVersion.Clear();
@@ -335,6 +336,7 @@ private void Routine_NewComponent()
335336
txtNamespace.Enabled = true;
336337
txtControlDisplayName.Enabled = true;
337338
txtControlDescription.Enabled = true;
339+
cboxControlType.Enabled = true;
338340
cboxTemplate.Enabled = true;
339341
cboxAdditionalPackages.Enabled = true;
340342
txtSolutionName.Enabled = true;
@@ -368,6 +370,7 @@ private void Routine_EditComponent()
368370
{
369371
txtControlName.Enabled = false;
370372
txtNamespace.Enabled = false;
373+
cboxControlType.Enabled = false;
371374
cboxTemplate.Enabled = false;
372375
cboxAdditionalPackages.Enabled = false;
373376
btnCreateComponent.Enabled = false;
@@ -522,9 +525,11 @@ private void IdentifyControlDetails()
522525

523526
ControlDetails = ControlManifest.GetControlManifestDetails(txtWorkingFolder.Text);
524527

525-
_mainPluginLocalWorker = new BackgroundWorker();
526-
_mainPluginLocalWorker.DoWork += IdentifyAdditionalPackage;
527-
_mainPluginLocalWorker.RunWorkerAsync();
528+
//_mainPluginLocalWorker = new BackgroundWorker();
529+
//_mainPluginLocalWorker.DoWork += IdentifyAdditionalPackage;
530+
//_mainPluginLocalWorker.RunWorkerAsync();
531+
532+
IdentifyAdditionalPackage_New();
528533

529534
if (!string.IsNullOrEmpty(ControlDetails.ControlName))
530535
{
@@ -575,6 +580,23 @@ private void IdentifyAdditionalPackage(object worker, DoWorkEventArgs args)
575580
}
576581
}
577582

583+
private void IdentifyAdditionalPackage_New()
584+
{
585+
// Identify additional package installs - for now only check for Fluent UI
586+
var packageName = Enum.AdditionalPackages().FirstOrDefault(p => p.Value == "Fluent UI").Key;
587+
string[] addPkgCommands = new string[] { Commands.Npm.CheckAdditionalPackage(packageName) };
588+
var addPkgOutput = CommandLineHelper.RunCommand(addPkgCommands);
589+
590+
// scrub data
591+
addPkgOutput = addPkgOutput.Substring(addPkgOutput.IndexOf(addPkgCommands[0]) + addPkgCommands[0].Length);
592+
593+
if (addPkgOutput.ToLower().Contains(packageName.ToLower()))
594+
{
595+
cboxAdditionalPackages.SelectedIndex = 1;
596+
ControlDetails.AdditionalPackageIndex = 1;
597+
}
598+
}
599+
578600
private void IdentifySolutionDetails(bool suppressErrors = false)
579601
{
580602
DataverseSolutionDetails = new SolutionDetails();
@@ -714,6 +736,7 @@ private void PopulateControlDetails()
714736
txtControlDescription.Text = ControlDetails.ControlDescription;
715737
txtComponentVersion.Text = ControlDetails.Version;
716738

739+
cboxControlType.SelectedIndex = ControlDetails.IsVirtual ? 1 : 0;
717740
cboxTemplate.SelectedIndex = ControlDetails.IsDatasetTemplate ? 1 : 0;
718741

719742
if (!string.IsNullOrEmpty(ControlDetails.PreviewImagePath))
@@ -1983,14 +2006,24 @@ private void BtnCreateComponent_Click(object sender, EventArgs e)
19832006
}
19842007

19852008
ReloadDetails = true;
1986-
if (string.IsNullOrEmpty(additionalPackage))
2009+
if ((string)cboxControlType.SelectedItem == "Virtual")
19872010
{
1988-
RunCommandLine(cdWorkingDir, pacCommand, npmCommand);
2011+
string pacCommandVirtual = Commands.Pac.PcfInitVirtual(txtNamespace.Text, txtControlName.Text, cboxTemplate.SelectedItem.ToString());
2012+
RunCommandLine(cdWorkingDir, pacCommandVirtual, npmCommand);
2013+
19892014
}
19902015
else
19912016
{
1992-
RunCommandLine(cdWorkingDir, pacCommand, npmCommand, additionalPackage);
2017+
if (string.IsNullOrEmpty(additionalPackage))
2018+
{
2019+
RunCommandLine(cdWorkingDir, pacCommand, npmCommand);
2020+
}
2021+
else
2022+
{
2023+
RunCommandLine(cdWorkingDir, pacCommand, npmCommand, additionalPackage);
2024+
}
19932025
}
2026+
19942027

19952028
// Create VS Code Workspace file
19962029

@@ -2631,6 +2664,15 @@ private void btnManageFeatures_Click(object sender, EventArgs e)
26312664
}
26322665
}
26332666

2667+
private void cboxControlType_SelectedIndexChanged(object sender, EventArgs e)
2668+
{
2669+
if ((string)cboxControlType.SelectedItem == "Virtual")
2670+
{
2671+
cboxAdditionalPackages.SelectedIndex = 1;
2672+
cboxAdditionalPackages.Enabled = false;
2673+
}
2674+
}
2675+
26342676
#endregion
26352677

26362678

Maverick.PCF.Builder/PCFBuilder.designer.cs

+38-9
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)