chore: make use of pkg to package the Etcher CLI (#1547)

This commit replaces our home-grown CLI packaging mechanism based on
browserify + node-static-entry-point with pkg, an open source tool to
package Node.js applications for distribution.

Some highlights:

- Removing browserify got rid of a lot of dependencies from
  npm-shrinkwrap.json

- pkg currently has an issue where macOS binaries can't be code-signed
  (https://github.com/zeit/pkg/issues/128), therefore this commit
  comments-out the binary signing section for that operating system

- pkg currently has an issue where Windows binaries can't be branded
  (https://github.com/zeit/pkg/issues/149), therefore this commit
  comments-out the branding section for that operating system

See: https://github.com/zeit/pkg
Fixes: https://github.com/resin-io/etcher/issues/1531
Fixes: https://github.com/resin-io/etcher/issues/1450
Change-Type: patch
Signed-off-by: Juan Cruz Viotti <jv@jviotti.com>
This commit is contained in:
Juan Cruz Viotti 2017-07-11 14:37:14 -04:00 committed by GitHub
parent 3ade1ea59b
commit 6ffba92dc8
11 changed files with 175 additions and 927 deletions

View File

@ -13,6 +13,7 @@ cache:
- $HOME/.cache/electron
- $HOME/.cache/electron-builder
- $HOME/.npm/_prebuilds
- node_modules
services:
- docker

111
Makefile
View File

@ -14,7 +14,6 @@ $(error $(BUILD_DIRECTORY_PARENT) does not exist)
endif
BUILD_TEMPORARY_DIRECTORY = $(BUILD_DIRECTORY)/.tmp
BUILD_OUTPUT_DIRECTORY = $(BUILD_DIRECTORY)/out
# ---------------------------------------------------------------------
# Application configuration
@ -179,15 +178,18 @@ TARGET_ARCH_DEBIAN = $(shell ./scripts/build/architecture-convert.sh -r $(TARGET
TARGET_ARCH_REDHAT = $(shell ./scripts/build/architecture-convert.sh -r $(TARGET_ARCH) -t redhat)
TARGET_ARCH_APPIMAGE = $(shell ./scripts/build/architecture-convert.sh -r $(TARGET_ARCH) -t appimage)
TARGET_ARCH_ELECTRON_BUILDER = $(shell ./scripts/build/architecture-convert.sh -r $(TARGET_ARCH) -t electron-builder)
TARGET_PLATFORM_PKG = $(shell ./scripts/build/target-convert.sh -r $(TARGET_PLATFORM) -t pkg)
ENTRY_POINT_CLI = lib/cli/etcher.js
ETCHER_CLI_BINARY = $(APPLICATION_NAME_LOWERCASE)
ifeq ($(TARGET_PLATFORM),win32)
ETCHER_CLI_BINARY = $(APPLICATION_NAME_LOWERCASE).exe
endif
PRODUCT_NAME = etcher
APPLICATION_NAME_LOWERCASE = $(shell echo $(APPLICATION_NAME) | tr A-Z a-z)
APPLICATION_VERSION_DEBIAN = $(shell echo $(APPLICATION_VERSION) | tr "-" "~")
APPLICATION_VERSION_REDHAT = $(shell echo $(APPLICATION_VERSION) | tr "-" "~")
# Fix hard link Appveyor issues
CPRF = cp -RLf
# ---------------------------------------------------------------------
# Rules
# ---------------------------------------------------------------------
@ -208,16 +210,14 @@ $(BUILD_DIRECTORY):
$(BUILD_TEMPORARY_DIRECTORY): | $(BUILD_DIRECTORY)
mkdir $@
$(BUILD_OUTPUT_DIRECTORY): | $(BUILD_DIRECTORY)
mkdir $@
# ---------------------------------------------------------------------
# CLI
# ---------------------------------------------------------------------
$(BUILD_DIRECTORY)/node-$(TARGET_PLATFORM)-$(TARGET_ARCH)-dependencies: package.json npm-shrinkwrap.json \
$(BUILD_DIRECTORY)/$(APPLICATION_NAME)-cli-$(APPLICATION_VERSION)-$(TARGET_PLATFORM)-$(TARGET_ARCH)-app: \
package.json npm-shrinkwrap.json \
| $(BUILD_DIRECTORY)
mkdir $@
mkdir -p $@
./scripts/build/dependencies-npm.sh -p \
-r "$(TARGET_ARCH)" \
-v "$(NODE_VERSION)" \
@ -225,54 +225,45 @@ $(BUILD_DIRECTORY)/node-$(TARGET_PLATFORM)-$(TARGET_ARCH)-dependencies: package.
-t node \
-s "$(TARGET_PLATFORM)"
git apply --directory $@/node_modules/lzma-native patches/cli/lzma-native-index-static-addon-require.patch
$(BUILD_DIRECTORY)/$(APPLICATION_NAME)-cli-$(APPLICATION_VERSION)-$(TARGET_PLATFORM)-$(TARGET_ARCH)-app: \
package.json lib \
$(BUILD_DIRECTORY)/node-$(TARGET_PLATFORM)-$(TARGET_ARCH)-dependencies \
| $(BUILD_DIRECTORY)
mkdir $@
cp $(word 1,$^) $@
$(CPRF) $(word 2,$^) $@
$(CPRF) $(word 3,$^)/* $@
$(BUILD_DIRECTORY)/$(APPLICATION_NAME)-cli-$(APPLICATION_VERSION)-$(TARGET_PLATFORM)-$(TARGET_ARCH).js: \
$(BUILD_DIRECTORY)/$(APPLICATION_NAME)-cli-$(APPLICATION_VERSION)-$(TARGET_PLATFORM)-$(TARGET_ARCH)-app \
| $(BUILD_DIRECTORY)
./scripts/build/concatenate-javascript.sh -e lib/cli/etcher.js -b $< -o $@ -m
cp -r lib $@
cp package.json $@
$(BUILD_DIRECTORY)/$(APPLICATION_NAME)-cli-$(APPLICATION_VERSION)-$(TARGET_PLATFORM)-$(TARGET_ARCH): \
$(BUILD_DIRECTORY)/node-$(TARGET_PLATFORM)-$(TARGET_ARCH)-dependencies \
$(BUILD_DIRECTORY)/$(APPLICATION_NAME)-cli-$(APPLICATION_VERSION)-$(TARGET_PLATFORM)-$(TARGET_ARCH).js \
| $(BUILD_DIRECTORY) $(BUILD_TEMPORARY_DIRECTORY)
$(BUILD_DIRECTORY)/$(APPLICATION_NAME)-cli-$(APPLICATION_VERSION)-$(TARGET_PLATFORM)-$(TARGET_ARCH)-app \
| $(BUILD_DIRECTORY)
mkdir $@
./scripts/build/node-package-cli.sh -o $@ -l $</node_modules \
-n $(APPLICATION_NAME) \
-e $(word 2,$^) \
-r $(TARGET_ARCH) \
-s $(TARGET_PLATFORM)
$(NPX) pkg --output $@/$(ETCHER_CLI_BINARY) -t node6-$(TARGET_PLATFORM_PKG)-$(TARGET_ARCH) $</$(ENTRY_POINT_CLI)
./scripts/build/dependencies-npm-extract-addons.sh \
-d $</node_modules \
-o $@/node_modules
# pkg currently has a bug where darwin executables
# can't be code-signed
# See https://github.com/zeit/pkg/issues/128
# ifeq ($(TARGET_PLATFORM),darwin)
# ifdef CSC_NAME
# ./scripts/build/electron-sign-file-darwin.sh -f $@/$(ETCHER_CLI_BINARY) -i "$(CSC_NAME)"
# endif
# endif
ifeq ($(TARGET_PLATFORM),win32)
./scripts/build/electron-brand-exe.sh \
-f $@/etcher.exe \
-n $(APPLICATION_NAME) \
-d "$(APPLICATION_DESCRIPTION)" \
-v "$(APPLICATION_VERSION)" \
-c "$(APPLICATION_COPYRIGHT)" \
-m "$(COMPANY_NAME)" \
-i assets/icon.ico \
-w $(BUILD_TEMPORARY_DIRECTORY)
endif
ifeq ($(TARGET_PLATFORM),darwin)
ifdef CSC_NAME
./scripts/build/electron-sign-file-darwin.sh -f $@/etcher -i "$(CSC_NAME)"
endif
endif
# pkg currently has a bug where Windows executables
# can't be branded
# See https://github.com/zeit/pkg/issues/149
# ifeq ($(TARGET_PLATFORM),win32)
# ./scripts/build/electron-brand-exe.sh \
# -f $@/$(ETCHER_CLI_BINARY) \
# -n $(APPLICATION_NAME) \
# -d "$(APPLICATION_DESCRIPTION)" \
# -v "$(APPLICATION_VERSION)" \
# -c "$(APPLICATION_COPYRIGHT)" \
# -m "$(COMPANY_NAME)" \
# -i assets/icon.ico \
# -w $(BUILD_TEMPORARY_DIRECTORY)
# endif
ifeq ($(TARGET_PLATFORM),win32)
ifdef CSC_LINK
ifdef CSC_KEY_PASSWORD
./scripts/build/electron-sign-exe-win32.sh -f $@/etcher.exe \
./scripts/build/electron-sign-exe-win32.sh -f $@/$(ETCHER_CLI_BINARY) \
-d "$(APPLICATION_NAME) - $(APPLICATION_VERSION)" \
-c $(CSC_LINK) \
-p $(CSC_KEY_PASSWORD)
@ -280,14 +271,12 @@ endif
endif
endif
$(BUILD_OUTPUT_DIRECTORY)/$(APPLICATION_NAME)-cli-$(APPLICATION_VERSION)-$(TARGET_PLATFORM)-$(TARGET_ARCH).zip: \
$(BUILD_DIRECTORY)/$(APPLICATION_NAME)-cli-$(APPLICATION_VERSION)-$(TARGET_PLATFORM)-$(TARGET_ARCH) \
| $(BUILD_OUTPUT_DIRECTORY)
$(BUILD_DIRECTORY)/$(APPLICATION_NAME)-cli-$(APPLICATION_VERSION)-$(TARGET_PLATFORM)-$(TARGET_ARCH).zip: \
$(BUILD_DIRECTORY)/$(APPLICATION_NAME)-cli-$(APPLICATION_VERSION)-$(TARGET_PLATFORM)-$(TARGET_ARCH)
./scripts/build/zip-file.sh -f $< -s $(TARGET_PLATFORM) -o $@
$(BUILD_OUTPUT_DIRECTORY)/$(APPLICATION_NAME)-cli-$(APPLICATION_VERSION)-$(TARGET_PLATFORM)-$(TARGET_ARCH).tar.gz: \
$(BUILD_DIRECTORY)/$(APPLICATION_NAME)-cli-$(APPLICATION_VERSION)-$(TARGET_PLATFORM)-$(TARGET_ARCH) \
| $(BUILD_OUTPUT_DIRECTORY)
$(BUILD_DIRECTORY)/$(APPLICATION_NAME)-cli-$(APPLICATION_VERSION)-$(TARGET_PLATFORM)-$(TARGET_ARCH).tar.gz: \
$(BUILD_DIRECTORY)/$(APPLICATION_NAME)-cli-$(APPLICATION_VERSION)-$(TARGET_PLATFORM)-$(TARGET_ARCH)
./scripts/build/tar-gz-file.sh -f $< -o $@
# ---------------------------------------------------------------------
@ -376,7 +365,7 @@ package-cli: $(BUILD_DIRECTORY)/$(APPLICATION_NAME)-cli-$(APPLICATION_VERSION)-$
ifeq ($(TARGET_PLATFORM),darwin)
electron-installer-app-zip: $(BUILD_DIRECTORY)/$(APPLICATION_NAME)-$(APPLICATION_VERSION)-$(TARGET_PLATFORM)-$(TARGET_ARCH).zip
electron-installer-dmg: $(BUILD_DIRECTORY)/$(APPLICATION_NAME)-$(APPLICATION_VERSION)-$(TARGET_PLATFORM)-$(TARGET_ARCH).dmg
cli-installer-tar-gz: $(BUILD_OUTPUT_DIRECTORY)/$(APPLICATION_NAME)-cli-$(APPLICATION_VERSION)-$(TARGET_PLATFORM)-$(TARGET_ARCH).tar.gz
cli-installer-tar-gz: $(BUILD_DIRECTORY)/$(APPLICATION_NAME)-cli-$(APPLICATION_VERSION)-$(TARGET_PLATFORM)-$(TARGET_ARCH).tar.gz
TARGETS += \
electron-installer-dmg \
electron-installer-app-zip \
@ -384,14 +373,14 @@ TARGETS += \
PUBLISH_AWS_S3 += \
$(BUILD_DIRECTORY)/$(APPLICATION_NAME)-$(APPLICATION_VERSION)-$(TARGET_PLATFORM)-$(TARGET_ARCH).zip \
$(BUILD_DIRECTORY)/$(APPLICATION_NAME)-$(APPLICATION_VERSION)-$(TARGET_PLATFORM)-$(TARGET_ARCH).dmg \
$(BUILD_OUTPUT_DIRECTORY)/$(APPLICATION_NAME)-cli-$(APPLICATION_VERSION)-$(TARGET_PLATFORM)-$(TARGET_ARCH).tar.gz
$(BUILD_DIRECTORY)/$(APPLICATION_NAME)-cli-$(APPLICATION_VERSION)-$(TARGET_PLATFORM)-$(TARGET_ARCH).tar.gz
endif
ifeq ($(TARGET_PLATFORM),linux)
electron-installer-appimage: $(BUILD_DIRECTORY)/$(APPLICATION_NAME_LOWERCASE)-$(APPLICATION_VERSION)-$(TARGET_PLATFORM)-$(TARGET_ARCH).zip
electron-installer-debian: $(BUILD_DIRECTORY)/$(APPLICATION_NAME_ELECTRON)_$(APPLICATION_VERSION_DEBIAN)_$(TARGET_ARCH_DEBIAN).deb
electron-installer-redhat: $(BUILD_DIRECTORY)/$(APPLICATION_NAME_ELECTRON)-$(APPLICATION_VERSION_REDHAT).$(TARGET_ARCH_REDHAT).rpm
cli-installer-tar-gz: $(BUILD_OUTPUT_DIRECTORY)/$(APPLICATION_NAME)-cli-$(APPLICATION_VERSION)-$(TARGET_PLATFORM)-$(TARGET_ARCH).tar.gz
cli-installer-tar-gz: $(BUILD_DIRECTORY)/$(APPLICATION_NAME)-cli-$(APPLICATION_VERSION)-$(TARGET_PLATFORM)-$(TARGET_ARCH).tar.gz
TARGETS += \
electron-installer-appimage \
electron-installer-debian \
@ -399,7 +388,7 @@ TARGETS += \
cli-installer-tar-gz
PUBLISH_AWS_S3 += \
$(BUILD_DIRECTORY)/$(APPLICATION_NAME_LOWERCASE)-$(APPLICATION_VERSION)-$(TARGET_PLATFORM)-$(TARGET_ARCH).zip \
$(BUILD_OUTPUT_DIRECTORY)/$(APPLICATION_NAME)-cli-$(APPLICATION_VERSION)-$(TARGET_PLATFORM)-$(TARGET_ARCH).tar.gz
$(BUILD_DIRECTORY)/$(APPLICATION_NAME)-cli-$(APPLICATION_VERSION)-$(TARGET_PLATFORM)-$(TARGET_ARCH).tar.gz
PUBLISH_BINTRAY_DEBIAN += \
$(BUILD_DIRECTORY)/$(APPLICATION_NAME_ELECTRON)_$(APPLICATION_VERSION_DEBIAN)_$(TARGET_ARCH_DEBIAN).deb
PUBLISH_BINTRAY_REDHAT += \
@ -409,7 +398,7 @@ endif
ifeq ($(TARGET_PLATFORM),win32)
electron-installer-portable: $(BUILD_DIRECTORY)/$(APPLICATION_NAME)-$(APPLICATION_VERSION)-$(TARGET_PLATFORM)-$(TARGET_ARCH)-portable.exe
electron-installer-nsis: $(BUILD_DIRECTORY)/$(APPLICATION_NAME)-$(APPLICATION_VERSION)-$(TARGET_PLATFORM)-$(TARGET_ARCH).exe
cli-installer-zip: $(BUILD_OUTPUT_DIRECTORY)/$(APPLICATION_NAME)-cli-$(APPLICATION_VERSION)-$(TARGET_PLATFORM)-$(TARGET_ARCH).zip
cli-installer-zip: $(BUILD_DIRECTORY)/$(APPLICATION_NAME)-cli-$(APPLICATION_VERSION)-$(TARGET_PLATFORM)-$(TARGET_ARCH).zip
TARGETS += \
electron-installer-portable \
electron-installer-nsis \
@ -417,7 +406,7 @@ TARGETS += \
PUBLISH_AWS_S3 += \
$(BUILD_DIRECTORY)/$(APPLICATION_NAME)-$(APPLICATION_VERSION)-$(TARGET_PLATFORM)-$(TARGET_ARCH)-portable.exe \
$(BUILD_DIRECTORY)/$(APPLICATION_NAME)-$(APPLICATION_VERSION)-$(TARGET_PLATFORM)-$(TARGET_ARCH).exe \
$(BUILD_OUTPUT_DIRECTORY)/$(APPLICATION_NAME)-cli-$(APPLICATION_VERSION)-$(TARGET_PLATFORM)-$(TARGET_ARCH).zip
$(BUILD_DIRECTORY)/$(APPLICATION_NAME)-cli-$(APPLICATION_VERSION)-$(TARGET_PLATFORM)-$(TARGET_ARCH).zip
endif
installers-all: $(PUBLISH_AWS_S3) $(PUBLISH_BINTRAY_DEBIAN) $(PUBLISH_BINTRAY_REDHAT)

764
npm-shrinkwrap.json generated

File diff suppressed because it is too large Load Diff

View File

@ -83,7 +83,6 @@
"devDependencies": {
"angular-mocks": "1.6.3",
"asar": "0.10.0",
"browserify": "github:jviotti/node-browserify#dynamic-dirname-filename",
"electron": "1.6.6",
"electron-builder": "19.9.1",
"electron-mocha": "3.3.0",
@ -96,6 +95,7 @@
"node-gyp": "3.5.0",
"node-sass": "4.5.3",
"npx": "5.2.0",
"pkg": "4.1.1",
"sass-lint": "1.10.2",
"tmp": "0.0.31",
"versionist": "2.8.1"

View File

@ -1,67 +0,0 @@
#!/bin/bash
###
# Copyright 2016 resin.io
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
###
set -u
set -e
BROWSERIFY="./node_modules/.bin/browserify"
./scripts/build/check-dependency.sh "$BROWSERIFY"
function usage() {
echo "Usage: $0"
echo ""
echo "Options"
echo ""
echo " -e <entry point (.js)>"
echo " -b <base directory>"
echo " -o <output>"
echo " -m minify"
exit 1
}
ARGV_ENTRY_POINT=""
ARGV_BASE_DIRECTORY=""
ARGV_OUTPUT=""
ARGV_MINIFY=false
while getopts ":e:b:o:m" option; do
case $option in
e) ARGV_ENTRY_POINT=$OPTARG ;;
b) ARGV_BASE_DIRECTORY=$OPTARG ;;
o) ARGV_OUTPUT=$OPTARG ;;
m) ARGV_MINIFY=true ;;
*) usage ;;
esac
done
if [ -z "$ARGV_ENTRY_POINT" ] ||
[ -z "$ARGV_BASE_DIRECTORY" ] ||
[ -z "$ARGV_OUTPUT" ]; then
usage
fi
"$BROWSERIFY" "$ARGV_ENTRY_POINT" \
--node \
--basedir "$ARGV_BASE_DIRECTORY" \
--outfile "$ARGV_OUTPUT"
if [ "$ARGV_MINIFY" == "true" ]; then
./scripts/build/check-dependency.sh uglifyjs
uglifyjs --compress --output "$ARGV_OUTPUT.MIN" -- "$ARGV_OUTPUT"
mv "$ARGV_OUTPUT.MIN" "$ARGV_OUTPUT"
fi

View File

@ -49,7 +49,6 @@ RUN curl -sL https://deb.nodesource.com/setup_6.x | bash - \
RUN npm config set unsafe-perm=true
RUN npm config set spin=false
RUN npm install -g uglify-es@3.0.3
# Python
COPY requirements.txt requirements.txt

View File

@ -48,7 +48,6 @@ RUN curl -sL https://deb.nodesource.com/setup_6.x | bash - \
RUN npm config set unsafe-perm=true
RUN npm config set spin=false
RUN npm install -g uglify-es@3.0.3
# Python
COPY requirements.txt requirements.txt

View File

@ -51,7 +51,6 @@ RUN curl -sL https://deb.nodesource.com/setup_6.x | bash - \
RUN npm config set unsafe-perm=true
RUN npm config set spin=false
RUN npm install -g uglify-es@3.0.3
# Python
COPY requirements.txt requirements.txt

View File

@ -1,81 +0,0 @@
#!/bin/bash
###
# Copyright 2016 resin.io
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
###
set -u
set -e
function usage() {
echo "Usage: $0"
echo ""
echo "Options"
echo ""
echo " -n <application name>"
echo " -e <application entry point (.js)>"
echo " -l <node_modules directory>"
echo " -r <architecture>"
echo " -s <operating system (linux|darwin|win32)>"
echo " -o <output directory>"
exit 1
}
ARGV_APPLICATION_NAME=""
ARGV_ENTRY_POINT=""
ARGV_NODE_MODULES=""
ARGV_ARCHITECTURE=""
ARGV_OPERATING_SYSTEM=""
ARGV_OUTPUT=""
while getopts ":n:e:l:r:s:o:" option; do
case $option in
n) ARGV_APPLICATION_NAME="$OPTARG" ;;
e) ARGV_ENTRY_POINT="$OPTARG" ;;
l) ARGV_NODE_MODULES="$OPTARG" ;;
r) ARGV_ARCHITECTURE="$OPTARG" ;;
s) ARGV_OPERATING_SYSTEM="$OPTARG" ;;
o) ARGV_OUTPUT="$OPTARG" ;;
*) usage ;;
esac
done
if [ -z "$ARGV_APPLICATION_NAME" ] \
|| [ -z "$ARGV_ENTRY_POINT" ] \
|| [ -z "$ARGV_NODE_MODULES" ] \
|| [ -z "$ARGV_ARCHITECTURE" ] \
|| [ -z "$ARGV_OPERATING_SYSTEM" ] \
|| [ -z "$ARGV_OUTPUT" ]; then
usage
fi
cp "$ARGV_ENTRY_POINT" "$ARGV_OUTPUT/index.js"
./scripts/build/dependencies-npm-extract-addons.sh \
-d "$ARGV_NODE_MODULES" \
-o "$ARGV_OUTPUT/node_modules"
APPLICATION_NAME_LOWERCASE="$(echo "$ARGV_APPLICATION_NAME" | tr '[:upper:]' '[:lower:]')"
BINARY_LOCATION="$ARGV_OUTPUT/$APPLICATION_NAME_LOWERCASE"
if [ "$ARGV_OPERATING_SYSTEM" == "win32" ]; then
BINARY_LOCATION="$BINARY_LOCATION.exe"
fi
./scripts/build/node-static-entry-point-download.sh \
-r "$ARGV_ARCHITECTURE" \
-v "1.0.1" \
-s "$ARGV_OPERATING_SYSTEM" \
-o "$BINARY_LOCATION"
chmod +x "$BINARY_LOCATION"

View File

@ -1,72 +0,0 @@
#!/bin/bash
###
# Copyright 2016 resin.io
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
###
set -u
set -e
./scripts/build/check-dependency.sh curl
function usage() {
echo "Usage: $0"
echo ""
echo "Options"
echo ""
echo " -r <architecture>"
echo " -v <version>"
echo " -s <operating system>"
echo " -o <output directory>"
exit 1
}
ARGV_ARCHITECTURE=""
ARGV_VERSION=""
ARGV_OPERATING_SYSTEM=""
ARGV_OUTPUT=""
while getopts ":r:v:s:o:" option; do
case $option in
r) ARGV_ARCHITECTURE=$OPTARG ;;
v) ARGV_VERSION=$OPTARG ;;
s) ARGV_OPERATING_SYSTEM=$OPTARG ;;
o) ARGV_OUTPUT=$OPTARG ;;
*) usage ;;
esac
done
if [ -z "$ARGV_ARCHITECTURE" ] \
|| [ -z "$ARGV_VERSION" ] \
|| [ -z "$ARGV_OPERATING_SYSTEM" ] \
|| [ -z "$ARGV_OUTPUT" ]
then
usage
fi
GITHUB_REPOSITORY=https://github.com/resin-io-modules/node-static-entry-point
DOWNLOADS_BASEURL="$GITHUB_REPOSITORY/releases/download/v$ARGV_VERSION"
FILENAME="node-$ARGV_OPERATING_SYSTEM-$ARGV_ARCHITECTURE"
if [ "$ARGV_OPERATING_SYSTEM" == "win32" ]; then
FILENAME="$FILENAME.exe"
fi
CHECKSUM=$(curl --location "$DOWNLOADS_BASEURL/SHASUMS256.txt" | grep "$FILENAME" | cut -d ' ' -f 1)
./scripts/build/download-tool.sh \
-u "$DOWNLOADS_BASEURL/$FILENAME" \
-c "$CHECKSUM" \
-o "$ARGV_OUTPUT"

View File

@ -68,7 +68,6 @@ else
npm config set spin=false
npm config set progress=false
npm install -g --silent uglify-es@3.0.3 > /dev/null
pip install -r requirements.txt
make info