import lodash from "lodash";
import gitlab from "../../gitlab.app.mjs";
export default {
key: "gitlab-create-epic",
name: "Create Epic",
description: "Creates a new epic. [See the documentation](https://docs.gitlab.com/ee/api/epics.html#new-epic)",
version: "0.0.4",
type: "action",
props: {
gitlab,
groupId: {
propDefinition: [
gitlab,
"groupId",
],
},
parent_id: {
propDefinition: [
gitlab,
"epicIid",
({ groupId }) => ({
groupId,
}),
],
label: "Parent ID",
optional: true,
},
title: {
propDefinition: [
gitlab,
"title",
],
description: "The title of the epic",
},
labels: {
propDefinition: [
gitlab,
"groupLabels",
({ groupId }) => ({
groupId,
}),
],
},
description: {
propDefinition: [
gitlab,
"description",
],
description: "The description of the issue",
},
color: {
propDefinition: [
gitlab,
"color",
],
},
confidential: {
propDefinition: [
gitlab,
"confidential",
],
},
created_at: {
propDefinition: [
gitlab,
"created_at",
],
},
start_date_is_fixed: {
propDefinition: [
gitlab,
"start_date_is_fixed",
],
reloadProps: true,
},
due_date_is_fixed: {
propDefinition: [
gitlab,
"due_date_is_fixed",
],
reloadProps: true,
},
},
async additionalProps() {
const props = {};
if (this.start_date_is_fixed) {
props.start_date_fixed = {
type: "string",
label: "Start date fixed",
description: "The fixed start date of an epic (in GitLab 11.3 and later)",
};
}
if (this.due_date_is_fixed) {
props.due_date_fixed = {
type: "string",
label: "Due date fixed",
description: "The fixed due date of an epic (in GitLab 11.3 and later)",
};
}
return props;
},
async run({ $ }) {
const data = lodash.pickBy(lodash.pick(this, [
"parent_id",
"title",
"labels",
"description",
"color",
"confidential",
"created_at",
"start_date_is_fixed",
"due_date_is_fixed",
"start_date_fixed",
"due_date_fixed",
]));
data.labels = data.labels?.join();
const response = await this.gitlab.createEpic(this.groupId, {
data,
});
$.export("$summary", `Created epic ${this.title}`);
return response;
},
};