feat(products): implement JSON import with auto-provisioning, UI modal, and documentation schema

This commit is contained in:
Your Name committed 2026-09-24 20:01:24 +07:00
1 parent 63e3a2895d
commit 101143f26a
5 files changed
+768 -187

No files matched your search

+110
View File
@@ -0,0 +1,110 @@
#!/bin/bash
echo "========================================================"
echo " HomAroma Omnichannel - Git Push All Remotes"
echo "========================================================"
if [[ "$1" == "--help" || "$1" == "-h" ]]; then
echo ""
echo "Usage:"
echo " ./push_all.sh [OPTIONS] [BRANCH]"
echo ""
echo "Options:"
echo " demo, --demo Push only to showcase demo remotes (demo-*)"
echo " --dry-run, -n Simulate push without modifying remotes"
echo " --help, -h Show this help message"
echo ""
echo "Examples:"
echo " ./push_all.sh Push current branch to ALL remotes"
echo " ./push_all.sh demo Push current branch only to demo-* remotes"
echo " ./push_all.sh master Push 'master' branch to ALL remotes"
echo " ./push_all.sh --dry-run Test push to all remotes without changing anything"
echo ""
exit 0
fi
CURRENT_BRANCH=$(git rev-parse --abbrev-ref HEAD 2>/dev/null || echo "master")
TARGET_BRANCH="$CURRENT_BRANCH"
FILTER_PREFIX=""
DRY_RUN=0
for arg in "$@"; do
case "$arg" in
demo|--demo)
FILTER_PREFIX="demo-"
;;
--dry-run|-n)
DRY_RUN=1
;;
*)
TARGET_BRANCH="$arg"
;;
esac
done
echo "Target Branch : [$TARGET_BRANCH]"
if [[ -n "$FILTER_PREFIX" ]]; then
echo "Filter Mode : Only remotes starting with '$FILTER_PREFIX'"
fi
if [[ $DRY_RUN -eq 1 ]]; then
echo "Mode : [DRY-RUN] (Will not actually push)"
fi
echo ""
ALL_REMOTES=$(git remote)
REMOTES=()
for r in $ALL_REMOTES; do
if [[ -z "$FILTER_PREFIX" || "$r" == "$FILTER_PREFIX"* ]]; then
REMOTES+=("$r")
fi
done
if [[ ${#REMOTES[@]} -eq 0 ]]; then
echo "[ERROR] No matching git remotes found."
exit 1
fi
echo "Remotes queued for push:"
for r in "${REMOTES[@]}"; do
echo " * $r"
done
echo "========================================================"
echo ""
SUCCESS_LIST=()
FAIL_LIST=()
for r in "${REMOTES[@]}"; do
echo "--------------------------------------------------------"
echo "[>] Pushing branch '$TARGET_BRANCH' to remote '$r'..."
echo "--------------------------------------------------------"
if [[ $DRY_RUN -eq 1 ]]; then
git push --dry-run "$r" "$TARGET_BRANCH"
else
git push "$r" "$TARGET_BRANCH"
fi
if [[ $? -eq 0 ]]; then
echo "[OK] Successfully pushed to $r"
SUCCESS_LIST+=("$r")
else
echo "[FAILED] Push failed for $r"
FAIL_LIST+=("$r")
fi
echo ""
done
echo "========================================================"
echo " PUSH SUMMARY"
echo "========================================================"
echo "Total: ${#SUCCESS_LIST[@]} succeeded, ${#FAIL_LIST[@]} failed"
echo ""
if [[ ${#SUCCESS_LIST[@]} -gt 0 ]]; then
echo "[SUCCESS]: ${SUCCESS_LIST[*]}"
fi
if [[ ${#FAIL_LIST[@]} -gt 0 ]]; then
echo "[FAILED] : ${FAIL_LIST[*]}"
fi
echo "========================================================"
echo "Done."
echo ""