Skip to content

Commit 5ff5b14

Browse files
cleanup and add changeset
1 parent 4baa89e commit 5ff5b14

File tree

3 files changed

+16
-9
lines changed

3 files changed

+16
-9
lines changed

.changeset/skip-validate-flags.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
---
2+
'powersync': patch
3+
---
4+
5+
Add `--skip-validations` and `--validate-only` flags to `deploy` and `validate` commands.
6+
7+
These mutually exclusive flags accept a comma-separated list of validation tests (`configuration`, `connections`, `sync-config`) and allow users to skip or isolate specific validation checks. This is useful when deploying behind VPC endpoints, dealing with transient sync config timeouts, or bypassing schema validation for older configs.

cli/src/api/validations/validation-flags.ts

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -29,20 +29,20 @@ export function generateValidationTestFlags(params?: GenerateValidationTestFlags
2929
const { limitOptions } = params ?? {};
3030
const optionsToUse = limitOptions ?? Object.values(ValidationTest);
3131

32-
const parseValidationFlagValues = (input: string) => {
32+
const parseValidationFlagValues = (input: string, flagName: string) => {
3333
const split = input.split(',').map((s) => s.trim());
3434
const invalid = split.filter((s) => !optionsToUse.includes(s as ValidationTest));
3535
if (invalid.length > 0) {
3636
throw new Error(
37-
`Invalid validation test(s) specified in --validate-only: ${invalid.join(', ')}. Valid options are: ${optionsToUse.join(', ')}.`
37+
`Invalid validation test(s) specified in --${flagName}: ${invalid.join(', ')}. Valid options are: ${optionsToUse.join(', ')}.`
3838
);
3939
}
4040

4141
return split as ValidationTest[];
4242
};
4343

44-
const validateValidationFlagValues = (input: string) => {
45-
parseValidationFlagValues(input);
44+
const validateValidationFlagValues = (input: string, flagName: string) => {
45+
parseValidationFlagValues(input, flagName);
4646
// Can't map the return type here.
4747
return input;
4848
};
@@ -51,7 +51,7 @@ export function generateValidationTestFlags(params?: GenerateValidationTestFlags
5151
'skip-validations': Flags.string({
5252
description: `Comma-separated list of validation tests to skip. Options: ${optionsToUse.join(', ')}. Example: --skip-validations="${optionsToUse[0]}"`,
5353
exclusive: ['validate-only'],
54-
parse: async (input) => validateValidationFlagValues(input)
54+
parse: async (input) => validateValidationFlagValues(input, 'skip-validations')
5555
})
5656
};
5757

@@ -60,7 +60,7 @@ export function generateValidationTestFlags(params?: GenerateValidationTestFlags
6060
flags['validate-only'] = Flags.string({
6161
description: `Comma-separated list of validation tests to run, skipping all others. Options: ${optionsToUse.join(', ')}. Example: --validate-only="${optionsToUse[0]}"`,
6262
exclusive: ['skip-validations'],
63-
parse: async (input) => validateValidationFlagValues(input)
63+
parse: async (input) => validateValidationFlagValues(input, 'validate-only')
6464
});
6565
}
6666

@@ -74,13 +74,13 @@ export function generateValidationTestFlags(params?: GenerateValidationTestFlags
7474
if (flags['skip-validations'] && flags['validate-only']) {
7575
throw new Error('Cannot specify both --skip-validations and --validate-only flags.');
7676
} else if (flags['skip-validations']) {
77-
const toSkip = parseValidationFlagValues(flags['skip-validations'] as string);
77+
const toSkip = parseValidationFlagValues(flags['skip-validations'] as string, 'skip-validations');
7878
return {
7979
skipped: toSkip,
8080
testsToRun: optionsToUse.filter((test) => !toSkip.includes(test))
8181
};
8282
} else if (flags['validate-only']) {
83-
const toRun = parseValidationFlagValues(flags['validate-only'] as string);
83+
const toRun = parseValidationFlagValues(flags['validate-only'] as string, 'validate-only');
8484
return {
8585
skipped: optionsToUse.filter((test) => !toRun.includes(test)),
8686
testsToRun: toRun

cli/test/api/validations/validation-flags.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ describe('generateValidationTestFlags', () => {
7272
GENERAL_VALIDATION_FLAG_HELPERS.parseValidationTestFlags({
7373
'skip-validations': 'not-a-real-test'
7474
})
75-
).toThrow(/Invalid validation test\(s\) specified in --validate-only/);
75+
).toThrow(/Invalid validation test\(s\) specified in --skip-validations/);
7676
});
7777

7878
it('throws when mixed with a valid and an invalid test name', () => {

0 commit comments

Comments
 (0)