62 lines
1.9 KiB
TypeScript
62 lines
1.9 KiB
TypeScript
import { logEvent } from 'src/services/analytics/index.js'
|
|
import { getGlobalConfig, saveGlobalConfig } from '../utils/config.js'
|
|
import { logError } from '../utils/log.js'
|
|
import {
|
|
getSettingsForSource,
|
|
updateSettingsForSource,
|
|
} from '../utils/settings/settings.js'
|
|
/**
|
|
* Migration: Move user-set autoUpdates preference to settings.json env var
|
|
* Only migrates if user explicitly disabled auto-updates (not for protection)
|
|
* This preserves user intent while allowing native installations to auto-update
|
|
*/
|
|
export function migrateAutoUpdatesToSettings(): void {
|
|
const globalConfig = getGlobalConfig()
|
|
|
|
// Only migrate if autoUpdates was explicitly set to false by user preference
|
|
// (not automatically for native protection)
|
|
if (
|
|
globalConfig.autoUpdates !== false ||
|
|
globalConfig.autoUpdatesProtectedForNative === true
|
|
) {
|
|
return
|
|
}
|
|
|
|
try {
|
|
const userSettings = getSettingsForSource('userSettings') || {}
|
|
|
|
// Always set DISABLE_AUTOUPDATER to preserve user intent
|
|
// We need to overwrite even if it exists, to ensure the migration is complete
|
|
updateSettingsForSource('userSettings', {
|
|
...userSettings,
|
|
env: {
|
|
...userSettings.env,
|
|
DISABLE_AUTOUPDATER: '1',
|
|
},
|
|
})
|
|
|
|
logEvent('tengu_migrate_autoupdates_to_settings', {
|
|
was_user_preference: true,
|
|
already_had_env_var: !!userSettings.env?.DISABLE_AUTOUPDATER,
|
|
})
|
|
|
|
// explicitly set, so this takes effect immediately
|
|
process.env.DISABLE_AUTOUPDATER = '1'
|
|
|
|
// Remove autoUpdates from global config after successful migration
|
|
saveGlobalConfig(current => {
|
|
const {
|
|
autoUpdates: _,
|
|
autoUpdatesProtectedForNative: __,
|
|
...updatedConfig
|
|
} = current
|
|
return updatedConfig
|
|
})
|
|
} catch (error) {
|
|
logError(new Error(`Failed to migrate auto-updates: ${error}`))
|
|
logEvent('tengu_migrate_autoupdates_error', {
|
|
has_error: true,
|
|
})
|
|
}
|
|
}
|