← back to Letsbegin
chore: macstudio3 migration — reconcile from mac2 + repoint paths (stevestudio2→macstudio3, node/npm/npx→/opt/homebrew)
2c41f83739bc4c9c0fec22364797222d49d51b80 · 2026-07-03 08:08:07 -0700 · Steve
Files touched
M color-family-harvest.jsM color-family-write.jsM last20day_full_monty.jsM run-last20-fullmonty.shM rw-cost-write.jsM rw-price-group-slice16.jsM rw-price-group-slice17.jsM rw-price-group-slice19.jsM rw-price-group-slice2.js
Diff
commit 2c41f83739bc4c9c0fec22364797222d49d51b80
Author: Steve <steve@designerwallcoverings.com>
Date: Fri Jul 3 08:08:07 2026 -0700
chore: macstudio3 migration — reconcile from mac2 + repoint paths (stevestudio2→macstudio3, node/npm/npx→/opt/homebrew)
---
color-family-harvest.js | 4 ++--
color-family-write.js | 4 ++--
last20day_full_monty.js | 2 +-
run-last20-fullmonty.sh | 4 ++--
rw-cost-write.js | 2 +-
rw-price-group-slice16.js | 2 +-
rw-price-group-slice17.js | 2 +-
rw-price-group-slice19.js | 2 +-
rw-price-group-slice2.js | 2 +-
9 files changed, 12 insertions(+), 12 deletions(-)
diff --git a/color-family-harvest.js b/color-family-harvest.js
index 200047a..51ca2ae 100644
--- a/color-family-harvest.js
+++ b/color-family-harvest.js
@@ -12,7 +12,7 @@ const { execSync } = require('child_process');
const STORE = 'designer-laboratory-sandbox.myshopify.com';
const TOKEN = (() => {
- const line = fs.readFileSync('/Users/stevestudio2/Projects/secrets-manager/.env', 'utf8')
+ const line = fs.readFileSync('/Users/macstudio3/Projects/secrets-manager/.env', 'utf8')
.split('\n').find(l => l.startsWith('SHOPIFY_ADMIN_TOKEN='));
return line.split('=').slice(1).join('=').trim().replace(/^"|"$/g, '');
})();
@@ -65,7 +65,7 @@ async function main(){
const ids = execSync(`${PSQL} -U stevestudio2 -d dw_unified -t -A -c "SELECT shopify_id FROM shopify_products WHERE created_at_shopify >= now()-interval '20 days' ORDER BY created_at_shopify DESC;"`)
.toString().trim().split('\n').map(s=>s.trim()).filter(Boolean);
console.error(`cohort: ${ids.length} ids`);
- const out = fs.createWriteStream('/Users/stevestudio2/Projects/Letsbegin/color-family-cohort.jsonl');
+ const out = fs.createWriteStream('/Users/macstudio3/Projects/Letsbegin/color-family-cohort.jsonl');
let n=0;
for(const gid of ids){
const r = await gql({query:`{ product(id:"${gid}"){ title metafields(first:50){edges{node{namespace key value}}} } }`});
diff --git a/color-family-write.js b/color-family-write.js
index 508f4e4..35d1ca7 100644
--- a/color-family-write.js
+++ b/color-family-write.js
@@ -21,7 +21,7 @@ const { mapVendorColorToFamily, hexToFamily } = require('./color-family-map.js')
const STORE = 'designer-laboratory-sandbox.myshopify.com';
const TOKEN = (() => {
- const line = fs.readFileSync('/Users/stevestudio2/Projects/secrets-manager/.env', 'utf8')
+ const line = fs.readFileSync('/Users/macstudio3/Projects/secrets-manager/.env', 'utf8')
.split('\n').find(l => l.startsWith('SHOPIFY_ADMIN_TOKEN='));
return line.split('=').slice(1).join('=').trim().replace(/^"|"$/g, '');
})();
@@ -61,7 +61,7 @@ function familyFor(rec){
}
async function main(){
- let recs = fs.readFileSync('/Users/stevestudio2/Projects/Letsbegin/color-family-cohort.jsonl','utf8')
+ let recs = fs.readFileSync('/Users/macstudio3/Projects/Letsbegin/color-family-cohort.jsonl','utf8')
.trim().split('\n').map(l=>JSON.parse(l)).filter(r=>!r.missing);
if(ONLY) recs = recs.filter(r=>ONLY.has(r.id));
recs = recs.slice(0, LIMIT===Infinity ? recs.length : LIMIT);
diff --git a/last20day_full_monty.js b/last20day_full_monty.js
index 3570ab1..27d5acc 100644
--- a/last20day_full_monty.js
+++ b/last20day_full_monty.js
@@ -36,7 +36,7 @@ const GEMINI_KEY = process.env.GEMINI_API_KEY;
if (!GEMINI_KEY) { console.error('FATAL: GEMINI_API_KEY environment variable is required'); process.exit(1); }
if (!TOKEN) { console.error('FATAL: SHOPIFY_ADMIN_TOKEN environment variable is required'); process.exit(1); }
-const LOG_FILE = '/Users/stevestudio2/Projects/Letsbegin/last20day-backfill.log';
+const LOG_FILE = '/Users/macstudio3/Projects/Letsbegin/last20day-backfill.log';
const API = '/admin/api/2024-10/graphql.json';
// --limit N
diff --git a/run-last20-fullmonty.sh b/run-last20-fullmonty.sh
index bf473ca..73ce130 100755
--- a/run-last20-fullmonty.sh
+++ b/run-last20-fullmonty.sh
@@ -3,7 +3,7 @@
# Pulls ONLY the two needed keys (avoids a zsh parse error on a malformed line in the .env),
# then execs node. pm2 starts THIS script.
set -euo pipefail
-SECRETS=/Users/stevestudio2/Projects/secrets-manager/.env
+SECRETS=/Users/macstudio3/Projects/secrets-manager/.env
export SHOPIFY_ADMIN_TOKEN="$(grep -m1 '^SHOPIFY_ADMIN_TOKEN=' "$SECRETS" | cut -d= -f2-)"
export GEMINI_API_KEY="$(grep -m1 '^GEMINI_API_KEY=' "$SECRETS" | cut -d= -f2-)"
-exec node /Users/stevestudio2/Projects/Letsbegin/last20day_full_monty.js "$@"
+exec node /Users/macstudio3/Projects/Letsbegin/last20day_full_monty.js "$@"
diff --git a/rw-cost-write.js b/rw-cost-write.js
index 0ef488b..3109508 100644
--- a/rw-cost-write.js
+++ b/rw-cost-write.js
@@ -48,7 +48,7 @@ function loadEnv(path) {
}
} catch { /* file optional if env already set */ }
}
-loadEnv('/Users/stevestudio2/Projects/secrets-manager/.env');
+loadEnv('/Users/macstudio3/Projects/secrets-manager/.env');
const STORE = process.env.SHOPIFY_STORE || 'designer-laboratory-sandbox.myshopify.com';
const TOKEN = process.env.SHOPIFY_ADMIN_TOKEN || process.env.SHOPIFY_PRODUCT_TOKEN;
diff --git a/rw-price-group-slice16.js b/rw-price-group-slice16.js
index f97007f..5cc3d3a 100644
--- a/rw-price-group-slice16.js
+++ b/rw-price-group-slice16.js
@@ -30,7 +30,7 @@ function loadEnv(path) {
}
} catch { /* ok */ }
}
-loadEnv('/Users/stevestudio2/Projects/secrets-manager/.env');
+loadEnv('/Users/macstudio3/Projects/secrets-manager/.env');
const STORE = process.env.SHOPIFY_STORE || 'designer-laboratory-sandbox.myshopify.com';
const TOKEN = process.env.SHOPIFY_ADMIN_TOKEN || process.env.SHOPIFY_PRODUCT_TOKEN;
diff --git a/rw-price-group-slice17.js b/rw-price-group-slice17.js
index fecabcb..655264e 100644
--- a/rw-price-group-slice17.js
+++ b/rw-price-group-slice17.js
@@ -32,7 +32,7 @@ function loadEnv(path) {
}
} catch { /* ok */ }
}
-loadEnv('/Users/stevestudio2/Projects/secrets-manager/.env');
+loadEnv('/Users/macstudio3/Projects/secrets-manager/.env');
const STORE = process.env.SHOPIFY_STORE || 'designer-laboratory-sandbox.myshopify.com';
const TOKEN = process.env.SHOPIFY_ADMIN_TOKEN || process.env.SHOPIFY_PRODUCT_TOKEN;
diff --git a/rw-price-group-slice19.js b/rw-price-group-slice19.js
index 596d799..4819ed9 100644
--- a/rw-price-group-slice19.js
+++ b/rw-price-group-slice19.js
@@ -31,7 +31,7 @@ function loadEnv(path) {
}
} catch { /* ok */ }
}
-loadEnv('/Users/stevestudio2/Projects/secrets-manager/.env');
+loadEnv('/Users/macstudio3/Projects/secrets-manager/.env');
const STORE = process.env.SHOPIFY_STORE || 'designer-laboratory-sandbox.myshopify.com';
const TOKEN = process.env.SHOPIFY_ADMIN_TOKEN || process.env.SHOPIFY_PRODUCT_TOKEN;
diff --git a/rw-price-group-slice2.js b/rw-price-group-slice2.js
index 7c8eb08..538e1b9 100644
--- a/rw-price-group-slice2.js
+++ b/rw-price-group-slice2.js
@@ -29,7 +29,7 @@ function loadEnv(path) {
}
} catch { /* ok */ }
}
-loadEnv('/Users/stevestudio2/Projects/secrets-manager/.env');
+loadEnv('/Users/macstudio3/Projects/secrets-manager/.env');
const STORE = process.env.SHOPIFY_STORE || 'designer-laboratory-sandbox.myshopify.com';
const TOKEN = process.env.SHOPIFY_ADMIN_TOKEN || process.env.SHOPIFY_PRODUCT_TOKEN;
← 76bceba auto-save: 2026-06-21T18:53:00 (9 files) — rw-fix-rollprice.
·
back to Letsbegin
·
Strip hardcoded Shopify API tokens from source (env-first); 24d29e1 →