actions/create-epic/create-epic.mjs
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.5", annotations: { destructiveHint: false, openWorldHint: true, readOnlyHint: false, }, 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; }, };