diff --git a/ElectronNET.CLI/Commands/InitCommand.cs b/ElectronNET.CLI/Commands/InitCommand.cs
index 96f348b..592d608 100644
--- a/ElectronNET.CLI/Commands/InitCommand.cs
+++ b/ElectronNET.CLI/Commands/InitCommand.cs
@@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices;
+using System.Text;
using System.Threading.Tasks;
using System.Xml.Linq;
@@ -69,46 +70,88 @@ namespace ElectronNET.CLI.Commands
Console.WriteLine($"Found your .csproj: {projectFile} - check for existing config or update it.");
- using (var stream = File.Open(projectFile, FileMode.OpenOrCreate, FileAccess.ReadWrite))
- {
- var xmlDocument = XDocument.Load(stream);
+ if (!EditCsProj(projectFile)) return false;
- var projectElement = xmlDocument.Descendants("Project").FirstOrDefault();
- if (projectElement == null || projectElement.Attribute("Sdk")?.Value != "Microsoft.NET.Sdk.Web")
- {
- Console.WriteLine($"Project file is not a compatible type of 'Microsoft.NET.Sdk.Web'. Your project: {projectElement?.Attribute("Sdk")?.Value}");
- return false;
- }
+ // search launchSettings.json
+ Console.WriteLine($"Search your .launchSettings to add our electron debug profile...");
- if (xmlDocument.ToString().Contains($"Content Update=\"{ConfigName}\""))
- {
- Console.WriteLine($"{ConfigName} already in csproj.");
- return false;
- }
+ EditLaunchSettings(currentDirectory);
- Console.WriteLine($"{ConfigName} will be added to csproj.");
-
- string itemGroupXmlString = "" +
- "" +
- "PreserveNewest" +
- "" +
- "";
-
- var newItemGroupForConfig = XElement.Parse(itemGroupXmlString);
- xmlDocument.Root.Add(newItemGroupForConfig);
-
- stream.SetLength(0);
- stream.Position = 0;
-
- xmlDocument.Save(stream);
-
- Console.WriteLine($"{ConfigName} added in csproj - happy electronizing!");
- }
+ Console.WriteLine($"Everything done - happy electronizing!");
return true;
});
}
+ private static void EditLaunchSettings(string currentDirectory)
+ {
+ // super stupid implementation, but because there is no nativ way to parse json
+ // and cli extensions and other nuget packages are buggy
+ // this is should solve the problem for 80% of the users
+ // for the other 20% we might fail...
+ var launchSettingFile = Path.Combine(currentDirectory, "Properties", "launchSettings.json");
+ string launchSettingText = File.ReadAllText(launchSettingFile);
+ if (launchSettingText.Contains("electronize start") == false)
+ {
+ StringBuilder debugProfileBuilder = new StringBuilder();
+ debugProfileBuilder.AppendLine("profiles\": {");
+ debugProfileBuilder.AppendLine("\"Electron.NET App\": {");
+ debugProfileBuilder.AppendLine("\"commandName\": \"Executable\",");
+ debugProfileBuilder.AppendLine("\"executablePath\": \"C:\\\\Program Files\\\\dotnet\\\\dotnet.exe\",");
+ debugProfileBuilder.AppendLine("\"commandLineArgs\": \"electronize start\"");
+ debugProfileBuilder.AppendLine("},");
+
+ launchSettingText = launchSettingText.Replace("profiles\": {", debugProfileBuilder.ToString());
+ File.WriteAllText(launchSettingFile, launchSettingText);
+
+ Console.WriteLine($"Debug profile added!");
+ }
+ else
+ {
+ Console.WriteLine($"Debug profile already existing");
+ }
+ }
+
+ private static bool EditCsProj(string projectFile)
+ {
+ using (var stream = File.Open(projectFile, FileMode.OpenOrCreate, FileAccess.ReadWrite))
+ {
+ var xmlDocument = XDocument.Load(stream);
+
+ var projectElement = xmlDocument.Descendants("Project").FirstOrDefault();
+ if (projectElement == null || projectElement.Attribute("Sdk")?.Value != "Microsoft.NET.Sdk.Web")
+ {
+ Console.WriteLine(
+ $"Project file is not a compatible type of 'Microsoft.NET.Sdk.Web'. Your project: {projectElement?.Attribute("Sdk")?.Value}");
+ return false;
+ }
+
+ if (xmlDocument.ToString().Contains($"Content Update=\"{ConfigName}\""))
+ {
+ Console.WriteLine($"{ConfigName} already in csproj.");
+ return false;
+ }
+
+ Console.WriteLine($"{ConfigName} will be added to csproj.");
+
+ string itemGroupXmlString = "" +
+ "" +
+ "PreserveNewest" +
+ "" +
+ "";
+
+ var newItemGroupForConfig = XElement.Parse(itemGroupXmlString);
+ xmlDocument.Root.Add(newItemGroupForConfig);
+
+ stream.SetLength(0);
+ stream.Position = 0;
+
+ xmlDocument.Save(stream);
+
+ Console.WriteLine($"{ConfigName} added in csproj!");
+ }
+ return true;
+ }
}
}