mirror of
https://github.com/nicoverbruggen/phpmon.git
synced 2026-04-03 01:50:09 +02:00
✨ Generate Fish-friendly scripts (#264)
This commit is contained in:
@@ -3492,7 +3492,7 @@
|
|||||||
CODE_SIGN_IDENTITY = "Apple Development";
|
CODE_SIGN_IDENTITY = "Apple Development";
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
COMBINE_HIDPI_IMAGES = YES;
|
COMBINE_HIDPI_IMAGES = YES;
|
||||||
CURRENT_PROJECT_VERSION = 1330;
|
CURRENT_PROJECT_VERSION = 1335;
|
||||||
DEAD_CODE_STRIPPING = YES;
|
DEAD_CODE_STRIPPING = YES;
|
||||||
DEBUG = YES;
|
DEBUG = YES;
|
||||||
DEVELOPMENT_TEAM = 8M54J5J787;
|
DEVELOPMENT_TEAM = 8M54J5J787;
|
||||||
@@ -3523,7 +3523,7 @@
|
|||||||
CODE_SIGN_IDENTITY = "Apple Development";
|
CODE_SIGN_IDENTITY = "Apple Development";
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
COMBINE_HIDPI_IMAGES = YES;
|
COMBINE_HIDPI_IMAGES = YES;
|
||||||
CURRENT_PROJECT_VERSION = 1330;
|
CURRENT_PROJECT_VERSION = 1335;
|
||||||
DEAD_CODE_STRIPPING = YES;
|
DEAD_CODE_STRIPPING = YES;
|
||||||
DEBUG = NO;
|
DEBUG = NO;
|
||||||
DEVELOPMENT_TEAM = 8M54J5J787;
|
DEVELOPMENT_TEAM = 8M54J5J787;
|
||||||
@@ -3763,7 +3763,7 @@
|
|||||||
CODE_SIGN_IDENTITY = "Apple Development";
|
CODE_SIGN_IDENTITY = "Apple Development";
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
COMBINE_HIDPI_IMAGES = YES;
|
COMBINE_HIDPI_IMAGES = YES;
|
||||||
CURRENT_PROJECT_VERSION = 1330;
|
CURRENT_PROJECT_VERSION = 1335;
|
||||||
DEAD_CODE_STRIPPING = YES;
|
DEAD_CODE_STRIPPING = YES;
|
||||||
DEBUG = NO;
|
DEBUG = NO;
|
||||||
DEVELOPMENT_TEAM = 8M54J5J787;
|
DEVELOPMENT_TEAM = 8M54J5J787;
|
||||||
@@ -3879,7 +3879,7 @@
|
|||||||
CODE_SIGN_IDENTITY = "Apple Development";
|
CODE_SIGN_IDENTITY = "Apple Development";
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
COMBINE_HIDPI_IMAGES = YES;
|
COMBINE_HIDPI_IMAGES = YES;
|
||||||
CURRENT_PROJECT_VERSION = 1330;
|
CURRENT_PROJECT_VERSION = 1335;
|
||||||
DEAD_CODE_STRIPPING = YES;
|
DEAD_CODE_STRIPPING = YES;
|
||||||
DEBUG = YES;
|
DEBUG = YES;
|
||||||
DEVELOPMENT_TEAM = 8M54J5J787;
|
DEVELOPMENT_TEAM = 8M54J5J787;
|
||||||
@@ -3995,7 +3995,7 @@
|
|||||||
CODE_SIGN_IDENTITY = "Apple Development";
|
CODE_SIGN_IDENTITY = "Apple Development";
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
COMBINE_HIDPI_IMAGES = YES;
|
COMBINE_HIDPI_IMAGES = YES;
|
||||||
CURRENT_PROJECT_VERSION = 1330;
|
CURRENT_PROJECT_VERSION = 1335;
|
||||||
DEAD_CODE_STRIPPING = YES;
|
DEAD_CODE_STRIPPING = YES;
|
||||||
DEBUG = YES;
|
DEBUG = YES;
|
||||||
DEVELOPMENT_TEAM = 8M54J5J787;
|
DEVELOPMENT_TEAM = 8M54J5J787;
|
||||||
@@ -4176,7 +4176,7 @@
|
|||||||
CODE_SIGN_IDENTITY = "Apple Development";
|
CODE_SIGN_IDENTITY = "Apple Development";
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
COMBINE_HIDPI_IMAGES = YES;
|
COMBINE_HIDPI_IMAGES = YES;
|
||||||
CURRENT_PROJECT_VERSION = 1330;
|
CURRENT_PROJECT_VERSION = 1335;
|
||||||
DEAD_CODE_STRIPPING = YES;
|
DEAD_CODE_STRIPPING = YES;
|
||||||
DEBUG = NO;
|
DEBUG = NO;
|
||||||
DEVELOPMENT_TEAM = 8M54J5J787;
|
DEVELOPMENT_TEAM = 8M54J5J787;
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ public class Paths {
|
|||||||
|
|
||||||
internal var baseDir: Paths.HomebrewDir
|
internal var baseDir: Paths.HomebrewDir
|
||||||
private var userName: String
|
private var userName: String
|
||||||
|
private var preferredShell: String
|
||||||
|
|
||||||
init() {
|
init() {
|
||||||
// Assume the default directory is correct
|
// Assume the default directory is correct
|
||||||
@@ -31,9 +32,11 @@ public class Paths {
|
|||||||
}
|
}
|
||||||
|
|
||||||
userName = identity()
|
userName = identity()
|
||||||
|
preferredShell = preferred_shell()
|
||||||
|
|
||||||
if !isRunningSwiftUIPreview {
|
if !isRunningSwiftUIPreview {
|
||||||
Log.info("The current username is `\(userName)`.")
|
Log.info("The current username is `\(userName)`.")
|
||||||
|
Log.info("The user's shell is `\(preferredShell)`.")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -104,6 +107,10 @@ public class Paths {
|
|||||||
+ (App.identifier.contains(".dev") ? "phpmon-dev" : "phpmon")
|
+ (App.identifier.contains(".dev") ? "phpmon-dev" : "phpmon")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static var shell: String {
|
||||||
|
return shared.preferredShell
|
||||||
|
}
|
||||||
|
|
||||||
// MARK: - Flexible Binaries
|
// MARK: - Flexible Binaries
|
||||||
// (these can be in multiple locations, so we scan common places because)
|
// (these can be in multiple locations, so we scan common places because)
|
||||||
// (PHP Monitor will not use the user's own PATH)
|
// (PHP Monitor will not use the user's own PATH)
|
||||||
|
|||||||
@@ -65,3 +65,11 @@ public func identity() -> String {
|
|||||||
|
|
||||||
return output.trimmingCharacters(in: .whitespacesAndNewlines)
|
return output.trimmingCharacters(in: .whitespacesAndNewlines)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Retrieves the user's preferred shell.
|
||||||
|
*/
|
||||||
|
public func preferred_shell() -> String {
|
||||||
|
return system("dscl . -read ~/ UserShell | sed 's/UserShell: //'")
|
||||||
|
.trimmingCharacters(in: .whitespacesAndNewlines)
|
||||||
|
}
|
||||||
|
|||||||
@@ -49,8 +49,10 @@ class PhpHelper {
|
|||||||
let path = URL(fileURLWithPath: "\(Paths.optPath)/php@\(version)/bin")
|
let path = URL(fileURLWithPath: "\(Paths.optPath)/php@\(version)/bin")
|
||||||
.resolvingSymlinksInPath().path
|
.resolvingSymlinksInPath().path
|
||||||
|
|
||||||
// The contents of the script!
|
// Check if the user uses Fish
|
||||||
let script = script(path, keyPhrase, version, dotless)
|
let script = Paths.shell.contains("/fish")
|
||||||
|
? fishScript(path, keyPhrase, version, dotless)
|
||||||
|
: zshScript(path, keyPhrase, version, dotless)
|
||||||
|
|
||||||
Task { @MainActor in
|
Task { @MainActor in
|
||||||
try FileSystem.writeAtomicallyToFile(destination, content: script)
|
try FileSystem.writeAtomicallyToFile(destination, content: script)
|
||||||
@@ -78,7 +80,7 @@ class PhpHelper {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static func script(
|
private static func zshScript(
|
||||||
_ path: String,
|
_ path: String,
|
||||||
_ keyPhrase: String,
|
_ keyPhrase: String,
|
||||||
_ version: String,
|
_ version: String,
|
||||||
@@ -96,6 +98,22 @@ class PhpHelper {
|
|||||||
"""
|
"""
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static func fishScript(
|
||||||
|
_ path: String,
|
||||||
|
_ keyPhrase: String,
|
||||||
|
_ version: String,
|
||||||
|
_ dotless: String
|
||||||
|
) -> String {
|
||||||
|
return """
|
||||||
|
#!\(Paths.binPath)/fish
|
||||||
|
# \(keyPhrase)
|
||||||
|
# It reflects the location of PHP \(version)'s binaries on your system.
|
||||||
|
# Usage: . pm\(dotless)
|
||||||
|
echo "PHP Monitor has enabled this terminal to use PHP \(version)."; \\
|
||||||
|
set -x PATH \(path) $PATH
|
||||||
|
"""
|
||||||
|
}
|
||||||
|
|
||||||
private static func createSymlink(_ dotless: String) async {
|
private static func createSymlink(_ dotless: String) async {
|
||||||
let source = "\(Paths.homePath)/.config/phpmon/bin/pm\(dotless)"
|
let source = "\(Paths.homePath)/.config/phpmon/bin/pm\(dotless)"
|
||||||
let destination = "/usr/local/bin/pm\(dotless)"
|
let destination = "/usr/local/bin/pm\(dotless)"
|
||||||
|
|||||||
Reference in New Issue
Block a user