@pnp/cli-microsoft365 5.9.0-beta.fd6d022 → 5.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintrc.js +17 -2
- package/README.md +5 -0
- package/dist/Command.js +16 -2
- package/dist/appInsights.js +2 -0
- package/dist/m365/aad/commands/app/app-add.js +37 -13
- package/dist/m365/commands/status.js +6 -1
- package/dist/m365/outlook/commands/mail/mail-send.js +55 -31
- package/dist/m365/planner/commands/bucket/bucket-get.js +1 -1
- package/dist/m365/pp/commands/Environment.js +3 -0
- package/dist/m365/pp/commands/card/card-get.js +110 -0
- package/dist/m365/pp/commands/card/card-list.js +68 -0
- package/dist/m365/pp/commands/dataverse/dataverse-table-list.js +69 -0
- package/dist/m365/pp/commands/environment/environment-get.js +75 -0
- package/dist/m365/pp/commands/gateway/gateway-get.js +70 -0
- package/dist/m365/pp/commands/solution/Solution.js +3 -0
- package/dist/m365/pp/commands/solution/solution-get.js +117 -0
- package/dist/m365/pp/commands/solution/solution-list.js +87 -0
- package/dist/m365/pp/commands/tenant/tenant-settings-list.js +45 -0
- package/dist/m365/pp/commands.js +9 -1
- package/dist/m365/spfx/commands/project/project-doctor.js +4 -1
- package/dist/m365/spfx/commands/project/project-externalize.js +4 -1
- package/dist/m365/spfx/commands/project/project-upgrade/rules/FN010001_YORC_version.js +2 -1
- package/dist/m365/spfx/commands/project/project-upgrade/rules/FN010002_YORC_isCreatingSolution.js +2 -1
- package/dist/m365/spfx/commands/project/project-upgrade/rules/FN010003_YORC_packageManager.js +2 -1
- package/dist/m365/spfx/commands/project/project-upgrade/rules/FN010004_YORC_componentType.js +2 -1
- package/dist/m365/spfx/commands/project/project-upgrade/rules/FN010005_YORC_environment.js +2 -1
- package/dist/m365/spfx/commands/project/project-upgrade/rules/FN010006_YORC_framework.js +3 -2
- package/dist/m365/spfx/commands/project/project-upgrade/rules/FN010007_YORC_isDomainIsolated.js +2 -1
- package/dist/m365/spfx/commands/project/project-upgrade/rules/FN010008_YORC_nodeVersion.js +2 -1
- package/dist/m365/spfx/commands/project/project-upgrade/rules/FN010009_YORC_sdkVersions_microsoft_graph_client.js +56 -0
- package/dist/m365/spfx/commands/project/project-upgrade/rules/FN010010_YORC_sdkVersions_teams_js.js +56 -0
- package/dist/m365/spfx/commands/project/project-upgrade/upgrade-1.14.0.js +0 -2
- package/dist/m365/spfx/commands/project/project-upgrade/{upgrade-1.16.0-beta.1.js → upgrade-1.16.0-beta.2.js} +44 -28
- package/dist/m365/spfx/commands/project/project-upgrade.js +1 -1
- package/dist/m365/spfx/commands/spfx-doctor.js +54 -9
- package/dist/m365/spo/commands/contenttype/contenttype-add.js +82 -43
- package/dist/m365/spo/commands/contenttype/contenttype-field-remove.js +53 -21
- package/dist/m365/spo/commands/contenttype/contenttype-get.js +35 -14
- package/dist/m365/spo/commands/eventreceiver/EventReceiver.js +3 -0
- package/dist/m365/spo/commands/eventreceiver/eventreceiver-remove.js +182 -0
- package/dist/m365/spo/commands/field/field-add.js +26 -1
- package/dist/m365/spo/commands/field/field-set.js +23 -13
- package/dist/m365/spo/commands/file/file-copy.js +25 -39
- package/dist/m365/spo/commands/file/file-move.js +24 -37
- package/dist/m365/spo/commands/file/file-rename.js +19 -16
- package/dist/m365/spo/commands/file/file-roleassignment-add.js +231 -0
- package/dist/m365/spo/commands/file/file-roleassignment-remove.js +180 -0
- package/dist/m365/spo/commands/file/file-roleinheritance-break.js +129 -0
- package/dist/m365/spo/commands/file/file-roleinheritance-reset.js +1 -1
- package/dist/m365/spo/commands/folder/folder-roleassignment-remove.js +168 -0
- package/dist/m365/spo/commands/folder/folder-roleinheritance-break.js +94 -0
- package/dist/m365/spo/commands/folder/folder-roleinheritance-reset.js +1 -1
- package/dist/m365/spo/commands/group/AssociatedGroupPropertiesCollection.js +3 -0
- package/dist/m365/spo/commands/group/group-list.js +49 -10
- package/dist/m365/spo/commands/list/list-contenttype-add.js +21 -18
- package/dist/m365/spo/commands/list/list-contenttype-default-set.js +59 -47
- package/dist/m365/spo/commands/list/list-contenttype-list.js +16 -8
- package/dist/m365/spo/commands/list/list-contenttype-remove.js +16 -8
- package/dist/m365/spo/commands/list/list-roleassignment-add.js +10 -10
- package/dist/m365/spo/commands/list/list-roleassignment-remove.js +8 -8
- package/dist/m365/spo/commands/list/list-roleinheritance-break.js +14 -6
- package/dist/m365/spo/commands/list/list-roleinheritance-reset.js +15 -7
- package/dist/m365/spo/commands/list/list-webhook-add.js +19 -11
- package/dist/m365/spo/commands/list/list-webhook-get.js +17 -10
- package/dist/m365/spo/commands/list/list-webhook-list.js +23 -24
- package/dist/m365/spo/commands/list/list-webhook-remove.js +19 -11
- package/dist/m365/spo/commands/list/list-webhook-set.js +18 -10
- package/dist/m365/spo/commands/listitem/listitem-add.js +24 -14
- package/dist/m365/spo/commands/listitem/listitem-attachment-list.js +18 -8
- package/dist/m365/spo/commands/listitem/listitem-get.js +18 -8
- package/dist/m365/spo/commands/listitem/listitem-isrecord.js +20 -10
- package/dist/m365/spo/commands/listitem/listitem-list.js +27 -11
- package/dist/m365/spo/commands/listitem/listitem-record-declare.js +19 -12
- package/dist/m365/spo/commands/listitem/listitem-record-undeclare.js +24 -21
- package/dist/m365/spo/commands/listitem/listitem-remove.js +19 -11
- package/dist/m365/spo/commands/listitem/listitem-roleassignment-add.js +239 -0
- package/dist/m365/spo/commands/listitem/listitem-roleassignment-remove.js +8 -8
- package/dist/m365/spo/commands/listitem/listitem-roleinheritance-break.js +13 -5
- package/dist/m365/spo/commands/listitem/listitem-roleinheritance-reset.js +14 -6
- package/dist/m365/spo/commands/listitem/listitem-set.js +52 -44
- package/dist/m365/spo/commands/web/web-roleassignment-add.js +10 -10
- package/dist/m365/spo/commands/web/web-roleassignment-remove.js +8 -8
- package/dist/m365/spo/commands/web/web-roleinheritance-break.js +100 -0
- package/dist/m365/spo/commands.js +8 -0
- package/dist/m365/teams/commands/channel/channel-add.js +9 -9
- package/dist/m365/todo/commands/list/list-get.js +89 -0
- package/dist/m365/todo/commands/task/task-add.js +55 -3
- package/dist/m365/todo/commands/task/task-get.js +108 -0
- package/dist/m365/todo/commands/task/task-set.js +53 -1
- package/dist/m365/todo/commands.js +2 -0
- package/dist/utils/cache.js +81 -0
- package/dist/utils/pid.js +57 -0
- package/dist/utils/powerPlatform.js +42 -0
- package/docs/docs/_clisettings.md +19 -0
- package/docs/docs/cmd/outlook/mail/mail-send.md +13 -0
- package/docs/docs/cmd/planner/bucket/bucket-add.md +29 -0
- package/docs/docs/cmd/planner/bucket/bucket-get.md +29 -0
- package/docs/docs/cmd/planner/bucket/bucket-list.md +30 -0
- package/docs/docs/cmd/planner/bucket/bucket-remove.md +4 -0
- package/docs/docs/cmd/planner/bucket/bucket-set.md +4 -0
- package/docs/docs/cmd/planner/plan/plan-add.md +123 -0
- package/docs/docs/cmd/planner/plan/plan-get.md +75 -0
- package/docs/docs/cmd/planner/plan/plan-list.md +45 -0
- package/docs/docs/cmd/planner/plan/plan-remove.md +4 -0
- package/docs/docs/cmd/pp/card/card-get.md +51 -0
- package/docs/docs/cmd/pp/card/card-list.md +33 -0
- package/docs/docs/cmd/pp/dataverse/dataverse-table-list.md +33 -0
- package/docs/docs/cmd/pp/environment/environment-get.md +38 -0
- package/docs/docs/cmd/pp/environment/environment-list.md +1 -1
- package/docs/docs/cmd/pp/gateway/gateway-get.md +24 -0
- package/docs/docs/cmd/pp/solution/solution-get.md +51 -0
- package/docs/docs/cmd/pp/solution/solution-list.md +33 -0
- package/docs/docs/cmd/pp/tenant/tenant-settings-list.md +26 -0
- package/docs/docs/cmd/spfx/project/project-rename.md +1 -14
- package/docs/docs/cmd/spfx/project/project-upgrade.md +1 -1
- package/docs/docs/cmd/spfx/spfx-doctor.md +10 -1
- package/docs/docs/cmd/spo/contenttype/contenttype-add.md +20 -2
- package/docs/docs/cmd/spo/contenttype/contenttype-field-remove.md +22 -4
- package/docs/docs/cmd/spo/contenttype/contenttype-get.md +21 -3
- package/docs/docs/cmd/spo/eventreceiver/eventreceiver-get.md +2 -2
- package/docs/docs/cmd/spo/eventreceiver/eventreceiver-remove.md +69 -0
- package/docs/docs/cmd/spo/field/field-add.md +20 -2
- package/docs/docs/cmd/spo/field/field-set.md +11 -2
- package/docs/docs/cmd/spo/file/file-roleassignment-add.md +57 -0
- package/docs/docs/cmd/spo/file/file-roleassignment-remove.md +54 -0
- package/docs/docs/cmd/spo/file/file-roleinheritance-break.md +54 -0
- package/docs/docs/cmd/spo/folder/folder-roleassignment-remove.md +57 -0
- package/docs/docs/cmd/spo/folder/folder-roleinheritance-break.md +39 -0
- package/docs/docs/cmd/spo/folder/folder-roleinheritance-reset.md +2 -2
- package/docs/docs/cmd/spo/group/group-list.md +10 -1
- package/docs/docs/cmd/spo/hubsite/hubsite-disconnect.md +1 -1
- package/docs/docs/cmd/spo/hubsite/hubsite-get.md +3 -3
- package/docs/docs/cmd/spo/list/list-contenttype-add.md +16 -7
- package/docs/docs/cmd/spo/list/list-contenttype-default-set.md +16 -7
- package/docs/docs/cmd/spo/list/list-contenttype-list.md +15 -6
- package/docs/docs/cmd/spo/list/list-contenttype-remove.md +17 -8
- package/docs/docs/cmd/spo/list/list-roleinheritance-break.md +11 -8
- package/docs/docs/cmd/spo/list/list-roleinheritance-reset.md +14 -5
- package/docs/docs/cmd/spo/list/list-webhook-add.md +15 -16
- package/docs/docs/cmd/spo/list/list-webhook-get.md +16 -7
- package/docs/docs/cmd/spo/list/list-webhook-list.md +16 -7
- package/docs/docs/cmd/spo/list/list-webhook-remove.md +12 -10
- package/docs/docs/cmd/spo/list/list-webhook-set.md +14 -12
- package/docs/docs/cmd/spo/listitem/listitem-add.md +11 -2
- package/docs/docs/cmd/spo/listitem/listitem-attachment-list.md +11 -2
- package/docs/docs/cmd/spo/listitem/listitem-get.md +11 -2
- package/docs/docs/cmd/spo/listitem/listitem-isrecord.md +12 -2
- package/docs/docs/cmd/spo/listitem/listitem-list.md +12 -3
- package/docs/docs/cmd/spo/listitem/listitem-record-declare.md +7 -4
- package/docs/docs/cmd/spo/listitem/listitem-record-undeclare.md +11 -2
- package/docs/docs/cmd/spo/listitem/listitem-remove.md +11 -2
- package/docs/docs/cmd/spo/listitem/listitem-roleassignment-add.md +81 -0
- package/docs/docs/cmd/spo/listitem/listitem-roleinheritance-break.md +7 -4
- package/docs/docs/cmd/spo/listitem/listitem-roleinheritance-reset.md +11 -2
- package/docs/docs/cmd/spo/listitem/listitem-set.md +7 -4
- package/docs/docs/cmd/spo/web/web-roleinheritance-break.md +44 -0
- package/docs/docs/cmd/teams/channel/channel-add.md +4 -4
- package/docs/docs/cmd/tenant/id/id-get.md +20 -0
- package/docs/docs/cmd/tenant/report/report-activeusercounts.md +35 -0
- package/docs/docs/cmd/tenant/report/report-activeuserdetail.md +49 -0
- package/docs/docs/cmd/tenant/report/report-office365activationcounts.md +32 -0
- package/docs/docs/cmd/tenant/report/report-office365activationsusercounts.md +30 -0
- package/docs/docs/cmd/tenant/report/report-office365activationsuserdetail.md +36 -0
- package/docs/docs/cmd/tenant/report/report-servicesusercounts.md +41 -0
- package/docs/docs/cmd/tenant/security/security-alerts-list.md +105 -0
- package/docs/docs/cmd/tenant/serviceannouncement/serviceannouncement-health-get.md +87 -0
- package/docs/docs/cmd/tenant/serviceannouncement/serviceannouncement-health-list.md +91 -0
- package/docs/docs/cmd/tenant/serviceannouncement/serviceannouncement-healthissue-get.md +62 -0
- package/docs/docs/cmd/tenant/serviceannouncement/serviceannouncement-healthissue-list.md +51 -0
- package/docs/docs/cmd/tenant/serviceannouncement/serviceannouncement-message-get.md +64 -0
- package/docs/docs/cmd/tenant/serviceannouncement/serviceannouncement-message-list.md +52 -0
- package/docs/docs/cmd/todo/list/list-get.md +61 -0
- package/docs/docs/cmd/todo/task/task-add.md +32 -5
- package/docs/docs/cmd/todo/task/task-get.md +75 -0
- package/docs/docs/cmd/todo/task/task-set.md +29 -2
- package/package.json +13 -3
- package/dist/m365/spfx/commands/project/project-upgrade/rules/FN006006_CFG_PS_features.js +0 -60
|
@@ -13,9 +13,10 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
|
|
|
13
13
|
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
14
14
|
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
15
15
|
};
|
|
16
|
-
var _TodoTaskAddCommand_instances, _TodoTaskAddCommand_initTelemetry, _TodoTaskAddCommand_initOptions, _TodoTaskAddCommand_initOptionSets;
|
|
16
|
+
var _TodoTaskAddCommand_instances, _TodoTaskAddCommand_initTelemetry, _TodoTaskAddCommand_initOptions, _TodoTaskAddCommand_initValidators, _TodoTaskAddCommand_initOptionSets;
|
|
17
17
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
18
|
const request_1 = require("../../../../request");
|
|
19
|
+
const validation_1 = require("../../../../utils/validation");
|
|
19
20
|
const GraphCommand_1 = require("../../../base/GraphCommand");
|
|
20
21
|
const commands_1 = require("../../commands");
|
|
21
22
|
class TodoTaskAddCommand extends GraphCommand_1.default {
|
|
@@ -24,6 +25,7 @@ class TodoTaskAddCommand extends GraphCommand_1.default {
|
|
|
24
25
|
_TodoTaskAddCommand_instances.add(this);
|
|
25
26
|
__classPrivateFieldGet(this, _TodoTaskAddCommand_instances, "m", _TodoTaskAddCommand_initTelemetry).call(this);
|
|
26
27
|
__classPrivateFieldGet(this, _TodoTaskAddCommand_instances, "m", _TodoTaskAddCommand_initOptions).call(this);
|
|
28
|
+
__classPrivateFieldGet(this, _TodoTaskAddCommand_instances, "m", _TodoTaskAddCommand_initValidators).call(this);
|
|
27
29
|
__classPrivateFieldGet(this, _TodoTaskAddCommand_instances, "m", _TodoTaskAddCommand_initOptionSets).call(this);
|
|
28
30
|
}
|
|
29
31
|
get name() {
|
|
@@ -33,6 +35,7 @@ class TodoTaskAddCommand extends GraphCommand_1.default {
|
|
|
33
35
|
return 'Add a task to a Microsoft To Do task list';
|
|
34
36
|
}
|
|
35
37
|
commandAction(logger, args) {
|
|
38
|
+
var _a, _b;
|
|
36
39
|
return __awaiter(this, void 0, void 0, function* () {
|
|
37
40
|
const endpoint = `${this.resource}/v1.0`;
|
|
38
41
|
try {
|
|
@@ -44,7 +47,14 @@ class TodoTaskAddCommand extends GraphCommand_1.default {
|
|
|
44
47
|
'Content-Type': 'application/json'
|
|
45
48
|
},
|
|
46
49
|
data: {
|
|
47
|
-
title: args.options.title
|
|
50
|
+
title: args.options.title,
|
|
51
|
+
body: {
|
|
52
|
+
content: args.options.bodyContent,
|
|
53
|
+
contentType: ((_a = args.options.bodyContentType) === null || _a === void 0 ? void 0 : _a.toLowerCase()) || 'text'
|
|
54
|
+
},
|
|
55
|
+
importance: (_b = args.options.importance) === null || _b === void 0 ? void 0 : _b.toLowerCase(),
|
|
56
|
+
dueDateTime: this.getDateTimeTimeZone(args.options.dueDateTime),
|
|
57
|
+
reminderDateTime: this.getDateTimeTimeZone(args.options.reminderDateTime)
|
|
48
58
|
},
|
|
49
59
|
responseType: 'json'
|
|
50
60
|
};
|
|
@@ -56,6 +66,15 @@ class TodoTaskAddCommand extends GraphCommand_1.default {
|
|
|
56
66
|
}
|
|
57
67
|
});
|
|
58
68
|
}
|
|
69
|
+
getDateTimeTimeZone(dateTime) {
|
|
70
|
+
if (!dateTime) {
|
|
71
|
+
return undefined;
|
|
72
|
+
}
|
|
73
|
+
return {
|
|
74
|
+
dateTime: dateTime,
|
|
75
|
+
timeZone: 'Etc/GMT'
|
|
76
|
+
};
|
|
77
|
+
}
|
|
59
78
|
getTodoListId(args) {
|
|
60
79
|
if (args.options.listId) {
|
|
61
80
|
return Promise.resolve(args.options.listId);
|
|
@@ -81,7 +100,12 @@ _TodoTaskAddCommand_instances = new WeakSet(), _TodoTaskAddCommand_initTelemetry
|
|
|
81
100
|
this.telemetry.push((args) => {
|
|
82
101
|
Object.assign(this.telemetryProperties, {
|
|
83
102
|
listId: typeof args.options.listId !== 'undefined',
|
|
84
|
-
listName: typeof args.options.listName !== 'undefined'
|
|
103
|
+
listName: typeof args.options.listName !== 'undefined',
|
|
104
|
+
bodyContent: typeof args.options.bodyContent !== 'undefined',
|
|
105
|
+
bodyContentType: args.options.bodyContentType,
|
|
106
|
+
dueDateTime: typeof args.options.dueDateTime !== 'undefined',
|
|
107
|
+
importance: args.options.importance,
|
|
108
|
+
reminderDateTime: typeof args.options.reminderDateTime !== 'undefined'
|
|
85
109
|
});
|
|
86
110
|
});
|
|
87
111
|
}, _TodoTaskAddCommand_initOptions = function _TodoTaskAddCommand_initOptions() {
|
|
@@ -91,7 +115,35 @@ _TodoTaskAddCommand_instances = new WeakSet(), _TodoTaskAddCommand_initTelemetry
|
|
|
91
115
|
option: '--listName [listName]'
|
|
92
116
|
}, {
|
|
93
117
|
option: '--listId [listId]'
|
|
118
|
+
}, {
|
|
119
|
+
option: '--bodyContent [bodyContent]'
|
|
120
|
+
}, {
|
|
121
|
+
option: '--bodyContentType [bodyContentType]',
|
|
122
|
+
autocomplete: ['text', 'html']
|
|
123
|
+
}, {
|
|
124
|
+
option: '--dueDateTime [dueDateTime]'
|
|
125
|
+
}, {
|
|
126
|
+
option: '--importance [importance]',
|
|
127
|
+
autocomplete: ['low', 'normal', 'high']
|
|
128
|
+
}, {
|
|
129
|
+
option: '--reminderDateTime [reminderDateTime]'
|
|
94
130
|
});
|
|
131
|
+
}, _TodoTaskAddCommand_initValidators = function _TodoTaskAddCommand_initValidators() {
|
|
132
|
+
this.validators.push((args) => __awaiter(this, void 0, void 0, function* () {
|
|
133
|
+
if (args.options.bodyContentType && ['text', 'html'].indexOf(args.options.bodyContentType.toLowerCase()) === -1) {
|
|
134
|
+
return `'${args.options.bodyContentType}' is not a valid value for the bodyContentType option. Allowed values are text|html`;
|
|
135
|
+
}
|
|
136
|
+
if (args.options.importance && ['low', 'normal', 'high'].indexOf(args.options.importance.toLowerCase()) === -1) {
|
|
137
|
+
return `'${args.options.importance}' is not a valid value for the importance option. Allowed values are low|normal|high`;
|
|
138
|
+
}
|
|
139
|
+
if (args.options.dueDateTime && !validation_1.validation.isValidISODateTime(args.options.dueDateTime)) {
|
|
140
|
+
return `'${args.options.dueDateTime}' is not a valid ISO date string`;
|
|
141
|
+
}
|
|
142
|
+
if (args.options.reminderDateTime && !validation_1.validation.isValidISODateTime(args.options.reminderDateTime)) {
|
|
143
|
+
return `'${args.options.reminderDateTime}' is not a valid ISO date string`;
|
|
144
|
+
}
|
|
145
|
+
return true;
|
|
146
|
+
}));
|
|
95
147
|
}, _TodoTaskAddCommand_initOptionSets = function _TodoTaskAddCommand_initOptionSets() {
|
|
96
148
|
this.optionSets.push(['listId', 'listName']);
|
|
97
149
|
};
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
12
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
13
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
14
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
15
|
+
};
|
|
16
|
+
var _TodoTaskGetCommand_instances, _TodoTaskGetCommand_initTelemetry, _TodoTaskGetCommand_initOptions, _TodoTaskGetCommand_initOptionSets;
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
const request_1 = require("../../../../request");
|
|
19
|
+
const GraphCommand_1 = require("../../../base/GraphCommand");
|
|
20
|
+
const commands_1 = require("../../commands");
|
|
21
|
+
class TodoTaskGetCommand extends GraphCommand_1.default {
|
|
22
|
+
constructor() {
|
|
23
|
+
super();
|
|
24
|
+
_TodoTaskGetCommand_instances.add(this);
|
|
25
|
+
__classPrivateFieldGet(this, _TodoTaskGetCommand_instances, "m", _TodoTaskGetCommand_initTelemetry).call(this);
|
|
26
|
+
__classPrivateFieldGet(this, _TodoTaskGetCommand_instances, "m", _TodoTaskGetCommand_initOptions).call(this);
|
|
27
|
+
__classPrivateFieldGet(this, _TodoTaskGetCommand_instances, "m", _TodoTaskGetCommand_initOptionSets).call(this);
|
|
28
|
+
}
|
|
29
|
+
get name() {
|
|
30
|
+
return commands_1.default.TASK_GET;
|
|
31
|
+
}
|
|
32
|
+
get description() {
|
|
33
|
+
return 'Get a specific task from a Microsoft To Do task list';
|
|
34
|
+
}
|
|
35
|
+
defaultProperties() {
|
|
36
|
+
return ['id', 'title', 'status', 'createdDateTime', 'lastModifiedDateTime'];
|
|
37
|
+
}
|
|
38
|
+
getTodoListId(args) {
|
|
39
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
40
|
+
if (args.options.listId) {
|
|
41
|
+
return args.options.listId;
|
|
42
|
+
}
|
|
43
|
+
const requestOptions = {
|
|
44
|
+
url: `${this.resource}/v1.0/me/todo/lists?$filter=displayName eq '${escape(args.options.listName)}'`,
|
|
45
|
+
headers: {
|
|
46
|
+
accept: 'application/json;odata.metadata=none'
|
|
47
|
+
},
|
|
48
|
+
responseType: 'json'
|
|
49
|
+
};
|
|
50
|
+
const response = yield request_1.default.get(requestOptions);
|
|
51
|
+
const taskList = response.value[0];
|
|
52
|
+
if (!taskList) {
|
|
53
|
+
throw `The specified task list does not exist`;
|
|
54
|
+
}
|
|
55
|
+
return taskList.id;
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
commandAction(logger, args) {
|
|
59
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
60
|
+
try {
|
|
61
|
+
const listId = yield this.getTodoListId(args);
|
|
62
|
+
const requestOptions = {
|
|
63
|
+
url: `${this.resource}/v1.0/me/todo/lists/${listId}/tasks/${args.options.id}`,
|
|
64
|
+
headers: {
|
|
65
|
+
accept: 'application/json;odata.metadata=none'
|
|
66
|
+
},
|
|
67
|
+
responseType: 'json'
|
|
68
|
+
};
|
|
69
|
+
const item = yield request_1.default.get(requestOptions);
|
|
70
|
+
if (args.options.output === 'json') {
|
|
71
|
+
logger.log(item);
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
logger.log({
|
|
75
|
+
id: item.id,
|
|
76
|
+
title: item.title,
|
|
77
|
+
status: item.status,
|
|
78
|
+
createdDateTime: item.createdDateTime,
|
|
79
|
+
lastModifiedDateTime: item.lastModifiedDateTime
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
catch (err) {
|
|
84
|
+
this.handleRejectedODataJsonPromise(err);
|
|
85
|
+
}
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
_TodoTaskGetCommand_instances = new WeakSet(), _TodoTaskGetCommand_initTelemetry = function _TodoTaskGetCommand_initTelemetry() {
|
|
90
|
+
this.telemetry.push((args) => {
|
|
91
|
+
Object.assign(this.telemetryProperties, {
|
|
92
|
+
listId: typeof args.options.listId !== 'undefined',
|
|
93
|
+
listName: typeof args.options.listName !== 'undefined'
|
|
94
|
+
});
|
|
95
|
+
});
|
|
96
|
+
}, _TodoTaskGetCommand_initOptions = function _TodoTaskGetCommand_initOptions() {
|
|
97
|
+
this.options.unshift({
|
|
98
|
+
option: '-i, --id <id>'
|
|
99
|
+
}, {
|
|
100
|
+
option: '--listName [listName]'
|
|
101
|
+
}, {
|
|
102
|
+
option: '--listId [listId]'
|
|
103
|
+
});
|
|
104
|
+
}, _TodoTaskGetCommand_initOptionSets = function _TodoTaskGetCommand_initOptionSets() {
|
|
105
|
+
this.optionSets.push(['listId', 'listName']);
|
|
106
|
+
};
|
|
107
|
+
module.exports = new TodoTaskGetCommand();
|
|
108
|
+
//# sourceMappingURL=task-get.js.map
|
|
@@ -16,6 +16,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
|
|
|
16
16
|
var _TodoTaskSetCommand_instances, _TodoTaskSetCommand_initTelemetry, _TodoTaskSetCommand_initOptions, _TodoTaskSetCommand_initValidators, _TodoTaskSetCommand_initOptionSets;
|
|
17
17
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
18
|
const request_1 = require("../../../../request");
|
|
19
|
+
const validation_1 = require("../../../../utils/validation");
|
|
19
20
|
const GraphCommand_1 = require("../../../base/GraphCommand");
|
|
20
21
|
const commands_1 = require("../../commands");
|
|
21
22
|
class TodoTaskSetCommand extends GraphCommand_1.default {
|
|
@@ -76,7 +77,14 @@ class TodoTaskSetCommand extends GraphCommand_1.default {
|
|
|
76
77
|
return Promise.resolve(taskList.id);
|
|
77
78
|
});
|
|
78
79
|
}
|
|
80
|
+
getDateTimeTimeZone(dateTime) {
|
|
81
|
+
return {
|
|
82
|
+
dateTime: dateTime,
|
|
83
|
+
timeZone: 'Etc/GMT'
|
|
84
|
+
};
|
|
85
|
+
}
|
|
79
86
|
mapRequestBody(options) {
|
|
87
|
+
var _a;
|
|
80
88
|
const requestBody = {};
|
|
81
89
|
if (options.status) {
|
|
82
90
|
requestBody.status = options.status;
|
|
@@ -84,6 +92,21 @@ class TodoTaskSetCommand extends GraphCommand_1.default {
|
|
|
84
92
|
if (options.title) {
|
|
85
93
|
requestBody.title = options.title;
|
|
86
94
|
}
|
|
95
|
+
if (options.importance) {
|
|
96
|
+
requestBody.importance = options.importance.toLowerCase();
|
|
97
|
+
}
|
|
98
|
+
if (options.bodyContentType || options.bodyContent) {
|
|
99
|
+
requestBody.body = {
|
|
100
|
+
content: options.bodyContent,
|
|
101
|
+
contentType: ((_a = options.bodyContentType) === null || _a === void 0 ? void 0 : _a.toLowerCase()) || 'text'
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
if (options.dueDateTime) {
|
|
105
|
+
requestBody.dueDateTime = this.getDateTimeTimeZone(options.dueDateTime);
|
|
106
|
+
}
|
|
107
|
+
if (options.reminderDateTime) {
|
|
108
|
+
requestBody.reminderDateTime = this.getDateTimeTimeZone(options.reminderDateTime);
|
|
109
|
+
}
|
|
87
110
|
return requestBody;
|
|
88
111
|
}
|
|
89
112
|
}
|
|
@@ -93,7 +116,12 @@ _TodoTaskSetCommand_instances = new WeakSet(), _TodoTaskSetCommand_initTelemetry
|
|
|
93
116
|
listId: typeof args.options.listId !== 'undefined',
|
|
94
117
|
listName: typeof args.options.listName !== 'undefined',
|
|
95
118
|
status: typeof args.options.status !== 'undefined',
|
|
96
|
-
title: typeof args.options.title !== 'undefined'
|
|
119
|
+
title: typeof args.options.title !== 'undefined',
|
|
120
|
+
bodyContent: typeof args.options.bodyContent !== 'undefined',
|
|
121
|
+
bodyContentType: args.options.bodyContentType,
|
|
122
|
+
dueDateTime: typeof args.options.dueDateTime !== 'undefined',
|
|
123
|
+
importance: args.options.importance,
|
|
124
|
+
reminderDateTime: typeof args.options.reminderDateTime !== 'undefined'
|
|
97
125
|
});
|
|
98
126
|
});
|
|
99
127
|
}, _TodoTaskSetCommand_initOptions = function _TodoTaskSetCommand_initOptions() {
|
|
@@ -108,6 +136,18 @@ _TodoTaskSetCommand_instances = new WeakSet(), _TodoTaskSetCommand_initTelemetry
|
|
|
108
136
|
option: '--listName [listName]'
|
|
109
137
|
}, {
|
|
110
138
|
option: '--listId [listId]'
|
|
139
|
+
}, {
|
|
140
|
+
option: '--bodyContent [bodyContent]'
|
|
141
|
+
}, {
|
|
142
|
+
option: '--bodyContentType [bodyContentType]',
|
|
143
|
+
autocomplete: ['text', 'html']
|
|
144
|
+
}, {
|
|
145
|
+
option: '--dueDateTime [dueDateTime]'
|
|
146
|
+
}, {
|
|
147
|
+
option: '--importance [importance]',
|
|
148
|
+
autocomplete: ['low', 'normal', 'high']
|
|
149
|
+
}, {
|
|
150
|
+
option: '--reminderDateTime [reminderDateTime]'
|
|
111
151
|
});
|
|
112
152
|
}, _TodoTaskSetCommand_initValidators = function _TodoTaskSetCommand_initValidators() {
|
|
113
153
|
this.validators.push((args) => __awaiter(this, void 0, void 0, function* () {
|
|
@@ -119,6 +159,18 @@ _TodoTaskSetCommand_instances = new WeakSet(), _TodoTaskSetCommand_initTelemetry
|
|
|
119
159
|
args.options.status !== 'deferred') {
|
|
120
160
|
return `${args.options.status} is not a valid value. Allowed values are notStarted|inProgress|completed|waitingOnOthers|deferred`;
|
|
121
161
|
}
|
|
162
|
+
if (args.options.bodyContentType && ['text', 'html'].indexOf(args.options.bodyContentType.toLowerCase()) === -1) {
|
|
163
|
+
return `'${args.options.bodyContentType}' is not a valid value for the bodyContentType option. Allowed values are text|html`;
|
|
164
|
+
}
|
|
165
|
+
if (args.options.importance && ['low', 'normal', 'high'].indexOf(args.options.importance.toLowerCase()) === -1) {
|
|
166
|
+
return `'${args.options.importance}' is not a valid value for the importance option. Allowed values are low|normal|high`;
|
|
167
|
+
}
|
|
168
|
+
if (args.options.dueDateTime && !validation_1.validation.isValidISODateTime(args.options.dueDateTime)) {
|
|
169
|
+
return `'${args.options.dueDateTime}' is not a valid ISO date string`;
|
|
170
|
+
}
|
|
171
|
+
if (args.options.reminderDateTime && !validation_1.validation.isValidISODateTime(args.options.reminderDateTime)) {
|
|
172
|
+
return `'${args.options.reminderDateTime}' is not a valid ISO date string`;
|
|
173
|
+
}
|
|
122
174
|
return true;
|
|
123
175
|
}));
|
|
124
176
|
}, _TodoTaskSetCommand_initOptionSets = function _TodoTaskSetCommand_initOptionSets() {
|
|
@@ -3,10 +3,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
const prefix = 'todo';
|
|
4
4
|
exports.default = {
|
|
5
5
|
LIST_ADD: `${prefix} list add`,
|
|
6
|
+
LIST_GET: `${prefix} list get`,
|
|
6
7
|
LIST_LIST: `${prefix} list list`,
|
|
7
8
|
LIST_REMOVE: `${prefix} list remove`,
|
|
8
9
|
LIST_SET: `${prefix} list set`,
|
|
9
10
|
TASK_ADD: `${prefix} task add`,
|
|
11
|
+
TASK_GET: `${prefix} task get`,
|
|
10
12
|
TASK_LIST: `${prefix} task list`,
|
|
11
13
|
TASK_REMOVE: `${prefix} task remove`,
|
|
12
14
|
TASK_SET: `${prefix} task set`
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.cache = void 0;
|
|
4
|
+
const fs = require("fs");
|
|
5
|
+
const os = require("os");
|
|
6
|
+
const path = require("path");
|
|
7
|
+
const config_1 = require("../config");
|
|
8
|
+
const cacheFolderPath = path.join(os.tmpdir(), config_1.default.configstoreName.replace('config', 'cache'));
|
|
9
|
+
const mkdirOptions = { mode: 0o0700, recursive: true };
|
|
10
|
+
exports.cache = {
|
|
11
|
+
cacheFolderPath: cacheFolderPath,
|
|
12
|
+
getValue(key) {
|
|
13
|
+
this.clearExpired();
|
|
14
|
+
try {
|
|
15
|
+
const cacheFilePath = path.join(cacheFolderPath, key);
|
|
16
|
+
if (!fs.existsSync(cacheFilePath)) {
|
|
17
|
+
return undefined;
|
|
18
|
+
}
|
|
19
|
+
return fs.readFileSync(cacheFilePath, 'utf8');
|
|
20
|
+
}
|
|
21
|
+
catch (_a) {
|
|
22
|
+
return undefined;
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
setValue(key, value) {
|
|
26
|
+
this.clearExpired();
|
|
27
|
+
try {
|
|
28
|
+
fs.mkdirSync(cacheFolderPath, mkdirOptions);
|
|
29
|
+
const cacheFilePath = path.join(cacheFolderPath, key);
|
|
30
|
+
// we don't need to wait for the file to be written
|
|
31
|
+
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
32
|
+
fs.writeFile(cacheFilePath, value, () => { });
|
|
33
|
+
}
|
|
34
|
+
catch (_a) { }
|
|
35
|
+
},
|
|
36
|
+
clearExpired(cb) {
|
|
37
|
+
// we don't need to wait for this to complete
|
|
38
|
+
// even if it stops meanwhile, it will be picked up next time
|
|
39
|
+
fs.readdir(cacheFolderPath, (err, files) => {
|
|
40
|
+
if (err) {
|
|
41
|
+
if (cb) {
|
|
42
|
+
cb();
|
|
43
|
+
}
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
const numFiles = files.length;
|
|
47
|
+
if (numFiles === 0) {
|
|
48
|
+
if (cb) {
|
|
49
|
+
cb();
|
|
50
|
+
}
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
files.forEach((file, index) => {
|
|
54
|
+
fs.stat(path.join(cacheFolderPath, file), (err, stats) => {
|
|
55
|
+
if (err || stats.isDirectory()) {
|
|
56
|
+
if (cb && index === numFiles - 1) {
|
|
57
|
+
cb();
|
|
58
|
+
}
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
// remove files that haven't been accessed in the last 24 hours
|
|
62
|
+
if (stats.atime.getTime() < Date.now() - 24 * 60 * 60 * 1000) {
|
|
63
|
+
// we don't need to wait for the file to be deleted
|
|
64
|
+
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
65
|
+
fs.unlink(path.join(cacheFolderPath, file), () => {
|
|
66
|
+
if (cb && index === numFiles - 1) {
|
|
67
|
+
cb();
|
|
68
|
+
}
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
if (cb && index === numFiles - 1) {
|
|
73
|
+
cb();
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
});
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
};
|
|
81
|
+
//# sourceMappingURL=cache.js.map
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.pid = void 0;
|
|
4
|
+
const os = require("os");
|
|
5
|
+
const fs = require("fs");
|
|
6
|
+
const child_process_1 = require("child_process");
|
|
7
|
+
const cache_1 = require("./cache");
|
|
8
|
+
function getProcessNameOnMacOs(pid) {
|
|
9
|
+
const stdout = (0, child_process_1.execSync)(`ps -o comm= ${pid}`, { encoding: 'utf8' });
|
|
10
|
+
return stdout.trim();
|
|
11
|
+
}
|
|
12
|
+
function getProcessNameOnLinux(pid) {
|
|
13
|
+
if (!fs.existsSync(`/proc/${pid}/stat`)) {
|
|
14
|
+
return undefined;
|
|
15
|
+
}
|
|
16
|
+
const stat = fs.readFileSync(`/proc/${pid}/stat`, 'utf8');
|
|
17
|
+
const start = stat.indexOf('(');
|
|
18
|
+
const procName = stat.substring(start + 1, stat.indexOf(')') - start);
|
|
19
|
+
return procName;
|
|
20
|
+
}
|
|
21
|
+
function getProcessNameOnWindows(pid) {
|
|
22
|
+
const stdout = (0, child_process_1.execSync)(`wmic PROCESS where ProcessId=${pid} get Caption | find /V "Caption"`, { encoding: 'utf8' });
|
|
23
|
+
return stdout.trim();
|
|
24
|
+
}
|
|
25
|
+
exports.pid = {
|
|
26
|
+
getProcessName(pid) {
|
|
27
|
+
let processName = cache_1.cache.getValue(pid.toString());
|
|
28
|
+
if (processName) {
|
|
29
|
+
return processName;
|
|
30
|
+
}
|
|
31
|
+
let getPidName = undefined;
|
|
32
|
+
const platform = os.platform();
|
|
33
|
+
if (platform.indexOf('win') === 0) {
|
|
34
|
+
getPidName = getProcessNameOnWindows;
|
|
35
|
+
}
|
|
36
|
+
if (platform === 'darwin') {
|
|
37
|
+
getPidName = getProcessNameOnMacOs;
|
|
38
|
+
}
|
|
39
|
+
if (platform === 'linux') {
|
|
40
|
+
getPidName = getProcessNameOnLinux;
|
|
41
|
+
}
|
|
42
|
+
if (getPidName) {
|
|
43
|
+
try {
|
|
44
|
+
processName = getPidName(pid);
|
|
45
|
+
if (processName) {
|
|
46
|
+
cache_1.cache.setValue(pid.toString(), processName);
|
|
47
|
+
}
|
|
48
|
+
return processName;
|
|
49
|
+
}
|
|
50
|
+
catch (_a) {
|
|
51
|
+
return undefined;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
return undefined;
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
//# sourceMappingURL=pid.js.map
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.powerPlatform = void 0;
|
|
13
|
+
const request_1 = require("../request");
|
|
14
|
+
const powerPlatformResource = 'https://api.bap.microsoft.com';
|
|
15
|
+
exports.powerPlatform = {
|
|
16
|
+
getDynamicsInstanceApiUrl(environment, asAdmin) {
|
|
17
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
18
|
+
let url = '';
|
|
19
|
+
if (asAdmin) {
|
|
20
|
+
url = `${powerPlatformResource}/providers/Microsoft.BusinessAppPlatform/scopes/admin/environments/${encodeURIComponent(environment)}`;
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
url = `${powerPlatformResource}/providers/Microsoft.BusinessAppPlatform/environments/${encodeURIComponent(environment)}`;
|
|
24
|
+
}
|
|
25
|
+
const requestOptions = {
|
|
26
|
+
url: `${url}?api-version=2020-10-01&$select=properties.linkedEnvironmentMetadata.instanceApiUrl`,
|
|
27
|
+
headers: {
|
|
28
|
+
accept: 'application/json;odata.metadata=none'
|
|
29
|
+
},
|
|
30
|
+
responseType: 'json'
|
|
31
|
+
};
|
|
32
|
+
try {
|
|
33
|
+
const response = yield request_1.default.get(requestOptions);
|
|
34
|
+
return Promise.resolve(response.properties.linkedEnvironmentMetadata.instanceApiUrl);
|
|
35
|
+
}
|
|
36
|
+
catch (ex) {
|
|
37
|
+
throw Error(`The environment '${environment}' could not be retrieved. See the inner exception for more details: ${ex.message}`);
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
//# sourceMappingURL=powerPlatform.js.map
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
## Available settings
|
|
2
|
+
|
|
3
|
+
Following is the list of configuration settings available in CLI for Microsoft 365.
|
|
4
|
+
|
|
5
|
+
Setting name|Definition|Default value
|
|
6
|
+
------------|----------|-------------
|
|
7
|
+
`autoOpenBrowserOnLogin`|Automatically open the browser to the Azure AD login page after running `m365 login` command in device code mode. This setting will be replaced by `autoOpenLinksInBrowser` in the next major release.|`false`
|
|
8
|
+
`autoOpenLinksInBrowser`|Automatically open the browser for all commands which return a url and expect the user to copy paste this to the browser. For example when logging in, using `m365 login` in device code mode. This setting will replace `autoOpenBrowserOnLogin` in the next major release.|`false`
|
|
9
|
+
`copyDeviceCodeToClipboard`|Automatically copy the device code to the clipboard when running `m365 login` command in device code mode|`false`
|
|
10
|
+
`csvEscape`|Single character used for escaping; only apply to characters matching the quote and the escape options|`"`
|
|
11
|
+
`csvHeader`|Display the column names on the first line|`true`
|
|
12
|
+
`csvQuote`|The quote characters surrounding a field. An empty quote value will preserve the original field, whether it contains quotation marks or not.|` `
|
|
13
|
+
`csvQuoted`|Quote all the non-empty fields even if not required|`false`
|
|
14
|
+
`csvQuotedEmpty`|Quote empty strings and overrides quoted_string on empty strings when defined|`false`
|
|
15
|
+
`errorOutput`|Defines if errors should be written to `stdout` or `stderr`|`stderr`
|
|
16
|
+
`output`|Defines the default output when issuing a command|`json`
|
|
17
|
+
`printErrorsAsPlainText`|When output mode is set to `json`, print error messages as plain-text rather than JSON|`true`
|
|
18
|
+
`prompt`|Prompts for missing values in required options|`false`
|
|
19
|
+
`showHelpOnFailure`|Automatically display help when executing a command failed|`true`
|
|
@@ -43,6 +43,9 @@ m365 outlook sendmail [options]
|
|
|
43
43
|
`--importance [importance]`
|
|
44
44
|
: The importance of the message. Available options: `low`, `normal` or `high`. Default is `normal`.
|
|
45
45
|
|
|
46
|
+
`--attachment [attachment]`
|
|
47
|
+
: Path to the file that will be added as attachment to the email. This option can be used multiple times to attach multiple attachments.
|
|
48
|
+
|
|
46
49
|
`--saveToSentItems [saveToSentItems]`
|
|
47
50
|
: Save email in the sent items folder. Default `true`.
|
|
48
51
|
|
|
@@ -50,6 +53,10 @@ m365 outlook sendmail [options]
|
|
|
50
53
|
|
|
51
54
|
## Remarks
|
|
52
55
|
|
|
56
|
+
### Attachments
|
|
57
|
+
|
|
58
|
+
When using the `attachment` option, note that the total size of all attachment files cannot exceed 3 MB.
|
|
59
|
+
|
|
53
60
|
### If you are connected using app only authentication
|
|
54
61
|
|
|
55
62
|
- Always specify a user id or upn in the `--sender` option. The email will be sent as if it came from the specified user, and can optionally be saved in the sent folder of that user account.
|
|
@@ -116,3 +123,9 @@ Send an email with cc and bcc recipients marked as important
|
|
|
116
123
|
```sh
|
|
117
124
|
m365 outlook mail send --to chris@contoso.com --cc claire@contoso.com --bcc randy@contoso.com --subject "DG2000 Data Sheets" --bodyContents "The latest data sheets are in the team site" --importance high
|
|
118
125
|
```
|
|
126
|
+
|
|
127
|
+
Send an email with multiple attachments
|
|
128
|
+
|
|
129
|
+
```sh
|
|
130
|
+
m365 outlook mail send --to chris@contoso.com --subject "Monthly reports" --bodyContents "Here are the reports of this month." --attachment "C:/Reports/File1.jpg" --attachment "C:/Reports/File2.docx" --attachment "C:/Reports/File3.xlsx"
|
|
131
|
+
```
|
|
@@ -46,3 +46,32 @@ Adds a Microsoft Planner bucket with the name _My Planner Bucket_ for plan with
|
|
|
46
46
|
```sh
|
|
47
47
|
m365 planner bucket add --name "My Planner Bucket" --planTitle "My Planner Plan" --ownerGroupName "My Planner Group"
|
|
48
48
|
```
|
|
49
|
+
|
|
50
|
+
## Response
|
|
51
|
+
|
|
52
|
+
=== "JSON"
|
|
53
|
+
|
|
54
|
+
```json
|
|
55
|
+
{
|
|
56
|
+
"name": "My Planner Bucket",
|
|
57
|
+
"planId": "xqQg5FS2LkCp935s-FIFm2QAFkHM",
|
|
58
|
+
"orderHint": "8585363889524958496",
|
|
59
|
+
"id": "ttEB_Uj690STdR3GC1MIDZgANq1U"
|
|
60
|
+
}
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
=== "Text"
|
|
64
|
+
|
|
65
|
+
```text
|
|
66
|
+
id : ttEB_Uj690STdR3GC1MIDZgANq1U
|
|
67
|
+
name : My Planner Bucket
|
|
68
|
+
orderHint: 8585363889524958496
|
|
69
|
+
planId : xqQg5FS2LkCp935s-FIFm2QAFkHM
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
=== "CSV"
|
|
73
|
+
|
|
74
|
+
```csv
|
|
75
|
+
id,name,planId,orderHint
|
|
76
|
+
ttEB_Uj690STdR3GC1MIDZgANq1U,My Planner Bucket,xqQg5FS2LkCp935s-FIFm2QAFkHM,8585363889524958496
|
|
77
|
+
```
|
|
@@ -58,3 +58,32 @@ Gets the Microsoft Planner bucket in the Plan _My Plan_ owned by groupId ee0f40f
|
|
|
58
58
|
```sh
|
|
59
59
|
m365 planner bucket get --name "Planner Bucket A" --planTitle "My Plan" --ownerGroupId "ee0f40fc-b2f7-45c7-b62d-11b90dd2ea8e"
|
|
60
60
|
```
|
|
61
|
+
|
|
62
|
+
## Response
|
|
63
|
+
|
|
64
|
+
=== "JSON"
|
|
65
|
+
|
|
66
|
+
```json
|
|
67
|
+
{
|
|
68
|
+
"name": "My Planner Bucket",
|
|
69
|
+
"planId": "xqQg5FS2LkCp935s-FIFm2QAFkHM",
|
|
70
|
+
"orderHint": "8585363889524958496",
|
|
71
|
+
"id": "ttEB_Uj690STdR3GC1MIDZgANq1U"
|
|
72
|
+
}
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
=== "Text"
|
|
76
|
+
|
|
77
|
+
```text
|
|
78
|
+
id : ttEB_Uj690STdR3GC1MIDZgANq1U
|
|
79
|
+
name : My Planner Bucket
|
|
80
|
+
orderHint: 8585363889524958496
|
|
81
|
+
planId : xqQg5FS2LkCp935s-FIFm2QAFkHM
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
=== "CSV"
|
|
85
|
+
|
|
86
|
+
```csv
|
|
87
|
+
id,name,planId,orderHint
|
|
88
|
+
ttEB_Uj690STdR3GC1MIDZgANq1U,My Planner Bucket,xqQg5FS2LkCp935s-FIFm2QAFkHM,8585363889524958496
|
|
89
|
+
```
|
|
@@ -40,3 +40,33 @@ Lists the Microsoft Planner buckets in the Plan _My Plan_ owned by group _My Gro
|
|
|
40
40
|
```sh
|
|
41
41
|
m365 planner bucket list --planTitle "My Plan" --ownerGroupName "My Group"
|
|
42
42
|
```
|
|
43
|
+
|
|
44
|
+
## Response
|
|
45
|
+
|
|
46
|
+
=== "JSON"
|
|
47
|
+
|
|
48
|
+
```json
|
|
49
|
+
[
|
|
50
|
+
{
|
|
51
|
+
"name": "My Planner Bucket",
|
|
52
|
+
"planId": "xqQg5FS2LkCp935s-FIFm2QAFkHM",
|
|
53
|
+
"orderHint": "8585363889524958496",
|
|
54
|
+
"id": "ttEB_Uj690STdR3GC1MIDZgANq1U"
|
|
55
|
+
}
|
|
56
|
+
]
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
=== "Text"
|
|
60
|
+
|
|
61
|
+
```text
|
|
62
|
+
id name planId orderHint
|
|
63
|
+
---------------------------- ----------------- ---------------------------- -------------------
|
|
64
|
+
ttEB_Uj690STdR3GC1MIDZgANq1U My Planner Bucket xqQg5FS2LkCp935s-FIFm2QAFkHM 8585363889524958496
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
=== "CSV"
|
|
68
|
+
|
|
69
|
+
```csv
|
|
70
|
+
id,name,planId,orderHint
|
|
71
|
+
ttEB_Uj690STdR3GC1MIDZgANq1U,My Planner Bucket,xqQg5FS2LkCp935s-FIFm2QAFkHM,8585363889524958496
|
|
72
|
+
```
|
|
@@ -61,3 +61,7 @@ Removes the Microsoft Planner bucket with name _My Bucket_ in the Plan _My Plan_
|
|
|
61
61
|
```sh
|
|
62
62
|
m365 planner bucket remove --name "My Bucket" --planTitle "My Plan" --ownerGroupName "My Group"
|
|
63
63
|
```
|
|
64
|
+
|
|
65
|
+
## Response
|
|
66
|
+
|
|
67
|
+
The command won't return a response on success.
|