ecomcoder-cli 1.3.4 → 1.3.5

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/dist/cli.js CHANGED
@@ -12,6 +12,7 @@
12
12
  */
13
13
  import { getPositionalArgs } from './lib/args-parser.js';
14
14
  import { registry } from './lib/command-registry.js';
15
+ import { HelpGenerator } from './lib/help-generator.js';
15
16
  // Register all command groups
16
17
  import { registerProductCommands } from './commands/product/index.js';
17
18
  import { registerShopCommands } from './commands/shop/index.js';
@@ -27,101 +28,7 @@ registerProductsCommands();
27
28
  registerDocsCommands();
28
29
  registerDiscountCommands();
29
30
  function showMainHelp() {
30
- console.log(`
31
- EcomCoder CLI - Shopify Development Utilities
32
-
33
- USAGE:
34
- ecomcoder <command> <subcommand> [options]
35
-
36
- COMMANDS:
37
- products create Create dummy Shopify products for testing
38
- products list List products in your Shopify store
39
- product create Create a new product from scratch
40
- product get Get detailed product data
41
- product set-metafield Set or update product metafield values
42
- product update-title Update product title
43
- product update-description Update product description
44
- product update-price Update product price and compare-at price
45
- product update-status Update product status (ACTIVE, DRAFT, ARCHIVED)
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)
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
54
- discount list List all discounts with filtering
55
- discount delete Delete a discount by ID
56
- metafield create Create metafield definition
57
- metafield get Get metafield definition(s)
58
- docs search Search Shopify theme documentation
59
-
60
- GLOBAL OPTIONS:
61
- --session-id Session ID for authentication (auto-provided when used with Claude)
62
- --help, -h Show help information
63
-
64
- ENVIRONMENT VARIABLES:
65
- SESSION_ID Session ID (auto-injected by Claude Agent SDK)
66
- BACKEND_URL Orchestrator backend URL (auto-injected by agent)
67
- SUPABASE_JWT Authentication token (auto-injected by agent)
68
- SUPABASE_URL Supabase project URL (auto-injected by agent)
69
- SUPABASE_ANON_KEY Supabase anonymous key (auto-injected by agent)
70
-
71
- EXAMPLES:
72
- # Create 10 dummy products
73
- ecomcoder products create --count=10
74
-
75
- # List 50 products
76
- ecomcoder products list --limit=50
77
-
78
- # Create a new product
79
- ecomcoder product create --title="Premium Hair Serum" --price=29.99 --sku="HAIR-001"
80
-
81
- # Get product details
82
- ecomcoder product get --id=123456789
83
- ecomcoder product get --title="Blue T-Shirt"
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
-
92
- # Update product description
93
- ecomcoder product update-description --id=123 --description="Premium cotton t-shirt"
94
-
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
100
-
101
- # Change product template
102
- ecomcoder product update-template --id=123 --template=premium
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
-
110
- # Create product-level metafield
111
- ecomcoder metafield create --name="Rating" --key=rating --type=number_decimal --owner-type=PRODUCT
112
-
113
- # Create shop-level metafield (global)
114
- ecomcoder metafield create --name="Cart Upsell" --key=cart_upsell --type=product_reference --owner-type=SHOP
115
-
116
- # Get metafield definition
117
- ecomcoder metafield get --namespace=ecomcoder --key=upsell --owner-type=PRODUCT
118
-
119
- # Search Shopify theme docs
120
- ecomcoder docs search --query="How do sections work?"
121
-
122
- For more help on specific commands, run:
123
- ecomcoder <command> <subcommand> --help
124
- `);
31
+ console.log(HelpGenerator.generateMainHelp());
125
32
  }
126
33
  async function main() {
127
34
  const args = process.argv.slice(2);
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/discount/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH;;GAEG;AACH,wBAAgB,wBAAwB,IAAI,IAAI,CA4F/C"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/discount/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH;;GAEG;AACH,wBAAgB,wBAAwB,IAAI,IAAI,CAoD/C"}
@@ -4,6 +4,7 @@
4
4
  * Following Open/Closed Principle - commands register themselves
5
5
  */
6
6
  import { registry } from '../../lib/command-registry.js';
7
+ import { HelpGenerator } from '../../lib/help-generator.js';
7
8
  /**
8
9
  * Register all discount commands
9
10
  */
@@ -11,56 +12,9 @@ export function registerDiscountCommands() {
11
12
  // Register command group
12
13
  registry.registerGroup({
13
14
  command: 'discount',
14
- description: 'Create and manage Shopify discounts',
15
+ description: 'Create and manage discounts',
15
16
  showHelp: () => {
16
- console.log(`
17
- Discount Commands - Create and manage Shopify discounts
18
-
19
- USAGE:
20
- ecomcoder discount <subcommand> [options]
21
-
22
- SUBCOMMANDS:
23
- create-basic Create basic discount (percentage or fixed amount off)
24
- create-bxgy Create BXGY (Buy X Get Y) discount
25
- create-shipping Create free shipping discount
26
- list List all discounts with filtering
27
- delete Delete a discount by ID
28
-
29
- EXAMPLES:
30
- # Create percentage discount with code
31
- ecomcoder discount create-basic \\
32
- --title="Summer Sale" \\
33
- --code="SUMMER25" \\
34
- --type=percentage \\
35
- --value=0.25 \\
36
- --starts-at="2026-06-01T00:00:00Z"
37
-
38
- # Create fixed amount discount with minimum
39
- ecomcoder discount create-basic \\
40
- --title="$10 Off Orders Over $50" \\
41
- --code="SAVE10" \\
42
- --type=fixed_amount \\
43
- --value=10.00 \\
44
- --min-subtotal=50.00 \\
45
- --starts-at="2026-06-01T00:00:00Z"
46
-
47
- # Create automatic discount
48
- ecomcoder discount create-basic \\
49
- --title="VIP Discount" \\
50
- --automatic \\
51
- --type=percentage \\
52
- --value=0.15 \\
53
- --starts-at="2026-06-01T00:00:00Z"
54
-
55
- # List active discounts
56
- ecomcoder discount list --status=active
57
-
58
- # Delete discount
59
- ecomcoder discount delete --id="gid://shopify/DiscountCodeNode/123"
60
-
61
- For detailed help on a specific subcommand:
62
- ecomcoder discount <subcommand> --help
63
- `);
17
+ console.log(HelpGenerator.generateGroupHelp('discount'));
64
18
  }
65
19
  });
66
20
  // Register individual subcommands
@@ -68,30 +22,37 @@ For detailed help on a specific subcommand:
68
22
  command: 'discount',
69
23
  subcommand: 'create-basic',
70
24
  description: 'Create basic discount (percentage or fixed amount off)',
25
+ category: 'Create',
26
+ quickExample: 'ecomcoder discount create-basic --title="Summer Sale" --code="SUMMER25" --type=percentage --value=0.25 --starts-at="2026-06-01T00:00:00Z"',
71
27
  handler: async () => await import('./create-basic.js')
72
28
  });
