mirror of
https://github.com/nicoverbruggen/phpmon.git
synced 2025-08-08 04:20:07 +02:00
Compare commits
8 Commits
Author | SHA1 | Date | |
---|---|---|---|
15d75a7f98 | |||
c7c5311ff9 | |||
c93f047909 | |||
f82a2120f7 | |||
857cba9f45 | |||
ec49257bcc | |||
9c6a21008a | |||
5dffbf57d1 |
@ -481,6 +481,10 @@
|
|||||||
C47699EF28A2F2A30060FEB8 /* WarningManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = C47699EE28A2F2A30060FEB8 /* WarningManager.swift */; };
|
C47699EF28A2F2A30060FEB8 /* WarningManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = C47699EE28A2F2A30060FEB8 /* WarningManager.swift */; };
|
||||||
C47699F128A2F3150060FEB8 /* Warning.swift in Sources */ = {isa = PBXBuildFile; fileRef = C47699F028A2F3150060FEB8 /* Warning.swift */; };
|
C47699F128A2F3150060FEB8 /* Warning.swift in Sources */ = {isa = PBXBuildFile; fileRef = C47699F028A2F3150060FEB8 /* Warning.swift */; };
|
||||||
C476FF9822B0DD830098105B /* Alert.swift in Sources */ = {isa = PBXBuildFile; fileRef = C476FF9722B0DD830098105B /* Alert.swift */; };
|
C476FF9822B0DD830098105B /* Alert.swift in Sources */ = {isa = PBXBuildFile; fileRef = C476FF9722B0DD830098105B /* Alert.swift */; };
|
||||||
|
C47DF1AF299D5A3B0007055D /* LoginItemManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = C47DF1AE299D5A3B0007055D /* LoginItemManager.swift */; };
|
||||||
|
C47DF1B0299D5A3B0007055D /* LoginItemManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = C47DF1AE299D5A3B0007055D /* LoginItemManager.swift */; };
|
||||||
|
C47DF1B1299D5A3B0007055D /* LoginItemManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = C47DF1AE299D5A3B0007055D /* LoginItemManager.swift */; };
|
||||||
|
C47DF1B2299D5A3B0007055D /* LoginItemManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = C47DF1AE299D5A3B0007055D /* LoginItemManager.swift */; };
|
||||||
C4811D2422D70A4700B5F6B3 /* App.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4811D2322D70A4700B5F6B3 /* App.swift */; };
|
C4811D2422D70A4700B5F6B3 /* App.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4811D2322D70A4700B5F6B3 /* App.swift */; };
|
||||||
C4811D2A22D70F9A00B5F6B3 /* MainMenu.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4811D2922D70F9A00B5F6B3 /* MainMenu.swift */; };
|
C4811D2A22D70F9A00B5F6B3 /* MainMenu.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4811D2922D70F9A00B5F6B3 /* MainMenu.swift */; };
|
||||||
C481F79726164A78004FBCFF /* PrefsVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5420395826135DC100FB00FA /* PrefsVC.swift */; };
|
C481F79726164A78004FBCFF /* PrefsVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5420395826135DC100FB00FA /* PrefsVC.swift */; };
|
||||||
@ -857,6 +861,7 @@
|
|||||||
C47699EE28A2F2A30060FEB8 /* WarningManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WarningManager.swift; sourceTree = "<group>"; };
|
C47699EE28A2F2A30060FEB8 /* WarningManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WarningManager.swift; sourceTree = "<group>"; };
|
||||||
C47699F028A2F3150060FEB8 /* Warning.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Warning.swift; sourceTree = "<group>"; };
|
C47699F028A2F3150060FEB8 /* Warning.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Warning.swift; sourceTree = "<group>"; };
|
||||||
C476FF9722B0DD830098105B /* Alert.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Alert.swift; sourceTree = "<group>"; };
|
C476FF9722B0DD830098105B /* Alert.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Alert.swift; sourceTree = "<group>"; };
|
||||||
|
C47DF1AE299D5A3B0007055D /* LoginItemManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginItemManager.swift; sourceTree = "<group>"; };
|
||||||
C4811D2322D70A4700B5F6B3 /* App.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = App.swift; sourceTree = "<group>"; };
|
C4811D2322D70A4700B5F6B3 /* App.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = App.swift; sourceTree = "<group>"; };
|
||||||
C4811D2922D70F9A00B5F6B3 /* MainMenu.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainMenu.swift; sourceTree = "<group>"; };
|
C4811D2922D70F9A00B5F6B3 /* MainMenu.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainMenu.swift; sourceTree = "<group>"; };
|
||||||
C48D0C9225CC804200CC7490 /* XibLoadable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = XibLoadable.swift; sourceTree = "<group>"; };
|
C48D0C9225CC804200CC7490 /* XibLoadable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = XibLoadable.swift; sourceTree = "<group>"; };
|
||||||
@ -1440,6 +1445,7 @@
|
|||||||
C4B5635D276AB09000F12CCB /* VersionExtractor.swift */,
|
C4B5635D276AB09000F12CCB /* VersionExtractor.swift */,
|
||||||
C4D3660A29113F20006BD146 /* System.swift */,
|
C4D3660A29113F20006BD146 /* System.swift */,
|
||||||
C4D36614291160A1006BD146 /* WIP.swift */,
|
C4D36614291160A1006BD146 /* WIP.swift */,
|
||||||
|
C47DF1AE299D5A3B0007055D /* LoginItemManager.swift */,
|
||||||
);
|
);
|
||||||
path = Helpers;
|
path = Helpers;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
@ -2016,6 +2022,7 @@
|
|||||||
files = (
|
files = (
|
||||||
C47699EF28A2F2A30060FEB8 /* WarningManager.swift in Sources */,
|
C47699EF28A2F2A30060FEB8 /* WarningManager.swift in Sources */,
|
||||||
C4ACA38F25C754C100060C66 /* PhpExtension.swift in Sources */,
|
C4ACA38F25C754C100060C66 /* PhpExtension.swift in Sources */,
|
||||||
|
C47DF1AF299D5A3B0007055D /* LoginItemManager.swift in Sources */,
|
||||||
C4D3661A291173EA006BD146 /* DictionaryExtension.swift in Sources */,
|
C4D3661A291173EA006BD146 /* DictionaryExtension.swift in Sources */,
|
||||||
C4C8900728F0E3EF00CE5E97 /* ActiveFileSystem.swift in Sources */,
|
C4C8900728F0E3EF00CE5E97 /* ActiveFileSystem.swift in Sources */,
|
||||||
C4D8016622B1584700C6DA1B /* Startup.swift in Sources */,
|
C4D8016622B1584700C6DA1B /* Startup.swift in Sources */,
|
||||||
@ -2224,6 +2231,7 @@
|
|||||||
C4D36617291160A1006BD146 /* WIP.swift in Sources */,
|
C4D36617291160A1006BD146 /* WIP.swift in Sources */,
|
||||||
C471E85728F9BB650021E251 /* DomainListTLSCell.swift in Sources */,
|
C471E85728F9BB650021E251 /* DomainListTLSCell.swift in Sources */,
|
||||||
C471E85828F9BB650021E251 /* DomainListNameCell.swift in Sources */,
|
C471E85828F9BB650021E251 /* DomainListNameCell.swift in Sources */,
|
||||||
|
C47DF1B1299D5A3B0007055D /* LoginItemManager.swift in Sources */,
|
||||||
C471E85928F9BB650021E251 /* DomainListPhpCell.swift in Sources */,
|
C471E85928F9BB650021E251 /* DomainListPhpCell.swift in Sources */,
|
||||||
C471E85A28F9BB650021E251 /* DomainListTypeCell.swift in Sources */,
|
C471E85A28F9BB650021E251 /* DomainListTypeCell.swift in Sources */,
|
||||||
C471E85B28F9BB650021E251 /* DomainListKindCell.swift in Sources */,
|
C471E85B28F9BB650021E251 /* DomainListKindCell.swift in Sources */,
|
||||||
@ -2355,6 +2363,7 @@
|
|||||||
C471E89528F9BB8F0021E251 /* MenuBarImageGenerator.swift in Sources */,
|
C471E89528F9BB8F0021E251 /* MenuBarImageGenerator.swift in Sources */,
|
||||||
C471E89628F9BB8F0021E251 /* PMWindowController.swift in Sources */,
|
C471E89628F9BB8F0021E251 /* PMWindowController.swift in Sources */,
|
||||||
C471E89728F9BB8F0021E251 /* VersionExtractor.swift in Sources */,
|
C471E89728F9BB8F0021E251 /* VersionExtractor.swift in Sources */,
|
||||||
|
C47DF1B2299D5A3B0007055D /* LoginItemManager.swift in Sources */,
|
||||||
C4E2E86728FC2F1B003B070C /* XCPMApplication.swift in Sources */,
|
C4E2E86728FC2F1B003B070C /* XCPMApplication.swift in Sources */,
|
||||||
C471E89828F9BB8F0021E251 /* ValetProxy.swift in Sources */,
|
C471E89828F9BB8F0021E251 /* ValetProxy.swift in Sources */,
|
||||||
C471E89A28F9BB8F0021E251 /* DomainScanner.swift in Sources */,
|
C471E89A28F9BB8F0021E251 /* DomainScanner.swift in Sources */,
|
||||||
@ -2565,6 +2574,7 @@
|
|||||||
C4AF9F7B2754499000D44ED0 /* Valet.swift in Sources */,
|
C4AF9F7B2754499000D44ED0 /* Valet.swift in Sources */,
|
||||||
C4C1019C27C65C6F001FACC2 /* Process.swift in Sources */,
|
C4C1019C27C65C6F001FACC2 /* Process.swift in Sources */,
|
||||||
C451AFF72969E40F0078E617 /* HelpButton.swift in Sources */,
|
C451AFF72969E40F0078E617 /* HelpButton.swift in Sources */,
|
||||||
|
C47DF1B0299D5A3B0007055D /* LoginItemManager.swift in Sources */,
|
||||||
C4F780C025D80B6E000DBC97 /* Startup.swift in Sources */,
|
C4F780C025D80B6E000DBC97 /* Startup.swift in Sources */,
|
||||||
C45B914A295607F400F4EC78 /* Service.swift in Sources */,
|
C45B914A295607F400F4EC78 /* Service.swift in Sources */,
|
||||||
C4C0E8E327F88B13002D32A9 /* ValetDomainScanner.swift in Sources */,
|
C4C0E8E327F88B13002D32A9 /* ValetDomainScanner.swift in Sources */,
|
||||||
@ -2857,12 +2867,13 @@
|
|||||||
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 = 1064;
|
CURRENT_PROJECT_VERSION = 1071;
|
||||||
DEAD_CODE_STRIPPING = YES;
|
DEAD_CODE_STRIPPING = YES;
|
||||||
DEBUG = YES;
|
DEBUG = YES;
|
||||||
DEVELOPMENT_TEAM = 8M54J5J787;
|
DEVELOPMENT_TEAM = 8M54J5J787;
|
||||||
ENABLE_HARDENED_RUNTIME = YES;
|
ENABLE_HARDENED_RUNTIME = YES;
|
||||||
INFOPLIST_FILE = phpmon/Info.plist;
|
INFOPLIST_FILE = phpmon/Info.plist;
|
||||||
|
INFOPLIST_KEY_CFBundleDisplayName = "PHP Monitor";
|
||||||
INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.developer-tools";
|
INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.developer-tools";
|
||||||
LD_RUNPATH_SEARCH_PATHS = (
|
LD_RUNPATH_SEARCH_PATHS = (
|
||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
@ -2886,12 +2897,13 @@
|
|||||||
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 = 1064;
|
CURRENT_PROJECT_VERSION = 1071;
|
||||||
DEAD_CODE_STRIPPING = YES;
|
DEAD_CODE_STRIPPING = YES;
|
||||||
DEBUG = NO;
|
DEBUG = NO;
|
||||||
DEVELOPMENT_TEAM = 8M54J5J787;
|
DEVELOPMENT_TEAM = 8M54J5J787;
|
||||||
ENABLE_HARDENED_RUNTIME = YES;
|
ENABLE_HARDENED_RUNTIME = YES;
|
||||||
INFOPLIST_FILE = phpmon/Info.plist;
|
INFOPLIST_FILE = phpmon/Info.plist;
|
||||||
|
INFOPLIST_KEY_CFBundleDisplayName = "PHP Monitor";
|
||||||
INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.developer-tools";
|
INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.developer-tools";
|
||||||
LD_RUNPATH_SEARCH_PATHS = (
|
LD_RUNPATH_SEARCH_PATHS = (
|
||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
@ -3114,11 +3126,12 @@
|
|||||||
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 = 1064;
|
CURRENT_PROJECT_VERSION = 1071;
|
||||||
DEBUG = NO;
|
DEBUG = NO;
|
||||||
DEVELOPMENT_TEAM = 8M54J5J787;
|
DEVELOPMENT_TEAM = 8M54J5J787;
|
||||||
ENABLE_HARDENED_RUNTIME = YES;
|
ENABLE_HARDENED_RUNTIME = YES;
|
||||||
INFOPLIST_FILE = phpmon/Info.plist;
|
INFOPLIST_FILE = phpmon/Info.plist;
|
||||||
|
INFOPLIST_KEY_CFBundleDisplayName = "PHP Monitor DEV";
|
||||||
INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.developer-tools";
|
INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.developer-tools";
|
||||||
LD_RUNPATH_SEARCH_PATHS = (
|
LD_RUNPATH_SEARCH_PATHS = (
|
||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
@ -3224,11 +3237,12 @@
|
|||||||
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 = 1064;
|
CURRENT_PROJECT_VERSION = 1071;
|
||||||
DEBUG = YES;
|
DEBUG = YES;
|
||||||
DEVELOPMENT_TEAM = 8M54J5J787;
|
DEVELOPMENT_TEAM = 8M54J5J787;
|
||||||
ENABLE_HARDENED_RUNTIME = YES;
|
ENABLE_HARDENED_RUNTIME = YES;
|
||||||
INFOPLIST_FILE = phpmon/Info.plist;
|
INFOPLIST_FILE = phpmon/Info.plist;
|
||||||
|
INFOPLIST_KEY_CFBundleDisplayName = "PHP Monitor DEV";
|
||||||
INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.developer-tools";
|
INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.developer-tools";
|
||||||
LD_RUNPATH_SEARCH_PATHS = (
|
LD_RUNPATH_SEARCH_PATHS = (
|
||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
|
@ -16,16 +16,12 @@ public class Paths {
|
|||||||
public static let shared = Paths()
|
public static let shared = Paths()
|
||||||
|
|
||||||
internal var baseDir: Paths.HomebrewDir
|
internal var baseDir: Paths.HomebrewDir
|
||||||
|
private var userName: String
|
||||||
private var userName: String! = nil
|
|
||||||
|
|
||||||
init() {
|
init() {
|
||||||
baseDir = App.architecture != "x86_64" ? .opt : .usr
|
baseDir = App.architecture != "x86_64" ? .opt : .usr
|
||||||
}
|
userName = identity()
|
||||||
|
Log.info("[ID] The current username is `\(userName)`.")
|
||||||
public func loadUser() async {
|
|
||||||
let output = await Shell.pipe("id -un").out
|
|
||||||
userName = String(output.split(separator: "\n")[0])
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public func detectBinaryPaths() {
|
public func detectBinaryPaths() {
|
||||||
|
25
phpmon/Common/Helpers/LoginItemManager.swift
Normal file
25
phpmon/Common/Helpers/LoginItemManager.swift
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
//
|
||||||
|
// LoginItemManager.swift
|
||||||
|
// PHP Monitor
|
||||||
|
//
|
||||||
|
// Created by Nico Verbruggen on 15/02/2023.
|
||||||
|
// Copyright © 2023 Nico Verbruggen. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
import AppKit
|
||||||
|
import ServiceManagement
|
||||||
|
|
||||||
|
@available(macOS 13.0, *)
|
||||||
|
class LoginItemManager {
|
||||||
|
func loginItemIsEnabled() -> Bool {
|
||||||
|
return SMAppService.mainApp.status == .enabled
|
||||||
|
}
|
||||||
|
|
||||||
|
func disableLoginItem() {
|
||||||
|
try? SMAppService.mainApp.unregister()
|
||||||
|
}
|
||||||
|
|
||||||
|
func enableLoginItem() {
|
||||||
|
try? SMAppService.mainApp.register()
|
||||||
|
}
|
||||||
|
}
|
@ -27,6 +27,30 @@ public func system(_ command: String) -> String {
|
|||||||
return output
|
return output
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Same as the `system` command, but does not return the output. */
|
||||||
public func system_quiet(_ command: String) {
|
public func system_quiet(_ command: String) {
|
||||||
_ = system(command)
|
_ = system(command)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Retrieves the username for the currently signed in user via `/usr/bin/id`.
|
||||||
|
This cannot fail or the application will crash.
|
||||||
|
*/
|
||||||
|
public func identity() -> String {
|
||||||
|
let task = Process()
|
||||||
|
task.launchPath = "/usr/bin/id"
|
||||||
|
task.arguments = ["-un"]
|
||||||
|
|
||||||
|
let pipe = Pipe()
|
||||||
|
task.standardOutput = pipe
|
||||||
|
task.launch()
|
||||||
|
|
||||||
|
guard let output = String(
|
||||||
|
data: pipe.fileHandleForReading.readDataToEndOfFile(),
|
||||||
|
encoding: String.Encoding.utf8
|
||||||
|
) else {
|
||||||
|
fatalError("Could not retrieve username via `id -un`!")
|
||||||
|
}
|
||||||
|
|
||||||
|
return output.trimmingCharacters(in: .whitespacesAndNewlines)
|
||||||
|
}
|
||||||
|
@ -8,8 +8,6 @@
|
|||||||
import Foundation
|
import Foundation
|
||||||
|
|
||||||
struct HomebrewPackage: Decodable {
|
struct HomebrewPackage: Decodable {
|
||||||
|
|
||||||
let name: String
|
|
||||||
let full_name: String
|
let full_name: String
|
||||||
let aliases: [String]
|
let aliases: [String]
|
||||||
let installed: [HomebrewInstalled]
|
let installed: [HomebrewInstalled]
|
||||||
|
@ -111,7 +111,6 @@ class AppDelegate: NSObject, NSApplicationDelegate, UNUserNotificationCenterDele
|
|||||||
// Make sure notifications will work
|
// Make sure notifications will work
|
||||||
setupNotifications()
|
setupNotifications()
|
||||||
Task { // Make sure the menu performs its initial checks
|
Task { // Make sure the menu performs its initial checks
|
||||||
await paths.loadUser()
|
|
||||||
await menu.startup()
|
await menu.startup()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -17,7 +17,7 @@ public class EnvironmentManager {
|
|||||||
|
|
||||||
// Failure condition #1: does not contain Laravel Valet
|
// Failure condition #1: does not contain Laravel Valet
|
||||||
if !output.contains("Laravel Valet") {
|
if !output.contains("Laravel Valet") {
|
||||||
return true
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
// Extract the version number
|
// Extract the version number
|
||||||
@ -25,7 +25,6 @@ public class EnvironmentManager {
|
|||||||
|
|
||||||
// Get the actual version
|
// Get the actual version
|
||||||
return Valet.shared.version == nil
|
return Valet.shared.version == nil
|
||||||
|
|
||||||
}() // returns true if none of the failure conditions are met
|
}() // returns true if none of the failure conditions are met
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -243,6 +243,10 @@ class GeneralPreferencesVC: GenericPreferenceVC {
|
|||||||
vc.getAutomaticUpdateCheckPV()
|
vc.getAutomaticUpdateCheckPV()
|
||||||
]
|
]
|
||||||
|
|
||||||
|
if #available(macOS 13, *) {
|
||||||
|
vc.views.append(CheckboxPreferenceView.makeLoginItemView())
|
||||||
|
}
|
||||||
|
|
||||||
return vc
|
return vc
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -10,18 +10,12 @@ import Foundation
|
|||||||
import Cocoa
|
import Cocoa
|
||||||
|
|
||||||
class CheckboxPreferenceView: NSView, XibLoadable {
|
class CheckboxPreferenceView: NSView, XibLoadable {
|
||||||
|
|
||||||
@IBOutlet weak var labelSection: NSTextField!
|
@IBOutlet weak var labelSection: NSTextField!
|
||||||
@IBOutlet weak var labelDescription: NSTextField!
|
@IBOutlet weak var labelDescription: NSTextField!
|
||||||
@IBOutlet weak var buttonCheckbox: NSButton!
|
@IBOutlet weak var buttonCheckbox: NSButton!
|
||||||
|
|
||||||
var action: (() -> Void)!
|
var action: (() -> Void)!
|
||||||
|
var behavior: CheckboxPreferenceViewBehavior!
|
||||||
var preference: PreferenceName! {
|
|
||||||
didSet {
|
|
||||||
self.buttonCheckbox.state = Preferences.isEnabled(self.preference) ? .on : .off
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static func make(
|
static func make(
|
||||||
sectionText: String,
|
sectionText: String,
|
||||||
@ -31,17 +25,75 @@ class CheckboxPreferenceView: NSView, XibLoadable {
|
|||||||
action: @escaping () -> Void
|
action: @escaping () -> Void
|
||||||
) -> NSView {
|
) -> NSView {
|
||||||
let view = Self.createFromXib()!
|
let view = Self.createFromXib()!
|
||||||
|
view.behavior = CheckboxPreferenceBehavior(
|
||||||
|
button: view.buttonCheckbox,
|
||||||
|
preference: preference
|
||||||
|
)
|
||||||
view.labelSection.stringValue = sectionText
|
view.labelSection.stringValue = sectionText
|
||||||
view.labelDescription.stringValue = descriptionText
|
view.labelDescription.stringValue = descriptionText
|
||||||
view.buttonCheckbox.title = checkboxText
|
view.buttonCheckbox.title = checkboxText
|
||||||
view.preference = preference
|
|
||||||
view.action = action
|
view.action = action
|
||||||
return view
|
return view
|
||||||
}
|
}
|
||||||
|
|
||||||
@IBAction func toggled(_ sender: Any) {
|
@available(macOS 13.0, *)
|
||||||
Preferences.update(self.preference, value: buttonCheckbox.state == .on)
|
static func makeLoginItemView() -> NSView {
|
||||||
self.action()
|
let view = Self.createFromXib()!
|
||||||
|
view.behavior = CheckboxLaunchItemBehavior(button: view.buttonCheckbox)
|
||||||
|
view.labelSection.stringValue = "prefs.startup".localized
|
||||||
|
view.labelDescription.stringValue = "prefs.auto_start_desc".localized
|
||||||
|
view.buttonCheckbox.title = "prefs.auto_start_title".localized
|
||||||
|
view.action = {}
|
||||||
|
return view
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@IBAction func toggled(_ sender: Any) {
|
||||||
|
self.behavior.toggled(checked: buttonCheckbox.state == .on)
|
||||||
|
self.action()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protocol CheckboxPreferenceViewBehavior {
|
||||||
|
func toggled(checked: Bool)
|
||||||
|
}
|
||||||
|
|
||||||
|
class CheckboxPreferenceBehavior: CheckboxPreferenceViewBehavior {
|
||||||
|
var button: NSButton
|
||||||
|
var preference: PreferenceName
|
||||||
|
|
||||||
|
init(button: NSButton, preference: PreferenceName) {
|
||||||
|
self.preference = preference
|
||||||
|
self.button = button
|
||||||
|
self.button.state = Preferences.isEnabled(self.preference) ? .on : .off
|
||||||
|
}
|
||||||
|
|
||||||
|
public func toggled(checked: Bool) {
|
||||||
|
Preferences.update(self.preference, value: checked)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@available(macOS 13.0, *)
|
||||||
|
class CheckboxLaunchItemBehavior: CheckboxPreferenceViewBehavior {
|
||||||
|
var manager = LoginItemManager()
|
||||||
|
var button: NSButton
|
||||||
|
|
||||||
|
init(button: NSButton) {
|
||||||
|
self.button = button
|
||||||
|
|
||||||
|
if manager.loginItemIsEnabled() {
|
||||||
|
self.button.state = .on
|
||||||
|
} else {
|
||||||
|
self.button.state = .off
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public func toggled(checked: Bool) {
|
||||||
|
if checked {
|
||||||
|
self.manager.enableLoginItem()
|
||||||
|
} else {
|
||||||
|
self.manager.disableLoginItem()
|
||||||
|
}
|
||||||
|
|
||||||
|
self.button.state = self.manager.loginItemIsEnabled() ? .on : .off
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="19529" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
|
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="21507" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<deployment identifier="macosx"/>
|
<deployment identifier="macosx"/>
|
||||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="19529"/>
|
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="21507"/>
|
||||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
<objects>
|
<objects>
|
||||||
|
@ -40,7 +40,7 @@
|
|||||||
<key>LSUIElement</key>
|
<key>LSUIElement</key>
|
||||||
<true/>
|
<true/>
|
||||||
<key>NSHumanReadableCopyright</key>
|
<key>NSHumanReadableCopyright</key>
|
||||||
<string>Copyright © 2019-2022 Nico Verbruggen. All rights reserved.</string>
|
<string>Copyright © 2019-2023 Nico Verbruggen. All rights reserved.</string>
|
||||||
<key>NSMainStoryboardFile</key>
|
<key>NSMainStoryboardFile</key>
|
||||||
<string>Main</string>
|
<string>Main</string>
|
||||||
<key>NSPrincipalClass</key>
|
<key>NSPrincipalClass</key>
|
||||||
|
@ -254,6 +254,10 @@ This has no effect on other terminals, only for the particular terminal session
|
|||||||
"prefs.notifications" = "Notifications:";
|
"prefs.notifications" = "Notifications:";
|
||||||
"prefs.warnings" = "Warnings:";
|
"prefs.warnings" = "Warnings:";
|
||||||
"prefs.menu_contents" = "Features in Menu:";
|
"prefs.menu_contents" = "Features in Menu:";
|
||||||
|
"prefs.startup" = "Startup:";
|
||||||
|
|
||||||
|
"prefs.auto_start_desc" = "Automatically starts PHP Monitor when you log into your Mac.";
|
||||||
|
"prefs.auto_start_title" = "Start PHP Monitor at login";
|
||||||
|
|
||||||
"prefs.icon_options.php" = "Display PHP Icon";
|
"prefs.icon_options.php" = "Display PHP Icon";
|
||||||
"prefs.icon_options.elephant" = "Display Elephant Icon";
|
"prefs.icon_options.elephant" = "Display Elephant Icon";
|
||||||
|
@ -23,11 +23,10 @@ class HomebrewPackageTest: XCTestCase {
|
|||||||
[HomebrewPackage].self, from: json.data(using: .utf8)!
|
[HomebrewPackage].self, from: json.data(using: .utf8)!
|
||||||
).first!
|
).first!
|
||||||
|
|
||||||
XCTAssertEqual(package.name, "php")
|
|
||||||
XCTAssertEqual(package.full_name, "php")
|
XCTAssertEqual(package.full_name, "php")
|
||||||
XCTAssertEqual(package.aliases.first!, "php@8.1")
|
XCTAssertEqual(package.aliases.first!, "php@8.2")
|
||||||
XCTAssertEqual(package.installed.contains(where: { installed in
|
XCTAssertEqual(package.installed.contains(where: { installed in
|
||||||
installed.version.starts(with: "8.1")
|
installed.version.starts(with: "8.2")
|
||||||
}), true)
|
}), true)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,69 +1,77 @@
|
|||||||
[
|
[
|
||||||
{
|
{
|
||||||
"name": "php",
|
|
||||||
"full_name": "php",
|
"full_name": "php",
|
||||||
"tap": "homebrew/core",
|
"tap": "homebrew/core",
|
||||||
"oldname": null,
|
"oldname": null,
|
||||||
"aliases": [
|
"aliases": [
|
||||||
"php@8.1"
|
"php@8.2"
|
||||||
],
|
],
|
||||||
"versioned_formulae": [
|
"versioned_formulae": [
|
||||||
|
"php@8.1",
|
||||||
"php@8.0",
|
"php@8.0",
|
||||||
"php@7.4",
|
"php@7.4"
|
||||||
"php@7.3",
|
|
||||||
"php@7.2"
|
|
||||||
],
|
],
|
||||||
"desc": "General-purpose scripting language",
|
"desc": "General-purpose scripting language",
|
||||||
"license": "PHP-3.01",
|
"license": "PHP-3.01",
|
||||||
"homepage": "https://www.php.net/",
|
"homepage": "https://www.php.net/",
|
||||||
"versions": {
|
"versions": {
|
||||||
"stable": "8.1.10",
|
"stable": "8.2.2",
|
||||||
"head": "HEAD",
|
"head": "HEAD",
|
||||||
"bottle": true
|
"bottle": true
|
||||||
},
|
},
|
||||||
"urls": {
|
"urls": {
|
||||||
"stable": {
|
"stable": {
|
||||||
"url": "https://www.php.net/distributions/php-8.1.10.tar.xz",
|
"url": "https://www.php.net/distributions/php-8.2.2.tar.xz",
|
||||||
"tag": null,
|
"tag": null,
|
||||||
"revision": null
|
"revision": null,
|
||||||
|
"checksum": "bdc4aa38e652bac86039601840bae01c0c3653972eaa6f9f93d5f71953a7ee33"
|
||||||
|
},
|
||||||
|
"head": {
|
||||||
|
"url": "https://github.com/php/php-src.git",
|
||||||
|
"branch": "master"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"revision": 1,
|
"revision": 0,
|
||||||
"version_scheme": 0,
|
"version_scheme": 0,
|
||||||
"bottle": {
|
"bottle": {
|
||||||
"stable": {
|
"stable": {
|
||||||
"rebuild": 0,
|
"rebuild": 0,
|
||||||
"root_url": "https://ghcr.io/v2/homebrew/core",
|
"root_url": "https://ghcr.io/v2/homebrew/core",
|
||||||
"files": {
|
"files": {
|
||||||
|
"arm64_ventura": {
|
||||||
|
"cellar": "/opt/homebrew/Cellar",
|
||||||
|
"url": "https://ghcr.io/v2/homebrew/core/php/blobs/sha256:ad2e6a6f1cdc65c22b39bd607cbb7305958951cf58ee87d5060717be5a8b5a45",
|
||||||
|
"sha256": "ad2e6a6f1cdc65c22b39bd607cbb7305958951cf58ee87d5060717be5a8b5a45"
|
||||||
|
},
|
||||||
"arm64_monterey": {
|
"arm64_monterey": {
|
||||||
"cellar": "/opt/homebrew/Cellar",
|
"cellar": "/opt/homebrew/Cellar",
|
||||||
"url": "https://ghcr.io/v2/homebrew/core/php/blobs/sha256:dcee33c9f445db3026a7e867805eb8f6d82e9e5599599b8c6cd8645475f7961c",
|
"url": "https://ghcr.io/v2/homebrew/core/php/blobs/sha256:27069c973e63f38a3cb4fad1c7a2e17853bcffe318c8a957ff96a1026dff0cac",
|
||||||
"sha256": "dcee33c9f445db3026a7e867805eb8f6d82e9e5599599b8c6cd8645475f7961c"
|
"sha256": "27069c973e63f38a3cb4fad1c7a2e17853bcffe318c8a957ff96a1026dff0cac"
|
||||||
},
|
},
|
||||||
"arm64_big_sur": {
|
"arm64_big_sur": {
|
||||||
"cellar": "/opt/homebrew/Cellar",
|
"cellar": "/opt/homebrew/Cellar",
|
||||||
"url": "https://ghcr.io/v2/homebrew/core/php/blobs/sha256:e0590064cd32f2baa4102fa49c80056f3886a0a89aec0589d0134ecbf0e7923e",
|
"url": "https://ghcr.io/v2/homebrew/core/php/blobs/sha256:ceef280bcd57e5f794ae59cc75e83d407c9704aa3d238b282bda52cbc644d0dd",
|
||||||
"sha256": "e0590064cd32f2baa4102fa49c80056f3886a0a89aec0589d0134ecbf0e7923e"
|
"sha256": "ceef280bcd57e5f794ae59cc75e83d407c9704aa3d238b282bda52cbc644d0dd"
|
||||||
|
},
|
||||||
|
"ventura": {
|
||||||
|
"cellar": "/usr/local/Cellar",
|
||||||
|
"url": "https://ghcr.io/v2/homebrew/core/php/blobs/sha256:22f733b7b0b0ed95cd6b0a1534b9eca4cf63fe54647394c3f7e7ac019eb019ff",
|
||||||
|
"sha256": "22f733b7b0b0ed95cd6b0a1534b9eca4cf63fe54647394c3f7e7ac019eb019ff"
|
||||||
},
|
},
|
||||||
"monterey": {
|
"monterey": {
|
||||||
"cellar": "/usr/local/Cellar",
|
"cellar": "/usr/local/Cellar",
|
||||||
"url": "https://ghcr.io/v2/homebrew/core/php/blobs/sha256:62481320613b19c6ff310bf6ed50c7d2a2253cdbf403af12ec97bccd8a97a84c",
|
"url": "https://ghcr.io/v2/homebrew/core/php/blobs/sha256:9ff8f5e1df5e849567cdb2ddea6d3c2a2b9cae024842c9ac65b35a01657bfc37",
|
||||||
"sha256": "62481320613b19c6ff310bf6ed50c7d2a2253cdbf403af12ec97bccd8a97a84c"
|
"sha256": "9ff8f5e1df5e849567cdb2ddea6d3c2a2b9cae024842c9ac65b35a01657bfc37"
|
||||||
},
|
},
|
||||||
"big_sur": {
|
"big_sur": {
|
||||||
"cellar": "/usr/local/Cellar",
|
"cellar": "/usr/local/Cellar",
|
||||||
"url": "https://ghcr.io/v2/homebrew/core/php/blobs/sha256:b34d96f7aad3c580a7cbdaadb8054fb9b6872111a5eec8e1bcb4a529970c8e03",
|
"url": "https://ghcr.io/v2/homebrew/core/php/blobs/sha256:11fd1ea6da8ef728b7cacd4da8a51ed125069595abf4e37ae1552d418560c5fb",
|
||||||
"sha256": "b34d96f7aad3c580a7cbdaadb8054fb9b6872111a5eec8e1bcb4a529970c8e03"
|
"sha256": "11fd1ea6da8ef728b7cacd4da8a51ed125069595abf4e37ae1552d418560c5fb"
|
||||||
},
|
|
||||||
"catalina": {
|
|
||||||
"cellar": "/usr/local/Cellar",
|
|
||||||
"url": "https://ghcr.io/v2/homebrew/core/php/blobs/sha256:cc0b85dcfdd60e1d8d7fa74c9f53be5d249d068835dbc7a81edacb7a076b6c76",
|
|
||||||
"sha256": "cc0b85dcfdd60e1d8d7fa74c9f53be5d249d068835dbc7a81edacb7a076b6c76"
|
|
||||||
},
|
},
|
||||||
"x86_64_linux": {
|
"x86_64_linux": {
|
||||||
"cellar": "/home/linuxbrew/.linuxbrew/Cellar",
|
"cellar": "/home/linuxbrew/.linuxbrew/Cellar",
|
||||||
"url": "https://ghcr.io/v2/homebrew/core/php/blobs/sha256:b934a5a4ad2d29b629f83962b57f638a654801d1ba21ba659a42da2e5afe3fae",
|
"url": "https://ghcr.io/v2/homebrew/core/php/blobs/sha256:baaa41e60f9e8125fe8f549d4813a8476a8947a1f10d7817a2ee36d8baa625f3",
|
||||||
"sha256": "b934a5a4ad2d29b629f83962b57f638a654801d1ba21ba659a42da2e5afe3fae"
|
"sha256": "baaa41e60f9e8125fe8f549d4813a8476a8947a1f10d7817a2ee36d8baa625f3"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -127,34 +135,35 @@
|
|||||||
"conflicts_with": [
|
"conflicts_with": [
|
||||||
|
|
||||||
],
|
],
|
||||||
"caveats": "To enable PHP in Apache add the following to httpd.conf and restart Apache:\n LoadModule php_module $(brew --prefix)/opt/php/lib/httpd/modules/libphp.so\n\n <FilesMatch \\.php$>\n SetHandler application/x-httpd-php\n </FilesMatch>\n\nFinally, check DirectoryIndex includes index.php\n DirectoryIndex index.php index.html\n\nThe php.ini and php-fpm.ini file can be found in:\n $(brew --prefix)/etc/php/8.1/\n",
|
"caveats": "To enable PHP in Apache add the following to httpd.conf and restart Apache:\n LoadModule php_module $(brew --prefix)/opt/php/lib/httpd/modules/libphp.so\n\n <FilesMatch \\.php$>\n SetHandler application/x-httpd-php\n </FilesMatch>\n\nFinally, check DirectoryIndex includes index.php\n DirectoryIndex index.php index.html\n\nThe php.ini and php-fpm.ini file can be found in:\n $(brew --prefix)/etc/php/8.2/\n",
|
||||||
"installed": [
|
"installed": [
|
||||||
{
|
{
|
||||||
"version": "8.1.10_1",
|
"version": "8.2.2",
|
||||||
"used_options": [
|
"used_options": [
|
||||||
|
|
||||||
],
|
],
|
||||||
"built_as_bottle": true,
|
"built_as_bottle": true,
|
||||||
"poured_from_bottle": true,
|
"poured_from_bottle": true,
|
||||||
|
"time": 1675654665,
|
||||||
"runtime_dependencies": [
|
"runtime_dependencies": [
|
||||||
{
|
{
|
||||||
"full_name": "apr",
|
"full_name": "apr",
|
||||||
"version": "1.7.0",
|
"version": "1.7.2",
|
||||||
"declared_directly": true
|
"declared_directly": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"full_name": "ca-certificates",
|
"full_name": "ca-certificates",
|
||||||
"version": "2022-07-19",
|
"version": "2023-01-10",
|
||||||
"declared_directly": false
|
"declared_directly": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"full_name": "openssl@1.1",
|
"full_name": "openssl@1.1",
|
||||||
"version": "1.1.1q",
|
"version": "1.1.1s",
|
||||||
"declared_directly": true
|
"declared_directly": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"full_name": "apr-util",
|
"full_name": "apr-util",
|
||||||
"version": "1.6.1",
|
"version": "1.6.3",
|
||||||
"declared_directly": true
|
"declared_directly": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -182,24 +191,24 @@
|
|||||||
"version": "1.0.9",
|
"version": "1.0.9",
|
||||||
"declared_directly": false
|
"declared_directly": false
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"full_name": "gettext",
|
|
||||||
"version": "0.21",
|
|
||||||
"declared_directly": true
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"full_name": "libunistring",
|
"full_name": "libunistring",
|
||||||
"version": "1.0",
|
"version": "1.1",
|
||||||
"declared_directly": false
|
"declared_directly": false
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"full_name": "gettext",
|
||||||
|
"version": "0.21.1",
|
||||||
|
"declared_directly": true
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"full_name": "libidn2",
|
"full_name": "libidn2",
|
||||||
"version": "2.3.3",
|
"version": "2.3.4",
|
||||||
"declared_directly": false
|
"declared_directly": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"full_name": "libnghttp2",
|
"full_name": "libnghttp2",
|
||||||
"version": "1.49.0",
|
"version": "1.51.0",
|
||||||
"declared_directly": false
|
"declared_directly": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -224,7 +233,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"full_name": "xz",
|
"full_name": "xz",
|
||||||
"version": "5.2.6",
|
"version": "5.4.1",
|
||||||
"declared_directly": false
|
"declared_directly": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -234,7 +243,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"full_name": "curl",
|
"full_name": "curl",
|
||||||
"version": "7.85.0",
|
"version": "7.87.0",
|
||||||
"declared_directly": true
|
"declared_directly": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -249,12 +258,12 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"full_name": "freetds",
|
"full_name": "freetds",
|
||||||
"version": "1.3.13",
|
"version": "1.3.17",
|
||||||
"declared_directly": true
|
"declared_directly": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"full_name": "libpng",
|
"full_name": "libpng",
|
||||||
"version": "1.6.37",
|
"version": "1.6.39",
|
||||||
"declared_directly": false
|
"declared_directly": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -264,12 +273,12 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"full_name": "fontconfig",
|
"full_name": "fontconfig",
|
||||||
"version": "2.14.0",
|
"version": "2.14.2",
|
||||||
"declared_directly": false
|
"declared_directly": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"full_name": "jpeg-turbo",
|
"full_name": "jpeg-turbo",
|
||||||
"version": "2.1.4",
|
"version": "2.1.5",
|
||||||
"declared_directly": false
|
"declared_directly": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -278,13 +287,13 @@
|
|||||||
"declared_directly": false
|
"declared_directly": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"full_name": "imath",
|
"full_name": "highway",
|
||||||
"version": "3.1.5",
|
"version": "1.0.3",
|
||||||
"declared_directly": false
|
"declared_directly": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"full_name": "openexr",
|
"full_name": "imath",
|
||||||
"version": "3.1.5",
|
"version": "3.1.6",
|
||||||
"declared_directly": false
|
"declared_directly": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -292,14 +301,24 @@
|
|||||||
"version": "4.4.0",
|
"version": "4.4.0",
|
||||||
"declared_directly": false
|
"declared_directly": false
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"full_name": "little-cms2",
|
||||||
|
"version": "2.14",
|
||||||
|
"declared_directly": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"full_name": "openexr",
|
||||||
|
"version": "3.1.5",
|
||||||
|
"declared_directly": false
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"full_name": "webp",
|
"full_name": "webp",
|
||||||
"version": "1.2.4",
|
"version": "1.3.0",
|
||||||
"declared_directly": false
|
"declared_directly": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"full_name": "jpeg-xl",
|
"full_name": "jpeg-xl",
|
||||||
"version": "0.6.1",
|
"version": "0.8.1",
|
||||||
"declared_directly": false
|
"declared_directly": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -309,12 +328,12 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"full_name": "aom",
|
"full_name": "aom",
|
||||||
"version": "3.4.0",
|
"version": "3.5.0",
|
||||||
"declared_directly": false
|
"declared_directly": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"full_name": "libavif",
|
"full_name": "libavif",
|
||||||
"version": "0.10.1",
|
"version": "0.11.1",
|
||||||
"declared_directly": false
|
"declared_directly": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -329,17 +348,17 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"full_name": "icu4c",
|
"full_name": "icu4c",
|
||||||
"version": "71.1",
|
"version": "72.1",
|
||||||
"declared_directly": true
|
"declared_directly": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"full_name": "krb5",
|
"full_name": "krb5",
|
||||||
"version": "1.20",
|
"version": "1.20.1",
|
||||||
"declared_directly": true
|
"declared_directly": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"full_name": "libpq",
|
"full_name": "libpq",
|
||||||
"version": "14.5",
|
"version": "15.1",
|
||||||
"declared_directly": true
|
"declared_directly": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -359,17 +378,17 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"full_name": "pcre2",
|
"full_name": "pcre2",
|
||||||
"version": "10.40",
|
"version": "10.42",
|
||||||
"declared_directly": true
|
"declared_directly": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"full_name": "readline",
|
"full_name": "readline",
|
||||||
"version": "8.1.2",
|
"version": "8.2.1",
|
||||||
"declared_directly": false
|
"declared_directly": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"full_name": "sqlite",
|
"full_name": "sqlite",
|
||||||
"version": "3.39.2",
|
"version": "3.40.1",
|
||||||
"declared_directly": true
|
"declared_directly": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -382,7 +401,7 @@
|
|||||||
"installed_on_request": true
|
"installed_on_request": true
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"linked_keg": "8.1.10_1",
|
"linked_keg": "8.2.2",
|
||||||
"pinned": false,
|
"pinned": false,
|
||||||
"outdated": false,
|
"outdated": false,
|
||||||
"deprecated": false,
|
"deprecated": false,
|
||||||
@ -390,6 +409,8 @@
|
|||||||
"deprecation_reason": null,
|
"deprecation_reason": null,
|
||||||
"disabled": false,
|
"disabled": false,
|
||||||
"disable_date": null,
|
"disable_date": null,
|
||||||
"disable_reason": null
|
"disable_reason": null,
|
||||||
|
"tap_git_head": "0bbb89420e74756a5a5c145ed7efa4a32f7e7e7c"
|
||||||
}
|
}
|
||||||
]
|
|
||||||
|
]
|
||||||
|
Reference in New Issue
Block a user