mirror of
https://github.com/balena-io/etcher.git
synced 2025-07-22 18:56:31 +00:00
chore: automatic CLI packaging (#1132)
This commit introduces the phony `package-cli` target, used to package the Electron CLI in a directory. Other related changes: - The `package` target has been renamed to `package-electron` Signed-off-by: Juan Cruz Viotti <jviotti@openmailbox.org>
This commit is contained in:
parent
61f7c85060
commit
063fde1a02
86
Makefile
86
Makefile
@ -19,6 +19,7 @@ BUILD_OUTPUT_DIRECTORY = $(BUILD_DIRECTORY)/out
|
|||||||
# ---------------------------------------------------------------------
|
# ---------------------------------------------------------------------
|
||||||
|
|
||||||
ELECTRON_VERSION = $(shell jq -r '.devDependencies["electron-prebuilt"]' package.json)
|
ELECTRON_VERSION = $(shell jq -r '.devDependencies["electron-prebuilt"]' package.json)
|
||||||
|
NODE_VERSION = 6.1.0
|
||||||
COMPANY_NAME = $(shell jq -r '.companyName' package.json)
|
COMPANY_NAME = $(shell jq -r '.companyName' package.json)
|
||||||
APPLICATION_NAME = $(shell jq -r '.displayName' package.json)
|
APPLICATION_NAME = $(shell jq -r '.displayName' package.json)
|
||||||
APPLICATION_DESCRIPTION = $(shell jq -r '.description' package.json)
|
APPLICATION_DESCRIPTION = $(shell jq -r '.description' package.json)
|
||||||
@ -164,6 +165,9 @@ $(BUILD_TEMPORARY_DIRECTORY): | $(BUILD_DIRECTORY)
|
|||||||
$(BUILD_DIRECTORY)/electron-$(TARGET_PLATFORM)-$(TARGET_ARCH)-dependencies: | $(BUILD_DIRECTORY)
|
$(BUILD_DIRECTORY)/electron-$(TARGET_PLATFORM)-$(TARGET_ARCH)-dependencies: | $(BUILD_DIRECTORY)
|
||||||
mkdir $@
|
mkdir $@
|
||||||
|
|
||||||
|
$(BUILD_DIRECTORY)/node-$(TARGET_PLATFORM)-$(TARGET_ARCH)-dependencies: | $(BUILD_DIRECTORY)
|
||||||
|
mkdir $@
|
||||||
|
|
||||||
$(BUILD_OUTPUT_DIRECTORY): | $(BUILD_DIRECTORY)
|
$(BUILD_OUTPUT_DIRECTORY): | $(BUILD_DIRECTORY)
|
||||||
mkdir $@
|
mkdir $@
|
||||||
|
|
||||||
@ -176,6 +180,15 @@ $(BUILD_DIRECTORY)/electron-$(TARGET_PLATFORM)-$(TARGET_ARCH)-dependencies/node_
|
|||||||
-t electron \
|
-t electron \
|
||||||
-s "$(TARGET_PLATFORM)"
|
-s "$(TARGET_PLATFORM)"
|
||||||
|
|
||||||
|
$(BUILD_DIRECTORY)/node-$(TARGET_PLATFORM)-$(TARGET_ARCH)-dependencies/node_modules: package.json npm-shrinkwrap.json \
|
||||||
|
| $(BUILD_DIRECTORY)/node-$(TARGET_PLATFORM)-$(TARGET_ARCH)-dependencies
|
||||||
|
./scripts/build/dependencies-npm.sh -p -f \
|
||||||
|
-r "$(TARGET_ARCH)" \
|
||||||
|
-v "$(NODE_VERSION)" \
|
||||||
|
-x $| \
|
||||||
|
-t node \
|
||||||
|
-s "$(TARGET_PLATFORM)"
|
||||||
|
|
||||||
$(BUILD_DIRECTORY)/electron-$(TARGET_PLATFORM)-$(TARGET_ARCH)-dependencies/bower_components: bower.json \
|
$(BUILD_DIRECTORY)/electron-$(TARGET_PLATFORM)-$(TARGET_ARCH)-dependencies/bower_components: bower.json \
|
||||||
| $(BUILD_DIRECTORY)/electron-$(TARGET_PLATFORM)-$(TARGET_ARCH)-dependencies
|
| $(BUILD_DIRECTORY)/electron-$(TARGET_PLATFORM)-$(TARGET_ARCH)-dependencies
|
||||||
./scripts/build/dependencies-bower.sh -p -x $|
|
./scripts/build/dependencies-bower.sh -p -x $|
|
||||||
@ -202,6 +215,57 @@ $(BUILD_DIRECTORY)/electron-$(ELECTRON_VERSION)-$(TARGET_PLATFORM)-$(TARGET_ARCH
|
|||||||
-s "$(TARGET_PLATFORM)" \
|
-s "$(TARGET_PLATFORM)" \
|
||||||
-o $@
|
-o $@
|
||||||
|
|
||||||
|
$(BUILD_DIRECTORY)/$(APPLICATION_NAME)-cli-$(TARGET_PLATFORM)-$(APPLICATION_VERSION)-$(TARGET_ARCH)-app: \
|
||||||
|
package.json lib \
|
||||||
|
$(BUILD_DIRECTORY)/node-$(TARGET_PLATFORM)-$(TARGET_ARCH)-dependencies/node_modules \
|
||||||
|
| $(BUILD_DIRECTORY)
|
||||||
|
mkdir $@
|
||||||
|
$(foreach prerequisite,$^,$(call execute-command,cp -rf $(prerequisite) $@))
|
||||||
|
|
||||||
|
$(BUILD_DIRECTORY)/$(APPLICATION_NAME)-cli-$(TARGET_PLATFORM)-$(APPLICATION_VERSION)-$(TARGET_ARCH).js: \
|
||||||
|
$(BUILD_DIRECTORY)/$(APPLICATION_NAME)-cli-$(TARGET_PLATFORM)-$(APPLICATION_VERSION)-$(TARGET_ARCH)-app \
|
||||||
|
| $(BUILD_DIRECTORY)
|
||||||
|
./scripts/build/concatenate-javascript.sh -e $</lib/cli/etcher.js -o $@
|
||||||
|
|
||||||
|
$(BUILD_DIRECTORY)/$(APPLICATION_NAME)-cli-$(APPLICATION_VERSION)-$(TARGET_PLATFORM)-$(TARGET_ARCH): \
|
||||||
|
$(BUILD_DIRECTORY)/node-$(TARGET_PLATFORM)-$(TARGET_ARCH)-dependencies/node_modules \
|
||||||
|
$(BUILD_DIRECTORY)/$(APPLICATION_NAME)-cli-$(TARGET_PLATFORM)-$(APPLICATION_VERSION)-$(TARGET_ARCH).js \
|
||||||
|
| $(BUILD_DIRECTORY) $(BUILD_TEMPORARY_DIRECTORY)
|
||||||
|
./scripts/build/node-package-cli.sh -o $@ -l $< \
|
||||||
|
-n $(APPLICATION_NAME) \
|
||||||
|
-e $(word 2,$^) \
|
||||||
|
-r $(TARGET_ARCH) \
|
||||||
|
-s $(TARGET_PLATFORM)
|
||||||
|
|
||||||
|
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 CODE_SIGN_IDENTITY
|
||||||
|
./scripts/build/electron-sign-file-darwin.sh -f $@/etcher -i "$(CODE_SIGN_IDENTITY)"
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifeq ($(TARGET_PLATFORM),win32)
|
||||||
|
ifdef CODE_SIGN_CERTIFICATE
|
||||||
|
ifdef CODE_SIGN_CERTIFICATE_PASSWORD
|
||||||
|
./scripts/build/electron-sign-exe-win32.sh -f $@/etcher.exe \
|
||||||
|
-d "$(APPLICATION_NAME) - $(APPLICATION_VERSION)" \
|
||||||
|
-c $(CODE_SIGN_CERTIFICATE) \
|
||||||
|
-p $(CODE_SIGN_CERTIFICATE_PASSWORD)
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
$(BUILD_DIRECTORY)/$(APPLICATION_NAME)-$(APPLICATION_VERSION)-$(TARGET_PLATFORM)-$(TARGET_ARCH): \
|
$(BUILD_DIRECTORY)/$(APPLICATION_NAME)-$(APPLICATION_VERSION)-$(TARGET_PLATFORM)-$(TARGET_ARCH): \
|
||||||
$(BUILD_DIRECTORY)/electron-$(TARGET_PLATFORM)-$(APPLICATION_VERSION)-$(TARGET_ARCH)-app.asar \
|
$(BUILD_DIRECTORY)/electron-$(TARGET_PLATFORM)-$(APPLICATION_VERSION)-$(TARGET_ARCH)-app.asar \
|
||||||
$(BUILD_DIRECTORY)/electron-$(ELECTRON_VERSION)-$(TARGET_PLATFORM)-$(TARGET_ARCH).zip \
|
$(BUILD_DIRECTORY)/electron-$(ELECTRON_VERSION)-$(TARGET_PLATFORM)-$(TARGET_ARCH).zip \
|
||||||
@ -216,6 +280,7 @@ ifeq ($(TARGET_PLATFORM),darwin)
|
|||||||
-i assets/icon.icns \
|
-i assets/icon.icns \
|
||||||
-o $@
|
-o $@
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(TARGET_PLATFORM),linux)
|
ifeq ($(TARGET_PLATFORM),linux)
|
||||||
./scripts/build/electron-configure-package-linux.sh -p $(word 2,$^) -a $< \
|
./scripts/build/electron-configure-package-linux.sh -p $(word 2,$^) -a $< \
|
||||||
-n "$(APPLICATION_NAME)" \
|
-n "$(APPLICATION_NAME)" \
|
||||||
@ -223,6 +288,7 @@ ifeq ($(TARGET_PLATFORM),linux)
|
|||||||
-l LICENSE \
|
-l LICENSE \
|
||||||
-o $@
|
-o $@
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(TARGET_PLATFORM),win32)
|
ifeq ($(TARGET_PLATFORM),win32)
|
||||||
./scripts/build/electron-configure-package-win32.sh -p $(word 2,$^) -a $< \
|
./scripts/build/electron-configure-package-win32.sh -p $(word 2,$^) -a $< \
|
||||||
-n "$(APPLICATION_NAME)" \
|
-n "$(APPLICATION_NAME)" \
|
||||||
@ -308,6 +374,7 @@ $(BUILD_OUTPUT_DIRECTORY)/$(APPLICATION_NAME)-$(APPLICATION_VERSION)-win32-$(TAR
|
|||||||
$(BUILD_DIRECTORY)/$(APPLICATION_NAME)-$(APPLICATION_VERSION)-win32-$(TARGET_ARCH) \
|
$(BUILD_DIRECTORY)/$(APPLICATION_NAME)-$(APPLICATION_VERSION)-win32-$(TARGET_ARCH) \
|
||||||
| $(BUILD_OUTPUT_DIRECTORY) $(BUILD_TEMPORARY_DIRECTORY)
|
| $(BUILD_OUTPUT_DIRECTORY) $(BUILD_TEMPORARY_DIRECTORY)
|
||||||
./scripts/build/electron-installer-nsis-win32.sh -n $(APPLICATION_NAME) -a $< -t $(BUILD_TEMPORARY_DIRECTORY) -o $@
|
./scripts/build/electron-installer-nsis-win32.sh -n $(APPLICATION_NAME) -a $< -t $(BUILD_TEMPORARY_DIRECTORY) -o $@
|
||||||
|
|
||||||
ifdef CODE_SIGN_CERTIFICATE
|
ifdef CODE_SIGN_CERTIFICATE
|
||||||
ifdef CODE_SIGN_CERTIFICATE_PASSWORD
|
ifdef CODE_SIGN_CERTIFICATE_PASSWORD
|
||||||
./scripts/build/electron-sign-exe-win32.sh -f $@ \
|
./scripts/build/electron-sign-exe-win32.sh -f $@ \
|
||||||
@ -327,10 +394,13 @@ TARGETS = \
|
|||||||
sanity-checks \
|
sanity-checks \
|
||||||
clean \
|
clean \
|
||||||
distclean \
|
distclean \
|
||||||
package \
|
package-electron \
|
||||||
|
package-cli \
|
||||||
|
cli-develop \
|
||||||
electron-develop
|
electron-develop
|
||||||
|
|
||||||
package: $(BUILD_DIRECTORY)/$(APPLICATION_NAME)-$(APPLICATION_VERSION)-$(TARGET_PLATFORM)-$(TARGET_ARCH)
|
package-electron: $(BUILD_DIRECTORY)/$(APPLICATION_NAME)-$(APPLICATION_VERSION)-$(TARGET_PLATFORM)-$(TARGET_ARCH)
|
||||||
|
package-cli: $(BUILD_DIRECTORY)/$(APPLICATION_NAME)-cli-$(APPLICATION_VERSION)-$(TARGET_PLATFORM)-$(TARGET_ARCH)
|
||||||
|
|
||||||
ifeq ($(TARGET_PLATFORM),darwin)
|
ifeq ($(TARGET_PLATFORM),darwin)
|
||||||
electron-installer-app-zip: $(BUILD_OUTPUT_DIRECTORY)/$(APPLICATION_NAME)-$(APPLICATION_VERSION)-$(TARGET_PLATFORM)-$(TARGET_ARCH).zip
|
electron-installer-app-zip: $(BUILD_OUTPUT_DIRECTORY)/$(APPLICATION_NAME)-$(APPLICATION_VERSION)-$(TARGET_PLATFORM)-$(TARGET_ARCH).zip
|
||||||
@ -401,7 +471,7 @@ endif
|
|||||||
|
|
||||||
.PHONY: $(TARGETS)
|
.PHONY: $(TARGETS)
|
||||||
|
|
||||||
electron-develop:
|
# Note that we need to remove `node_modules` every time.
|
||||||
# Since we use an `npm-shrinkwrap.json` file, if you pull changes
|
# Since we use an `npm-shrinkwrap.json` file, if you pull changes
|
||||||
# that update a dependency and try to `npm install` directly, npm
|
# that update a dependency and try to `npm install` directly, npm
|
||||||
# will complain that your `node_modules` tree is not equal to what
|
# will complain that your `node_modules` tree is not equal to what
|
||||||
@ -410,6 +480,16 @@ electron-develop:
|
|||||||
# The `node_modules` directory also needs to be wiped out if you're
|
# The `node_modules` directory also needs to be wiped out if you're
|
||||||
# changing between target architectures, since compiled add-ons
|
# changing between target architectures, since compiled add-ons
|
||||||
# will not work otherwise.
|
# will not work otherwise.
|
||||||
|
|
||||||
|
cli-develop:
|
||||||
|
rm -rf node_modules
|
||||||
|
./scripts/build/dependencies-npm.sh \
|
||||||
|
-r "$(TARGET_ARCH)" \
|
||||||
|
-v "$(ELECTRON_VERSION)" \
|
||||||
|
-t node \
|
||||||
|
-s "$(TARGET_PLATFORM)"
|
||||||
|
|
||||||
|
electron-develop:
|
||||||
rm -rf node_modules
|
rm -rf node_modules
|
||||||
./scripts/build/dependencies-npm.sh \
|
./scripts/build/dependencies-npm.sh \
|
||||||
-r "$(TARGET_ARCH)" \
|
-r "$(TARGET_ARCH)" \
|
||||||
|
49
scripts/build/concatenate-javascript.sh
Executable file
49
scripts/build/concatenate-javascript.sh
Executable file
@ -0,0 +1,49 @@
|
|||||||
|
#!/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 browserify
|
||||||
|
|
||||||
|
function usage() {
|
||||||
|
echo "Usage: $0"
|
||||||
|
echo ""
|
||||||
|
echo "Options"
|
||||||
|
echo ""
|
||||||
|
echo " -e <entry point (.js)>"
|
||||||
|
echo " -o <output>"
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
ARGV_ENTRY_POINT=""
|
||||||
|
ARGV_OUTPUT=""
|
||||||
|
|
||||||
|
while getopts ":e:o:" option; do
|
||||||
|
case $option in
|
||||||
|
e) ARGV_ENTRY_POINT=$OPTARG ;;
|
||||||
|
o) ARGV_OUTPUT=$OPTARG ;;
|
||||||
|
*) usage ;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ -z "$ARGV_ENTRY_POINT" ] || [ -z "$ARGV_OUTPUT" ]; then
|
||||||
|
usage
|
||||||
|
fi
|
||||||
|
|
||||||
|
browserify "$ARGV_ENTRY_POINT" --node --outfile "$ARGV_OUTPUT"
|
61
scripts/build/dependencies-npm-extract-addons.sh
Executable file
61
scripts/build/dependencies-npm-extract-addons.sh
Executable file
@ -0,0 +1,61 @@
|
|||||||
|
#!/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 rsync
|
||||||
|
|
||||||
|
function usage() {
|
||||||
|
echo "Usage: $0"
|
||||||
|
echo ""
|
||||||
|
echo "Options"
|
||||||
|
echo ""
|
||||||
|
echo " -d <node_modules directory>"
|
||||||
|
echo " -o <output directory>"
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
ARGV_NODE_MODULES=""
|
||||||
|
ARGV_OUTPUT_DIRECTORY=""
|
||||||
|
|
||||||
|
while getopts ":d:o:" option; do
|
||||||
|
case $option in
|
||||||
|
d) ARGV_NODE_MODULES=$OPTARG ;;
|
||||||
|
o) ARGV_OUTPUT_DIRECTORY=$OPTARG ;;
|
||||||
|
*) usage ;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ -z "$ARGV_NODE_MODULES" ] || [ -z "$ARGV_OUTPUT_DIRECTORY" ]; then
|
||||||
|
usage
|
||||||
|
fi
|
||||||
|
|
||||||
|
rsync \
|
||||||
|
--archive \
|
||||||
|
--prune-empty-dirs \
|
||||||
|
--progress \
|
||||||
|
--include='*.node' \
|
||||||
|
--include='*/' \
|
||||||
|
--exclude='*' \
|
||||||
|
"$ARGV_NODE_MODULES" "$ARGV_OUTPUT_DIRECTORY"
|
||||||
|
|
||||||
|
# rsync creates a `node_modules` directory
|
||||||
|
# inside the output directory
|
||||||
|
mv "$ARGV_OUTPUT_DIRECTORY"/node_modules/* "$ARGV_OUTPUT_DIRECTORY"
|
||||||
|
rmdir "$ARGV_OUTPUT_DIRECTORY/node_modules"
|
90
scripts/build/electron-brand-exe-win32.sh
Normal file
90
scripts/build/electron-brand-exe-win32.sh
Normal file
@ -0,0 +1,90 @@
|
|||||||
|
#!/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 " -f <file (.exe)>"
|
||||||
|
echo " -n <application name>"
|
||||||
|
echo " -d <application description>"
|
||||||
|
echo " -v <application version>"
|
||||||
|
echo " -c <application copyright>"
|
||||||
|
echo " -m <company name>"
|
||||||
|
echo " -i <application icon (.ico)>"
|
||||||
|
echo " -w <download directory>"
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
ARGV_FILE=""
|
||||||
|
ARGV_APPLICATION_NAME=""
|
||||||
|
ARGV_APPLICATION_DESCRIPTION=""
|
||||||
|
ARGV_VERSION=""
|
||||||
|
ARGV_COPYRIGHT=""
|
||||||
|
ARGV_COMPANY_NAME=""
|
||||||
|
ARGV_ICON=""
|
||||||
|
ARGV_DOWNLOAD_DIRECTORY=""
|
||||||
|
|
||||||
|
while getopts ":f:n:d:v:c:m:i:w:" option; do
|
||||||
|
case $option in
|
||||||
|
f) ARGV_FILE="$OPTARG" ;;
|
||||||
|
n) ARGV_APPLICATION_NAME="$OPTARG" ;;
|
||||||
|
d) ARGV_APPLICATION_DESCRIPTION="$OPTARG" ;;
|
||||||
|
v) ARGV_VERSION="$OPTARG" ;;
|
||||||
|
c) ARGV_COPYRIGHT="$OPTARG" ;;
|
||||||
|
m) ARGV_COMPANY_NAME="$OPTARG" ;;
|
||||||
|
i) ARGV_ICON="$OPTARG" ;;
|
||||||
|
w) ARGV_DOWNLOAD_DIRECTORY="$OPTARG" ;;
|
||||||
|
*) usage ;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ -z "$ARGV_FILE" ] \
|
||||||
|
|| [ -z "$ARGV_APPLICATION_NAME" ] \
|
||||||
|
|| [ -z "$ARGV_APPLICATION_DESCRIPTION" ] \
|
||||||
|
|| [ -z "$ARGV_VERSION" ] \
|
||||||
|
|| [ -z "$ARGV_COPYRIGHT" ] \
|
||||||
|
|| [ -z "$ARGV_COMPANY_NAME" ] \
|
||||||
|
|| [ -z "$ARGV_ICON" ] \
|
||||||
|
|| [ -z "$ARGV_DOWNLOAD_DIRECTORY" ]
|
||||||
|
then
|
||||||
|
usage
|
||||||
|
fi
|
||||||
|
|
||||||
|
RCEDIT_VERSION=v0.7.0
|
||||||
|
RCEDIT="$ARGV_DOWNLOAD_DIRECTORY/rcedit.exe"
|
||||||
|
|
||||||
|
./scripts/build/download-tool.sh -x \
|
||||||
|
-u "https://github.com/electron/node-rcedit/raw/$RCEDIT_VERSION/bin/rcedit.exe" \
|
||||||
|
-c "42649d92e1bbb3af1186fb0ad063df9fcdc18e7b5f2ea82191ecc8fdfaffb0d8" \
|
||||||
|
-o "$RCEDIT"
|
||||||
|
|
||||||
|
"$RCEDIT" "$ARGV_FILE" \
|
||||||
|
--set-version-string "FileDescription" "$ARGV_APPLICATION_NAME" \
|
||||||
|
--set-version-string "InternalName" "$ARGV_APPLICATION_NAME" \
|
||||||
|
--set-version-string "OriginalFilename" "$(basename "$ARGV_FILE")" \
|
||||||
|
--set-version-string "ProductName" "$ARGV_APPLICATION_NAME - $ARGV_APPLICATION_DESCRIPTION" \
|
||||||
|
--set-version-string "CompanyName" "$ARGV_COMPANY_NAME" \
|
||||||
|
--set-version-string "LegalCopyright" "$ARGV_COPYRIGHT" \
|
||||||
|
--set-file-version "$ARGV_VERSION" \
|
||||||
|
--set-product-version "$ARGV_VERSION" \
|
||||||
|
--set-icon "$ARGV_ICON"
|
90
scripts/build/electron-brand-exe.sh
Executable file
90
scripts/build/electron-brand-exe.sh
Executable file
@ -0,0 +1,90 @@
|
|||||||
|
#!/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 " -f <file (.exe)>"
|
||||||
|
echo " -n <application name>"
|
||||||
|
echo " -d <application description>"
|
||||||
|
echo " -v <application version>"
|
||||||
|
echo " -c <application copyright>"
|
||||||
|
echo " -m <company name>"
|
||||||
|
echo " -i <application icon (.ico)>"
|
||||||
|
echo " -w <download directory>"
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
ARGV_FILE=""
|
||||||
|
ARGV_APPLICATION_NAME=""
|
||||||
|
ARGV_APPLICATION_DESCRIPTION=""
|
||||||
|
ARGV_VERSION=""
|
||||||
|
ARGV_COPYRIGHT=""
|
||||||
|
ARGV_COMPANY_NAME=""
|
||||||
|
ARGV_ICON=""
|
||||||
|
ARGV_DOWNLOAD_DIRECTORY=""
|
||||||
|
|
||||||
|
while getopts ":f:n:d:v:c:m:i:w:" option; do
|
||||||
|
case $option in
|
||||||
|
f) ARGV_FILE="$OPTARG" ;;
|
||||||
|
n) ARGV_APPLICATION_NAME="$OPTARG" ;;
|
||||||
|
d) ARGV_APPLICATION_DESCRIPTION="$OPTARG" ;;
|
||||||
|
v) ARGV_VERSION="$OPTARG" ;;
|
||||||
|
c) ARGV_COPYRIGHT="$OPTARG" ;;
|
||||||
|
m) ARGV_COMPANY_NAME="$OPTARG" ;;
|
||||||
|
i) ARGV_ICON="$OPTARG" ;;
|
||||||
|
w) ARGV_DOWNLOAD_DIRECTORY="$OPTARG" ;;
|
||||||
|
*) usage ;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ -z "$ARGV_FILE" ] \
|
||||||
|
|| [ -z "$ARGV_APPLICATION_NAME" ] \
|
||||||
|
|| [ -z "$ARGV_APPLICATION_DESCRIPTION" ] \
|
||||||
|
|| [ -z "$ARGV_VERSION" ] \
|
||||||
|
|| [ -z "$ARGV_COPYRIGHT" ] \
|
||||||
|
|| [ -z "$ARGV_COMPANY_NAME" ] \
|
||||||
|
|| [ -z "$ARGV_ICON" ] \
|
||||||
|
|| [ -z "$ARGV_DOWNLOAD_DIRECTORY" ]
|
||||||
|
then
|
||||||
|
usage
|
||||||
|
fi
|
||||||
|
|
||||||
|
RCEDIT_VERSION=v0.7.0
|
||||||
|
RCEDIT="$ARGV_DOWNLOAD_DIRECTORY/rcedit.exe"
|
||||||
|
|
||||||
|
./scripts/build/download-tool.sh -x \
|
||||||
|
-u "https://github.com/electron/node-rcedit/raw/$RCEDIT_VERSION/bin/rcedit.exe" \
|
||||||
|
-c "42649d92e1bbb3af1186fb0ad063df9fcdc18e7b5f2ea82191ecc8fdfaffb0d8" \
|
||||||
|
-o "$RCEDIT"
|
||||||
|
|
||||||
|
"$RCEDIT" "$ARGV_FILE" \
|
||||||
|
--set-version-string "FileDescription" "$ARGV_APPLICATION_NAME" \
|
||||||
|
--set-version-string "InternalName" "$ARGV_APPLICATION_NAME" \
|
||||||
|
--set-version-string "OriginalFilename" "$(basename "$ARGV_FILE")" \
|
||||||
|
--set-version-string "ProductName" "$ARGV_APPLICATION_NAME - $ARGV_APPLICATION_DESCRIPTION" \
|
||||||
|
--set-version-string "CompanyName" "$ARGV_COMPANY_NAME" \
|
||||||
|
--set-version-string "LegalCopyright" "$ARGV_COPYRIGHT" \
|
||||||
|
--set-file-version "$ARGV_VERSION" \
|
||||||
|
--set-product-version "$ARGV_VERSION" \
|
||||||
|
--set-icon "$ARGV_ICON"
|
@ -97,24 +97,15 @@ cp "$ARGV_LICENSE" "$ARGV_OUTPUT/LICENSE"
|
|||||||
echo "$ARGV_VERSION" > "$ARGV_OUTPUT/version"
|
echo "$ARGV_VERSION" > "$ARGV_OUTPUT/version"
|
||||||
rm -f "$ARGV_OUTPUT/resources/default_app.asar"
|
rm -f "$ARGV_OUTPUT/resources/default_app.asar"
|
||||||
|
|
||||||
RCEDIT_VERSION=v0.7.0
|
./scripts/build/electron-brand-exe.sh \
|
||||||
RCEDIT="$ARGV_DOWNLOAD_DIRECTORY/rcedit.exe"
|
-f "$ARGV_OUTPUT/$ARGV_APPLICATION_NAME.exe" \
|
||||||
|
-n "$ARGV_APPLICATION_NAME" \
|
||||||
./scripts/build/download-tool.sh -x \
|
-d "$ARGV_APPLICATION_DESCRIPTION" \
|
||||||
-u "https://github.com/electron/node-rcedit/raw/$RCEDIT_VERSION/bin/rcedit.exe" \
|
-v "$ARGV_VERSION" \
|
||||||
-c "42649d92e1bbb3af1186fb0ad063df9fcdc18e7b5f2ea82191ecc8fdfaffb0d8" \
|
-c "$ARGV_COPYRIGHT" \
|
||||||
-o "$RCEDIT"
|
-m "$ARGV_COMPANY_NAME" \
|
||||||
|
-i "$ARGV_ICON" \
|
||||||
"$RCEDIT" "$ARGV_OUTPUT/$ARGV_APPLICATION_NAME.exe" \
|
-w "$ARGV_DOWNLOAD_DIRECTORY"
|
||||||
--set-version-string "FileDescription" "$ARGV_APPLICATION_NAME" \
|
|
||||||
--set-version-string "InternalName" "$ARGV_APPLICATION_NAME" \
|
|
||||||
--set-version-string "OriginalFilename" "$(basename "$ARGV_OUTPUT")" \
|
|
||||||
--set-version-string "ProductName" "$ARGV_APPLICATION_NAME - $ARGV_APPLICATION_DESCRIPTION" \
|
|
||||||
--set-version-string "CompanyName" "$ARGV_COMPANY_NAME" \
|
|
||||||
--set-version-string "LegalCopyright" "$ARGV_COPYRIGHT" \
|
|
||||||
--set-file-version "$ARGV_VERSION" \
|
|
||||||
--set-product-version "$ARGV_VERSION" \
|
|
||||||
--set-icon "$ARGV_ICON"
|
|
||||||
|
|
||||||
cp "$ARGV_ASAR" "$ARGV_OUTPUT/resources/app.asar"
|
cp "$ARGV_ASAR" "$ARGV_OUTPUT/resources/app.asar"
|
||||||
|
|
||||||
|
@ -55,7 +55,7 @@ fi
|
|||||||
|
|
||||||
function sign_file() {
|
function sign_file() {
|
||||||
local file=$1
|
local file=$1
|
||||||
codesign --sign "$ARGV_IDENTITY" -fv "$file"
|
./scripts/build/electron-sign-file-darwin.sh -f "$file" -i "$ARGV_IDENTITY"
|
||||||
}
|
}
|
||||||
|
|
||||||
# Avoid issues with `for` loops on file names containing spaces
|
# Avoid issues with `for` loops on file names containing spaces
|
||||||
@ -87,13 +87,11 @@ IFS=$SAVEIFS
|
|||||||
# its components have been signed
|
# its components have been signed
|
||||||
sign_file "$ARGV_APPLICATION"
|
sign_file "$ARGV_APPLICATION"
|
||||||
|
|
||||||
# Verify signature
|
# spctl manages the security assessment policy subsystem.
|
||||||
codesign \
|
# This subsystem maintains and evaluates rules that determine whether the system
|
||||||
--verify \
|
# allows the installation, execution, and other operations on files on the system.
|
||||||
--deep \
|
# We use this tool to simulate whether the OS would accept our code
|
||||||
--display \
|
# signature at the moment of installation / execution.
|
||||||
--verbose=4 "$ARGV_APPLICATION"
|
|
||||||
|
|
||||||
spctl \
|
spctl \
|
||||||
--ignore-cache \
|
--ignore-cache \
|
||||||
--no-cache \
|
--no-cache \
|
||||||
|
62
scripts/build/electron-sign-darwin.sh
Executable file
62
scripts/build/electron-sign-darwin.sh
Executable file
@ -0,0 +1,62 @@
|
|||||||
|
#!/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
|
||||||
|
|
||||||
|
OS=$(uname)
|
||||||
|
if [[ "$OS" != "Darwin" ]]; then
|
||||||
|
echo "This script is only meant to be run in OS X" 1>&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
./scripts/build/check-dependency.sh codesign
|
||||||
|
|
||||||
|
function usage() {
|
||||||
|
echo "Usage: $0"
|
||||||
|
echo ""
|
||||||
|
echo "Options"
|
||||||
|
echo ""
|
||||||
|
echo " -f <file>"
|
||||||
|
echo " -i <identity>"
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
ARGV_FILE=""
|
||||||
|
ARGV_IDENTITY=""
|
||||||
|
|
||||||
|
while getopts ":f:i:" option; do
|
||||||
|
case $option in
|
||||||
|
f) ARGV_FILE="$OPTARG" ;;
|
||||||
|
i) ARGV_IDENTITY="$OPTARG" ;;
|
||||||
|
*) usage ;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ -z "$ARGV_FILE" ] || [ -z "$ARGV_IDENTITY" ]; then
|
||||||
|
usage
|
||||||
|
fi
|
||||||
|
|
||||||
|
codesign --sign "$ARGV_IDENTITY" -fv "$ARGV_FILE"
|
||||||
|
|
||||||
|
# Verify signature
|
||||||
|
codesign \
|
||||||
|
--verify \
|
||||||
|
--deep \
|
||||||
|
--display \
|
||||||
|
--verbose=4 "$ARGV_FILE"
|
56
scripts/build/electron-sign-file-darwin.sh
Executable file
56
scripts/build/electron-sign-file-darwin.sh
Executable file
@ -0,0 +1,56 @@
|
|||||||
|
#!/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
|
||||||
|
|
||||||
|
OS=$(uname)
|
||||||
|
if [[ "$OS" != "Darwin" ]]; then
|
||||||
|
echo "This script is only meant to be run in OS X" 1>&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
./scripts/build/check-dependency.sh codesign
|
||||||
|
|
||||||
|
function usage() {
|
||||||
|
echo "Usage: $0"
|
||||||
|
echo ""
|
||||||
|
echo "Options"
|
||||||
|
echo ""
|
||||||
|
echo " -f <file>"
|
||||||
|
echo " -i <identity>"
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
ARGV_FILE=""
|
||||||
|
ARGV_IDENTITY=""
|
||||||
|
|
||||||
|
while getopts ":f:i:" option; do
|
||||||
|
case $option in
|
||||||
|
f) ARGV_FILE="$OPTARG" ;;
|
||||||
|
i) ARGV_IDENTITY="$OPTARG" ;;
|
||||||
|
*) usage ;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ -z "$ARGV_FILE" ] || [ -z "$ARGV_IDENTITY" ]; then
|
||||||
|
usage
|
||||||
|
fi
|
||||||
|
|
||||||
|
codesign --sign "$ARGV_IDENTITY" -fv "$ARGV_FILE"
|
||||||
|
codesign --verify --deep --display "$ARGV_FILE"
|
82
scripts/build/node-package-cli.sh
Executable file
82
scripts/build/node-package-cli.sh
Executable file
@ -0,0 +1,82 @@
|
|||||||
|
#!/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
|
||||||
|
|
||||||
|
mkdir "$ARGV_OUTPUT"
|
||||||
|
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"
|
72
scripts/build/node-static-entry-point-download.sh
Executable file
72
scripts/build/node-static-entry-point-download.sh
Executable file
@ -0,0 +1,72 @@
|
|||||||
|
#!/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 wget
|
||||||
|
|
||||||
|
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=$(wget --no-check-certificate -O - "$DOWNLOADS_BASEURL/SHASUMS256.txt" | grep "$FILENAME" | cut -d ' ' -f 1)
|
||||||
|
|
||||||
|
./scripts/build/download-tool.sh \
|
||||||
|
-u "$DOWNLOADS_BASEURL/$FILENAME" \
|
||||||
|
-c "$CHECKSUM" \
|
||||||
|
-o "$ARGV_OUTPUT"
|
@ -1,109 +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 browserify
|
|
||||||
./scripts/build/check-dependency.sh rsync
|
|
||||||
|
|
||||||
function usage() {
|
|
||||||
echo "Usage: $0"
|
|
||||||
echo ""
|
|
||||||
echo "Options"
|
|
||||||
echo ""
|
|
||||||
echo " -n <application name>"
|
|
||||||
echo " -e <application entry point (.js)>"
|
|
||||||
echo " -r <architecture>"
|
|
||||||
echo " -s <operating system (linux|darwin)>"
|
|
||||||
echo " -o <output directory>"
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
|
|
||||||
ARGV_APPLICATION_NAME=""
|
|
||||||
ARGV_ENTRY_POINT=""
|
|
||||||
ARGV_ARCHITECTURE=""
|
|
||||||
ARGV_OPERATING_SYSTEM=""
|
|
||||||
ARGV_OUTPUT=""
|
|
||||||
|
|
||||||
while getopts ":n:e:r:s:o:" option; do
|
|
||||||
case $option in
|
|
||||||
n) ARGV_APPLICATION_NAME="$OPTARG" ;;
|
|
||||||
e) ARGV_ENTRY_POINT="$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_ARCHITECTURE" ] \
|
|
||||||
|| [ -z "$ARGV_OPERATING_SYSTEM" ] \
|
|
||||||
|| [ -z "$ARGV_OUTPUT" ]; then
|
|
||||||
usage
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ ! -d "$PWD/node_modules" ]; then
|
|
||||||
echo "Looks like you forgot to install the dependencies first!" 1>&2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
NODE_STATIC_ENTRY_POINT_REPOSITORY=https://github.com/resin-io-modules/node-static-entry-point
|
|
||||||
NODE_STATIC_ENTRY_POINT_VERSION=v1.0.0 # NodeJS v6
|
|
||||||
NODE_STATIC_ENTRY_POINT_FILENAME="node-$ARGV_OPERATING_SYSTEM-$ARGV_ARCHITECTURE"
|
|
||||||
NODE_STATIC_ENTRY_POINT_URL="$NODE_STATIC_ENTRY_POINT_REPOSITORY/releases/download/$NODE_STATIC_ENTRY_POINT_VERSION/$NODE_STATIC_ENTRY_POINT_FILENAME"
|
|
||||||
|
|
||||||
if [ "$ARGV_OPERATING_SYSTEM" == "darwin" ]; then
|
|
||||||
NODE_STATIC_ENTRY_POINT_CHECKSUM=12509af741777a2c3688169272fbb01e66b5c0efae400a775770b71d7b62666c
|
|
||||||
elif [ "$ARGV_OPERATING_SYSTEM" == "linux" ]; then
|
|
||||||
if [ "$ARGV_ARCHITECTURE" == "x64" ]; then
|
|
||||||
NODE_STATIC_ENTRY_POINT_CHECKSUM=c1735694c1cef2bd26e4c8dcc7e67d5ad61b16b347f1b06588a52cf1aa4432fd
|
|
||||||
fi
|
|
||||||
if [ "$ARGV_ARCHITECTURE" == "x86" ]; then
|
|
||||||
NODE_STATIC_ENTRY_POINT_CHECKSUM=49eeacc086df04bb3370b7c25afcf36b6e45083889ca438747ece3dd96602b8d
|
|
||||||
fi
|
|
||||||
elif [ "$ARGV_OPERATING_SYSTEM" == "win32" ]; then
|
|
||||||
if [ "$ARGV_ARCHITECTURE" == "x64" ]; then
|
|
||||||
NODE_STATIC_ENTRY_POINT_CHECKSUM=60f167aa3389e86956c4ec3c44de7107b4dc9d634b26dbd5f08e14e85f32c2ea
|
|
||||||
fi
|
|
||||||
if [ "$ARGV_ARCHITECTURE" == "x86" ]; then
|
|
||||||
NODE_STATIC_ENTRY_POINT_CHECKSUM=19f07b2d89a727dc64dd4b4e74b7ee8f4464ddc908b63bd60506d471e2f9f602
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
echo "Unsupported operating system: $ARGV_OPERATING_SYSTEM" 1>&2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
browserify "$ARGV_ENTRY_POINT" --node --outfile "$ARGV_OUTPUT/index.js"
|
|
||||||
BINARY_LOCATION="$ARGV_OUTPUT/$ARGV_APPLICATION_NAME"
|
|
||||||
./scripts/build/download-tool.sh -x \
|
|
||||||
-u "$NODE_STATIC_ENTRY_POINT_URL" \
|
|
||||||
-c "$NODE_STATIC_ENTRY_POINT_CHECKSUM" \
|
|
||||||
-o "$BINARY_LOCATION"
|
|
||||||
|
|
||||||
rsync \
|
|
||||||
--archive \
|
|
||||||
--prune-empty-dirs \
|
|
||||||
--progress \
|
|
||||||
--include='*.node' \
|
|
||||||
--include='*/' \
|
|
||||||
--exclude='*' \
|
|
||||||
node_modules \
|
|
||||||
"$ARGV_OUTPUT/node_modules"
|
|
Loading…
x
Reference in New Issue
Block a user