73
29
  registry.register({
74
30
  command: 'discount',
75
31
  subcommand: 'create-bxgy',
76
32
  description: 'Create BXGY (Buy X Get Y) discount',
33
+ category: 'Create',
77
34
  handler: async () => await import('./create-bxgy.js')
78
35
  });
79
36
  registry.register({
80
37
  command: 'discount',
81
38
  subcommand: 'create-shipping',
82
39
  description: 'Create free shipping discount',
40
+ category: 'Create',
83
41
  handler: async () => await import('./create-shipping.js')
84
42
  });
85
43
  registry.register({
86
44
  command: 'discount',
87
45
  subcommand: 'list',
88
46
  description: 'List all discounts with filtering',
47
+ category: 'Manage',
48
+ quickExample: 'ecomcoder discount list --status=active',
89
49
  handler: async () => await import('./list.js')
90
50
  });
91
51
  registry.register({
92
52
  command: 'discount',
93
53
  subcommand: 'delete',
94
54
  description: 'Delete a discount by ID',
55
+ category: 'Manage',
95
56
  handler: async () => await import('./delete.js')
96
57
  });
97
58
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/discount/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAEzD;;GAEG;AACH,MAAM,UAAU,wBAAwB;IACtC,yBAAyB;IACzB,QAAQ,CAAC,aAAa,CAAC;QACrB,OAAO,EAAE,UAAU;QACnB,WAAW,EAAE,qCAAqC;QAClD,QAAQ,EAAE,GAAG,EAAE;YACb,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+CjB,CAAC,CAAC;QACC,CAAC;KACF,CAAC,CAAC;IAEH,kCAAkC;IAClC,QAAQ,CAAC,QAAQ,CAAC;QAChB,OAAO,EAAE,UAAU;QACnB,UAAU,EAAE,cAAc;QAC1B,WAAW,EAAE,wDAAwD;QACrE,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM,MAAM,CAAC,mBAAmB,CAAC;KACvD,CAAC,CAAC;IAEH,QAAQ,CAAC,QAAQ,CAAC;QAChB,OAAO,EAAE,UAAU;QACnB,UAAU,EAAE,aAAa;QACzB,WAAW,EAAE,oCAAoC;QACjD,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM,MAAM,CAAC,kBAAkB,CAAC;KACtD,CAAC,CAAC;IAEH,QAAQ,CAAC,QAAQ,CAAC;QAChB,OAAO,EAAE,UAAU;QACnB,UAAU,EAAE,iBAAiB;QAC7B,WAAW,EAAE,+BAA+B;QAC5C,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM,MAAM,CAAC,sBAAsB,CAAC;KAC1D,CAAC,CAAC;IAEH,QAAQ,CAAC,QAAQ,CAAC;QAChB,OAAO,EAAE,UAAU;QACnB,UAAU,EAAE,MAAM;QAClB,WAAW,EAAE,mCAAmC;QAChD,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM,MAAM,CAAC,WAAW,CAAC;KAC/C,CAAC,CAAC;IAEH,QAAQ,CAAC,QAAQ,CAAC;QAChB,OAAO,EAAE,UAAU;QACnB,UAAU,EAAE,QAAQ;QACpB,WAAW,EAAE,yBAAyB;QACtC,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC;KACjD,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/discount/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAE5D;;GAEG;AACH,MAAM,UAAU,wBAAwB;IACtC,yBAAyB;IACzB,QAAQ,CAAC,aAAa,CAAC;QACrB,OAAO,EAAE,UAAU;QACnB,WAAW,EAAE,6BAA6B;QAC1C,QAAQ,EAAE,GAAG,EAAE;YACb,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC,CAAC;QAC3D,CAAC;KACF,CAAC,CAAC;IAEH,kCAAkC;IAClC,QAAQ,CAAC,QAAQ,CAAC;QAChB,OAAO,EAAE,UAAU;QACnB,UAAU,EAAE,cAAc;QAC1B,WAAW,EAAE,wDAAwD;QACrE,QAAQ,EAAE,QAAQ;QAClB,YAAY,EAAE,2IAA2I;QACzJ,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM,MAAM,CAAC,mBAAmB,CAAC;KACvD,CAAC,CAAC;IAEH,QAAQ,CAAC,QAAQ,CAAC;QAChB,OAAO,EAAE,UAAU;QACnB,UAAU,EAAE,aAAa;QACzB,WAAW,EAAE,oCAAoC;QACjD,QAAQ,EAAE,QAAQ;QAClB,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM,MAAM,CAAC,kBAAkB,CAAC;KACtD,CAAC,CAAC;IAEH,QAAQ,CAAC,QAAQ,CAAC;QAChB,OAAO,EAAE,UAAU;QACnB,UAAU,EAAE,iBAAiB;QAC7B,WAAW,EAAE,+BAA+B;QAC5C,QAAQ,EAAE,QAAQ;QAClB,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM,MAAM,CAAC,sBAAsB,CAAC;KAC1D,CAAC,CAAC;IAEH,QAAQ,CAAC,QAAQ,CAAC;QAChB,OAAO,EAAE,UAAU;QACnB,UAAU,EAAE,MAAM;QAClB,WAAW,EAAE,mCAAmC;QAChD,QAAQ,EAAE,QAAQ;QAClB,YAAY,EAAE,yCAAyC;QACvD,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM,MAAM,CAAC,WAAW,CAAC;KAC/C,CAAC,CAAC;IAEH,QAAQ,CAAC,QAAQ,CAAC;QAChB,OAAO,EAAE,UAAU;QACnB,UAAU,EAAE,QAAQ;QACpB,WAAW,EAAE,yBAAyB;QACtC,QAAQ,EAAE,QAAQ;QAClB,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC;KACjD,CAAC,CAAC;AACL,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/docs/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,IAAI,CAiC3C"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/docs/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,IAAI,CAkB3C"}
@@ -4,6 +4,7 @@
4
4
  * Following Open/Closed Principle - commands register themselves
5
5
  */
6
6
  import { registry } from '../../lib/command-registry.js';
7
+ import { HelpGenerator } from '../../lib/help-generator.js';
7
8
  /**
8
9
  * Register all docs commands
9
10
  */
