mirror of
https://github.com/sourcegit-scm/sourcegit.git
synced 2024-12-24 20:57:19 -08:00
refactor: using custom PATH
instead of reading it from zsh
(#581)
* run `echo $PATH > ~/Library/Application\ Support/SourceGit/PATH` to generate to custom PATH file for SourceGit
This commit is contained in:
parent
188bf02349
commit
67b6a6d9d5
4 changed files with 9 additions and 25 deletions
|
@ -81,6 +81,7 @@ For **macOS** users:
|
||||||
* Make sure your mac trusts all software from anywhere. For more information, search `spctl --master-disable`.
|
* Make sure your mac trusts all software from anywhere. For more information, search `spctl --master-disable`.
|
||||||
* Make sure [git-credential-manager](https://github.com/git-ecosystem/git-credential-manager/releases) is installed on your mac.
|
* Make sure [git-credential-manager](https://github.com/git-ecosystem/git-credential-manager/releases) is installed on your mac.
|
||||||
* You may need to run `sudo xattr -cr /Applications/SourceGit.app` to make sure the software works.
|
* You may need to run `sudo xattr -cr /Applications/SourceGit.app` to make sure the software works.
|
||||||
|
* You man need to run `echo $PATH > ~/Library/Application\ Support/SourceGit/PATH` to introduce `PATH` env to SourceGit.
|
||||||
|
|
||||||
For **Linux** users:
|
For **Linux** users:
|
||||||
|
|
||||||
|
|
|
@ -195,6 +195,10 @@ namespace SourceGit.Commands
|
||||||
if (OperatingSystem.IsLinux())
|
if (OperatingSystem.IsLinux())
|
||||||
start.Environment.Add("LANG", "en_US.UTF-8");
|
start.Environment.Add("LANG", "en_US.UTF-8");
|
||||||
|
|
||||||
|
// Fix macOS `PATH` env
|
||||||
|
if (OperatingSystem.IsMacOS() && !string.IsNullOrEmpty(Native.OS.CustomPathEnv))
|
||||||
|
start.Environment.Add("PATH", Native.OS.CustomPathEnv);
|
||||||
|
|
||||||
// Force using this app as git editor.
|
// Force using this app as git editor.
|
||||||
switch (Editor)
|
switch (Editor)
|
||||||
{
|
{
|
||||||
|
|
|
@ -3,7 +3,6 @@ using System.Collections.Generic;
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Runtime.Versioning;
|
using System.Runtime.Versioning;
|
||||||
using System.Text;
|
|
||||||
|
|
||||||
using Avalonia;
|
using Avalonia;
|
||||||
|
|
||||||
|
@ -19,30 +18,9 @@ namespace SourceGit.Native
|
||||||
DisableDefaultApplicationMenuItems = true,
|
DisableDefaultApplicationMenuItems = true,
|
||||||
});
|
});
|
||||||
|
|
||||||
{
|
var customPathFile = Path.Combine(OS.DataDir, "PATH");
|
||||||
var startInfo = new ProcessStartInfo();
|
if (File.Exists(customPathFile))
|
||||||
startInfo.FileName = "zsh";
|
OS.CustomPathEnv = File.ReadAllText(customPathFile).Trim();
|
||||||
startInfo.Arguments = "--login -c \"echo $PATH\"";
|
|
||||||
startInfo.UseShellExecute = false;
|
|
||||||
startInfo.CreateNoWindow = true;
|
|
||||||
startInfo.RedirectStandardOutput = true;
|
|
||||||
startInfo.StandardOutputEncoding = Encoding.UTF8;
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
var proc = new Process() { StartInfo = startInfo };
|
|
||||||
proc.Start();
|
|
||||||
var pathData = proc.StandardOutput.ReadToEnd();
|
|
||||||
proc.WaitForExit();
|
|
||||||
if (proc.ExitCode == 0)
|
|
||||||
Environment.SetEnvironmentVariable("PATH", pathData);
|
|
||||||
proc.Close();
|
|
||||||
}
|
|
||||||
catch
|
|
||||||
{
|
|
||||||
// Ignore error.
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public string FindGitExecutable()
|
public string FindGitExecutable()
|
||||||
|
|
|
@ -26,6 +26,7 @@ namespace SourceGit.Native
|
||||||
public static string GitExecutable { get; set; } = string.Empty;
|
public static string GitExecutable { get; set; } = string.Empty;
|
||||||
public static string ShellOrTerminal { get; set; } = string.Empty;
|
public static string ShellOrTerminal { get; set; } = string.Empty;
|
||||||
public static List<Models.ExternalTool> ExternalTools { get; set; } = [];
|
public static List<Models.ExternalTool> ExternalTools { get; set; } = [];
|
||||||
|
public static string CustomPathEnv { get; set; } = string.Empty;
|
||||||
|
|
||||||
static OS()
|
static OS()
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue