Skip to content

Commit aa519f3

Browse files
committed
feat: refactored common methods
1 parent 26658f6 commit aa519f3

10 files changed

Lines changed: 332 additions & 403 deletions

File tree

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "default",
3-
"version": "1.8.3",
3+
"version": "1.9.0-beta.1",
44
"description": "Default plugin for Codify - provides 50+ declarative resources for managing development tools and system configuration across macOS and Linux",
55
"main": "dist/index.js",
66
"scripts": {

src/resources/jetbrains/clion/clion.ts

Lines changed: 16 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -15,18 +15,9 @@ import { OS } from '@codifycli/schemas';
1515
import fs from 'node:fs/promises';
1616

1717
import {
18+
JetBrainsCommon,
1819
JetBrainsPluginsParameter,
1920
JetBrainsProductInfo,
20-
findConfigDir,
21-
getOrCreateConfigDir,
22-
installLinux,
23-
installMacOS,
24-
isInstalled,
25-
readVmOptions,
26-
removeVmOptions,
27-
uninstallLinux,
28-
uninstallMacOS,
29-
writeVmOptions,
3021
} from '../common/jetbrains-common.js';
3122

3223
const PRODUCT: JetBrainsProductInfo = {
@@ -127,14 +118,14 @@ export class ClionResource extends Resource<ClionConfig> {
127118
}
128119

129120
override async refresh(parameters: Partial<ClionConfig>): Promise<Partial<ClionConfig> | null> {
130-
const installed = await isInstalled(PRODUCT);
121+
const installed = await JetBrainsCommon.isInstalled(PRODUCT);
131122
if (!installed) return null;
132123

133124
const result: Partial<ClionConfig> = {};
134125

135-
const configDir = await findConfigDir(PRODUCT);
126+
const configDir = await JetBrainsCommon.findConfigDir(PRODUCT);
136127
if (configDir) {
137-
const vmOptions = await readVmOptions(PRODUCT, configDir);
128+
const vmOptions = await JetBrainsCommon.readVmOptions(PRODUCT, configDir);
138129
if (parameters.jvmMaxHeapSize != null) result.jvmMaxHeapSize = vmOptions.maxHeap;
139130
if (parameters.jvmMinHeapSize != null) result.jvmMinHeapSize = vmOptions.minHeap;
140131
}
@@ -144,9 +135,9 @@ export class ClionResource extends Resource<ClionConfig> {
144135

145136
override async create(plan: CreatePlan<ClionConfig>): Promise<void> {
146137
if (Utils.isMacOS()) {
147-
await installMacOS(PRODUCT);
138+
await JetBrainsCommon.installMacOS(PRODUCT);
148139
} else {
149-
await installLinux(PRODUCT);
140+
await JetBrainsCommon.installLinux(PRODUCT);
150141
}
151142

152143
const { settingsZip, importSettings = true, jvmMaxHeapSize, jvmMinHeapSize } = plan.desiredConfig;
@@ -156,40 +147,40 @@ export class ClionResource extends Resource<ClionConfig> {
156147
}
157148

158149
if (jvmMaxHeapSize != null || jvmMinHeapSize != null) {
159-
const configDir = await getOrCreateConfigDir(PRODUCT);
150+
const configDir = await JetBrainsCommon.getOrCreateConfigDir(PRODUCT);
160151
if (configDir) {
161-
await writeVmOptions(PRODUCT, configDir, jvmMaxHeapSize, jvmMinHeapSize);
152+
await JetBrainsCommon.writeVmOptions(PRODUCT, configDir, jvmMaxHeapSize, jvmMinHeapSize);
162153
}
163154
}
164155
}
165156

166157
override async modify(pc: ParameterChange<ClionConfig>, plan: ModifyPlan<ClionConfig>): Promise<void> {
167158
if (pc.name !== 'jvmMaxHeapSize' && pc.name !== 'jvmMinHeapSize') return;
168159

169-
const configDir = await getOrCreateConfigDir(PRODUCT);
160+
const configDir = await JetBrainsCommon.getOrCreateConfigDir(PRODUCT);
170161
if (!configDir) return;
171162

172163
const { jvmMaxHeapSize, jvmMinHeapSize } = plan.desiredConfig;
173164

174165
if (jvmMaxHeapSize == null && jvmMinHeapSize == null) {
175-
await removeVmOptions(PRODUCT, configDir);
166+
await JetBrainsCommon.removeVmOptions(PRODUCT, configDir);
176167
} else {
177-
await writeVmOptions(PRODUCT, configDir, jvmMaxHeapSize, jvmMinHeapSize);
168+
await JetBrainsCommon.writeVmOptions(PRODUCT, configDir, jvmMaxHeapSize, jvmMinHeapSize);
178169
}
179170
}
180171

181172
override async destroy(plan: DestroyPlan<ClionConfig>): Promise<void> {
182173
const { jvmMaxHeapSize, jvmMinHeapSize } = plan.currentConfig;
183174

184175
if (jvmMaxHeapSize != null || jvmMinHeapSize != null) {
185-
const configDir = await findConfigDir(PRODUCT);
186-
if (configDir) await removeVmOptions(PRODUCT, configDir);
176+
const configDir = await JetBrainsCommon.findConfigDir(PRODUCT);
177+
if (configDir) await JetBrainsCommon.removeVmOptions(PRODUCT, configDir);
187178
}
188179

189180
if (Utils.isMacOS()) {
190-
await uninstallMacOS(PRODUCT);
181+
await JetBrainsCommon.uninstallMacOS(PRODUCT);
191182
} else {
192-
await uninstallLinux(PRODUCT);
183+
await JetBrainsCommon.uninstallLinux(PRODUCT);
193184
}
194185
}
195186

@@ -201,7 +192,7 @@ export class ClionResource extends Resource<ClionConfig> {
201192
await Utils.installViaPkgMgr('unzip');
202193
}
203194

204-
const configDir = await getOrCreateConfigDir(PRODUCT);
195+
const configDir = await JetBrainsCommon.getOrCreateConfigDir(PRODUCT);
205196
if (!configDir) {
206197
throw new Error('Cannot determine CLion config directory for settings import.');
207198
}

0 commit comments

Comments
 (0)