@@ -11,25 +12,9 @@ export function registerDocsCommands() {
11
12
  // Register command group
12
13
  registry.registerGroup({
13
14
  command: 'docs',
14
- description: 'Search Shopify theme documentation',
15
+ description: 'Search theme documentation',
15
16
  showHelp: () => {
16
- console.log(`
17
- Docs Commands - Search Shopify theme documentation
18
-
19
- USAGE:
20
- ecomcoder docs <subcommand> [options]
21
-
22
- SUBCOMMANDS:
23
- search Search Shopify theme docs using RAG
24
-
25
- EXAMPLES:
26
- # Search Shopify theme docs
27
- ecomcoder docs search --query="How do sections work?"
28
- ecomcoder docs search --query="Liquid filters for dates"
29
-
30
- For detailed help on a specific subcommand:
31
- ecomcoder docs <subcommand> --help
32
- `);
17
+ console.log(HelpGenerator.generateGroupHelp('docs'));
33
18
  }
34
19
  });
35
20
  // Register individual subcommands
@@ -37,6 +22,7 @@ For detailed help on a specific subcommand:
37
22
  command: 'docs',
38
23
  subcommand: 'search',
39
24
  description: 'Search Shopify theme documentation',
25
+ quickExample: 'ecomcoder docs search --query="How do sections work?"',
40
26
  handler: async () => await import('../docs-search.js')
41
27
  });
42
28
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/docs/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAEzD;;GAEG;AACH,MAAM,UAAU,oBAAoB;IAClC,yBAAyB;IACzB,QAAQ,CAAC,aAAa,CAAC;QACrB,OAAO,EAAE,MAAM;QACf,WAAW,EAAE,oCAAoC;QACjD,QAAQ,EAAE,GAAG,EAAE;YACb,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;CAgBjB,CAAC,CAAC;QACC,CAAC;KACF,CAAC,CAAC;IAEH,kCAAkC;IAClC,QAAQ,CAAC,QAAQ,CAAC;QAChB,OAAO,EAAE,MAAM;QACf,UAAU,EAAE,QAAQ;QACpB,WAAW,EAAE,oCAAoC;QACjD,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM,MAAM,CAAC,mBAAmB,CAAC;KACvD,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/docs/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAE5D;;GAEG;AACH,MAAM,UAAU,oBAAoB;IAClC,yBAAyB;IACzB,QAAQ,CAAC,aAAa,CAAC;QACrB,OAAO,EAAE,MAAM;QACf,WAAW,EAAE,4BAA4B;QACzC,QAAQ,EAAE,GAAG,EAAE;YACb,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC;QACvD,CAAC;KACF,CAAC,CAAC;IAEH,kCAAkC;IAClC,QAAQ,CAAC,QAAQ,CAAC;QAChB,OAAO,EAAE,MAAM;QACf,UAAU,EAAE,QAAQ;QACpB,WAAW,EAAE,oCAAoC;QACjD,YAAY,EAAE,uDAAuD;QACrE,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM,MAAM,CAAC,mBAAmB,CAAC;KACvD,CAAC,CAAC;AACL,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/metafield/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH;;GAEG;AACH,wBAAgB,yBAAyB,IAAI,IAAI,CA8ChD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/metafield/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH;;GAEG;AACH,wBAAgB,yBAAyB,IAAI,IAAI,CA2BhD"}
@@ -4,6 +4,7 @@
4
4
  * Following Open/Closed Principle - commands register themselves
5
5
  */
6
6
  import { registry } from '../../lib/command-registry.js';
7
+ import { HelpGenerator } from '../../lib/help-generator.js';
7
8
  /**
8
9
  * Register all metafield commands
9
10
  */
@@ -11,31 +12,9 @@ export function registerMetafieldCommands() {
11
12
  // Register command group
12
13
  registry.registerGroup({
13
14
  command: 'metafield',
14
- description: 'Manage Shopify metafield definitions',
15
+ description: 'Metafield definitions',
15
16
  showHelp: () => {
16
- console.log(`
17
- Metafield Commands - Manage Shopify metafield definitions
18
-
19
- USAGE:
20
- ecomcoder metafield <subcommand> [options]
21
-
22
- SUBCOMMANDS:
23
- create Create metafield definition
24
- get Get metafield definition(s)
25
-
26
- EXAMPLES:
27
- # Create product-level metafield
28
- ecomcoder metafield create --name="Rating" --key=rating --type=number_decimal --owner-type=PRODUCT
29
-
30
- # Create shop-level metafield (global)
31
- ecomcoder metafield create --name="Cart Upsell" --key=cart_upsell --type=product_reference --owner-type=SHOP
32
-
33
- # Get metafield definition
34
- ecomcoder metafield get --namespace=ecomcoder --key=upsell --owner-type=PRODUCT
35
-
36
- For detailed help on a specific subcommand:
37
- ecomcoder metafield <subcommand> --help
38
- `);
17
+ console.log(HelpGenerator.generateGroupHelp('metafield'));
39
18
  }
40
19
  });
41
20
  // Register individual subcommands
@@ -43,12 +22,15 @@ For detailed help on a specific subcommand:
43
22
  command: 'metafield',
44
23
  subcommand: 'create',
45
24
  description: 'Create metafield definition',
25
+ category: 'Definitions',
26
+ quickExample: 'ecomcoder metafield create --name="Rating" --key=rating --type=number_decimal --owner-type=PRODUCT',
46
27
  handler: async () => await import('../create-metafield.js')
47
28
  });
48
29
  registry.register({
49
30
  command: 'metafield',
50
31
  subcommand: 'get',
51
32
  description: 'Get metafield definition(s)',
33
+ category: 'Definitions',
52
34
  handler: async () => await import('../get-metafield.js')
53
35
  });
54
36
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/metafield/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAEzD;;GAEG;AACH,MAAM,UAAU,yBAAyB;IACvC,yBAAyB;IACzB,QAAQ,CAAC,aAAa,CAAC;QACrB,OAAO,EAAE,WAAW;QACpB,WAAW,EAAE,sCAAsC;QACnD,QAAQ,EAAE,GAAG,EAAE;YACb,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;CAsBjB,CAAC,CAAC;QACC,CAAC;KACF,CAAC,CAAC;IAEH,kCAAkC;IAClC,QAAQ,CAAC,QAAQ,CAAC;QAChB,OAAO,EAAE,WAAW;QACpB,UAAU,EAAE,QAAQ;QACpB,WAAW,EAAE,6BAA6B;QAC1C,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM,MAAM,CAAC,wBAAwB,CAAC;KAC5D,CAAC,CAAC;IAEH,QAAQ,CAAC,QAAQ,CAAC;QAChB,OAAO,EAAE,WAAW;QACpB,UAAU,EAAE,KAAK;QACjB,WAAW,EAAE,6BAA6B;QAC1C,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM,MAAM,CAAC,qBAAqB,CAAC;KACzD,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/metafield/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAE5D;;GAEG;AACH,MAAM,UAAU,yBAAyB;IACvC,yBAAyB;IACzB,QAAQ,CAAC,aAAa,CAAC;QACrB,OAAO,EAAE,WAAW;QACpB,WAAW,EAAE,uBAAuB;QACpC,QAAQ,EAAE,GAAG,EAAE;YACb,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC,CAAC;QAC5D,CAAC;KACF,CAAC,CAAC;IAEH,kCAAkC;IAClC,QAAQ,CAAC,QAAQ,CAAC;QAChB,OAAO,EAAE,WAAW;QACpB,UAAU,EAAE,QAAQ;QACpB,WAAW,EAAE,6BAA6B;QAC1C,QAAQ,EAAE,aAAa;QACvB,YAAY,EAAE,oGAAoG;QAClH,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM,MAAM,CAAC,wBAAwB,CAAC;KAC5D,CAAC,CAAC;IAEH,QAAQ,CAAC,QAAQ,CAAC;QAChB,OAAO,EAAE,WAAW;QACpB,UAAU,EAAE,KAAK;QACjB,WAAW,EAAE,6BAA6B;QAC1C,QAAQ,EAAE,aAAa;QACvB,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM,MAAM,CAAC,qBAAqB,CAAC;KACzD,CAAC,CAAC;AACL,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/product/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH;;GAEG;AACH,wBAAgB,uBAAuB,IAAI,IAAI,CAiJ9C"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/product/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH;;GAEG;AACH,wBAAgB,uBAAuB,IAAI,IAAI,CAsG9C"}
@@ -4,6 +4,7 @@
4
4
  * Following Open/Closed Principle - commands register themselves
5
5
  */
6
6
  import { registry } from '../../lib/command-registry.js';
7
+ import { HelpGenerator } from '../../lib/help-generator.js';
7
8
  /**
8
9
  * Register all product commands
9
10
  */
@@ -11,67 +12,9 @@ export function registerProductCommands() {
11
12
  // Register command group
12
13
  registry.registerGroup({
13
14
  command: 'product',
14
- description: 'View and modify Shopify product data',
15
+ description: 'Manage individual products',
15
16
  showHelp: () => {
16
- console.log(`
17
- Product Commands - View and modify Shopify product data
18
-
19
- USAGE:
20
- ecomcoder product <subcommand> [options]
21
-
22
- SUBCOMMANDS:
23
- create Create a new product from scratch
24
- get Get product details by ID, title, or handle
25
- get-metafield View product metafield values
26
- set-metafield Set or update product metafield values
27
- update-title Update product title
28
- update-description Update product description
29
- update-price Update product price and compare-at price
30
- update-status Update product status (ACTIVE, DRAFT, ARCHIVED, UNLISTED)
31
- update-template Change product template assignment
32
- create-variants Create product variants (bulk operation)
33
- delete-variants Delete product variants (bulk operation)
34
-
35
- EXAMPLES:
36
- # Create product
37
- ecomcoder product create --title="Premium Hair Serum" --price=29.99 --sku="HAIR-001"
38
-
39
- # Get product details
40
- ecomcoder product get --title="Blue T-Shirt"
41
- ecomcoder product get --id=123456789
42
-
43
- # Get metafield value
44
- ecomcoder product get-metafield --id=123 --namespace=bundles --key=products
45
-
46
- # Set metafield (AI bundle automation)
47
- ecomcoder product set-metafield --id=123 --namespace=bundles --key=products \\
48
- --value='["gid://shopify/Product/456","gid://shopify/Product/789"]' \\
49
- --type=list.product_reference
50
-
51
- # Update title
52
- ecomcoder product update-title --id=123 --title="Premium Cotton T-Shirt"
53
-
54
- # Update description
55
- ecomcoder product update-description --id=123 --description="Premium cotton t-shirt"
56
-
57
- # Update price
58
- ecomcoder product update-price --id=123 --price=34.99 --compare-at-price=49.99
59
-
60
- # Update status
61
- ecomcoder product update-status --id=123 --status=ACTIVE
62
-
63
- # Change template
64
- ecomcoder product update-template --id=123 --template=premium
65
-
66
- # Create variants
67
- ecomcoder product create-variants --product-id=123 --variants='[{"price":"29.99","inventoryItem":{"sku":"TEST-001"}}]'
68
-
69
- # Delete variants
70
- ecomcoder product delete-variants --product-id=123 --variant-ids="456,789"
71
-
72
- For detailed help on a specific subcommand:
73
- ecomcoder product <subcommand> --help
74
- `);
17
+ console.log(HelpGenerator.generateGroupHelp('product'));
75
18
  }
76
19
  });
77
20
  // Register individual subcommands
@@ -79,66 +22,81 @@ For detailed help on a specific subcommand:
79
22
  command: 'product',
80
23
  subcommand: 'create',
81
24
  description: 'Create a new product from scratch',
25
+ category: 'CRUD',
26
+ quickExample: 'ecomcoder product create --title="Premium Hair Serum" --price=29.99',
82
27
  handler: async () => await import('./create.js')
83
28
  });
84
29
  registry.register({
85
30
  command: 'product',
86
31
  subcommand: 'get',
87
32
  description: 'Get product details by ID, title, or handle',
33
+ category: 'CRUD',
34
+ quickExample: 'ecomcoder product get --id=123',
88
35
  handler: async () => await import('./get.js')
89
36
  });
90
37
  registry.register({
91
38
  command: 'product',
92
39
  subcommand: 'get-metafield',
93
40
  description: 'View product metafield values',
41
+ category: 'Metafields',
94
42
  handler: async () => await import('./get-metafield.js')
95
43
  });
96
44
  registry.register({
97
45
  command: 'product',
98
46
  subcommand: 'set-metafield',
99
47
  description: 'Set or update product metafield values',
48
+ category: 'Metafields',
49
+ quickExample: 'ecomcoder product set-metafield --id=123 --namespace=custom --key=rating --value=4.5 --type=number_decimal',
100
50
  handler: async () => await import('./set-metafield.js')
101
51
  });
102
52
  registry.register({
103
53
  command: 'product',
104
54
  subcommand: 'update-title',
105
55
  description: 'Update product title',
56
+ category: 'Updates',
106
57
  handler: async () => await import('./update-title.js')
107
58
  });
108
59
  registry.register({
109
60
  command: 'product',
110
61
  subcommand: 'update-description',
111
62
  description: 'Update product description',
63
+ category: 'Updates',
112
64
  handler: async () => await import('./update-description.js')
113
65
  });
