UNPKG

@pnp/cli-microsoft365

Version:

Manage Microsoft 365 and SharePoint Framework projects on any platform

75 lines 2.92 kB
import { v4 } from 'uuid'; import { z } from 'zod'; import { globalOptionsZod } from '../../../../Command.js'; import { cli } from '../../../../cli/cli.js'; import request from '../../../../request.js'; import { formatting } from '../../../../utils/formatting.js'; import GraphCommand from '../../../base/GraphCommand.js'; import commands from '../../commands.js'; export const options = z.strictObject({ ...globalOptionsZod.shape, taskId: z.string().alias('i'), title: z.string().alias('t'), isChecked: z.boolean().optional() }); class PlannerTaskChecklistItemAddCommand extends GraphCommand { get name() { return commands.TASK_CHECKLISTITEM_ADD; } get description() { return 'Adds a new checklist item to a Planner task.'; } get schema() { return options; } async commandAction(logger, args) { try { const etag = await this.getTaskDetailsEtag(args.options.taskId); const body = { checklist: { // Generate new GUID for new task checklist item [v4()]: { '@odata.type': 'microsoft.graph.plannerChecklistItem', title: args.options.title, isChecked: args.options.isChecked || false } } }; const requestOptions = { url: `${this.resource}/v1.0/planner/tasks/${formatting.encodeQueryParameter(args.options.taskId)}/details`, headers: { accept: 'application/json;odata.metadata=none', prefer: 'return=representation', 'if-match': etag }, responseType: 'json', data: body }; const result = await request.patch(requestOptions); if (!cli.shouldTrimOutput(args.options.output)) { await logger.log(result.checklist); } else { // Transform checklist item object to text friendly format const output = Object.getOwnPropertyNames(result.checklist).map(prop => ({ id: prop, ...result.checklist[prop] })); await logger.log(output); } } catch (err) { this.handleRejectedODataJsonPromise(err); } } async getTaskDetailsEtag(taskId) { const requestOptions = { url: `${this.resource}/v1.0/planner/tasks/${formatting.encodeQueryParameter(taskId)}/details`, headers: { accept: 'application/json;odata.metadata=minimal' }, responseType: 'json' }; const task = await request.get(requestOptions); return task['@odata.etag']; } } export default new PlannerTaskChecklistItemAddCommand(); //# sourceMappingURL=task-checklistitem-add.js.map