Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/api/actor.api.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@ import {isNullish, nonNullish, notEmptyString} from '@dfinity/utils';
import {Ed25519KeyIdentity} from '@icp-sdk/core/identity';
import type {ActorParameters} from '@junobuild/ic-client/actor';
import {green, red, yellow} from 'kleur';
import {getToken} from '../configs/cli.config';
import {readEmulatorConfig} from '../configs/emulator.config';
import {ENV} from '../env';
import {getToken} from '../stores/config.store';
import {noConfigFile} from '../utils/cli.config.utils';
import {getProcessToken, isHeadless} from '../utils/process.utils';
import {initAgent} from './agent.api';
Expand Down
2 changes: 1 addition & 1 deletion src/cli/env.loader.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import {notEmptyString} from '@dfinity/utils';
import {nextArg} from '@junobuild/cli-tools';
import {type JunoCliConfig, type JunoCliEnv, type JunoConsole} from '../types/cli/cli.env';
import {type JunoCliConfig, type JunoCliEnv, type JunoConsole} from '../types/env';

export const loadEnv = (): JunoCliEnv => {
const [_, ...args] = process.argv.slice(2);
Expand Down
2 changes: 1 addition & 1 deletion src/commands/auth.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,11 @@ import {Ed25519KeyIdentity} from '@icp-sdk/core/identity';
import {assertAnswerCtrlC, hasArgs} from '@junobuild/cli-tools';
import {green, red} from 'kleur';
import prompts from 'prompts';
import {clearCliConfig, getToken} from '../configs/cli.config';
import {DEV} from '../env';
import {loginEmulatorOnly} from '../services/auth/login.emulator.services';
import {login as loginServices} from '../services/auth/login.services';
import {reuseController} from '../services/controllers.services';
import {clearCliConfig, getToken} from '../stores/config.store';
import {confirmAndExitUnlessHeadlessAndDev} from '../utils/prompt.utils';

export const logout = async () => {
Expand Down
2 changes: 1 addition & 1 deletion src/commands/status.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,13 @@ import {
} from '@junobuild/admin';
import {red, yellow} from 'kleur';
import {actorParameters} from '../api/actor.api';
import {getCliMissionControl} from '../configs/cli.config';
import {
MISSION_CONTROL_WASM_NAME,
ORBITER_WASM_NAME,
SATELLITE_WASM_NAME
} from '../constants/constants';
import {checkVersion, getSatelliteVersion} from '../services/version/version.services';
import {getCliMissionControl} from '../stores/config.store';
import type {AssetKey} from '../types/asset-key';
import {toAssetKeys} from '../utils/asset-key.utils';
import {orbiterKey, satelliteKey} from '../utils/cli.config.utils';
Expand Down
2 changes: 1 addition & 1 deletion src/commands/whoami.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import {isNullish, nonNullish} from '@dfinity/utils';
import {Ed25519KeyIdentity} from '@icp-sdk/core/identity';
import {green} from 'kleur';
import {getToken} from '../configs/cli.config';
import {ENV} from '../env';
import {links} from '../services/links.services';
import {getToken} from '../stores/config.store';

export const whoami = async () => {
const {success} = await info();
Expand Down
16 changes: 0 additions & 16 deletions src/configs/cli.settings.config.ts

This file was deleted.

4 changes: 2 additions & 2 deletions src/constants/config.constants.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import type {Schema} from 'conf';
import {ENV} from '../env';
import {type CliConfig} from '../types/cli/cli.config';
import {type CliDefaultOptions, type CliOptions} from '../types/cli/cli.options';
import {type CliConfig} from '../types/stores/config';
import {type CliDefaultOptions, type CliOptions} from '../types/stores/options';

const schema: Schema<CliConfig> = {
token: {
Expand Down
2 changes: 1 addition & 1 deletion src/services/auth/login.emulator.services.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@ import {notEmptyString} from '@dfinity/utils';
import {type PrincipalText} from '@junobuild/schema';
import {green, red} from 'kleur';
import ora from 'ora';
import {saveCliConfig} from '../../configs/cli.config';
import {readEmulatorConfig} from '../../configs/emulator.config';
import {ENV} from '../../env';
import {saveCliConfig} from '../../stores/config.store';
import {generateToken} from '../../utils/auth.utils';
import {assertConfigAndReadSatelliteId} from '../../utils/juno.config.utils';
import {dispatchRequest} from '../emulator/admin.services';
Expand Down
2 changes: 1 addition & 1 deletion src/services/auth/login.services.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import {createServer} from 'node:http';
import path, {dirname} from 'node:path';
import {fileURLToPath} from 'node:url';
import util from 'node:util';
import {saveCliConfig} from '../../configs/cli.config';
import {saveCliConfig} from '../../stores/config.store';
import {authUrl, generateToken, requestUrl} from '../../utils/auth.utils';
import {openUrl} from '../../utils/open.utils';
import {getPort} from '../../utils/port.utils';
Expand Down
6 changes: 3 additions & 3 deletions src/services/config/apply.services.ts
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@ import type {
} from '@junobuild/config';
import {red, yellow} from 'kleur';
import ora from 'ora';
import {getLatestAppliedConfig, saveLastAppliedConfig} from '../../configs/cli.state.config';
import {
DEFAULT_COMPUTE_ALLOCATION,
DEFAULT_LOG_VISIBILITY,
Expand All @@ -36,14 +35,15 @@ import {
DEFAULT_SATELLITE_FREEZING_THRESHOLD,
DEFAULT_SATELLITE_HEAP_WASM_MEMORY_LIMIT
} from '../../constants/settings.constants';
import {getLatestAppliedConfig, saveLastAppliedConfig} from '../../stores/state.store';
import type {SatelliteParametersWithId} from '../../types/satellite';
import {
type CliStateSatelliteAppliedCollection,
type CliStateSatelliteAppliedConfigHashes,
type ConfigHash,
type RuleHash,
type SettingsHash
} from '../../types/cli/cli.state';
import type {SatelliteParametersWithId} from '../../types/satellite';
} from '../../types/stores/state';
import {assertConfigAndLoadSatelliteContext} from '../../utils/juno.config.utils';
import {objHash} from '../../utils/obj.utils';
import {isHeadless} from '../../utils/process.utils';
Expand Down
4 changes: 2 additions & 2 deletions src/services/config/init.services.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ import {cyan, yellow} from 'kleur';
import {unlink} from 'node:fs/promises';
import {basename} from 'node:path';
import prompts from 'prompts';
import {getCliOrbiters, getCliSatellites, getToken} from '../../configs/cli.config';
import {
detectJunoConfigType,
junoConfigExist,
Expand All @@ -14,9 +13,10 @@ import {
writeJunoConfig,
writeJunoConfigPlaceholder
} from '../../configs/juno.config';
import type {CliOrbiterConfig, CliSatelliteConfig} from '../../types/cli/cli.config';
import {getCliOrbiters, getCliSatellites, getToken} from '../../stores/config.store';
import {type EmulatorConfigWithoutConsole} from '../../types/emulator';
import type {PackageManager} from '../../types/pm';
import type {CliOrbiterConfig, CliSatelliteConfig} from '../../types/stores/config';
import {detectPackageManager} from '../../utils/pm.utils';
import {confirm, confirmAndExit, NEW_CMD_LINE} from '../../utils/prompt.utils';
import {login as consoleLogin} from '../auth/login.services';
Expand Down
2 changes: 1 addition & 1 deletion src/services/controllers.services.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@ import {type Principal} from '@icp-sdk/core/principal';
import {assertAnswerCtrlC} from '@junobuild/cli-tools';
import {bold, green, red} from 'kleur';
import prompts from 'prompts';
import {addCliMissionControl, addCliOrbiter, addCliSatellite} from '../configs/cli.config';
import {ENV} from '../env';
import {addCliMissionControl, addCliOrbiter, addCliSatellite} from '../stores/config.store';
import {type AssetKey} from '../types/asset-key';
import {displaySegment} from '../utils/display.utils';
import {terminalLink} from '../utils/links.utils';
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import {isNullish} from '@dfinity/utils';
import {red} from 'kleur';
import {getCliMissionControl} from '../../../configs/cli.config';
import {getCliMissionControl} from '../../../stores/config.store';
import type {AssetKey} from '../../../types/asset-key';
import {
createSnapshot,
Expand Down
2 changes: 1 addition & 1 deletion src/services/modules/start-stop.services.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import {Principal} from '@icp-sdk/core/principal';
import {cyan, red} from 'kleur';
import ora from 'ora';
import {canisterStart, canisterStop} from '../../api/ic.api';
import {getCliMissionControl} from '../../configs/cli.config';
import {getCliMissionControl} from '../../stores/config.store';
import type {AssetKey} from '../../types/asset-key';
import type {StartStopAction} from '../../types/start-stop';
import {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@ import type {MissionControlParameters} from '@junobuild/ic-client/actor';
import type {PrincipalText} from '@junobuild/schema';
import {cyan, red} from 'kleur';
import {actorParameters} from '../../../api/actor.api';
import {getCliMissionControl} from '../../../configs/cli.config';
import {MISSION_CONTROL_WASM_NAME} from '../../../constants/constants';
import {getCliMissionControl} from '../../../stores/config.store';
import type {UpgradeWasmModule} from '../../../types/upgrade';
import {NEW_CMD_LINE} from '../../../utils/prompt.utils';
import {logUpgradeResult, readUpgradeOptions} from '../../../utils/upgrade.utils';
Expand Down
2 changes: 1 addition & 1 deletion src/services/version/version.check.services.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import {isNullish} from '@dfinity/utils';
import prompts from 'prompts';
import {isWeeklyCheckEnabled, toggleWeeklyCheck} from '../../configs/cli.versions.config';
import {isWeeklyCheckEnabled, toggleWeeklyCheck} from '../../stores/versions.store';

export const enableDisableVersionCheck = async () => {
const current = isWeeklyCheckEnabled();
Expand Down
12 changes: 6 additions & 6 deletions src/services/version/version.check.weekly.services.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,17 @@ import {isNullish, nonNullish} from '@dfinity/utils';
import ora from 'ora';
import {compare} from 'semver';
import {version as cliCurrentVersion} from '../../../package.json';
import {
getCachedVersions,
saveCachedVersions,
updateLastCheckToNow
} from '../../configs/cli.versions.config';
import {
githubCliLastRelease,
githubJunoDockerLastRelease,
type GithubLastReleaseResult
} from '../../rest/github.rest';
import {type CachedVersions} from '../../types/cli/cli.versions';
import {
getCachedVersions,
saveCachedVersions,
updateLastCheckToNow
} from '../../stores/versions.store';
import {type CachedVersions} from '../../types/stores/versions';
import {pmInstallHint} from '../../utils/pm.utils';
import {findEmulatorVersion} from '../emulator/version.services';
import {
Expand Down
4 changes: 2 additions & 2 deletions src/configs/cli.config.ts → src/stores/config.store.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@ import type {JsonnableEd25519KeyIdentity} from '@icp-sdk/core/identity';
import type Conf from 'conf';
import {red, yellow} from 'kleur';
import {askForPassword} from '../services/cli.settings.services';
import {getSettingsStore} from '../stores/settings.store';
import type {CliConfig, CliOrbiterConfig, CliSatelliteConfig} from '../types/cli/cli.config';
import type {CliConfig, CliOrbiterConfig, CliSatelliteConfig} from '../types/stores/config';
import {loadConfig} from '../utils/cli.config.utils';
import {getSettingsStore} from './settings.store';

// Save in https://github.com/sindresorhus/env-paths#pathsconfig

Expand Down
21 changes: 17 additions & 4 deletions src/stores/settings.store.ts
Original file line number Diff line number Diff line change
@@ -1,13 +1,26 @@
import {isNullish, nonNullish} from '@dfinity/utils';
import type Conf from 'conf';
import Conf, {type Schema} from 'conf';
import {yellow} from 'kleur';
import {getSettingsConfig, saveEncryption} from '../configs/cli.settings.config';
import {ENV} from '../env';
import {askForPassword} from '../services/cli.settings.services';
import type {CliSettings} from '../types/cli/cli.settings';
import type {CliSettings} from '../types/stores/settings';
import {configFileExists, loadConfig} from '../utils/cli.config.utils';
import {isHeadless} from '../utils/process.utils';
import {confirm} from '../utils/prompt.utils';

const schema: Schema<CliSettings> = {
encryption: {
type: 'boolean'
}
} as const;

const getStore = (): Conf<CliSettings> =>
new Conf<CliSettings>({projectName: ENV.config.projectSettingsName, schema});

const saveEncryption = (encryption: boolean) => {
getStore().set('encryption', encryption);
};

class SettingsConfigStore {
readonly #config: Conf<CliSettings>;

Expand All @@ -16,7 +29,7 @@ class SettingsConfigStore {
}

static async init(): Promise<SettingsConfigStore> {
const store = new SettingsConfigStore(getSettingsConfig());
const store = new SettingsConfigStore(getStore());

if (isHeadless()) {
return store;
Expand Down
8 changes: 4 additions & 4 deletions src/configs/cli.state.config.ts → src/stores/state.store.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,23 +5,23 @@ import {
type CliState,
type CliStateSatellite,
type CliStateSatelliteAppliedConfigHashes
} from '../types/cli/cli.state';
} from '../types/stores/state';

const getStateConfig = (): Conf<CliState> =>
const getStore = (): Conf<CliState> =>
new Conf<CliState>({projectName: ENV.config.projectStateName});

export const getLatestAppliedConfig = ({
satelliteId
}: {
satelliteId: PrincipalText;
}): CliStateSatelliteAppliedConfigHashes | undefined =>
getStateConfig().get('satellites')?.[satelliteId]?.lastAppliedConfig;
getStore().get('satellites')?.[satelliteId]?.lastAppliedConfig;

export const saveLastAppliedConfig = ({
satelliteId,
lastAppliedConfig: {storage, datastore, auth, settings, collections}
}: {satelliteId: PrincipalText} & Pick<CliStateSatellite, 'lastAppliedConfig'>) => {
const config = getStateConfig();
const config = getStore();

const satellites = config.get('satellites');

Expand Down
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
import Conf from 'conf';
import {type CachedVersion, type CachedVersions} from '../types/cli/cli.versions';
import {type CachedVersion, type CachedVersions} from '../types/stores/versions';

const getVersionConfig = (): Conf<CachedVersions> =>
const getStore = (): Conf<CachedVersions> =>
new Conf<CachedVersions>({projectName: 'juno-cli-versions'});

export const getCachedVersions = (): Conf<CachedVersions> => getVersionConfig();
export const getCachedVersions = (): Conf<CachedVersions> => getStore();

export const isWeeklyCheckEnabled = (): boolean =>
getCachedVersions().get('weeklyCheckEnabled') !== false;

export const isWeeklyCheckDisabled = (): boolean => !isWeeklyCheckEnabled();

export const toggleWeeklyCheck = (enabled: boolean) => {
const config = getVersionConfig();
const config = getStore();
config.set('weeklyCheckEnabled', enabled);
};

Expand All @@ -21,7 +21,7 @@ export const updateLastCheckToNow = ({
}: {
key: keyof Omit<CachedVersions, 'weeklyCheckEnabled'>;
}) => {
const config = getVersionConfig();
const config = getStore();

const currentVersions = config.get(key);

Expand All @@ -38,7 +38,7 @@ export const saveCachedVersions = ({
key: keyof CachedVersions;
versions: Omit<CachedVersion, 'lastCheck'>;
}) => {
const config = getVersionConfig();
const config = getStore();
config.set(key, {
lastCheck: new Date().toISOString(),
...versions
Expand Down
File renamed without changes.
File renamed without changes.
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import type {Options as ConfOptions} from 'conf';
import {type CliConfig} from './cli.config';
import {type CliConfig} from './config';

type CliConfigRequiredOptions = Required<ConfOptions<CliConfig>>;

Expand Down
File renamed without changes.
File renamed without changes.
File renamed without changes.
4 changes: 2 additions & 2 deletions src/utils/cli.config.utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@ import Conf from 'conf';
import envPaths from 'env-paths';
import {existsSync} from 'node:fs';
import {resolve} from 'node:path';
import {getCliOrbiters, getCliSatellites} from '../configs/cli.config';
import {CONFIG_OPTIONS} from '../constants/config.constants';
import type {CliConfig} from '../types/cli/cli.config';
import {getCliOrbiters, getCliSatellites} from '../stores/config.store';
import type {CliConfig} from '../types/stores/config';

export const loadConfig = (encryptionKey: string | undefined): Conf<CliConfig> => {
return new Conf<CliConfig>({
Expand Down
2 changes: 1 addition & 1 deletion src/version.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import {isWeeklyCheckDisabled} from './configs/cli.versions.config';
import {
checkCliVersion,
checkEmulatorVersion
} from './services/version/version.check.weekly.services';
import {isWeeklyCheckDisabled} from './stores/versions.store';
import {isHeadless} from './utils/process.utils';

export const checkWeeklyVersions = async ({cmd, args}: {cmd: string; args?: string[]}) => {
Expand Down
Loading