114
66
  registry.register({
115
67
  command: 'product',
116
68
  subcommand: 'update-price',
117
69
  description: 'Update product price and compare-at price',
70
+ category: 'Updates',
71
+ quickExample: 'ecomcoder product update-price --id=123 --price=29.99',
118
72
  handler: async () => await import('./update-price.js')
119
73
  });
120
74
  registry.register({
121
75
  command: 'product',
122
76
  subcommand: 'update-status',
123
77
  description: 'Update product status (ACTIVE, DRAFT, ARCHIVED, UNLISTED)',
78
+ category: 'Updates',
124
79
  handler: async () => await import('./update-status.js')
125
80
  });
126
81
  registry.register({
127
82
  command: 'product',
128
83
  subcommand: 'update-template',
129
84
  description: 'Change product template assignment',
85
+ category: 'Updates',
130
86
  handler: async () => await import('./update-template.js')
131
87
  });
132
88
  registry.register({
133
89
  command: 'product',
134
90
  subcommand: 'create-variants',
135
91
  description: 'Create product variants (bulk operation)',
92
+ category: 'Variants',
136
93
  handler: async () => await import('./create-variants.js')
137
94
  });
138
95
  registry.register({
139
96
  command: 'product',
140
97
  subcommand: 'delete-variants',
141
98
  description: 'Delete product variants (bulk operation)',
99
+ category: 'Variants',
142
100
  handler: async () => await import('./delete-variants.js')
143
101
  });
144
102
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/product/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/product/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/products/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH;;GAEG;AACH,wBAAgB,wBAAwB,IAAI,IAAI,CA2C/C"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/products/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH;;GAEG;AACH,wBAAgB,wBAAwB,IAAI,IAAI,CA0B/C"}
@@ -4,6 +4,7 @@
4
4
  * Following Open/Closed Principle - commands register themselves
5
5
  */
6
6
  import { registry } from '../../lib/command-registry.js';
7
+ import { HelpGenerator } from '../../lib/help-generator.js';
7
8
  /**
8
9
  * Register all products commands
9
10
  */
@@ -11,28 +12,9 @@ export function registerProductsCommands() {
11
12
  // Register command group
12
13
  registry.registerGroup({
13
14
  command: 'products',
14
- description: 'Manage multiple Shopify products (bulk operations)',
15
+ description: 'Bulk product operations',
15
16
  showHelp: () => {
16
- console.log(`
17
- Products Commands - Bulk product operations and utilities
18
-
19
- USAGE:
20
- ecomcoder products <subcommand> [options]
21
-
22
- SUBCOMMANDS:
23
- create Create dummy Shopify products for testing
24
- list List products in your Shopify store
25
-
26
- EXAMPLES:
27
- # Create 10 dummy products
28
- ecomcoder products create --count=10
29
-
30
- # List 50 products
31
- ecomcoder products list --limit=50
32
-
33
- For detailed help on a specific subcommand:
34
- ecomcoder products <subcommand> --help
35
- `);
17
+ console.log(HelpGenerator.generateGroupHelp('products'));
36
18
  }
37
19
  });
38
20
  // Register individual subcommands
@@ -40,12 +22,14 @@ For detailed help on a specific subcommand:
40
22
  command: 'products',
41
23
  subcommand: 'create',
42
24
  description: 'Create dummy Shopify products for testing',
25
+ quickExample: 'ecomcoder products create --count=10',
43
26
  handler: async () => await import('../create-dummy-products.js')
44
27
  });
45
28
  registry.register({
46
29
  command: 'products',
47
30
  subcommand: 'list',
48
31
  description: 'List products in your Shopify store',
32
+ quickExample: 'ecomcoder products list --limit=50',
49
33
  handler: async () => await import('../list-products.js')
50
34
  });
51
35
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/products/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAEzD;;GAEG;AACH,MAAM,UAAU,wBAAwB;IACtC,yBAAyB;IACzB,QAAQ,CAAC,aAAa,CAAC;QACrB,OAAO,EAAE,UAAU;QACnB,WAAW,EAAE,oDAAoD;QACjE,QAAQ,EAAE,GAAG,EAAE;YACb,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;CAmBjB,CAAC,CAAC;QACC,CAAC;KACF,CAAC,CAAC;IAEH,kCAAkC;IAClC,QAAQ,CAAC,QAAQ,CAAC;QAChB,OAAO,EAAE,UAAU;QACnB,UAAU,EAAE,QAAQ;QACpB,WAAW,EAAE,2CAA2C;QACxD,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM,MAAM,CAAC,6BAA6B,CAAC;KACjE,CAAC,CAAC;IAEH,QAAQ,CAAC,QAAQ,CAAC;QAChB,OAAO,EAAE,UAAU;QACnB,UAAU,EAAE,MAAM;QAClB,WAAW,EAAE,qCAAqC;QAClD,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM,MAAM,CAAC,qBAAqB,CAAC;KACzD,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/products/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAE5D;;GAEG;AACH,MAAM,UAAU,wBAAwB;IACtC,yBAAyB;IACzB,QAAQ,CAAC,aAAa,CAAC;QACrB,OAAO,EAAE,UAAU;QACnB,WAAW,EAAE,yBAAyB;QACtC,QAAQ,EAAE,GAAG,EAAE;YACb,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC,CAAC;QAC3D,CAAC;KACF,CAAC,CAAC;IAEH,kCAAkC;IAClC,QAAQ,CAAC,QAAQ,CAAC;QAChB,OAAO,EAAE,UAAU;QACnB,UAAU,EAAE,QAAQ;QACpB,WAAW,EAAE,2CAA2C;QACxD,YAAY,EAAE,sCAAsC;QACpD,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM,MAAM,CAAC,6BAA6B,CAAC;KACjE,CAAC,CAAC;IAEH,QAAQ,CAAC,QAAQ,CAAC;QAChB,OAAO,EAAE,UAAU;QACnB,UAAU,EAAE,MAAM;QAClB,WAAW,EAAE,qCAAqC;QAClD,YAAY,EAAE,oCAAoC;QAClD,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM,MAAM,CAAC,qBAAqB,CAAC;KACzD,CAAC,CAAC;AACL,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/shop/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,IAAI,CAoD3C"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/shop/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,IAAI,CA4B3C"}
@@ -4,6 +4,7 @@
4
4
  * Following Open/Closed Principle - commands register themselves
5
5
  */
6
6
  import { registry } from '../../lib/command-registry.js';
7
+ import { HelpGenerator } from '../../lib/help-generator.js';
7
8
  /**
8
9
  * Register all shop commands
9
10
  */
