|
50 | 50 | echo "Downloading from: $DOWNLOAD_URL" |
51 | 51 |
|
52 | 52 | # Download and extract with error handling |
53 | | -TMP_TARBALL="$(mktemp)" |
| 53 | +TMP_DIR="$(mktemp -d)" |
| 54 | +TMP_TARBALL="$TMP_DIR/copilot-${PLATFORM}-${ARCH}.tar.gz" |
54 | 55 | if command -v curl >/dev/null 2>&1; then |
55 | 56 | curl -fsSL "$DOWNLOAD_URL" -o "$TMP_TARBALL" |
56 | 57 | elif command -v wget >/dev/null 2>&1; then |
57 | 58 | wget -qO "$TMP_TARBALL" "$DOWNLOAD_URL" |
58 | 59 | else |
59 | 60 | echo "Error: Neither curl nor wget found. Please install one of them." |
| 61 | + rm -rf "$TMP_DIR" |
60 | 62 | exit 1 |
61 | 63 | fi |
62 | 64 |
|
63 | 65 | # Attempt to download checksums file and validate |
64 | | -TMP_CHECKSUMS="$(mktemp)" |
| 66 | +TMP_CHECKSUMS="$TMP_DIR/SHA256SUMS.txt" |
65 | 67 | CHECKSUMS_AVAILABLE=false |
66 | 68 | if command -v curl >/dev/null 2>&1; then |
67 | 69 | curl -fsSL "$CHECKSUMS_URL" -o "$TMP_CHECKSUMS" 2>/dev/null && CHECKSUMS_AVAILABLE=true |
|
71 | 73 |
|
72 | 74 | if [ "$CHECKSUMS_AVAILABLE" = true ]; then |
73 | 75 | if command -v sha256sum >/dev/null 2>&1; then |
74 | | - if (cd "$(dirname "$TMP_TARBALL")" && sha256sum -c --ignore-missing "$TMP_CHECKSUMS" 2>/dev/null | grep -q "$(basename "$TMP_TARBALL")"); then |
| 76 | + if (cd "$TMP_DIR" && sha256sum -c --ignore-missing SHA256SUMS.txt >/dev/null 2>&1); then |
75 | 77 | echo "✓ Checksum validated" |
76 | 78 | else |
77 | 79 | echo "Error: Checksum validation failed." >&2 |
78 | | - rm -f "$TMP_TARBALL" "$TMP_CHECKSUMS" |
| 80 | + rm -rf "$TMP_DIR" |
79 | 81 | exit 1 |
80 | 82 | fi |
81 | 83 | elif command -v shasum >/dev/null 2>&1; then |
82 | | - if (cd "$(dirname "$TMP_TARBALL")" && shasum -a 256 -c --ignore-missing "$TMP_CHECKSUMS" 2>/dev/null | grep -q "$(basename "$TMP_TARBALL")"); then |
| 84 | + if (cd "$TMP_DIR" && shasum -a 256 -c --ignore-missing SHA256SUMS.txt >/dev/null 2>&1); then |
83 | 85 | echo "✓ Checksum validated" |
84 | 86 | else |
85 | 87 | echo "Error: Checksum validation failed." >&2 |
86 | | - rm -f "$TMP_TARBALL" "$TMP_CHECKSUMS" |
| 88 | + rm -rf "$TMP_DIR" |
87 | 89 | exit 1 |
88 | 90 | fi |
89 | 91 | else |
90 | 92 | echo "Warning: No sha256sum or shasum found, skipping checksum validation." |
91 | 93 | fi |
92 | 94 | fi |
93 | | -rm -f "$TMP_CHECKSUMS" |
94 | 95 |
|
95 | 96 | # Check that the file is a valid tarball |
96 | 97 | if ! tar -tzf "$TMP_TARBALL" >/dev/null 2>&1; then |
97 | 98 | echo "Error: Downloaded file is not a valid tarball or is corrupted." >&2 |
98 | | - rm -f "$TMP_TARBALL" |
| 99 | + rm -rf "$TMP_DIR" |
99 | 100 | exit 1 |
100 | 101 | fi |
101 | 102 |
|
|
119 | 120 | tar -xz -C "$INSTALL_DIR" -f "$TMP_TARBALL" |
120 | 121 | chmod +x "$INSTALL_DIR/copilot" |
121 | 122 | echo "✓ GitHub Copilot CLI installed to $INSTALL_DIR/copilot" |
122 | | -rm -f "$TMP_TARBALL" |
| 123 | +rm -rf "$TMP_DIR" |
123 | 124 |
|
124 | 125 | # Check if install directory is in PATH |
125 | 126 | case ":$PATH:" in |
|
0 commit comments