All files / src/commands/config config.update.command.js

87.5% Statements 77/88
100% Branches 1/1
0% Functions 0/1
87.5% Lines 77/88

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89193x 193x 193x 193x 193x 193x 193x 193x 193x 193x 193x 193x 193x 193x 193x 193x 193x 193x 193x 193x 193x 193x 193x 193x 193x 193x 193x 193x 193x 193x 193x 193x 193x 193x 193x 193x 193x 193x 193x 193x 193x 193x 193x 193x 193x 193x 193x 193x 193x 193x 193x 193x 193x 193x 193x 193x 193x 193x 193x 193x 193x 193x 193x 193x 193x 193x 193x 193x 193x 193x 193x 193x 193x 193x 193x                       193x 193x  
import { z } from 'zod';
import { defineCommand } from '../../lib/define-command.js';
import { defineOption } from '../../lib/define-option.js';
import * as Application from '../../models/application.js';
import * as ApplicationConfiguration from '../../models/application_configuration.js';
import { aliasOption, appIdOrNameOption } from '../global.options.js';
 
export const configUpdateCommand = defineCommand({
  description: 'Edit multiple configuration settings at once',
  since: '2.5.0',
  options: {
    alias: aliasOption,
    appIdOrName: appIdOrNameOption,
    name: defineOption({
      name: 'name',
      schema: z.string().optional(),
      description: 'Set application name',
    }),
    description: defineOption({
      name: 'description',
      schema: z.string().optional(),
      description: 'Set application description',
    }),
    enableZeroDowntime: defineOption({
      name: 'enable-zero-downtime',
      schema: z.boolean().default(false),
      description: 'Enable zero-downtime deployment',
    }),
    disableZeroDowntime: defineOption({
      name: 'disable-zero-downtime',
      schema: z.boolean().default(false),
      description: 'Disable zero-downtime deployment',
    }),
    enableStickySessions: defineOption({
      name: 'enable-sticky-sessions',
      schema: z.boolean().default(false),
      description: 'Enable sticky sessions',
    }),
    disableStickySessions: defineOption({
      name: 'disable-sticky-sessions',
      schema: z.boolean().default(false),
      description: 'Disable sticky sessions',
    }),
    enableCancelOnPush: defineOption({
      name: 'enable-cancel-on-push',
      schema: z.boolean().default(false),
      description: 'Enable cancel on push',
    }),
    disableCancelOnPush: defineOption({
      name: 'disable-cancel-on-push',
      schema: z.boolean().default(false),
      description: 'Disable cancel on push',
    }),
    enableForceHttps: defineOption({
      name: 'enable-force-https',
      schema: z.boolean().default(false),
      description: 'Enable force HTTPS redirection',
    }),
    disableForceHttps: defineOption({
      name: 'disable-force-https',
      schema: z.boolean().default(false),
      description: 'Disable force HTTPS redirection',
    }),
    enableTask: defineOption({
      name: 'enable-task',
      schema: z.boolean().default(false),
      description: 'Enable application as Clever Task',
    }),
    disableTask: defineOption({
      name: 'disable-task',
      schema: z.boolean().default(false),
      description: 'Disable application as Clever Task',
    }),
  },
  async handler(options) {
    const { alias, appIdOrName, ...rawOptions } = options;
    const { ownerId, appId } = await Application.resolveId(appIdOrName, alias);
    const newOptions = ApplicationConfiguration.parseOptions(rawOptions);

    if (Object.keys(newOptions).length === 0) {
      throw new Error('No configuration to update');
    }

    const app = await Application.updateOptions(ownerId, appId, newOptions);

    ApplicationConfiguration.printAllValues(app);
  },
});