@shopify/cli
Version:
A CLI tool to build for the Shopify platform
107 lines (104 loc) • 3.7 kB
JavaScript
import {
fetchNotifications,
getNotifications,
stringifyFilters
} from "./chunk-JLITATNF.js";
import {
randomUUID
} from "./chunk-Q76H7OUL.js";
import {
CLI_KIT_VERSION
} from "./chunk-Z2AIGIVT.js";
import {
outputInfo,
renderSelectPrompt,
renderSuccess,
renderTable,
renderTextPrompt,
writeFile
} from "./chunk-4NC2NVYY.js";
import {
init_cjs_shims
} from "./chunk-PKR7KJ6P.js";
// src/cli/services/commands/notifications.ts
init_cjs_shims();
async function generate() {
let today = /* @__PURE__ */ new Date(), formattedToday = `${today.getFullYear()}-${(today.getMonth() + 1).toString().padStart(2, "0")}-${today.getDate().toString().padStart(2, "0")}`, id = randomUUID(), type = await renderSelectPrompt({
message: "Type of message?",
choices: [
{ label: "Info", value: "info" },
{ label: "Warning", value: "warning" },
{ label: "Error", value: "error" }
]
}), title = await renderTextPrompt({
message: "Title"
}), message = await renderTextPrompt({
message: "Message"
}), frequency = await renderSelectPrompt({
message: "Frequency",
choices: [
{ label: "Only once", value: "once" },
{ label: "Once a week", value: "once_a_week" },
{ label: "Once a day", value: "once_a_day" },
{ label: "Always", value: "always" }
]
}), minVersion = await renderTextPrompt({
message: "Minimum CLI version (optional)",
initialAnswer: CLI_KIT_VERSION,
allowEmpty: !0
}), maxVersion = await renderTextPrompt({
message: "Maximum CLI version (optional)",
initialAnswer: CLI_KIT_VERSION,
allowEmpty: !0
}), minDate = await renderTextPrompt({
message: "Minimum date in YYYY-MM-DD format (optional)",
initialAnswer: formattedToday,
allowEmpty: !0
}), maxDate = await renderTextPrompt({
message: "Maximum date in YYYY-MM-DD format (optional)",
initialAnswer: formattedToday,
allowEmpty: !0
}), surface = await renderTextPrompt({
message: "Surface. E.g.: app, theme, hydrogen, theme_app_extension... (optional)",
allowEmpty: !0
}), commands = await renderTextPrompt({
message: "Comma separated list of commands. E.g.: app:generate:extension (optional)",
allowEmpty: !0
}), ownerChannel = await renderTextPrompt({
message: "Slack channel of the team who will own this notification"
}), notifications = await getNotifications(), notification = {
id,
type,
title,
frequency,
message,
minVersion: minVersion.length === 0 ? void 0 : minVersion,
maxVersion: maxVersion.length === 0 ? void 0 : maxVersion,
minDate: minDate.length === 0 ? void 0 : minDate,
maxDate: maxDate.length === 0 ? void 0 : maxDate,
surface: surface.length === 0 ? void 0 : surface,
commands: commands.length === 0 ? void 0 : commands.split(",").map((command) => command.trim()),
ownerChannel
};
notifications.notifications.push(notification), await writeFile("./notifications.json", JSON.stringify(notifications)), renderSuccess({ headline: "notifications.json file updated successfully." });
}
async function list() {
let notifications = await fetchNotifications(), columns = {
type: { header: "Type", color: "dim" },
title: { header: "Title", color: "dim" },
message: { header: "Message", color: "dim" },
filters: { header: "Filters", color: "dim" }
}, rows = notifications.notifications.map((notification) => ({
type: notification.type,
title: notification.title ?? "",
message: notification.message,
filters: stringifyFilters(notification)
}));
renderTable({ rows, columns }), outputInfo(`
`);
}
export {
generate,
list
};
//# sourceMappingURL=chunk-YKYM3NLB.js.map