• meteor 命令文件shell 解析


    #!/bin/bash

    # This is the script that we install somewhere in your $PATH (as "meteor")
    # when you run
    # $ curl https://install.meteor.com/ | sh
    # In fact, all that the curl script does is install this script and run it
    # once. It's the only file that we install globally on your system; each user of
    # Meteor gets their own personal package and tools repository, called the
    # warehouse, in ~/.meteor/. This means that a user can share packages among
    # multiple apps and automatically update to new releases without having to have
    # permissions to write them to anywhere global.
    #
    # All this script does is exec ~/.meteor/meteor. But what if you don't have it
    # yet? In that case, it downloads a "bootstrap tarball", which contains the
    # latest version of the Meteor tools, and plops it down at ~/.meteor. In fact,
    # once you've run this once, you don't even really need this script: you can put
    # ~/.meteor/ into your PATH, or a symlink to ~/.meteor/meteor into some other
    # PATH directory. No special permissions needed!
    # 脚本的目的在于运行 ~/.meteor/meteor。它会下载一个包:bootstrap tarball,包含了最新
    # 版本的Meteor的工具,存放在~/.meteor文件夹下面。事实上,你只要已经运行过一次,你就可
    # 不许要这个脚本:你可以把~/.meteor/路径放到你的PATH目录下面,或者加一个链接到PATH目录
    # 下面,不许要额外的权限。
    #
    # To uninstall Meteor from your system, just delete this shell script, and
    # delete your warehouse (~/.meteor/).
    # 卸载就直接删除~/.meteor/文件夹就行了。
    #
    # We'll keep around a copy of this file at
    # ~/.meteor/engines/latest/launch-meteor just in case you ever want to find it
    # again. And if you put it somewhere that other users on your system can run it,
    # then when they run it they'll get their very own warehouse too!
    # ~/.meteor/engines/latest/launch-meteor 是这个文件的副本,如果你把这个共享给了其他
    # 用,那么他们也会有自己的仓库。


    set -e
    set -u
    set -o pipefail # so curl failure triggers the "set -e"

    # 设置两个地址
    BOOTSTRAP_URL='https://install-bootstrap.meteor.com/'
    METEOR_WAREHOUSE_DIR="${METEOR_WAREHOUSE_DIR:-$HOME/.meteor}"

    if [ ! -x "$METEOR_WAREHOUSE_DIR/meteor" ]; then # 测试目录
    if [ -e "$METEOR_WAREHOUSE_DIR" ]; then
    echo "'$METEOR_WAREHOUSE_DIR' exists, but '$METEOR_WAREHOUSE_DIR/meteor' is not executable." 1>&2
    echo 1>&2
    echo "Remove it and try again." 1>&2
    exit 1
    fi # 发现仓库路径 但路径里面出现错误

    # Bootstrap .meteor from a tarball. First, figure out our architecture.

    UNAME=$(uname)
    if [ "$UNAME" != "Linux" -a "$UNAME" != "Darwin" ] ; then
    echo "Sorry, this OS is not supported yet." 1>&2
    exit 1
    fi # 系统是否正确

    # If you change this, also change host() in tools/archinfo.js
    if [ "$UNAME" = "Darwin" ] ; then # osx 系统
    if [ "i386" != "$(uname -p)" -o "1" != "$(sysctl -n hw.cpu64bit_capable 2>/dev/null || echo 0)" ] ; then
    # Can't just test uname -m = x86_64, because Snow Leopard can
    # return other values.
    echo "Only 64-bit Intel processors are supported at this time." 1>&2
    exit 1 # osx 一定需要64位
    fi
    ARCH="x86_64"
    elif [ "$UNAME" = "Linux" ] ; then # linux 系统
    ARCH="$(uname -m)"
    if [ "$ARCH" != "i686" -a "$ARCH" != "x86_64" ] ; then
    echo "Unsupported architecture: $ARCH" 1>&2
    echo "Meteor only supports i686 and x86_64 for now." 1>&2
    exit 1 # 32和64都需要
    fi
    fi
    PLATFORM="${UNAME}_${ARCH}" # 平台字符串

    # This returns something like https://warehouse.meteor.com/bootstrap/0.6.1
    ROOT_URL="$(curl -s --fail $BOOTSTRAP_URL)" # 判断是否提供
    TARBALL_URL="${ROOT_URL}/meteor-bootstrap-${PLATFORM}.tar.gz" # 工具包地址

    INSTALL_TMPDIR="$(dirname "$METEOR_WAREHOUSE_DIR")/.meteor-install-tmp" # 安装是的临时目录
    rm -rf "$INSTALL_TMPDIR" # 清空安装临时目录
    mkdir "$INSTALL_TMPDIR" # 创建目录
    if [ -n "$USER" ]; then # 提示
    echo "$USER, this is your first time using Meteor!" 1>&2
    else
    echo "This is your first time using Meteor!" 1>&2
    fi
    echo "Installing a Meteor distribution in your home directory." 1>&2
    curl --progress-bar --fail "$TARBALL_URL" | tar -xzf - -C "$INSTALL_TMPDIR" # 下载工具包并且解压到临时目录里面
    # bomb out if it didn't work, eg no net
    test -x "${INSTALL_TMPDIR}/.meteor/meteor" # 是否有目录
    mv "${INSTALL_TMPDIR}/.meteor" "$METEOR_WAREHOUSE_DIR"
    rmdir "${INSTALL_TMPDIR}" # 删除临时文件
    # just double-checking :)
    test -x "$METEOR_WAREHOUSE_DIR/meteor" # 是否安装好
    fi

    exec "$METEOR_WAREHOUSE_DIR/meteor" "$@" # 执行

  • 相关阅读:
    PCLint
    pthread_join
    作业过程查找
    sqlcmd (转)
    整合问题
    PATINDEX
    回归Dos操作的快感,进入PowerShell世界 (转)
    Javascript 面向对象编程(一):封装
    理解闭包
    Javascript 面向对象编程(三):非构造函数的继承
  • 原文地址:https://www.cnblogs.com/snakevash/p/3435471.html
Copyright © 2020-2023  润新知