- 👋 Hi, I’m @nohu98com
- 👀 I’m interested in ...
- 🌱 I’m curr- 👋 Hi, I’m @nohu98com
- 👀 I’m interested in ...
- 🌱 I’m currently learning ...
- 💞️ I’m looking to collaborate on ...
- 📫 How to reach me ...
- 😄 Pronouns: ...
- ⚡ Fun fact: ...
fossa analyze export FOSSA_API_KEY=<YOUR_API_KEY> curl -H 'Cache-Control: no-cache' https://raw.githubusercontent.com/fossas/fossa-cli/master/install-latest.sh | bash https://github.com/fossas/fossa-cli https://raw.githubusercontent.com/fossas/fossa-cli/master/install-latest.sh #!/thùng/sh đặt -e
cách sử dụng() { cái này=$1 mèo <<EOF $this: tải xuống các tệp nhị phân cho fossas/fossa-cli Cách sử dụng: $this [-b] bindir [-d] [thẻ] -b thiết lập bindir hoặc thư mục cài đặt, Mặc định là /usr/local/bin -d bật ghi nhật ký gỡ lỗi [tag] là một thẻ từ https://github.com/fossas/fossa-cli/releases Nếu thẻ bị thiếu, thẻ mới nhất sẽ được sử dụng. Được tạo ra bởi godownloader https://github.com/goreleaser/godownloader Cuối cùng lối ra 2 }
phân tích đối số() { #BINDIR là /usr/local/bin trừ khi được đặt là ENV
BINDIR=${BINDIR:-/usr/local/bin} trong khi getopts "b:dh?x" arg; làm trường hợp "$arg" trong b) BINDIR="$OPTARG" ;; d) thiết lập ưu tiên nhật ký 10 ;; h | ?) sử dụng "$0" ;; x) đặt -x ;; esac xong dịch chuyển $((OPTIND - 1)) THẺ=$1 }
thực hiện() {
tmpdir=$(mktmpdir)
log_debug "đang tải xuống các tập tin vào
Sử dụng mv thay vì cp, vì sao chép khi tệp nhị phân đã tồn tại ở vị trí đó có thể tạo ra tệp nhị phân không hợp lệ trên macOS
mv "${srcdir}/${binexe}" "${BINDIR}/${binexe}" 2> /dev/null || sudo cp "${srcdir}/${binexe}" "${BINDIR}/" log_info "đã cài đặt ${BINDIR}/${binexe}" } is_supported_platform() { nền tảng=$1 tìm thấy=1 trường hợp "$platform" trong windows/amd64) đã tìm thấy=0 ;; darwin/amd64) tìm thấy=0 ;; darwin/arm64) tìm thấy=0 ;; linux/amd64) đã tìm thấy=0 ;; linux/arm64) tìm thấy=0 ;; esac trả lại $đã tìm thấy } nền tảng kiểm tra() { nếu is_supported_platform "$PLATFORM"; thì # ghi nhật ký tùy chọn ở đây ĐÚNG VẬY khác log_crit "nền tảng $PLATFORM không được hỗ trợ. Hãy đảm bảo tập lệnh này được cập nhật và gửi yêu cầu tại https://github.com/${PREFIX}/issues/new" lối ra 1 có } tag_to_version() { nếu [ -z "${TAG}" ]; thì log_info "đang kiểm tra GitHub để tìm thẻ mới nhất" khác log_info "đang kiểm tra GitHub để tìm thẻ '${TAG}'" có REALTAG=$(github_release "$OWNER/$REPO" "${TAG}") && đúng nếu kiểm tra -z "$REALTAG"; thì log_crit "không tìm thấy '${TAG}' - sử dụng 'latest' hoặc xem https://github.com/${PREFIX}/releases để biết chi tiết" lối ra 1 có
THẺ="$REALTAG" PHIÊN BẢN=${TAG#v} } điều chỉnh định dạng() {
trường hợp ${ARCH} trong cửa sổ) ĐỊNH DẠNG=zip ;; esac ĐÚNG VẬY } điều chỉnh_os() {
trường hợp $(uname_os) trong Linux) # Trước phiên bản 3.4.7, fossa được phân phối dưới dạng tệp nén .zip trên Linux. # 3.4.7 và sau đó phân phối fossa theo định dạng tar.gz vì nó phổ biến hơn zip trên Linux. nếu version_less_than "$VERSION" "3.4.7" sau đó ĐỊNH DẠNG=zip khác ĐỊNH DẠNG=tar.gz ;; esac ĐÚNG VẬY } điều chỉnh_kiến trúc() {
ĐÚNG VẬY } kiểm tra phiên bản arch() {
nếu [ "${OS}/${ARCH}" = "linux/arm64" ] && version_less_than "${VERSION}" '3.9.32' sau đó echo "Không có tệp nhị phân linux/arm64 nào cho phiên bản $VERSION." echo "Vui lòng chọn phiên bản ít nhất là phiên bản 3.9.32" lối ra 1 có ĐÚNG VẬY } mèo /dev/null <<EOF
https://github.com/client9/shlib - hàm shell posix di động Thuộc phạm vi công cộng - http://unlicense.org https://github.com/client9/shlib/blob/master/LICENSE.md nhưng ghi nhận (và yêu cầu kéo) được đánh giá cao.
Cuối cùng
là_lệnh() {
lệnh -v "$1" >/dev/null
}
tiếng vọng() {
tiếng vang "$@" 1>&2
}
_logp=6
thiết lập ưu tiên nhật ký() {
_logp="$1"
}
ưu tiên_log() {
nếu kiểm tra -z "$1"; thì
tiếng vang "$_logp"
trở lại
có
[ "$1" -le "$_logp" ]
}
log_tag() {
trường hợp $1 trong
0) echo "xuất hiện" ;;
1) echo "cảnh báo" ;;
2) lặp lại "chí mạng" ;;
3) lặp lại "err" ;;
4) echo "cảnh báo" ;;
5) echo "thông báo" ;;
6) echo "thông tin" ;;
7) echo "gỡ lỗi" ;;
) lặp lại "$1" ;;
esac
}
nhật ký_gỡ lỗi() {
log_priority 7 || trả về 0
echoerr "$(log_prefix)" "$(log_tag 7)" "$@"
}
thông tin đăng nhập() {
log_priority 6 || trả về 0
echoerr "$(log_prefix)" "$(log_tag 6)" "$@"
}
log_err() {
log_priority 3 || trả về 0
echoerr "$(log_prefix)" "$(log_tag 3)" "$@"
}
log_crit() {
log_priority 2 || trả về 0
echoerr "$(log_prefix)" "$(log_tag 2)" "$@"
}
uname_os() {
os=$(uname -s | tr '[:upper:]' '[:low:]')
trường hợp "$os" trong
msys_nt) os="cửa sổ" ;;
esac
tiếng vang "$os"
}
uname_arch() {
arch=$(uname -m)
trường hợp $arch trong
x86_64) kiến trúc="amd64" ;;
arm64) vòm="arm64" ;;
x86) vòm="386" ;;
i686) vòm="386" ;;
i386) vòm="386" ;;
aarch64) arch="arm64" ;;
armv5) arch="armv5" ;;
armv6*) arch="armv6" ;;
armv7*) arch="armv7" ;;
esac
tiếng vang "${arch}"
}
Kiểm tra_os_uname() {
Hệ điều hành=$(uname_os)
trường hợp "$os" trong
darwin) trả về 0 ;;
chuồn chuồn) trả về 0 ;;
freebsd) trả về 0 ;;
linux) trả về 0 ;;
android) trả về 0 ;;
nacl) trả về 0 ;;
netbsd) trả về 0 ;;
openbsd) trả về 0 ;;
plan9) trả về 0 ;;
solaris) trả về 0 ;;
windows) trả về 0 ;;
esac
log_crit "uname_os_check '$(uname -s)' đã được chuyển đổi thành '$os' không phải là giá trị GOOS. Vui lòng gửi lỗi tại https://github.com/client9/shlib"
trở lại 1
}
Kiểm tra kiến trúc uname() {
vòm=$(uname_arch)
trường hợp "$arch" trong
386) trả về 0 ;;
amd64) trả về 0 ;;
arm64) trả về 0 ;;
armv5) trả về 0 ;;
armv6) trả về 0 ;;
armv7) trả về 0 ;;
ppc64) trả về 0 ;;
ppc64le) trả về 0 ;;
mips) trả về 0 ;;
mipsle) trả về 0 ;;
mips64) trả về 0 ;;
mips64le) trả về 0 ;;
s390x) trả về 0 ;;
amd64p32) trả về 0 ;;
esac
log_crit "uname_arch_check '$(uname -m)' đã được chuyển đổi thành '$arch' không phải là giá trị GOARCH. Vui lòng gửi báo cáo lỗi tại https://github.com/client9/shlib"
trở lại 1
}
giải nén() {
tarball=$1
trường hợp "${tarball}" trong
*.tar.gz | *.tgz) tar -xzf "${tarball}" ;;
*.tar) tar -xf "${tarball}" ;;
*.zip) giải nén -o "${tarball}" ;;
*)
log_err "giải nén định dạng lưu trữ không xác định cho ${tarball}"
trở lại 1
;;
esac
}
mktmpdir() {
kiểm tra -z "$TMPDIR" && TMPDIR="$(mktemp -d)"
mkdir -p "${TMPDIR}"
tiếng vang "${TMPDIR}"
}
http_download_curl() {
tập tin cục bộ = $1
nguồn_url=$2
tiêu đề=$3
nếu [ -n "$header" ]; thì
HTTP_CODE=$(curl -w '%{http_code}' -sSL -H "$header" -H "Cache-Control: no-cache" -o "$local_file" "$source_url") || (log_debug "lệnh curl không thành công." && return 1)
có
nếu [ -z "$header" ]; thì
HTTP_CODE=$(curl -w '%{http_code}' -sSL -H "Cache-Control: no-cache" -o "$local_file" "$source_url") || (log_debug "lệnh curl không thành công." && return 1)
có
trả về 0
}
http_download_wget() {
tập tin cục bộ = $1
nguồn_url=$2
tiêu đề=$3
nếu [ -n "$header" ]; thì
HTTP_CODE=$(wget -q --header "$header" --no-cache --server-response -O "$local_file" "$source_url" 2>&1 | awk 'NR==1{print $2}') || (log_debug "lệnh wget không thành công." && return 1)
có
nếu [ -z "$header" ]; thì
HTTP_CODE=$(wget -q --no-cache --server-response -O "$local_file" "$source_url" 2>&1 | awk 'NR==1{print $2}') || (log_debug "lệnh wget không thành công." && return 1)
có
trả về 0
}
http_tải xuống() {
log_debug "http_tải xuống
Bối cảnh: fossas/fossa-cli#1066
trường hợp $source_url trong
*.tar.gz) nếu [ "$HTTP_CODE" = "404" ]; thì
log_debug "http_download nhận được lỗi 404 từ
nếu [ -n "$HTTP_CODE" ] && [ "$HTTP_CODE" != 200 ] && [ "$HTTP_CODE" != 302 ]; sau đó
log_err "http_download đã nhận được trạng thái HTTP $HTTP_CODE từ
http_download "${tmp}" "$1" "$2" || trả về 1 thân = $ (mèo "$ tmp") rm -f "${tmp}" tiếng vang "$body" } phát hành github() { chủ sở hữu_repo=$1 phiên bản=$2 kiểm tra -z "$version" && phiên bản="mới nhất" giturl="https://github.com/${owner_repo}/releases/${version}" json=$(http_copy "$giturl" "Chấp nhận:ứng dụng/json") kiểm tra -z "$json" && trả về 1 phiên bản=$(echo "$json" | tr -s '\n' ' ' | sed 's/."tag_name":"//' | sed 's/".//') kiểm tra -z "$version" && trả về 1 tiếng vang "$version" } băm_sha256() { MỤC TIÊU=${1:-/dev/stdin} nếu is_command gsha256sum; thì băm=$(gsha256sum "$TARGET") || trả về 1 echo "$hash" | cắt -d ' ' -f 1 elif is_command sha256sum; sau đó băm=$(sha256sum "$TARGET") || trả về 1 echo "$hash" | cắt -d ' ' -f 1 elif is_command shasum; sau đó băm=$(shasum -a 256 "$TARGET" 2>/dev/null) || trả về 1 echo "$hash" | cắt -d ' ' -f 1 elif is_command openssl; sau đó băm=$(openssl -dst openssl dgst -sha256 "$TARGET") || trả về 1 echo "$hash" | cắt -d ' ' -fa khác log_crit "hash_sha256 không tìm thấy lệnh để tính toán băm sha-256" trở lại 1 có } hash_sha256_verify() { MỤC TIÊU=$1 tổng kiểm tra = $2 nếu [ -z "$checksums" ]; thì log_err "hash_sha256_verify tệp tổng kiểm tra không được chỉ định trong arg2" trở lại 1 có TÊN CƠ SỞ=${MỤC TIÊU##*/} muốn=$(grep "${BASENAME}" "${checksums}" 2>/dev/null | tr '\t' ' ' | cắt -d ' ' -f 1) nếu [ -z "$want" ]; thì log_err "hash_sha256_verify không tìm thấy tổng kiểm tra cho '${TARGET}' trong '${checksums}'" trở lại 1 có đã nhận được=$(hash_sha256 "$TARGET") nếu [ "$want" != "$got" ]; thì log_err "hash_sha256_verify checksum cho '$TARGET' không xác minh được ${want} so với $got" trở lại 1 có } mèo /dev/null <<EOF
Kết thúc chức năng từ https://github.com/client9/shlib
Cuối cùng
###################################################
#################################################### lấy_tên_nhị_phân() { tên=${PROJECT_NAME}${VERSION}${OS}${ARCH} trường hợp ${PLATFORM} trong darwin/cánh tay64) nếu version_less_than "$VERSION" "3.9.19"; thì log_info "Đã phát hiện nền tảng ${PLATFORM} (m1 silicon) và yêu cầu phiên bản < 3.9.19, sử dụng nhị phân darwin/amd64 tương thích thay thế." tên=${PROJECT_NAME}${VERSION}_${OS}_amd64 ;; esac echo "$name" }
Một phiên bản nhỏ hơn phiên bản khác nếu tồn tại một cặp Xn/Yn trong đó Xn < Yn trong đó với mọi cặp Xn/Yn đứng trước trong chuỗi Xn == Yn.
phiên bản_ít_hơn() {
đối với tôi trong 1 2 3
LÀM
VERSION_PIECE1=$(echo "$1" | cắt -d '.' -f
nếu [ "$VERSION_PIECE1" -lt "$VERSION_PIECE2" ]
sau đó
trả về 0
có
nếu [ "$VERSION_PIECE1" -gt "$VERSION_PIECE2" ]
sau đó
trở lại 1
có
xong
trở lại 1
} in_từ_bỏ_từ_bỏ() { thông tin đăng nhập "" thông tin đăng nhập "------" log_info "Thông báo" thông tin đăng nhập "------" thông tin đăng nhập "" log_info "FOSSA thu thập các cảnh báo, lỗi và dữ liệu sử dụng để cải thiện" log_info "FOSSA CLI và trải nghiệm của bạn." thông tin đăng nhập "" log_info "Đọc thêm: https://github.com/fossas/fossa-cli/blob/master/docs/telemetry.md" thông tin đăng nhập "" log_info "Nếu bạn muốn ngăn chặn bất kỳ dữ liệu đo từ xa nào được gửi đến" log_info "máy chủ, bạn có thể chọn không tham gia đo từ xa bằng cách thiết lập" log_info "Biến môi trường FOSSA_TELEMETRY_SCOPE thành 'tắt' trong shell của bạn." thông tin đăng nhập "" log_info "Ví dụ:" log_info " FOSSA_TELEMETRY_SCOPE=tắt phân tích fossa" thông tin đăng nhập "" thông tin đăng nhập "" }
TÊN_DỰ ÁN="fossa" CHỦ SỞ HỮU=fossas REPO="fossa-cli" ĐỊNH DẠNG=zip Hệ điều hành=$(uname_os) ARCH=$(uname_arch) TIỀN TỐ="$CHỦ SỞ HỮU/$REPO"
log_tiền tố() { tiếng vang "$PREFIX" } NỀN TẢNG="${OS}/${ARCH}" GITHUB_DOWNLOAD=https://github.com/${OWNER}/${REPO}/releases/download
uname_os_check "$OS" uname_arch_check "$ARCH"
phân tích đối số "$@"
kiểm tra_nền_tảng
tag_to_version
điều chỉnh định dạng
điều chỉnh_os
điều chỉnh_vòm
kiểm tra phiên bản arch
TÊN=$(get_binary_name) TARBALL=${TÊN}.${ĐỊNH DẠNG} TARBALL_URL=${GITHUB_DOWNLOAD}/${TAG}/${TARBALL} log_info "tìm thấy tệp nhị phân fossa-cli ${VERSION} cho ${PLATFORM} tại ${TARBALL_URL}"
TỔNG KIỂM TRA=${TARBALL}.sha256 CHECKSUM_URL=${GITHUB_DOWNLOAD}/${TAG}/${CHECKSUM}
in_từ_chối_từ_bỏ thực hiệnently learning ...
- 💞️ I’m looking to collaborate on ...
- 📫 How to reach me ...
- 😄 Pronouns: ...
- ⚡ Fun fact: ...
fossa analyze export FOSSA_API_KEY=<YOUR_API_KEY> curl -H 'Cache-Control: no-cache' https://raw.githubusercontent.com/fossas/fossa-cli/master/install-latest.sh | bash https://github.com/fossas/fossa-cli https://raw.githubusercontent.com/fossas/fossa-cli/master/install-latest.sh #!/thùng/sh đặt -e
cách sử dụng() { cái này=$1 mèo <<EOF $this: tải xuống các tệp nhị phân cho fossas/fossa-cli Cách sử dụng: $this [-b] bindir [-d] [thẻ] -b thiết lập bindir hoặc thư mục cài đặt, Mặc định là /usr/local/bin -d bật ghi nhật ký gỡ lỗi [tag] là một thẻ từ https://github.com/fossas/fossa-cli/releases Nếu thẻ bị thiếu, thẻ mới nhất sẽ được sử dụng. Được tạo ra bởi godownloader https://github.com/goreleaser/godownloader Cuối cùng lối ra 2 }
phân tích đối số() { #BINDIR là /usr/local/bin trừ khi được đặt là ENV
BINDIR=${BINDIR:-/usr/local/bin} trong khi getopts "b:dh?x" arg; làm trường hợp "$arg" trong b) BINDIR="$OPTARG" ;; d) thiết lập ưu tiên nhật ký 10 ;; h | ?) sử dụng "$0" ;; x) đặt -x ;; esac xong dịch chuyển $((OPTIND - 1)) THẺ=$1 }
thực hiện() {
tmpdir=$(mktmpdir)
log_debug "đang tải xuống các tập tin vào
Sử dụng mv thay vì cp, vì sao chép khi tệp nhị phân đã tồn tại ở vị trí đó có thể tạo ra tệp nhị phân không hợp lệ trên macOS
mv "${srcdir}/${binexe}" "${BINDIR}/${binexe}" 2> /dev/null || sudo cp "${srcdir}/${binexe}" "${BINDIR}/" log_info "đã cài đặt ${BINDIR}/${binexe}" } is_supported_platform() { nền tảng=$1 tìm thấy=1 trường hợp "$platform" trong windows/amd64) đã tìm thấy=0 ;; darwin/amd64) tìm thấy=0 ;; darwin/arm64) tìm thấy=0 ;; linux/amd64) đã tìm thấy=0 ;; linux/arm64) tìm thấy=0 ;; esac trả lại $đã tìm thấy } nền tảng kiểm tra() { nếu is_supported_platform "$PLATFORM"; thì # ghi nhật ký tùy chọn ở đây ĐÚNG VẬY khác log_crit "nền tảng $PLATFORM không được hỗ trợ. Hãy đảm bảo tập lệnh này được cập nhật và gửi yêu cầu tại https://github.com/${PREFIX}/issues/new" lối ra 1 có } tag_to_version() { nếu [ -z "${TAG}" ]; thì log_info "đang kiểm tra GitHub để tìm thẻ mới nhất" khác log_info "đang kiểm tra GitHub để tìm thẻ '${TAG}'" có REALTAG=$(github_release "$OWNER/$REPO" "${TAG}") && đúng nếu kiểm tra -z "$REALTAG"; thì log_crit "không tìm thấy '${TAG}' - sử dụng 'latest' hoặc xem https://github.com/${PREFIX}/releases để biết chi tiết" lối ra 1 có
THẺ="$REALTAG" PHIÊN BẢN=${TAG#v} } điều chỉnh định dạng() {
trường hợp ${ARCH} trong cửa sổ) ĐỊNH DẠNG=zip ;; esac ĐÚNG VẬY } điều chỉnh_os() {
trường hợp $(uname_os) trong Linux) # Trước phiên bản 3.4.7, fossa được phân phối dưới dạng tệp nén .zip trên Linux. # 3.4.7 và sau đó phân phối fossa theo định dạng tar.gz vì nó phổ biến hơn zip trên Linux. nếu version_less_than "$VERSION" "3.4.7" sau đó ĐỊNH DẠNG=zip khác ĐỊNH DẠNG=tar.gz ;; esac ĐÚNG VẬY } điều chỉnh_kiến trúc() {
ĐÚNG VẬY } kiểm tra phiên bản arch() {
nếu [ "${OS}/${ARCH}" = "linux/arm64" ] && version_less_than "${VERSION}" '3.9.32' sau đó echo "Không có tệp nhị phân linux/arm64 nào cho phiên bản $VERSION." echo "Vui lòng chọn phiên bản ít nhất là phiên bản 3.9.32" lối ra 1 có ĐÚNG VẬY } mèo /dev/null <<EOF
https://github.com/client9/shlib - hàm shell posix di động Thuộc phạm vi công cộng - http://unlicense.org https://github.com/client9/shlib/blob/master/LICENSE.md nhưng ghi nhận (và yêu cầu kéo) được đánh giá cao.
Cuối cùng
là_lệnh() {
lệnh -v "$1" >/dev/null
}
tiếng vọng() {
tiếng vang "$@" 1>&2
}
_logp=6
thiết lập ưu tiên nhật ký() {
_logp="$1"
}
ưu tiên_log() {
nếu kiểm tra -z "$1"; thì
tiếng vang "$_logp"
trở lại
có
[ "$1" -le "$_logp" ]
}
log_tag() {
trường hợp $1 trong
0) echo "xuất hiện" ;;
1) echo "cảnh báo" ;;
2) lặp lại "chí mạng" ;;
3) lặp lại "err" ;;
4) echo "cảnh báo" ;;
5) echo "thông báo" ;;
6) echo "thông tin" ;;
7) echo "gỡ lỗi" ;;
) lặp lại "$1" ;;
esac
}
nhật ký_gỡ lỗi() {
log_priority 7 || trả về 0
echoerr "$(log_prefix)" "$(log_tag 7)" "$@"
}
thông tin đăng nhập() {
log_priority 6 || trả về 0
echoerr "$(log_prefix)" "$(log_tag 6)" "$@"
}
log_err() {
log_priority 3 || trả về 0
echoerr "$(log_prefix)" "$(log_tag 3)" "$@"
}
log_crit() {
log_priority 2 || trả về 0
echoerr "$(log_prefix)" "$(log_tag 2)" "$@"
}
uname_os() {
os=$(uname -s | tr '[:upper:]' '[:low:]')
trường hợp "$os" trong
msys_nt) os="cửa sổ" ;;
esac
tiếng vang "$os"
}
uname_arch() {
arch=$(uname -m)
trường hợp $arch trong
x86_64) kiến trúc="amd64" ;;
arm64) vòm="arm64" ;;
x86) vòm="386" ;;
i686) vòm="386" ;;
i386) vòm="386" ;;
aarch64) arch="arm64" ;;
armv5) arch="armv5" ;;
armv6*) arch="armv6" ;;
armv7*) arch="armv7" ;;
esac
tiếng vang "${arch}"
}
Kiểm tra_os_uname() {
Hệ điều hành=$(uname_os)
trường hợp "$os" trong
darwin) trả về 0 ;;
chuồn chuồn) trả về 0 ;;
freebsd) trả về 0 ;;
linux) trả về 0 ;;
android) trả về 0 ;;
nacl) trả về 0 ;;
netbsd) trả về 0 ;;
openbsd) trả về 0 ;;
plan9) trả về 0 ;;
solaris) trả về 0 ;;
windows) trả về 0 ;;
esac
log_crit "uname_os_check '$(uname -s)' đã được chuyển đổi thành '$os' không phải là giá trị GOOS. Vui lòng gửi lỗi tại https://github.com/client9/shlib"
trở lại 1
}
Kiểm tra kiến trúc uname() {
vòm=$(uname_arch)
trường hợp "$arch" trong
386) trả về 0 ;;
amd64) trả về 0 ;;
arm64) trả về 0 ;;
armv5) trả về 0 ;;
armv6) trả về 0 ;;
armv7) trả về 0 ;;
ppc64) trả về 0 ;;
ppc64le) trả về 0 ;;
mips) trả về 0 ;;
mipsle) trả về 0 ;;
mips64) trả về 0 ;;
mips64le) trả về 0 ;;
s390x) trả về 0 ;;
amd64p32) trả về 0 ;;
esac
log_crit "uname_arch_check '$(uname -m)' đã được chuyển đổi thành '$arch' không phải là giá trị GOARCH. Vui lòng gửi báo cáo lỗi tại https://github.com/client9/shlib"
trở lại 1
}
giải nén() {
tarball=$1
trường hợp "${tarball}" trong
*.tar.gz | *.tgz) tar -xzf "${tarball}" ;;
*.tar) tar -xf "${tarball}" ;;
*.zip) giải nén -o "${tarball}" ;;
*)
log_err "giải nén định dạng lưu trữ không xác định cho ${tarball}"
trở lại 1
;;
esac
}
mktmpdir() {
kiểm tra -z "$TMPDIR" && TMPDIR="$(mktemp -d)"
mkdir -p "${TMPDIR}"
tiếng vang "${TMPDIR}"
}
http_download_curl() {
tập tin cục bộ = $1
nguồn_url=$2
tiêu đề=$3
nếu [ -n "$header" ]; thì
HTTP_CODE=$(curl -w '%{http_code}' -sSL -H "$header" -H "Cache-Control: no-cache" -o "$local_file" "$source_url") || (log_debug "lệnh curl không thành công." && return 1)
có
nếu [ -z "$header" ]; thì
HTTP_CODE=$(curl -w '%{http_code}' -sSL -H "Cache-Control: no-cache" -o "$local_file" "$source_url") || (log_debug "lệnh curl không thành công." && return 1)
có
trả về 0
}
http_download_wget() {
tập tin cục bộ = $1
nguồn_url=$2
tiêu đề=$3
nếu [ -n "$header" ]; thì
HTTP_CODE=$(wget -q --header "$header" --no-cache --server-response -O "$local_file" "$source_url" 2>&1 | awk 'NR==1{print $2}') || (log_debug "lệnh wget không thành công." && return 1)
có
nếu [ -z "$header" ]; thì
HTTP_CODE=$(wget -q --no-cache --server-response -O "$local_file" "$source_url" 2>&1 | awk 'NR==1{print $2}') || (log_debug "lệnh wget không thành công." && return 1)
có
trả về 0
}
http_tải xuống() {
log_debug "http_tải xuống
Bối cảnh: fossas/fossa-cli#1066
trường hợp $source_url trong
*.tar.gz) nếu [ "$HTTP_CODE" = "404" ]; thì
log_debug "http_download nhận được lỗi 404 từ
nếu [ -n "$HTTP_CODE" ] && [ "$HTTP_CODE" != 200 ] && [ "$HTTP_CODE" != 302 ]; sau đó
log_err "http_download đã nhận được trạng thái HTTP $HTTP_CODE từ
http_download "${tmp}" "$1" "$2" || trả về 1 thân = $ (mèo "$ tmp") rm -f "${tmp}" tiếng vang "$body" } phát hành github() { chủ sở hữu_repo=$1 phiên bản=$2 kiểm tra -z "$version" && phiên bản="mới nhất" giturl="https://github.com/${owner_repo}/releases/${version}" json=$(http_copy "$giturl" "Chấp nhận:ứng dụng/json") kiểm tra -z "$json" && trả về 1 phiên bản=$(echo "$json" | tr -s '\n' ' ' | sed 's/."tag_name":"//' | sed 's/".//') kiểm tra -z "$version" && trả về 1 tiếng vang "$version" } băm_sha256() { MỤC TIÊU=${1:-/dev/stdin} nếu is_command gsha256sum; thì băm=$(gsha256sum "$TARGET") || trả về 1 echo "$hash" | cắt -d ' ' -f 1 elif is_command sha256sum; sau đó băm=$(sha256sum "$TARGET") || trả về 1 echo "$hash" | cắt -d ' ' -f 1 elif is_command shasum; sau đó băm=$(shasum -a 256 "$TARGET" 2>/dev/null) || trả về 1 echo "$hash" | cắt -d ' ' -f 1 elif is_command openssl; sau đó băm=$(openssl -dst openssl dgst -sha256 "$TARGET") || trả về 1 echo "$hash" | cắt -d ' ' -fa khác log_crit "hash_sha256 không tìm thấy lệnh để tính toán băm sha-256" trở lại 1 có } hash_sha256_verify() { MỤC TIÊU=$1 tổng kiểm tra = $2 nếu [ -z "$checksums" ]; thì log_err "hash_sha256_verify tệp tổng kiểm tra không được chỉ định trong arg2" trở lại 1 có TÊN CƠ SỞ=${MỤC TIÊU##*/} muốn=$(grep "${BASENAME}" "${checksums}" 2>/dev/null | tr '\t' ' ' | cắt -d ' ' -f 1) nếu [ -z "$want" ]; thì log_err "hash_sha256_verify không tìm thấy tổng kiểm tra cho '${TARGET}' trong '${checksums}'" trở lại 1 có đã nhận được=$(hash_sha256 "$TARGET") nếu [ "$want" != "$got" ]; thì log_err "hash_sha256_verify checksum cho '$TARGET' không xác minh được ${want} so với $got" trở lại 1 có } mèo /dev/null <<EOF
Kết thúc chức năng từ https://github.com/client9/shlib
Cuối cùng
###################################################
#################################################### lấy_tên_nhị_phân() { tên=${PROJECT_NAME}${VERSION}${OS}${ARCH} trường hợp ${PLATFORM} trong darwin/cánh tay64) nếu version_less_than "$VERSION" "3.9.19"; thì log_info "Đã phát hiện nền tảng ${PLATFORM} (m1 silicon) và yêu cầu phiên bản < 3.9.19, sử dụng nhị phân darwin/amd64 tương thích thay thế." tên=${PROJECT_NAME}${VERSION}_${OS}_amd64 ;; esac echo "$name" }
Một phiên bản nhỏ hơn phiên bản khác nếu tồn tại một cặp Xn/Yn trong đó Xn < Yn trong đó với mọi cặp Xn/Yn đứng trước trong chuỗi Xn == Yn.
phiên bản_ít_hơn() {
đối với tôi trong 1 2 3
LÀM
VERSION_PIECE1=$(echo "$1" | cắt -d '.' -f
nếu [ "$VERSION_PIECE1" -lt "$VERSION_PIECE2" ]
sau đó
trả về 0
có
nếu [ "$VERSION_PIECE1" -gt "$VERSION_PIECE2" ]
sau đó
trở lại 1
có
xong
trở lại 1
} in_từ_bỏ_từ_bỏ() { thông tin đăng nhập "" thông tin đăng nhập "------" log_info "Thông báo" thông tin đăng nhập "------" thông tin đăng nhập "" log_info "FOSSA thu thập các cảnh báo, lỗi và dữ liệu sử dụng để cải thiện" log_info "FOSSA CLI và trải nghiệm của bạn." thông tin đăng nhập "" log_info "Đọc thêm: https://github.com/fossas/fossa-cli/blob/master/docs/telemetry.md" thông tin đăng nhập "" log_info "Nếu bạn muốn ngăn chặn bất kỳ dữ liệu đo từ xa nào được gửi đến" log_info "máy chủ, bạn có thể chọn không tham gia đo từ xa bằng cách thiết lập" log_info "Biến môi trường FOSSA_TELEMETRY_SCOPE thành 'tắt' trong shell của bạn." thông tin đăng nhập "" log_info "Ví dụ:" log_info " FOSSA_TELEMETRY_SCOPE=tắt phân tích fossa" thông tin đăng nhập "" thông tin đăng nhập "" }
TÊN_DỰ ÁN="fossa" CHỦ SỞ HỮU=fossas REPO="fossa-cli" ĐỊNH DẠNG=zip Hệ điều hành=$(uname_os) ARCH=$(uname_arch) TIỀN TỐ="$CHỦ SỞ HỮU/$REPO"
log_tiền tố() { tiếng vang "$PREFIX" } NỀN TẢNG="${OS}/${ARCH}" GITHUB_DOWNLOAD=https://github.com/${OWNER}/${REPO}/releases/download
uname_os_check "$OS" uname_arch_check "$ARCH"
phân tích đối số "$@"
kiểm tra_nền_tảng
tag_to_version
điều chỉnh định dạng
điều chỉnh_os
điều chỉnh_vòm
kiểm tra phiên bản arch
TÊN=$(get_binary_name) TARBALL=${TÊN}.${ĐỊNH DẠNG} TARBALL_URL=${GITHUB_DOWNLOAD}/${TAG}/${TARBALL} log_info "tìm thấy tệp nhị phân fossa-cli ${VERSION} cho ${PLATFORM} tại ${TARBALL_URL}"
TỔNG KIỂM TRA=${TARBALL}.sha256 CHECKSUM_URL=${GITHUB_DOWNLOAD}/${TAG}/${CHECKSUM}
in_từ_chối_từ_bỏ thực hiện