* Copyright (C) 2023 Red Hat, Inc.
* SPDX-License-Identifier: LGPL-2.1-or-later
*/
import cockpit from "cockpit";
import { debug } from "../helpers/log.js";
import { Page as PageDateAndTime } from "./datetime/index.js";
import { Page as PageProgress } from "./installation/index.js";
import { Page as PageInstallationLanguage } from "./localization/index.js";
import { Page as PageNetworkConfiguration } from "./network/index.js";
import { Page as PageReviewConfiguration } from "./review/index.js";
import { Page as PageSoftwareSelection } from "./software/index.js";
import { Page as PageInstallationMethod } from "./storage/installation-method/index.js";
import { Page as PageMountPointMapping } from "./storage/mount-point-mapping/index.js";
import { Page as PageStorageConfiguration } from "./storage/storage-configuration/index.js";
import { Page as PageAccounts } from "./users/index.js";
const _ = cockpit.gettext;
export const getSteps = (automatedInstall, userInterfaceConfig, args) => {
const mountPointMappingStep = new PageMountPointMapping(args);
const hiddenScreens = userInterfaceConfig.hidden_webui_pages || [];
const stepsOrder = [
new PageInstallationLanguage(args),
new PageNetworkConfiguration(args),
new PageDateAndTime(args),
new PageSoftwareSelection(args),
new PageInstallationMethod(args),
new PageStorageConfiguration(args),
{
id: "anaconda-screen-storage-configuration-manual",
isHidden: mountPointMappingStep.isHidden,
label: _("Storage configuration"),
steps: [mountPointMappingStep],
},
new PageAccounts(args),
new PageReviewConfiguration(args),
new PageProgress(args),
];
* 1. Dynamically: Controlled by the 'Page.isHidden' method in individual components,
* e.g., see 'MountPointMapping.jsx'.
* 2. Statically: Configured via the 'hidden_webui_pages' key in the 'anaconda.conf'
* For example, the 'Account Creation' screen is hidden in the 'Workstation' ISO
* because this step is handled by the 'Gnome Initial Setup' tool during the first boot.
*/
return stepsOrder
.filter(s => {
const isHidden = hiddenScreens.includes(s.id);
if (isHidden) {
debug(
`Screen '${s.id}' will not be displayed because it is hidden by the Anaconda configuration file.`
);
}
return !isHidden;
})
.map((s, i) => {
s.isFirstScreen = automatedInstall ? s.id === "anaconda-screen-review" : i === 0;
return s;
});
};