@@ -11,37 +12,9 @@ export function registerShopCommands() {
11
12
  // Register command group
12
13
  registry.registerGroup({
13
14
  command: 'shop',
14
- description: 'Manage shop-level (store-wide) settings and metafields',
15
+ description: 'Store-wide settings and metafields',
15
16
  showHelp: () => {
16
- console.log(`
17
- Shop Commands - Manage store-wide settings and metafields
18
-
19
- USAGE:
20
- ecomcoder shop <subcommand> [options]
21
-
22
- SUBCOMMANDS:
23
- set-metafield Set or update shop metafield values
24
- get-metafield View shop metafield values
25
-
26
- EXAMPLES:
27
- # Set store-wide announcement
28
- ecomcoder shop set-metafield --namespace=custom --key=announcement --value="Sale!" --type=single_line_text_field
29
-
30
- # Get announcement metafield
31
- ecomcoder shop get-metafield --namespace=custom --key=announcement
32
-
33
- # Get all metafields in 'custom' namespace
34
- ecomcoder shop get-metafield --namespace=custom
35
-
36
- # Set free shipping threshold
37
- ecomcoder shop set-metafield --namespace=shipping --key=min_amount --value="50.00" --type=number_decimal
38
-
39
- # Set featured products (global)
40
- ecomcoder shop set-metafield --namespace=products --key=featured --value='["gid://shopify/Product/123"]' --type=list.product_reference
41
-
42
- For detailed help on a specific subcommand:
43
- ecomcoder shop <subcommand> --help
44
- `);
17
+ console.log(HelpGenerator.generateGroupHelp('shop'));
45
18
  }
46
19
  });
47
20
  // Register individual subcommands
@@ -49,12 +22,16 @@ For detailed help on a specific subcommand:
49
22
  command: 'shop',
50
23
  subcommand: 'set-metafield',
51
24
  description: 'Set or update shop metafield values',
25
+ category: 'Metafields',
26
+ quickExample: 'ecomcoder shop set-metafield --namespace=custom --key=announcement --value="Sale!" --type=single_line_text_field',
52
27
  handler: async () => await import('./set-metafield.js')
53
28
  });
54
29
  registry.register({
55
30
  command: 'shop',
56
31
  subcommand: 'get-metafield',
57
32
  description: 'View shop metafield values',
33
+ category: 'Metafields',
34
+ quickExample: 'ecomcoder shop get-metafield --namespace=custom --key=announcement',
58
35
  handler: async () => await import('./get-metafield.js')
59
36
  });
60
37
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/shop/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAEzD;;GAEG;AACH,MAAM,UAAU,oBAAoB;IAClC,yBAAyB;IACzB,QAAQ,CAAC,aAAa,CAAC;QACrB,OAAO,EAAE,MAAM;QACf,WAAW,EAAE,wDAAwD;QACrE,QAAQ,EAAE,GAAG,EAAE;YACb,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4BjB,CAAC,CAAC;QACC,CAAC;KACF,CAAC,CAAC;IAEH,kCAAkC;IAClC,QAAQ,CAAC,QAAQ,CAAC;QAChB,OAAO,EAAE,MAAM;QACf,UAAU,EAAE,eAAe;QAC3B,WAAW,EAAE,qCAAqC;QAClD,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM,MAAM,CAAC,oBAAoB,CAAC;KACxD,CAAC,CAAC;IAEH,QAAQ,CAAC,QAAQ,CAAC;QAChB,OAAO,EAAE,MAAM;QACf,UAAU,EAAE,eAAe;QAC3B,WAAW,EAAE,4BAA4B;QACzC,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM,MAAM,CAAC,oBAAoB,CAAC;KACxD,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/shop/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAE5D;;GAEG;AACH,MAAM,UAAU,oBAAoB;IAClC,yBAAyB;IACzB,QAAQ,CAAC,aAAa,CAAC;QACrB,OAAO,EAAE,MAAM;QACf,WAAW,EAAE,oCAAoC;QACjD,QAAQ,EAAE,GAAG,EAAE;YACb,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC;QACvD,CAAC;KACF,CAAC,CAAC;IAEH,kCAAkC;IAClC,QAAQ,CAAC,QAAQ,CAAC;QAChB,OAAO,EAAE,MAAM;QACf,UAAU,EAAE,eAAe;QAC3B,WAAW,EAAE,qCAAqC;QAClD,QAAQ,EAAE,YAAY;QACtB,YAAY,EAAE,kHAAkH;QAChI,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM,MAAM,CAAC,oBAAoB,CAAC;KACxD,CAAC,CAAC;IAEH,QAAQ,CAAC,QAAQ,CAAC;QAChB,OAAO,EAAE,MAAM;QACf,UAAU,EAAE,eAAe;QAC3B,WAAW,EAAE,4BAA4B;QACzC,QAAQ,EAAE,YAAY;QACtB,YAAY,EAAE,oEAAoE;QAClF,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM,MAAM,CAAC,oBAAoB,CAAC;KACxD,CAAC,CAAC;AACL,CAAC"}
@@ -16,6 +16,8 @@ export interface CommandMetadata {
16
16
  command: string;
17
17
  subcommand?: string;
18
18
  description: string;
19
+ category?: string;
20
+ quickExample?: string;
19
21
  handler: () => Promise<CommandHandler>;
20
22
  }
