refactor: attempted autoupdate configuration

This commit is contained in:
hanna
2024-07-19 10:04:48 -07:00
committed by Mitchell Hashimoto
parent 5e553f2743
commit fd9d38481b
4 changed files with 33 additions and 1 deletions

View File

@ -12,6 +12,7 @@
extern "C" { extern "C" {
#endif #endif
#include <stddef.h>
#include <stdbool.h> #include <stdbool.h>
#include <stddef.h> #include <stddef.h>
#include <stdint.h> #include <stdint.h>

View File

@ -108,7 +108,13 @@ class AppDelegate: NSObject,
// Initial config loading // Initial config loading
configDidReload(ghostty) configDidReload(ghostty)
updaterController.updater.updateCheckInterval = 60
updaterController.updater.automaticallyChecksForUpdates =
ghostty.config.autoUpdates == "check" || ghostty.config.autoUpdates == "download"
updaterController.updater.automaticallyDownloadsUpdates =
ghostty.config.autoUpdates == "download"
// Register our service provider. This must happen after everything is initialized. // Register our service provider. This must happen after everything is initialized.
NSApp.servicesProvider = ServiceProvider() NSApp.servicesProvider = ServiceProvider()

View File

@ -360,6 +360,17 @@ extension Ghostty {
_ = ghostty_config_get(config, &v, key, UInt(key.count)) _ = ghostty_config_get(config, &v, key, UInt(key.count))
return v; return v;
} }
var autoUpdates: String {
let defaultValue = "off"
guard let config = self.config else { return defaultValue }
let key = "auto-updates"
var value: UnsafePointer<Int8>? = nil
guard ghostty_config_get(config, &value, key, UInt(key.count)) else { return defaultValue }
guard let pointer = value else { return defaultValue }
return String(cString: pointer)
}
} }
} }

View File

@ -1462,6 +1462,13 @@ term: []const u8 = "xterm-ghostty",
/// running. Defaults to an empty string if not set. /// running. Defaults to an empty string if not set.
@"enquiry-response": []const u8 = "", @"enquiry-response": []const u8 = "",
/// This controls the automatic update functionality on macOS by setting the
/// properties on the Squirrel automatic update component. By default this is
/// set to "off" which doesn't do anything. The "check" option will automatically
/// check for updates but will NOT download them, while as the "download" option
/// will both check AND download updates automatically for the user.
@"auto-updates": AutoUpdates = .off,
/// This is set by the CLI parser for deinit. /// This is set by the CLI parser for deinit.
_arena: ?ArenaAllocator = null, _arena: ?ArenaAllocator = null,
@ -4096,6 +4103,13 @@ pub const LinuxCgroup = enum {
@"single-instance", @"single-instance",
}; };
/// See auto-updates
pub const AutoUpdates = enum {
check,
download,
off,
};
pub const Duration = struct { pub const Duration = struct {
/// Duration in nanoseconds /// Duration in nanoseconds
duration: u64 = 0, duration: u64 = 0,