ramensoftware/windhawk · info

- apply the archived Windhawk app settings

Error message

  - apply the archived Windhawk app settings

What it means

One line of the `data import` dry-run plan: ' - apply the archived Windhawk app settings'. It is printed when the selection includes app settings and the archive actually contains them, telling the user that global Windhawk settings will be overwritten on the real run.

Solutions

  1. This is informational only; add `--yes` to proceed with the import
  2. Exclude app settings from the selection if you do not want them applied
  3. Compare current app settings with the archive first if the overwrite is a concern
Defensive patterns

Strategy: validation

Validate before calling

if wants_app_settings_import && archive_has_app_settings { confirm_overwrite(); }

Try / catch

null

Prevention

When it happens

Trigger: Running `data import` without `--yes` on an archive whose appSettings are present, with app settings enabled in the selection (default or via flags).

Common situations: Users restoring a full backup and reviewing exactly what will be touched before committing; scripts diffing dry-run output before automating with `--yes`.

Understand the failure class

Background: "--flag is required" and "must specify" CLI errors: how missing-required-flag validation works and how to fix it — this error's family across 20 libraries.

Related errors


AI-assisted analysis of ramensoftware/windhawk@61d99ed8e1 (2026-09-12). Data as JSON: /api/errors/7f47fb7e22b1023b. Report an issue: GitHub.

Appendix: source

Thrown at src/windhawk-core/cli/src/commands/data.rs:203

        ModScope::Keyword(ModScopeKeyword::AllExceptLocal) => {
            all().filter(|id| !is_local_id(id)).collect()
        }
        ModScope::Keyword(ModScopeKeyword::All) => all().collect(),
    }
}

/// Print the planned import actions to stderr, so a run without `--yes` shows
/// what it would do before refusing (exit 2).
fn print_import_plan(
    env: &Environment,
    manifest: &UserDataManifest,
    selection: &UserDataSelection,
) {
    let scope = import_scope_ids(manifest, &selection.mods);
    env.logger.warn("data import would (with --yes):");
    if selection.app_settings && manifest.has_app_settings {
        env.logger
            .warn("  - apply the archived Windhawk app settings");
    }
    env.logger
        .warn(&format!("  - import {} mod(s):", scope.len()));
    for m in &manifest.mods {
        if scope.contains(&m.mod_id) {
            env.logger
                .warn(&format!("      {} {}", m.mod_id, m.version));
        }
    }
}

/// Render a core import-progress event on stderr (via the logger, so `--quiet`
/// suppresses the informational lines but keeps failure warnings). A stamped
/// `compileTarget` event names the mod being compiled; the per-mod
/// `ImportProgress` markers report the start and terminal outcome of each mod.
fn report_import_progress(logger: Logger, event: &OperationEvent) {
    let OperationEvent::Progress { payload } = event else {
        return;

View on GitHub (pinned to 61d99ed8e1)