Skip to content
View nohu98com's full-sized avatar

Block or report nohu98com

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Please don't include any personal information such as legal names or email addresses. Maximum 100 characters, markdown supported. This note will be visible to only you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
nohu98com/README.md
  • 👋 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

Mã được tạo bởi godownloader vào ngày 2019-07-23T16:35:03Z. KHÔNG CHỈNH SỬA.

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

bị ghi đè bởi cờ bên dưới

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 }

hàm này bao gồm tất cả các hoạt động phá hủy

nếu curl|bash cắt phần cuối của tập lệnh do

mạng, hoặc là không có gì xảy ra hoặc sẽ có lỗi cú pháp

ra ngoài ngăn chặn công việc làm một nửa

thực hiện() { tmpdir=$(mktmpdir) log_debug "đang tải xuống các tập tin vào ${tmpdir}" http_download "${tmpdir}/${TARBALL}" "${TARBALL_URL}" http_download "${tmpdir}/${CHECKSUM}" "${CHECKSUM_URL}" hash_sha256_verify "${tmpdir}/${TARBALL}" "${tmpdir}/${CHECKSUM}" srcdir="${tmpdir}" (cd "${tmpdir}" && giải nén "${TARBALL}") log_debug "thiết lập bindir: $BINDIR" mkdir -p "$BINDIR" 2> /dev/null || Sudo mkdir -p "$BINDIR" binexe="hố" nếu [ "$OS" = "windows" ]; thì binexe="${binexe}.exe" có log_debug "đang cài đặt nhị phân: $binexe"

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ó

nếu phiên bản bắt đầu bằng 'v', hãy xóa nó

THẺ="$REALTAG" PHIÊN BẢN=${TAG#v} } điều chỉnh định dạng() {

thay đổi định dạng (tar.gz hoặc zip) dựa trên ARCH

trường hợp ${ARCH} trong cửa sổ) ĐỊNH DẠNG=zip ;; esac ĐÚNG VẬY } điều chỉnh_os() {

điều chỉnh tên lưu trữ dựa trên hệ điều hành

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() {

điều chỉnh tên lưu trữ dựa trên ARCH

ĐÚNG VẬY } kiểm tra phiên bản arch() {

TODO: Sửa phiên bản này trước khi hợp nhất.

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 $2" nếu is_command curl; thì http_download_curl "$@" elif is_command wget; sau đó http_download_wget "$@" khác log_crit "http_download không tìm thấy wget hoặc curl" trở lại 1 có

Các bản phát hành tar.gz đã được thêm vào bắt đầu từ v3.4.7.

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ừ $source_url, đang cố tải xuống tệp zip thay thế..." ĐỊNH DẠNG="zip" TARBALL=${TÊN}.${ĐỊNH DẠNG} TARBALL_URL=${GITHUB_DOWNLOAD}/${TAG}/${TARBALL} http_download "${tmpdir}/${TARBALL}" "${TARBALL_URL}" "$3" ;; esac

wget trả về mã trạng thái đầu tiên mà nó tìm thấy ngay cả khi nó được chuyển hướng. Kiểm tra

cho 302 có vẻ hoạt động ổn định với API của GitHub.

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ừ $2" trở lại 1 có } http_sao chép() { tmp=$(mktemp) nếu [ ! -w "$tmp" ]; sau đó log_crit "Tệp tạm thời ${tmp} được tạo ra không thể ghi được!" có nếu [ ! -r "$tmp" ]; sau đó log_crit "Tệp tạm thời ${tmp} được tạo ra không thể đọc được!" có

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 tệp nhị phân (không có phần mở rộng)

được sử dụng trong bản phát hành kho lưu trữ.

Toàn cầu:

TÊN_DỰ_án

PHIÊN BẢN

Hệ điều hành

KIẾN TRÚC

Lập luận:

Không có

#################################################### 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" }

Kiểm tra xem phiên bản nào nhỏ hơn phiên bản nào.

Các phiên bản dự kiến sẽ là XXX trong đó X là một số nguyên.

Cho chuỗi phiên bản X1.X2.X3 và Y1.Y2.Y3:

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.

Ví dụ:

2.1.4 < 3.1.4

3.5.0 < 3.6.5

3.5.5 < 3.5.15

Trả về 0 khi đối số phiên bản đầu tiên < đối số thứ hai.

Nếu không thì trả về 1.

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 $i) VERSION_PIECE2=$(echo "$2" | cắt -d '.' -f $i)

    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"

sử dụng trong các thói quen ghi nhật ký

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

Mã được tạo bởi godownloader vào ngày 2019-07-23T16:35:03Z. KHÔNG CHỈNH SỬA.

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

bị ghi đè bởi cờ bên dưới

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 }

hàm này bao gồm tất cả các hoạt động phá hủy

nếu curl|bash cắt phần cuối của tập lệnh do

mạng, hoặc là không có gì xảy ra hoặc sẽ có lỗi cú pháp