21
23
  export interface CommandGroupMetadata {
@@ -1 +1 @@
1
- {"version":3,"file":"command-registry.d.ts","sourceRoot":"","sources":["../../src/lib/command-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACxC;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,OAAO,CAAC,cAAc,CAAC,CAAC;CACxC;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,cAAM,eAAe;IACnB,OAAO,CAAC,QAAQ,CAAsC;IACtD,OAAO,CAAC,aAAa,CAA2C;IAEhE;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI;IAQzC;;OAEG;IACH,aAAa,CAAC,QAAQ,EAAE,oBAAoB,GAAG,IAAI;IAInD;;OAEG;IACG,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAW/E;;OAEG;IACH,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO;IAKlD;;OAEG;IACH,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,eAAe,EAAE;IAKtD;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,oBAAoB,GAAG,SAAS;IAI3D;;OAEG;IACH,YAAY,IAAI,oBAAoB,EAAE;IAItC;;OAEG;IACH,cAAc,IAAI,MAAM,EAAE;CAK3B;AAGD,eAAO,MAAM,QAAQ,iBAAwB,CAAC"}
1
+ {"version":3,"file":"command-registry.d.ts","sourceRoot":"","sources":["../../src/lib/command-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACxC;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,OAAO,CAAC,cAAc,CAAC,CAAC;CACxC;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,cAAM,eAAe;IACnB,OAAO,CAAC,QAAQ,CAAsC;IACtD,OAAO,CAAC,aAAa,CAA2C;IAEhE;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI;IAQzC;;OAEG;IACH,aAAa,CAAC,QAAQ,EAAE,oBAAoB,GAAG,IAAI;IAInD;;OAEG;IACG,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAW/E;;OAEG;IACH,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO;IAKlD;;OAEG;IACH,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,eAAe,EAAE;IAKtD;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,oBAAoB,GAAG,SAAS;IAI3D;;OAEG;IACH,YAAY,IAAI,oBAAoB,EAAE;IAItC;;OAEG;IACH,cAAc,IAAI,MAAM,EAAE;CAK3B;AAGD,eAAO,MAAM,QAAQ,iBAAwB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"command-registry.js","sourceRoot":"","sources":["../../src/lib/command-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAmBH,MAAM,eAAe;IACX,QAAQ,GAAG,IAAI,GAAG,EAA2B,CAAC;IAC9C,aAAa,GAAG,IAAI,GAAG,EAAgC,CAAC;IAEhE;;OAEG;IACH,QAAQ,CAAC,QAAyB;QAChC,MAAM,GAAG,GAAG,QAAQ,CAAC,UAAU;YAC7B,CAAC,CAAC,GAAG,QAAQ,CAAC,OAAO,IAAI,QAAQ,CAAC,UAAU,EAAE;YAC9C,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;QAErB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IACnC,CAAC;IAED;;OAEG;IACH,aAAa,CAAC,QAA8B;QAC1C,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACrD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,GAAG,CAAC,OAAe,EAAE,UAAmB;QAC5C,MAAM,GAAG,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,OAAO,IAAI,UAAU,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;QAC9D,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAExC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,MAAM,QAAQ,CAAC,OAAO,EAAE,CAAC;IAClC,CAAC;IAED;;OAEG;IACH,GAAG,CAAC,OAAe,EAAE,UAAmB;QACtC,MAAM,GAAG,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,OAAO,IAAI,UAAU,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;QAC9D,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,kBAAkB,CAAC,OAAe;QAChC,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;aACtC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC;IAC5C,CAAC;IAED;;OAEG;IACH,QAAQ,CAAC,OAAe;QACtB,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACzC,CAAC;IAED;;OAEG;IACH,YAAY;QACV,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC;IACjD,CAAC;IAED;;OAEG;IACH,cAAc;QACZ,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CACvB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAC3D,CAAC,CAAC;IACL,CAAC;CACF;AAED,qBAAqB;AACrB,MAAM,CAAC,MAAM,QAAQ,GAAG,IAAI,eAAe,EAAE,CAAC"}
1
+ {"version":3,"file":"command-registry.js","sourceRoot":"","sources":["../../src/lib/command-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAqBH,MAAM,eAAe;IACX,QAAQ,GAAG,IAAI,GAAG,EAA2B,CAAC;IAC9C,aAAa,GAAG,IAAI,GAAG,EAAgC,CAAC;IAEhE;;OAEG;IACH,QAAQ,CAAC,QAAyB;QAChC,MAAM,GAAG,GAAG,QAAQ,CAAC,UAAU;YAC7B,CAAC,CAAC,GAAG,QAAQ,CAAC,OAAO,IAAI,QAAQ,CAAC,UAAU,EAAE;YAC9C,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;QAErB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IACnC,CAAC;IAED;;OAEG;IACH,aAAa,CAAC,QAA8B;QAC1C,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACrD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,GAAG,CAAC,OAAe,EAAE,UAAmB;QAC5C,MAAM,GAAG,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,OAAO,IAAI,UAAU,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;QAC9D,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAExC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,MAAM,QAAQ,CAAC,OAAO,EAAE,CAAC;IAClC,CAAC;IAED;;OAEG;IACH,GAAG,CAAC,OAAe,EAAE,UAAmB;QACtC,MAAM,GAAG,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,OAAO,IAAI,UAAU,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;QAC9D,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,kBAAkB,CAAC,OAAe;QAChC,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;aACtC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC;IAC5C,CAAC;IAED;;OAEG;IACH,QAAQ,CAAC,OAAe;QACtB,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACzC,CAAC;IAED;;OAEG;IACH,YAAY;QACV,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC;IACjD,CAAC;IAED;;OAEG;IACH,cAAc;QACZ,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CACvB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAC3D,CAAC,CAAC;IACL,CAAC;CACF;AAED,qBAAqB;AACrB,MAAM,CAAC,MAAM,QAAQ,GAAG,IAAI,eAAe,EAAE,CAAC"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Help Generator
3
+ *
4
+ * Generates help text dynamically from command metadata
5
+ * Implements three-tier hierarchical help system
6
+ */
7
+ import type { CommandMetadata } from './command-registry.js';
8
+ export declare class HelpGenerator {
9
+ /**
10
+ * Generate Level 1: Main Help
11
+ * Shows only command groups, ~28 lines total
12
+ */
13
+ static generateMainHelp(): string;
14
+ /**
15
+ * Generate Level 2: Group Help
16
+ * Shows commands in a group, categorized, ~35 lines
17
+ */
18
+ static generateGroupHelp(command: string): string;
19
+ /**
20
+ * Categorize commands by their category field
21
+ */
22
+ static categorizeCommands(commands: CommandMetadata[]): Map<string, CommandMetadata[]>;
23
+ /**
24
+ * Capitalize first letter
25
+ */
26
+ private static capitalizeFirst;
27
+ }
28
+ //# sourceMappingURL=help-generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"help-generator.d.ts","sourceRoot":"","sources":["../../src/lib/help-generator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAwB,MAAM,uBAAuB,CAAC;AAEnF,qBAAa,aAAa;IACxB;;;OAGG;IACH,MAAM,CAAC,gBAAgB,IAAI,MAAM;IA8CjC;;;OAGG;IACH,MAAM,CAAC,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IA4DjD;;OAEG;IACH,MAAM,CAAC,kBAAkB,CAAC,QAAQ,EAAE,eAAe,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,eAAe,EAAE,CAAC;IAmBtF;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,eAAe;CAG/B"}
@@ -0,0 +1,131 @@
1
+ /**
2
+ * Help Generator
3
+ *
4
+ * Generates help text dynamically from command metadata
5
+ * Implements three-tier hierarchical help system
6
+ */
7
+ import { registry } from './command-registry.js';
8
+ export class HelpGenerator {
9
+ /**
10
+ * Generate Level 1: Main Help
11
+ * Shows only command groups, ~28 lines total
12
+ */
13
+ static generateMainHelp() {
14
+ const groups = registry.getAllGroups();
15
+ const sortedGroups = groups.sort((a, b) => a.command.localeCompare(b.command));
16
+ // Count commands per group
17
+ const groupCounts = new Map();
18
+ sortedGroups.forEach(group => {
19
+ const commands = registry.getCommandsInGroup(group.command);
20
+ groupCounts.set(group.command, commands.length);
21
+ });
22
+ const lines = [];
23
+ lines.push(`
24
+ EcomCoder CLI - Shopify Development Utilities
25
+
26
+ USAGE:
27
+ ecomcoder <command> <subcommand> [options]
28
+ ecomcoder <command> --help View commands in a group
29
+
30
+ COMMAND GROUPS:`);
31
+ // Show each group with command count
32
+ sortedGroups.forEach(group => {
33
+ const count = groupCounts.get(group.command) || 0;
34
+ const countText = count === 1 ? '1 command' : `${count} commands`;
35
+ const padding = ' '.repeat(Math.max(1, 13 - group.command.length));
36
+ lines.push(` ${group.command}${padding}${group.description} (${countText})`);
37
+ });
38
+ lines.push(`
39
+ GLOBAL OPTIONS:
40
+ --session-id <id> Session ID (auto-provided via env)
41
+ --help, -h Show help information
42
+
43
+ GETTING STARTED:
44
+ ecomcoder product --help List all product commands
45
+ ecomcoder shop --help List all shop commands
46
+ ecomcoder discount --help List all discount commands
47
+
48
+ For detailed help: ecomcoder <command> <subcommand> --help
49
+ `);
50
+ return lines.join('\n');
51
+ }
52
+ /**
53
+ * Generate Level 2: Group Help
54
+ * Shows commands in a group, categorized, ~35 lines
55
+ */
56
+ static generateGroupHelp(command) {
57
+ const group = registry.getGroup(command);
58
+ if (!group) {
59
+ return `Unknown command group: ${command}`;
60
+ }
61
+ const commands = registry.getCommandsInGroup(command);
62
+ if (commands.length === 0) {
63
+ return `No commands found for: ${command}`;
64
+ }
65
+ const lines = [];
66
+ // Header
67
+ lines.push(`
68
+ ${this.capitalizeFirst(command)} Commands - ${group.description}
69
+
70
+ USAGE:
71
+ ecomcoder ${command} <subcommand> [options]
72
+
73
+ COMMANDS:`);
74
+ // Categorize and display commands
75
+ const categorized = this.categorizeCommands(commands);
76
+ // Display uncategorized commands first
77
+ if (categorized.has('')) {
78
+ const uncategorized = categorized.get('') || [];
79
+ uncategorized.forEach(cmd => {
80
+ const padding = ' '.repeat(Math.max(1, 23 - (cmd.subcommand?.length || 0)));
81
+ lines.push(` ${cmd.subcommand}${padding}${cmd.description}`);
82
+ });
83
+ }
84
+ // Display categorized commands
85
+ const categories = Array.from(categorized.keys()).filter(cat => cat !== '').sort();
86
+ categories.forEach(category => {
87
+ const cmds = categorized.get(category) || [];
88
+ lines.push(`\n ${category}:`);
89
+ cmds.forEach(cmd => {
90
+ const padding = ' '.repeat(Math.max(1, 21 - (cmd.subcommand?.length || 0)));
91
+ lines.push(` ${cmd.subcommand}${padding}${cmd.description}`);
92
+ });
93
+ });
94
+ // Add quick examples if available
95
+ const exampleCommands = commands.filter(cmd => cmd.quickExample);
96
+ if (exampleCommands.length > 0) {
97
+ lines.push(`\nQUICK EXAMPLES:`);
98
+ exampleCommands.slice(0, 3).forEach(cmd => {
99
+ lines.push(` ${cmd.quickExample}`);
100
+ });
101
+ }
102
+ lines.push(`\nFor detailed help: ecomcoder ${command} <subcommand> --help`);
103
+ lines.push('');
104
+ return lines.join('\n');
105
+ }
106
+ /**
107
+ * Categorize commands by their category field
108
+ */
109
+ static categorizeCommands(commands) {
110
+ const categorized = new Map();
111
+ commands.forEach(cmd => {
112
+ const category = cmd.category || '';
113
+ if (!categorized.has(category)) {
114
+ categorized.set(category, []);
115
+ }
116
+ categorized.get(category).push(cmd);
117
+ });
118
+ // Sort commands within each category
119
+ categorized.forEach((cmds, category) => {
120
+ cmds.sort((a, b) => (a.subcommand || '').localeCompare(b.subcommand || ''));
121
+ });
122
+ return categorized;
123
+ }
124
+ /**
125
+ * Capitalize first letter
126
+ */
127
+ static capitalizeFirst(str) {
128
+ return str.charAt(0).toUpperCase() + str.slice(1);
129
+ }
130
+ }
131
+ //# sourceMappingURL=help-generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"help-generator.js","sourceRoot":"","sources":["../../src/lib/help-generator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Help Utilities
3
+ *
4
+ * Shared utilities for consistent help flag handling across all commands
5
+ */
6
+ /**
7
+ * Check if help flag is present in arguments
8
+ */
9
+ export declare function hasHelpFlag(argv: string[]): boolean;
10
+ /**
11
+ * Handle help flag - show help and exit if flag is present
12
+ *
13
+ * @param argv - Command line arguments
14
+ * @param helpFunction - Function that displays help text
15
+ */
16
+ export declare function handleHelpFlag(argv: string[], helpFunction: () => void): void;
17
+ //# sourceMappingURL=help-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"help-utils.d.ts","sourceRoot":"","sources":["../../src/lib/help-utils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAEnD;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,YAAY,EAAE,MAAM,IAAI,GAAG,IAAI,CAK7E"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Help Utilities
3
+ *
4
+ * Shared utilities for consistent help flag handling across all commands
5
+ */
6
+ /**
7
+ * Check if help flag is present in arguments
8
+ */
9
+ export function hasHelpFlag(argv) {
10
+ return argv.includes('--help') || argv.includes('-h');
11
+ }
12
+ /**
13
+ * Handle help flag - show help and exit if flag is present
14
+ *
15
+ * @param argv - Command line arguments
16
+ * @param helpFunction - Function that displays help text
17
+ */
18
+ export function handleHelpFlag(argv, helpFunction) {
19
+ if (hasHelpFlag(argv)) {
20
+ helpFunction();
21
+ process.exit(0);
22
+ }
23
+ }
24
+ //# sourceMappingURL=help-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"help-utils.js","sourceRoot":"","sources":["../../src/lib/help-utils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,IAAc;IACxC,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACxD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,IAAc,EAAE,YAAwB;IACrE,IAAI,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;QACtB,YAAY,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ecomcoder-cli",
3
- "version": "1.3.4",
3
+ "version": "1.3.5",
4
4
  "type": "module",
5
5
  "description": "CLI tools for EcomCoder - Shopify development utilities",
6
6
  "main": "./dist/index.js",