ecomcoder-cli 1.3.2 → 1.3.4
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/README.md +0 -23
- package/dist/cli.js +32 -5
- package/dist/cli.js.map +1 -1
- package/dist/commands/product/__tests__/update-description.test.js +1 -0
- package/dist/commands/product/__tests__/update-description.test.js.map +1 -1
- package/dist/commands/product/create-variants.d.ts +8 -0
- package/dist/commands/product/create-variants.d.ts.map +1 -0
- package/dist/commands/product/create-variants.js +160 -0
- package/dist/commands/product/create-variants.js.map +1 -0
- package/dist/commands/product/create.d.ts +8 -0
- package/dist/commands/product/create.d.ts.map +1 -0
- package/dist/commands/product/create.js +166 -0
- package/dist/commands/product/create.js.map +1 -0
- package/dist/commands/product/delete-variants.d.ts +8 -0
- package/dist/commands/product/delete-variants.d.ts.map +1 -0
- package/dist/commands/product/delete-variants.js +105 -0
- package/dist/commands/product/delete-variants.js.map +1 -0
- package/dist/commands/product/get-metafield.d.ts +8 -0
- package/dist/commands/product/get-metafield.d.ts.map +1 -0
- package/dist/commands/product/get-metafield.js +131 -0
- package/dist/commands/product/get-metafield.js.map +1 -0
- package/dist/commands/product/index.d.ts.map +1 -1
- package/dist/commands/product/index.js +62 -0
- package/dist/commands/product/index.js.map +1 -1
- package/dist/commands/product/queries.d.ts +31 -2
- package/dist/commands/product/queries.d.ts.map +1 -1
- package/dist/commands/product/queries.js +184 -0
- package/dist/commands/product/queries.js.map +1 -1
- package/dist/commands/product/service.d.ts +67 -1
- package/dist/commands/product/service.d.ts.map +1 -1
- package/dist/commands/product/service.js +363 -1
- package/dist/commands/product/service.js.map +1 -1
- package/dist/commands/product/set-metafield.d.ts +8 -0
- package/dist/commands/product/set-metafield.d.ts.map +1 -0
- package/dist/commands/product/set-metafield.js +174 -0
- package/dist/commands/product/set-metafield.js.map +1 -0
- package/dist/commands/product/types.d.ts +162 -0
- package/dist/commands/product/types.d.ts.map +1 -1
- package/dist/commands/product/update-status.d.ts +8 -0
- package/dist/commands/product/update-status.d.ts.map +1 -0
- package/dist/commands/product/update-status.js +105 -0
- package/dist/commands/product/update-status.js.map +1 -0
- package/dist/commands/product/utils.d.ts.map +1 -1
- package/dist/commands/product/utils.js +1 -0
- package/dist/commands/product/utils.js.map +1 -1
- package/dist/commands/products/index.d.ts.map +1 -1
- package/dist/commands/products/index.js +0 -10
- package/dist/commands/products/index.js.map +1 -1
- package/dist/commands/shop/get-metafield.d.ts +8 -0
- package/dist/commands/shop/get-metafield.d.ts.map +1 -0
- package/dist/commands/shop/get-metafield.js +117 -0
- package/dist/commands/shop/get-metafield.js.map +1 -0
- package/dist/commands/shop/index.d.ts +10 -0
- package/dist/commands/shop/index.d.ts.map +1 -0
- package/dist/commands/shop/index.js +61 -0
- package/dist/commands/shop/index.js.map +1 -0
- package/dist/commands/shop/queries.d.ts +24 -0
- package/dist/commands/shop/queries.d.ts.map +1 -0
- package/dist/commands/shop/queries.js +83 -0
- package/dist/commands/shop/queries.js.map +1 -0
- package/dist/commands/shop/service.d.ts +30 -0
- package/dist/commands/shop/service.d.ts.map +1 -0
- package/dist/commands/shop/service.js +131 -0
- package/dist/commands/shop/service.js.map +1 -0
- package/dist/commands/shop/set-metafield.d.ts +8 -0
- package/dist/commands/shop/set-metafield.d.ts.map +1 -0
- package/dist/commands/shop/set-metafield.js +174 -0
- package/dist/commands/shop/set-metafield.js.map +1 -0
- package/dist/commands/shop/types.d.ts +84 -0
- package/dist/commands/shop/types.d.ts.map +1 -0
- package/dist/commands/shop/types.js +6 -0
- package/dist/commands/shop/types.js.map +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -53,22 +53,6 @@ ecomcoder products list --limit=50
|
|
|
53
53
|
**Options:**
|
|
54
54
|
- `--limit` - Maximum number of products to retrieve (default: 50)
|
|
55
55
|
|
|
56
|
-
#### Set Product Rating
|
|
57
|
-
|
|
58
|
-
Add rating metafields to a product (useful for testing review systems).
|
|
59
|
-
|
|
60
|
-
```bash
|
|
61
|
-
ecomcoder products set-rating \
|
|
62
|
-
--product-id="gid://shopify/Product/123456789" \
|
|
63
|
-
--rating=4.5 \
|
|
64
|
-
--count=127
|
|
65
|
-
```
|
|
66
|
-
|
|
67
|
-
**Options:**
|
|
68
|
-
- `--product-id` - Shopify product GID
|
|
69
|
-
- `--rating` - Rating value (e.g., 4.5)
|
|
70
|
-
- `--count` - Number of reviews/ratings
|
|
71
|
-
|
|
72
56
|
### Metafields
|
|
73
57
|
|
|
74
58
|
#### Create Metafield Definition
|
|
@@ -173,7 +157,6 @@ ecomcoder-cli/
|
|
|
173
157
|
│ ├── commands/ # Command implementations
|
|
174
158
|
│ │ ├── create-dummy-products.ts
|
|
175
159
|
│ │ ├── list-products.ts
|
|
176
|
-
│ │ ├── set-product-rating.ts
|
|
177
160
|
│ │ ├── create-metafield.ts
|
|
178
161
|
│ │ ├── get-metafield.ts
|
|
179
162
|
│ │ └── docs-search.ts
|
|
@@ -253,12 +236,6 @@ ecomcoder products create --count=25
|
|
|
253
236
|
# List all products (up to 100)
|
|
254
237
|
ecomcoder products list --limit=100
|
|
255
238
|
|
|
256
|
-
# Add a 4.8 star rating with 243 reviews
|
|
257
|
-
ecomcoder products set-rating \
|
|
258
|
-
--product-id="gid://shopify/Product/8234567890" \
|
|
259
|
-
--rating=4.8 \
|
|
260
|
-
--count=243
|
|
261
|
-
|
|
262
239
|
# Create a shop-level recommended products metafield
|
|
263
240
|
ecomcoder metafield create \
|
|
264
241
|
--name="Recommended Products" \
|
package/dist/cli.js
CHANGED
|
@@ -14,12 +14,14 @@ import { getPositionalArgs } from './lib/args-parser.js';
|
|
|
14
14
|
import { registry } from './lib/command-registry.js';
|
|
15
15
|
// Register all command groups
|
|
16
16
|
import { registerProductCommands } from './commands/product/index.js';
|
|
17
|
+
import { registerShopCommands } from './commands/shop/index.js';
|
|
17
18
|
import { registerMetafieldCommands } from './commands/metafield/index.js';
|
|
18
19
|
import { registerProductsCommands } from './commands/products/index.js';
|
|
19
20
|
import { registerDocsCommands } from './commands/docs/index.js';
|
|
20
21
|
import { registerDiscountCommands } from './commands/discount/index.js';
|
|
21
22
|
// Initialize registry
|
|
22
23
|
registerProductCommands();
|
|
24
|
+
registerShopCommands();
|
|
23
25
|
registerMetafieldCommands();
|
|
24
26
|
registerProductsCommands();
|
|
25
27
|
registerDocsCommands();
|
|
@@ -34,12 +36,21 @@ USAGE:
|
|
|
34
36
|
COMMANDS:
|
|
35
37
|
products create Create dummy Shopify products for testing
|
|
36
38
|
products list List products in your Shopify store
|
|
37
|
-
|
|
39
|
+
product create Create a new product from scratch
|
|
38
40
|
product get Get detailed product data
|
|
41
|
+
product set-metafield Set or update product metafield values
|
|
42
|
+
product update-title Update product title
|
|
39
43
|
product update-description Update product description
|
|
40
44
|
product update-price Update product price and compare-at price
|
|
45
|
+
product update-status Update product status (ACTIVE, DRAFT, ARCHIVED)
|
|
41
46
|
product update-template Change product template assignment
|
|
47
|
+
product create-variants Create product variants (bulk operation)
|
|
48
|
+
product delete-variants Delete product variants (bulk operation)
|
|
49
|
+
shop set-metafield Set or update shop metafield values (store-wide)
|
|
50
|
+
shop get-metafield View shop metafield values (store-wide)
|
|
42
51
|
discount create-basic Create basic discount (percentage or fixed amount)
|
|
52
|
+
discount create-bxgy Create BXGY (Buy X Get Y) discount
|
|
53
|
+
discount create-shipping Create free shipping discount
|
|
43
54
|
discount list List all discounts with filtering
|
|
44
55
|
discount delete Delete a discount by ID
|
|
45
56
|
metafield create Create metafield definition
|
|
@@ -64,22 +75,38 @@ EXAMPLES:
|
|
|
64
75
|
# List 50 products
|
|
65
76
|
ecomcoder products list --limit=50
|
|
66
77
|
|
|
67
|
-
#
|
|
68
|
-
ecomcoder
|
|
78
|
+
# Create a new product
|
|
79
|
+
ecomcoder product create --title="Premium Hair Serum" --price=29.99 --sku="HAIR-001"
|
|
69
80
|
|
|
70
81
|
# Get product details
|
|
71
82
|
ecomcoder product get --id=123456789
|
|
72
83
|
ecomcoder product get --title="Blue T-Shirt"
|
|
73
84
|
|
|
85
|
+
# Set product metafield (AI bundle automation)
|
|
86
|
+
ecomcoder product set-metafield --id=123 --namespace=bundles --key=products \\
|
|
87
|
+
--value='["gid://shopify/Product/456"]' --type=list.product_reference
|
|
88
|
+
|
|
89
|
+
# Update product title
|
|
90
|
+
ecomcoder product update-title --id=123 --title="Premium Hair Serum"
|
|
91
|
+
|
|
74
92
|
# Update product description
|
|
75
93
|
ecomcoder product update-description --id=123 --description="Premium cotton t-shirt"
|
|
76
94
|
|
|
77
|
-
# Update product price
|
|
78
|
-
ecomcoder product update-price --id=123 --price=34.99 --compare-at-price=49.99
|
|
95
|
+
# Update product price (all variants)
|
|
96
|
+
ecomcoder product update-price --id=123 --price=34.99 --compare-at-price=49.99 --all-variants
|
|
97
|
+
|
|
98
|
+
# Update product status
|
|
99
|
+
ecomcoder product update-status --id=123 --status=ACTIVE
|
|
79
100
|
|
|
80
101
|
# Change product template
|
|
81
102
|
ecomcoder product update-template --id=123 --template=premium
|
|
82
103
|
|
|
104
|
+
# Create product variants
|
|
105
|
+
ecomcoder product create-variants --product-id=123 --variants='[{"price":"29.99","inventoryItem":{"sku":"TEST-001"}}]'
|
|
106
|
+
|
|
107
|
+
# Delete product variants
|
|
108
|
+
ecomcoder product delete-variants --product-id=123 --variant-ids="456,789"
|
|
109
|
+
|
|
83
110
|
# Create product-level metafield
|
|
84
111
|
ecomcoder metafield create --name="Rating" --key=rating --type=number_decimal --owner-type=PRODUCT
|
|
85
112
|
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAErD,8BAA8B;AAC9B,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAC1E,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AACxE,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AAExE,sBAAsB;AACtB,uBAAuB,EAAE,CAAC;AAC1B,yBAAyB,EAAE,CAAC;AAC5B,wBAAwB,EAAE,CAAC;AAC3B,oBAAoB,EAAE,CAAC;AACvB,wBAAwB,EAAE,CAAC;AAE3B,SAAS,YAAY;IACnB,OAAO,CAAC,GAAG,CAAC
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update-description.test.js","sourceRoot":"","sources":["../../../../src/commands/product/__tests__/update-description.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"update-description.test.js","sourceRoot":"","sources":["../../../../src/commands/product/__tests__/update-description.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-variants.d.ts","sourceRoot":"","sources":["../../../src/commands/product/create-variants.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAsFH,wBAAsB,GAAG,CAAC,IAAI,GAAE,MAAM,EAA0B,iBA8E/D"}
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Create Product Variants Command
|
|
3
|
+
*
|
|
4
|
+
* Following Command Pattern - thin orchestration layer
|
|
5
|
+
* Delegates business logic to ProductService
|
|
6
|
+
*/
|
|
7
|
+
import { getCredentials, getSessionId } from '../../lib/api-client.js';
|
|
8
|
+
import { parseArgs, hasHelpFlag } from '../../lib/args-parser.js';
|
|
9
|
+
import { ProductService } from './service.js';
|
|
10
|
+
function showHelp() {
|
|
11
|
+
console.log(`
|
|
12
|
+
Create Product Variants
|
|
13
|
+
|
|
14
|
+
USAGE:
|
|
15
|
+
ecomcoder product create-variants [OPTIONS]
|
|
16
|
+
|
|
17
|
+
OPTIONS:
|
|
18
|
+
--product-id <id> Product ID (required)
|
|
19
|
+
--variants <json> JSON array of variant objects (required)
|
|
20
|
+
--session-id Session ID (auto-provided via SESSION_ID env var)
|
|
21
|
+
--help, -h Show this help message
|
|
22
|
+
|
|
23
|
+
VARIANT OBJECT FORMAT:
|
|
24
|
+
{
|
|
25
|
+
"price": "29.99", // Required: Variant price
|
|
26
|
+
"compareAtPrice": "39.99", // Optional: Original/sale price
|
|
27
|
+
"barcode": "123456789", // Optional: Product barcode
|
|
28
|
+
"optionValues": [ // Optional: Option values (Size, Color, etc.)
|
|
29
|
+
{ "optionName": "Size", "name": "Medium" },
|
|
30
|
+
{ "optionName": "Color", "name": "Blue" }
|
|
31
|
+
],
|
|
32
|
+
"inventoryItem": { // Optional: Inventory settings
|
|
33
|
+
"sku": "SHIRT-BLU-M", // SKU (must be in inventoryItem)
|
|
34
|
+
"tracked": true // Track inventory (default: false)
|
|
35
|
+
},
|
|
36
|
+
"inventoryQuantities": [ // Optional: Set initial inventory
|
|
37
|
+
{
|
|
38
|
+
"availableQuantity": 100,
|
|
39
|
+
"locationId": "gid://shopify/Location/123"
|
|
40
|
+
}
|
|
41
|
+
],
|
|
42
|
+
"taxable": true // Optional: Tax applicability (default: true)
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
EXAMPLES:
|
|
46
|
+
# Create single variant
|
|
47
|
+
ecomcoder product create-variants \\
|
|
48
|
+
--product-id=123456789 \\
|
|
49
|
+
--variants='[{"price":"29.99","inventoryItem":{"sku":"TEST-001"}}]'
|
|
50
|
+
|
|
51
|
+
# Create multiple size variants
|
|
52
|
+
ecomcoder product create-variants \\
|
|
53
|
+
--product-id="gid://shopify/Product/123" \\
|
|
54
|
+
--variants='[
|
|
55
|
+
{"price":"29.99","inventoryItem":{"sku":"SHIRT-S"},"optionValues":[{"optionName":"Size","name":"Small"}]},
|
|
56
|
+
{"price":"29.99","inventoryItem":{"sku":"SHIRT-M"},"optionValues":[{"optionName":"Size","name":"Medium"}]},
|
|
57
|
+
{"price":"29.99","inventoryItem":{"sku":"SHIRT-L"},"optionValues":[{"optionName":"Size","name":"Large"}]}
|
|
58
|
+
]'
|
|
59
|
+
|
|
60
|
+
# Create variant with sale pricing
|
|
61
|
+
ecomcoder product create-variants \\
|
|
62
|
+
--product-id=123 \\
|
|
63
|
+
--variants='[{"price":"24.99","compareAtPrice":"39.99","inventoryItem":{"sku":"SALE-001"}}]'
|
|
64
|
+
|
|
65
|
+
# Create variant with inventory tracking
|
|
66
|
+
ecomcoder product create-variants \\
|
|
67
|
+
--product-id=123 \\
|
|
68
|
+
--variants='[{
|
|
69
|
+
"price":"29.99",
|
|
70
|
+
"inventoryItem":{"sku":"INV-001","tracked":true},
|
|
71
|
+
"inventoryQuantities":[{"availableQuantity":100,"locationId":"gid://shopify/Location/123"}]
|
|
72
|
+
}]'
|
|
73
|
+
|
|
74
|
+
IMPORTANT RESTRICTIONS:
|
|
75
|
+
- Maximum 2,048 variants per product
|
|
76
|
+
- SKU must be unique across all products (if provided)
|
|
77
|
+
- Option values must match product's existing option names
|
|
78
|
+
- Cannot create variants for products with no options defined
|
|
79
|
+
|
|
80
|
+
NOTES:
|
|
81
|
+
- Use JSON array format for variants (can be single or multiple)
|
|
82
|
+
- Option names are case-sensitive
|
|
83
|
+
- First variant of a product doesn't need option values
|
|
84
|
+
- Inventory tracking requires valid location ID
|
|
85
|
+
`);
|
|
86
|
+
process.exit(0);
|
|
87
|
+
}
|
|
88
|
+
export async function run(argv = process.argv.slice(2)) {
|
|
89
|
+
if (hasHelpFlag(argv)) {
|
|
90
|
+
showHelp();
|
|
91
|
+
}
|
|
92
|
+
const args = parseArgs(argv);
|
|
93
|
+
// Validate required arguments
|
|
94
|
+
if (!args.productId) {
|
|
95
|
+
console.error(JSON.stringify({
|
|
96
|
+
success: false,
|
|
97
|
+
error: 'Missing required argument: --product-id'
|
|
98
|
+
}));
|
|
99
|
+
process.exit(1);
|
|
100
|
+
}
|
|
101
|
+
if (!args.variants) {
|
|
102
|
+
console.error(JSON.stringify({
|
|
103
|
+
success: false,
|
|
104
|
+
error: 'Missing required argument: --variants'
|
|
105
|
+
}));
|
|
106
|
+
process.exit(1);
|
|
107
|
+
}
|
|
108
|
+
try {
|
|
109
|
+
// Parse variants JSON
|
|
110
|
+
let variants;
|
|
111
|
+
try {
|
|
112
|
+
variants = JSON.parse(args.variants);
|
|
113
|
+
if (!Array.isArray(variants)) {
|
|
114
|
+
console.error(JSON.stringify({
|
|
115
|
+
success: false,
|
|
116
|
+
error: 'Variants must be a JSON array'
|
|
117
|
+
}));
|
|
118
|
+
process.exit(1);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
catch (parseError) {
|
|
122
|
+
console.error(JSON.stringify({
|
|
123
|
+
success: false,
|
|
124
|
+
error: `Invalid JSON format: ${parseError.message}`
|
|
125
|
+
}));
|
|
126
|
+
process.exit(1);
|
|
127
|
+
}
|
|
128
|
+
// Validate each variant has required price field
|
|
129
|
+
for (let i = 0; i < variants.length; i++) {
|
|
130
|
+
if (!variants[i].price) {
|
|
131
|
+
console.error(JSON.stringify({
|
|
132
|
+
success: false,
|
|
133
|
+
error: `Variant at index ${i} is missing required field: price`
|
|
134
|
+
}));
|
|
135
|
+
process.exit(1);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
// Get credentials
|
|
139
|
+
const sessionId = getSessionId(args.sessionId);
|
|
140
|
+
const credentials = await getCredentials(sessionId, args.backendUrl, args.jwt);
|
|
141
|
+
// Execute create via service
|
|
142
|
+
const result = await ProductService.createVariants(credentials, {
|
|
143
|
+
productId: args.productId,
|
|
144
|
+
variants
|
|
145
|
+
});
|
|
146
|
+
// Output result
|
|
147
|
+
console.log(JSON.stringify(result, null, 2));
|
|
148
|
+
if (!result.success) {
|
|
149
|
+
process.exit(1);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
catch (error) {
|
|
153
|
+
console.error(JSON.stringify({
|
|
154
|
+
success: false,
|
|
155
|
+
error: error.message || 'Unknown error occurred'
|
|
156
|
+
}));
|
|
157
|
+
process.exit(1);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
//# sourceMappingURL=create-variants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-variants.js","sourceRoot":"","sources":["../../../src/commands/product/create-variants.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../src/commands/product/create.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAqEH,wBAAsB,GAAG,CAAC,IAAI,GAAE,MAAM,EAA0B,iBAiH/D"}
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Create Product Command
|
|
3
|
+
*
|
|
4
|
+
* Following Command Pattern - thin orchestration layer
|
|
5
|
+
* Delegates business logic to ProductService
|
|
6
|
+
*/
|
|
7
|
+
import { getCredentials, getSessionId } from '../../lib/api-client.js';
|
|
8
|
+
import { parseArgs, hasHelpFlag } from '../../lib/args-parser.js';
|
|
9
|
+
import { ProductService } from './service.js';
|
|
10
|
+
function showHelp() {
|
|
11
|
+
console.log(`
|
|
12
|
+
Create Product
|
|
13
|
+
|
|
14
|
+
USAGE:
|
|
15
|
+
ecomcoder product create [OPTIONS]
|
|
16
|
+
|
|
17
|
+
REQUIRED OPTIONS:
|
|
18
|
+
--title <text> Product title (required)
|
|
19
|
+
|
|
20
|
+
OPTIONAL:
|
|
21
|
+
--description <text> Product description (HTML supported)
|
|
22
|
+
--price <amount> Initial variant price
|
|
23
|
+
--compare-at-price <amount> Sale/original price
|
|
24
|
+
--sku <sku> SKU for initial variant
|
|
25
|
+
--product-type <type> Product type/category
|
|
26
|
+
--vendor <name> Product vendor/brand
|
|
27
|
+
--status <status> Product status: ACTIVE, DRAFT, or ARCHIVED (default: DRAFT)
|
|
28
|
+
--handle <handle> URL slug (auto-generated from title if not provided)
|
|
29
|
+
--tags <tags> Comma-separated tags
|
|
30
|
+
--session-id Session ID (auto-provided via SESSION_ID env var)
|
|
31
|
+
--help, -h Show this help message
|
|
32
|
+
|
|
33
|
+
EXAMPLES:
|
|
34
|
+
# Minimal product (title only)
|
|
35
|
+
ecomcoder product create --title="Premium Hair Serum"
|
|
36
|
+
|
|
37
|
+
# Product with pricing
|
|
38
|
+
ecomcoder product create \\
|
|
39
|
+
--title="Premium Hair Serum" \\
|
|
40
|
+
--price=29.99 \\
|
|
41
|
+
--compare-at-price=44.95 \\
|
|
42
|
+
--sku="HAIR-001"
|
|
43
|
+
|
|
44
|
+
# Complete product
|
|
45
|
+
ecomcoder product create \\
|
|
46
|
+
--title="Therapy Hair Serum - Natural Formula" \\
|
|
47
|
+
--description="<h2>Premium Formula</h2><p>Natural ingredients for healthy hair</p>" \\
|
|
48
|
+
--price=34.99 \\
|
|
49
|
+
--sku="HAIR-SERUM-001" \\
|
|
50
|
+
--product-type="Hair Care" \\
|
|
51
|
+
--vendor="Beauty Co" \\
|
|
52
|
+
--status=ACTIVE \\
|
|
53
|
+
--tags="natural,organic,hair-care"
|
|
54
|
+
|
|
55
|
+
# Draft product (for review before publishing)
|
|
56
|
+
ecomcoder product create \\
|
|
57
|
+
--title="New Product Launch" \\
|
|
58
|
+
--status=DRAFT
|
|
59
|
+
|
|
60
|
+
IMPORTANT NOTES:
|
|
61
|
+
⚠️ Inventory Setup Required: Created products start with 0 inventory.
|
|
62
|
+
You must set inventory quantities in Shopify Admin:
|
|
63
|
+
Products → [Product Name] → Variants → Edit inventory
|
|
64
|
+
|
|
65
|
+
⚠️ Single Variant: Creates only 1 initial variant.
|
|
66
|
+
Use 'product create-variants' to add more variants.
|
|
67
|
+
|
|
68
|
+
⚠️ No Images: Product images must be added separately.
|
|
69
|
+
`);
|
|
70
|
+
process.exit(0);
|
|
71
|
+
}
|
|
72
|
+
export async function run(argv = process.argv.slice(2)) {
|
|
73
|
+
if (hasHelpFlag(argv)) {
|
|
74
|
+
showHelp();
|
|
75
|
+
}
|
|
76
|
+
const args = parseArgs(argv);
|
|
77
|
+
// Validate required argument
|
|
78
|
+
if (!args.title) {
|
|
79
|
+
console.error(JSON.stringify({
|
|
80
|
+
success: false,
|
|
81
|
+
error: 'Missing required argument: --title'
|
|
82
|
+
}));
|
|
83
|
+
process.exit(1);
|
|
84
|
+
}
|
|
85
|
+
// Validate title is not empty
|
|
86
|
+
if (typeof args.title === 'string' && args.title.trim() === '') {
|
|
87
|
+
console.error(JSON.stringify({
|
|
88
|
+
success: false,
|
|
89
|
+
error: 'Title cannot be empty'
|
|
90
|
+
}));
|
|
91
|
+
process.exit(1);
|
|
92
|
+
}
|
|
93
|
+
// Validate status if provided
|
|
94
|
+
const validStatuses = ['ACTIVE', 'DRAFT', 'ARCHIVED'];
|
|
95
|
+
if (args.status && !validStatuses.includes(args.status.toUpperCase())) {
|
|
96
|
+
console.error(JSON.stringify({
|
|
97
|
+
success: false,
|
|
98
|
+
error: `Invalid status. Must be one of: ${validStatuses.join(', ')}`
|
|
99
|
+
}));
|
|
100
|
+
process.exit(1);
|
|
101
|
+
}
|
|
102
|
+
try {
|
|
103
|
+
// Get credentials
|
|
104
|
+
const sessionId = getSessionId(args.sessionId);
|
|
105
|
+
const credentials = await getCredentials(sessionId, args.backendUrl, args.jwt);
|
|
106
|
+
// Build input object
|
|
107
|
+
const input = {
|
|
108
|
+
title: args.title.trim()
|
|
109
|
+
};
|
|
110
|
+
// Add optional fields
|
|
111
|
+
if (args.description) {
|
|
112
|
+
input.descriptionHtml = args.description;
|
|
113
|
+
}
|
|
114
|
+
if (args.productType) {
|
|
115
|
+
input.productType = args.productType;
|
|
116
|
+
}
|
|
117
|
+
if (args.vendor) {
|
|
118
|
+
input.vendor = args.vendor;
|
|
119
|
+
}
|
|
120
|
+
if (args.status) {
|
|
121
|
+
input.status = args.status.toUpperCase();
|
|
122
|
+
}
|
|
123
|
+
if (args.handle) {
|
|
124
|
+
input.handle = args.handle;
|
|
125
|
+
}
|
|
126
|
+
if (args.tags) {
|
|
127
|
+
input.tags = args.tags.split(',').map((tag) => tag.trim());
|
|
128
|
+
}
|
|
129
|
+
// Build initial variant if price or SKU provided
|
|
130
|
+
// Service layer will update the variant after product creation
|
|
131
|
+
if (args.price || args.sku || args.compareAtPrice) {
|
|
132
|
+
const variant = {};
|
|
133
|
+
if (args.price) {
|
|
134
|
+
variant.price = args.price;
|
|
135
|
+
}
|
|
136
|
+
if (args.compareAtPrice) {
|
|
137
|
+
variant.compareAtPrice = args.compareAtPrice;
|
|
138
|
+
}
|
|
139
|
+
if (args.sku) {
|
|
140
|
+
variant.inventoryItem = {
|
|
141
|
+
sku: args.sku
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
input.variants = [variant];
|
|
145
|
+
}
|
|
146
|
+
// Execute create via service
|
|
147
|
+
const result = await ProductService.createProduct(credentials, input);
|
|
148
|
+
// Output result
|
|
149
|
+
console.log(JSON.stringify(result, null, 2));
|
|
150
|
+
// Show inventory warning if successful
|
|
151
|
+
if (result.success) {
|
|
152
|
+
console.error('\n⚠️ IMPORTANT: Product created with 0 inventory. Set inventory quantities in Shopify Admin.\n');
|
|
153
|
+
}
|
|
154
|
+
if (!result.success) {
|
|
155
|
+
process.exit(1);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
catch (error) {
|
|
159
|
+
console.error(JSON.stringify({
|
|
160
|
+
success: false,
|
|
161
|
+
error: error.message || 'Unknown error occurred'
|
|
162
|
+
}));
|
|
163
|
+
process.exit(1);
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
//# sourceMappingURL=create.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/commands/product/create.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delete-variants.d.ts","sourceRoot":"","sources":["../../../src/commands/product/delete-variants.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAkDH,wBAAsB,GAAG,CAAC,IAAI,GAAE,MAAM,EAA0B,iBA2D/D"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Delete Product Variants Command
|
|
3
|
+
*
|
|
4
|
+
* Following Command Pattern - thin orchestration layer
|
|
5
|
+
* Delegates business logic to ProductService
|
|
6
|
+
*/
|
|
7
|
+
import { getCredentials, getSessionId } from '../../lib/api-client.js';
|
|
8
|
+
import { parseArgs, hasHelpFlag } from '../../lib/args-parser.js';
|
|
9
|
+
import { ProductService } from './service.js';
|
|
10
|
+
function showHelp() {
|
|
11
|
+
console.log(`
|
|
12
|
+
Delete Product Variants
|
|
13
|
+
|
|
14
|
+
USAGE:
|
|
15
|
+
ecomcoder product delete-variants [OPTIONS]
|
|
16
|
+
|
|
17
|
+
OPTIONS:
|
|
18
|
+
--product-id <id> Product ID (required)
|
|
19
|
+
--variant-ids <ids> Comma-separated variant IDs to delete (required)
|
|
20
|
+
--session-id Session ID (auto-provided via SESSION_ID env var)
|
|
21
|
+
--help, -h Show this help message
|
|
22
|
+
|
|
23
|
+
EXAMPLES:
|
|
24
|
+
# Delete single variant
|
|
25
|
+
ecomcoder product delete-variants \
|
|
26
|
+
--product-id=123456789 \
|
|
27
|
+
--variant-ids="gid://shopify/ProductVariant/987654321"
|
|
28
|
+
|
|
29
|
+
# Delete multiple variants
|
|
30
|
+
ecomcoder product delete-variants \
|
|
31
|
+
--product-id="gid://shopify/Product/123456789" \
|
|
32
|
+
--variant-ids="gid://shopify/ProductVariant/111,gid://shopify/ProductVariant/222"
|
|
33
|
+
|
|
34
|
+
# Delete using numeric IDs
|
|
35
|
+
ecomcoder product delete-variants \
|
|
36
|
+
--product-id=123 \
|
|
37
|
+
--variant-ids="456,789"
|
|
38
|
+
|
|
39
|
+
IMPORTANT RESTRICTIONS:
|
|
40
|
+
- Cannot delete the last variant of a product (every product must have at least one variant)
|
|
41
|
+
- All variant IDs must belong to the specified product
|
|
42
|
+
- Cannot delete variants associated with active or unfulfilled orders
|
|
43
|
+
- Deletion is permanent - inventory data will be lost
|
|
44
|
+
|
|
45
|
+
NOTES:
|
|
46
|
+
- Deleted variants cannot be recovered
|
|
47
|
+
- Existing orders are NOT affected (historical data preserved)
|
|
48
|
+
- Inventory for deleted variants is permanently removed
|
|
49
|
+
- Use comma-separated list for multiple variants (no spaces)
|
|
50
|
+
`);
|
|
51
|
+
process.exit(0);
|
|
52
|
+
}
|
|
53
|
+
export async function run(argv = process.argv.slice(2)) {
|
|
54
|
+
if (hasHelpFlag(argv)) {
|
|
55
|
+
showHelp();
|
|
56
|
+
}
|
|
57
|
+
const args = parseArgs(argv);
|
|
58
|
+
// Validate required arguments
|
|
59
|
+
if (!args.productId) {
|
|
60
|
+
console.error(JSON.stringify({
|
|
61
|
+
success: false,
|
|
62
|
+
error: 'Missing required argument: --product-id'
|
|
63
|
+
}));
|
|
64
|
+
process.exit(1);
|
|
65
|
+
}
|
|
66
|
+
if (!args.variantIds) {
|
|
67
|
+
console.error(JSON.stringify({
|
|
68
|
+
success: false,
|
|
69
|
+
error: 'Missing required argument: --variant-ids'
|
|
70
|
+
}));
|
|
71
|
+
process.exit(1);
|
|
72
|
+
}
|
|
73
|
+
try {
|
|
74
|
+
// Parse variant IDs from comma-separated string
|
|
75
|
+
const variantIds = args.variantIds.split(',').map((id) => id.trim()).filter(Boolean);
|
|
76
|
+
if (variantIds.length === 0) {
|
|
77
|
+
console.error(JSON.stringify({
|
|
78
|
+
success: false,
|
|
79
|
+
error: 'No valid variant IDs provided'
|
|
80
|
+
}));
|
|
81
|
+
process.exit(1);
|
|
82
|
+
}
|
|
83
|
+
// Get credentials
|
|
84
|
+
const sessionId = getSessionId(args.sessionId);
|
|
85
|
+
const credentials = await getCredentials(sessionId, args.backendUrl, args.jwt);
|
|
86
|
+
// Execute delete via service
|
|
87
|
+
const result = await ProductService.deleteVariants(credentials, {
|
|
88
|
+
productId: args.productId,
|
|
89
|
+
variantIds
|
|
90
|
+
});
|
|
91
|
+
// Output result
|
|
92
|
+
console.log(JSON.stringify(result, null, 2));
|
|
93
|
+
if (!result.success) {
|
|
94
|
+
process.exit(1);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
catch (error) {
|
|
98
|
+
console.error(JSON.stringify({
|
|
99
|
+
success: false,
|
|
100
|
+
error: error.message || 'Unknown error occurred'
|
|
101
|
+
}));
|
|
102
|
+
process.exit(1);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=delete-variants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delete-variants.js","sourceRoot":"","sources":["../../../src/commands/product/delete-variants.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,SAAS,QAAQ;IACf,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuCb,CAAC,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,GAAG,CAAC,OAAiB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAC9D,IAAI,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;QACtB,QAAQ,EAAE,CAAC;IACb,CAAC;IAED,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAE7B,8BAA8B;IAC9B,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;QACpB,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;YAC3B,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,yCAAyC;SACjD,CAAC,CAAC,CAAC;QACJ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;QACrB,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;YAC3B,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,0CAA0C;SAClD,CAAC,CAAC,CAAC;QACJ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,CAAC;QACH,gDAAgD;QAChD,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAAU,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAE7F,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;gBAC3B,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,+BAA+B;aACvC,CAAC,CAAC,CAAC;YACJ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,kBAAkB;QAClB,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC/C,MAAM,WAAW,GAAG,MAAM,cAAc,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QAE/E,6BAA6B;QAC7B,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,cAAc,CAAC,WAAW,EAAE;YAC9D,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,UAAU;SACX,CAAC,CAAC;QAEH,gBAAgB;QAChB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAE7C,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;YAC3B,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,KAAK,CAAC,OAAO,IAAI,wBAAwB;SACjD,CAAC,CAAC,CAAC;QACJ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
|