ra ngoài ngăn chặn công việc làm một nửa

thực hiện() { tmpdir=$(mktmpdir) log_debug "đang tải xuống các tập tin vào ${tmpdir}" http_download "${tmpdir}/${TARBALL}" "${TARBALL_URL}" http_download "${tmpdir}/${CHECKSUM}" "${CHECKSUM_URL}" hash_sha256_verify "${tmpdir}/${TARBALL}" "${tmpdir}/${CHECKSUM}" srcdir="${tmpdir}" (cd "${tmpdir}" && giải nén "${TARBALL}") log_debug "thiết lập bindir: $BINDIR" mkdir -p "$BINDIR" 2> /dev/null || Sudo mkdir -p "$BINDIR" binexe="hố" nếu [ "$OS" = "windows" ]; thì binexe="${binexe}.exe" có log_debug "đang cài đặt nhị phân: $binexe"

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ó

nếu phiên bản bắt đầu bằng 'v', hãy xóa nó

THẺ="$REALTAG" PHIÊN BẢN=${TAG#v} } điều chỉnh định dạng() {

thay đổi định dạng (tar.gz hoặc zip) dựa trên ARCH

trường hợp ${ARCH} trong cửa sổ) ĐỊNH DẠNG=zip ;; esac ĐÚNG VẬY } điều chỉnh_os() {

điều chỉnh tên lưu trữ dựa trên hệ điều hành

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() {

điều chỉnh tên lưu trữ dựa trên ARCH

ĐÚNG VẬY } kiểm tra phiên bản arch() {

TODO: Sửa phiên bản này trước khi hợp nhất.

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 $2" nếu is_command curl; thì http_download_curl "$@" elif is_command wget; sau đó http_download_wget "$@" khác log_crit "http_download không tìm thấy wget hoặc curl" trở lại 1 có

Các bản phát hành tar.gz đã được thêm vào bắt đầu từ v3.4.7.

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ừ $source_url, đang cố tải xuống tệp zip thay thế..." ĐỊNH DẠNG="zip" TARBALL=${TÊN}.${ĐỊNH DẠNG} TARBALL_URL=${GITHUB_DOWNLOAD}/${TAG}/${TARBALL} http_download "${tmpdir}/${TARBALL}" "${TARBALL_URL}" "$3" ;; esac

wget trả về mã trạng thái đầu tiên mà nó tìm thấy ngay cả khi nó được chuyển hướng. Kiểm tra

cho 302 có vẻ hoạt động ổn định với API của GitHub.

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ừ $2" trở lại 1 có } http_sao chép() { tmp=$(mktemp) nếu [ ! -w "$tmp" ]; sau đó log_crit "Tệp tạm thời ${tmp} được tạo ra không thể ghi được!" có nếu [ ! -r "$tmp" ]; sau đó log_crit "Tệp tạm thời ${tmp} được tạo ra không thể đọc được!" có

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 tệp nhị phân (không có phần mở rộng)

được sử dụng trong bản phát hành kho lưu trữ.

Toàn cầu:

TÊN_DỰ_án

PHIÊN BẢN

Hệ điều hành

KIẾN TRÚC

Lập luận:

Không có

#################################################### 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" }

Kiểm tra xem phiên bản nào nhỏ hơn phiên bản nào.

Các phiên bản dự kiến sẽ là XXX trong đó X là một số nguyên.

Cho chuỗi phiên bản X1.X2.X3 và Y1.Y2.Y3:

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.

Ví dụ:

2.1.4 < 3.1.4

3.5.0 < 3.6.5

3.5.5 < 3.5.15

Trả về 0 khi đối số phiên bản đầu tiên < đối số thứ hai.

Nếu không thì trả về 1.

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 $i) VERSION_PIECE2=$(echo "$2" | cắt -d '.' -f $i)

    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"

sử dụng trong các thói quen ghi nhật ký

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

Popular repositories Loading

  1. si-u-si-u-chi-n-th-ng--. si-u-si-u-chi-n-th-ng--. Public

    Người sở hữu * Tên kho lưu trữ * si-u-si-u-chi-n-th-ng- . Kho lưu trữ mới của bạn sẽ được tạo với tên si-u-si-u-chi-n-th-ng--. . Tên kho lưu trữ chỉ có thể chứa các chữ cái ASCII, chữ số và các ký …

    1

  2. operating_system_installs_mods operating_system_installs_mods Public

    Forked from greydongilmore/operating_system_installs_mods

    Various operating system modifications

    Lua 1

  3. -fossa-cli- -fossa-cli- Public

    1

  4. nohu98com nohu98com Public

    Config files for my GitHub profile.

    1

  5. shlib shlib Public

    Forked from client9/shlib

    portable functions for posix shell environments

    Shell 1

  6. Telegram Telegram Public

    Forked from DrKLO/Telegram

    Telegram for Android source

    Java 1