Skip to content

Commit 67c106f

Browse files
feat!: enable or disable weekly version check (#491)
* feat: enable or disable weekly version check Signed-off-by: David Dal Busco <david.dalbusco@outlook.com> * feat: enable disable Signed-off-by: David Dal Busco <david.dalbusco@outlook.com> * feat: no weekly if version Signed-off-by: David Dal Busco <david.dalbusco@outlook.com> * chore: fmt Signed-off-by: David Dal Busco <david.dalbusco@outlook.com> * chore. rename Signed-off-by: David Dal Busco <david.dalbusco@outlook.com> * chore: merge main Signed-off-by: David Dal Busco <david.dalbusco@outlook.com> --------- Signed-off-by: David Dal Busco <david.dalbusco@outlook.com>
1 parent 2d33ee0 commit 67c106f

9 files changed

Lines changed: 74 additions & 7 deletions

File tree

src/commands/version.ts

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,21 @@
1+
import {red} from 'kleur';
2+
import {logHelpVersion} from '../help/version.help';
3+
import {enableDisableVersionCheck} from '../services/version/version.check.services';
14
import {printVersion} from '../services/version/version.print.services';
25

36
export const logVersion = async () => {
47
await printVersion();
58
};
9+
10+
export const version = async (args?: string[]) => {
11+
const [subCommand] = args ?? [];
12+
13+
switch (subCommand) {
14+
case 'check':
15+
await enableDisableVersionCheck();
16+
break;
17+
default:
18+
console.log(red('Unknown subcommand.'));
19+
logHelpVersion(args);
20+
}
21+
};

src/configs/cli.versions.config.ts

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,21 @@ const getVersionConfig = (): Conf<CachedVersions> =>
66

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

9-
export const updateLastCheckToNow = ({key}: {key: keyof CachedVersions}) => {
9+
export const isWeeklyCheckEnabled = (): boolean =>
10+
getCachedVersions().get('weeklyCheckEnabled') !== false;
11+
12+
export const isWeeklyCheckDisabled = (): boolean => !isWeeklyCheckEnabled();
13+
14+
export const toggleWeeklyCheck = (enabled: boolean) => {
15+
const config = getVersionConfig();
16+
config.set('weeklyCheckEnabled', enabled);
17+
};
18+
19+
export const updateLastCheckToNow = ({
20+
key
21+
}: {
22+
key: keyof Omit<CachedVersions, 'weeklyCheckEnabled'>;
23+
}) => {
1024
const config = getVersionConfig();
1125

1226
const currentVersions = config.get(key);

src/constants/help.constants.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ export const SNAPSHOT_DESCRIPTION = 'Handle snapshot-related tasks.';
1616
export const START_DESCRIPTION = 'Start a module.';
1717
export const STOP_DESCRIPTION = 'Stop a module.';
1818
export const UPGRADE_DESCRIPTION = 'Upgrade a module to a new version.';
19-
export const VERSION_DESCRIPTION = 'Check the version of the CLI.';
19+
export const VERSION_DESCRIPTION = 'Manage version related tasks.';
2020
export const STATUS_DESCRIPTION = 'Check the status of the modules.';
2121
export const WHOAMI_DESCRIPTION =
2222
'Display your current profile, access key, and links to your satellite.';

src/help/version.help.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
1-
import {cyan, green, yellow} from 'kleur';
1+
import {cyan, green, magenta} from 'kleur';
22
import {OPTION_HELP, VERSION_DESCRIPTION} from '../constants/help.constants';
33
import {helpOutput} from './common.help';
44
import {TITLE} from './help';
55

6-
const usage = `Usage: ${green('juno')} ${cyan('version')} ${yellow('[options]')}
6+
const usage = `Usage: ${green('juno')} ${cyan('version')} ${magenta('<subcommand>')}
7+
8+
Subcommands:
9+
${magenta('check')} Configure the weekly version check.
710
811
Options:
912
${OPTION_HELP}`;

src/index.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ import {helpSnapshot, snapshot} from './commands/snapshot';
1818
import {startStop} from './commands/start-stop';
1919
import {status} from './commands/status';
2020
import {upgrade} from './commands/upgrade';
21-
import {logVersion} from './commands/version';
21+
import {logVersion, version as versionCommand} from './commands/version';
2222
import {whoami} from './commands/whoami';
2323
import {help} from './help/help';
2424
import {logHelpLogin} from './help/login.help';
@@ -149,7 +149,7 @@ export const run = async () => {
149149
await clear();
150150
break;
151151
case 'version':
152-
await logVersion();
152+
await versionCommand(args);
153153
break;
154154
case 'status':
155155
await status();
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
import {isNullish} from '@dfinity/utils';
2+
import prompts from 'prompts';
3+
import {isWeeklyCheckEnabled, toggleWeeklyCheck} from '../../configs/cli.versions.config';
4+
5+
export const enableDisableVersionCheck = async () => {
6+
const current = isWeeklyCheckEnabled();
7+
8+
const {enabled}: {enabled: boolean | undefined} = await prompts([
9+
{
10+
type: 'toggle',
11+
name: 'enabled',
12+
message: 'Enable weekly version check?',
13+
initial: current,
14+
active: 'yes',
15+
inactive: 'no'
16+
}
17+
]);
18+
19+
if (isNullish(enabled)) {
20+
return;
21+
}
22+
23+
toggleWeeklyCheck(enabled);
24+
};

src/services/version/version.check.weekly.services.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ const check = async ({
8282
releaseFn,
8383
checkVersionFn
8484
}: {
85-
key: keyof CachedVersions;
85+
key: keyof Omit<CachedVersions, 'weeklyCheckEnabled'>;
8686
currentVersion: string;
8787
releaseFn: () => Promise<GithubLastReleaseResult>;
8888
checkVersionFn: (params: {latestVersion: string}) => void;

src/types/cli/cli.versions.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ export const CachedVersionSchema = j.strictObject({
77
});
88

99
export const CachedVersionsSchema = j.strictObject({
10+
weeklyCheckEnabled: j.boolean().optional(),
1011
cli: CachedVersionSchema.optional(),
1112
emulator: CachedVersionSchema.optional()
1213
});

src/version.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import {isWeeklyCheckDisabled} from './configs/cli.versions.config';
12
import {
23
checkCliVersion,
34
checkEmulatorVersion
@@ -10,6 +11,14 @@ export const checkWeeklyVersions = async ({cmd, args}: {cmd: string; args?: stri
1011
return;
1112
}
1213

14+
if (isWeeklyCheckDisabled()) {
15+
return;
16+
}
17+
18+
if (cmd === 'version') {
19+
return;
20+
}
21+
1322
const [subCommand] = args ?? [];
1423

1524
if (cmd === 'emulator' && ['start', 'wait'].includes(subCommand)) {

0 commit comments

Comments
 (0)