@@ -43,9 +43,10 @@ detect_platform() {
4343 ARCH=$( uname -m)
4444
4545 case " $OS " in
46- linux) OS=" linux" ;;
47- darwin) OS=" darwin" ;;
48- * ) error " Unsupported operating system: $OS " ;;
46+ linux) OS=" linux" ;;
47+ darwin) OS=" darwin" ;;
48+ mingw* |msys* |cygwin* ) OS=" windows" ;;
49+ * ) error " Unsupported operating system: $OS . On Windows, use PowerShell or download manually from GitHub releases." ;;
4950 esac
5051
5152 case " $ARCH " in
@@ -106,8 +107,12 @@ main() {
106107 info " Installing PaperHero CLI ${VERSION} "
107108
108109 # Construct download URL
109- # Binary naming: paperhero_<os>_<arch> (e.g. paperhero_linux_amd64)
110- ARCHIVE_NAME=" ${BINARY_NAME} _${OS} _${ARCH} .tar.gz"
110+ # Binary naming: paperhero_<os>_<arch>.tar.gz (Linux/macOS) or .zip (Windows)
111+ if [ " $OS " = " windows" ]; then
112+ ARCHIVE_NAME=" ${BINARY_NAME} _${OS} _${ARCH} .zip"
113+ else
114+ ARCHIVE_NAME=" ${BINARY_NAME} _${OS} _${ARCH} .tar.gz"
115+ fi
111116 DOWNLOAD_URL=" https://github.com/${REPO} /releases/download/${VERSION} /${ARCHIVE_NAME} "
112117 CHECKSUM_URL=" https://github.com/${REPO} /releases/download/${VERSION} /checksums.txt"
113118
@@ -147,21 +152,27 @@ main() {
147152
148153 # Extract
149154 info " Extracting..."
150- tar -xzf " ${TMP_DIR} /${ARCHIVE_NAME} " -C " $TMP_DIR "
155+ if [ " $OS " = " windows" ]; then
156+ unzip -q " ${TMP_DIR} /${ARCHIVE_NAME} " -d " $TMP_DIR " || error " Extraction failed. Is 'unzip' installed?"
157+ BINARY_FILE=" ${BINARY_NAME} .exe"
158+ else
159+ tar -xzf " ${TMP_DIR} /${ARCHIVE_NAME} " -C " $TMP_DIR "
160+ BINARY_FILE=" ${BINARY_NAME} "
161+ fi
151162
152163 # Install
153164 if [ -w " $INSTALL_DIR " ] || [ " $NO_SUDO " -eq 1 ]; then
154165 mkdir -p " $INSTALL_DIR "
155- mv " ${TMP_DIR} /${BINARY_NAME } " " ${INSTALL_DIR} /${BINARY_NAME } "
156- chmod +x " ${INSTALL_DIR} /${BINARY_NAME} "
166+ mv " ${TMP_DIR} /${BINARY_FILE } " " ${INSTALL_DIR} /${BINARY_FILE } "
167+ chmod +x " ${INSTALL_DIR} /${BINARY_FILE} " 2> /dev/null || true
157168 else
158169 info " Requesting sudo to install to ${INSTALL_DIR} ..."
159170 sudo mkdir -p " $INSTALL_DIR "
160- sudo mv " ${TMP_DIR} /${BINARY_NAME } " " ${INSTALL_DIR} /${BINARY_NAME } "
161- sudo chmod +x " ${INSTALL_DIR} /${BINARY_NAME} "
171+ sudo mv " ${TMP_DIR} /${BINARY_FILE } " " ${INSTALL_DIR} /${BINARY_FILE } "
172+ sudo chmod +x " ${INSTALL_DIR} /${BINARY_FILE} " 2> /dev/null || true
162173 fi
163174
164- info " PaperHero CLI ${VERSION} installed to ${INSTALL_DIR} /${BINARY_NAME } "
175+ info " PaperHero CLI ${VERSION} installed to ${INSTALL_DIR} /${BINARY_FILE } "
165176 printf " \n"
166177 printf " ${BOLD} Get started:${NC} \n"
167178 printf " paperhero login --api-url <url> --customer-id <id> --email <email> --password <pass>\n"
@@ -171,7 +182,11 @@ main() {
171182 # Verify the binary is on PATH
172183 if ! command -v " $BINARY_NAME " > /dev/null 2>&1 ; then
173184 warn " ${INSTALL_DIR} is not in your PATH. Add it with:"
174- warn " export PATH=\" ${INSTALL_DIR} :\$ PATH\" "
185+ if [ " $OS " = " windows" ]; then
186+ warn " Add ${INSTALL_DIR} to your system PATH via System Properties > Environment Variables"
187+ else
188+ warn " export PATH=\" ${INSTALL_DIR} :\$ PATH\" "
189+ fi
175190 fi
176191}
177192
0 commit comments