75 |
aqt list-qt server
76 |
77 |
83 | setState(
84 | S.withHostLoadingVersionsTools(hostFromStr(host as HostString))
85 | )
86 | }
87 | changeTarget={async (target: string) =>
88 | setState(
89 | S.withTargetLoadingVersionsTools(
90 | targetFromStr(target as TargetString)
91 | )
92 | )
93 | }
94 | changeVersion={async (version: string) => {
95 | setState(S.withVersionLoadingArches(version));
96 | if (isInvalid(version)) return;
97 | const { host, target } = state.values();
98 | await loadArches(host, target, version);
99 | }}
100 | changeArch={async (arch: string) => {
101 | setState(S.withArchLoadingModulesArchives(arch));
102 | const { host, target, version } = state.values();
103 | if (isInvalid(arch) || isInvalid(version)) return;
104 | await loadModulesArchives(host, target, version, arch);
105 | }}
106 | />
107 | Choose modules:}
111 | options={state.modules.selections}
112 | toggleAll={(on: boolean) => setState(S.withToggledModules(on))}
113 | toggleOne={(on: boolean, name: string) =>
114 | setState(S.withModuleSet(name, on))
115 | }
116 | />
117 | Choose archives:}
121 | options={state.archives.selections}
122 | toggleAll={(on: boolean) => setState(S.withToggledArchives(on))}
123 | toggleOne={(on: boolean, name: string) =>
124 | setState(S.withArchiveSet(name, on))
125 | }
126 | />
127 |
128 |
{
132 | const { host, target } = state.values();
133 | setState(S.withNewTool(new ToolData(toolName, true, new Map())));
134 | await loadTool(host, target, toolName);
135 | }}
136 | removeTool={(toolName: string) => setState(S.withoutTool(toolName))}
137 | setToolVariant={(toolName: string, toolVariant: string, on: boolean) =>
138 | setState(S.withToolVariant(toolName, toolVariant, on))
139 | }
140 | toggleToolVariants={(toolName: string, on: boolean) =>
141 | setState(S.withToggledToolVariants(toolName, on))
142 | }
143 | />
144 |
148 | Your aqt install{" "}
149 | command:
150 |
151 | }
152 | command={state.toAqtInstallCmd()}
153 | isDisabled={!state.hasOutputs()}
154 | />
155 |
161 | setState(S.withInstallActionVersion(version))
162 | }
163 | >
164 | {options(state.installActionVersion, "install-action-version")}
165 |
166 |
170 | Your{" "}
171 |
172 | jurplel/install-qt-action
173 | {" "}
174 | yml:
175 |
176 | }
177 | command={state.toInstallQtAction()}
178 | isDisabled={!state.hasOutputs()}
179 | />
180 |
184 | Your{" "}
185 |
186 | official qt install
187 | {" "}
188 | {state.isWindows() ? "powershell" : "bash"} command: (Please note
189 | that this command will require patience and CLI option wrangling to
190 | get it to work unattended)
191 |
192 | }
193 | command={state.toOfficialInstallCmd()}
194 | isDisabled={!state.hasOutputs()}
195 | />
196 |
197 | );
198 | };
199 | export default App;
200 |
--------------------------------------------------------------------------------
/src/aqt-list-qt-ts/list-qt-impl.ts:
--------------------------------------------------------------------------------
1 | import {
2 | Directory,
3 | Host,
4 | hostToStr,
5 | OnlineInstallers,
6 | PackageUpdate,
7 | RawPackageUpdates,
8 | Target,
9 | to_package_updates,
10 | UnifiedInstallers,
11 | } from "../lib/types";
12 | import semver, { SemVer } from "semver";
13 | import Config from "../config.json";
14 |
15 | const BASE_URL = Config.QT_JSON_CACHE_BASE_URL;
16 | const HARDCODED_ALLOWED_TOOLS = ["sdktool"];
17 |
18 | export const to_versions = (directory: Directory): string[][] => {
19 | const should_include_folder = (name: string): boolean =>
20 | ["_preview", "_src_doc_examples"].reduce(
21 | (accum: boolean, ext: string) => accum && !name.endsWith(ext),
22 | true
23 | );
24 | const raw_versions = directory.qt
25 | .filter(should_include_folder)
26 | .map((name: string) => name.match(/^qt\d_(\d+)/))
27 | .reduce