mirror of
https://github.com/balena-io/etcher.git
synced 2025-04-24 07:17:18 +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)
|
||||
NODE_VERSION = 6.1.0
|
||||
COMPANY_NAME = $(shell jq -r '.companyName' package.json)
|
||||
APPLICATION_NAME = $(shell jq -r '.displayName' 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)
|
||||
mkdir $@
|
||||
|
||||
$(BUILD_DIRECTORY)/node-$(TARGET_PLATFORM)-$(TARGET_ARCH)-dependencies: | $(BUILD_DIRECTORY)
|
||||
mkdir $@
|
||||
|
||||
$(BUILD_OUTPUT_DIRECTORY): | $(BUILD_DIRECTORY)
|
||||
mkdir $@
|
||||
|
||||
@ -176,6 +180,15 @@ $(BUILD_DIRECTORY)/electron-$(TARGET_PLATFORM)-$(TARGET_ARCH)-dependencies/node_
|
||||
-t electron \
|
||||
-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
|
||||
./scripts/build/dependencies-bower.sh -p -x $|
|
||||
@ -202,6 +215,57 @@ $(BUILD_DIRECTORY)/electron-$(ELECTRON_VERSION)-$(TARGET_PLATFORM)-$(TARGET_ARCH
|
||||
-s "$(TARGET_PLATFORM)" \
|
||||
-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)/electron-$(TARGET_PLATFORM)-$(APPLICATION_VERSION)-$(TARGET_ARCH)-app.asar \
|
||||
$(BUILD_DIRECTORY)/electron-$(ELECTRON_VERSION)-$(TARGET_PLATFORM)-$(TARGET_ARCH).zip \
|
||||
@ -216,6 +280,7 @@ ifeq ($(TARGET_PLATFORM),darwin)
|
||||
-i assets/icon.icns \
|
||||
-o $@
|
||||
endif
|
||||
|
||||
ifeq ($(TARGET_PLATFORM),linux)
|
||||
./scripts/build/electron-configure-package-linux.sh -p $(word 2,$^) -a $< \
|
||||
-n "$(APPLICATION_NAME)" \
|
||||
@ -223,6 +288,7 @@ ifeq ($(TARGET_PLATFORM),linux)
|
||||
-l LICENSE \
|
||||
-o $@
|
||||
endif
|
||||
|
||||
ifeq ($(TARGET_PLATFORM),win32)
|
||||
./scripts/build/electron-configure-package-win32.sh -p $(word 2,$^) -a $< \
|
||||
-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_OUTPUT_DIRECTORY) $(BUILD_TEMPORARY_DIRECTORY)
|
||||
./scripts/build/electron-installer-nsis-win32.sh -n $(APPLICATION_NAME) -a $< -t $(BUILD_TEMPORARY_DIRECTORY) -o $@
|
||||
|
||||
ifdef CODE_SIGN_CERTIFICATE
|
||||
ifdef CODE_SIGN_CERTIFICATE_PASSWORD
|
||||
./scripts/build/electron-sign-exe-win32.sh -f $@ \
|
||||
@ -327,10 +394,13 @@ TARGETS = \
|
||||
sanity-checks \
|
||||
clean \
|
||||
distclean \
|
||||
package \
|
||||
package-electron \
|
||||
package-cli \
|
||||
cli-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)
|
||||
electron-installer-app-zip: $(BUILD_OUTPUT_DIRECTORY)/$(APPLICATION_NAME)-$(APPLICATION_VERSION)-$(TARGET_PLATFORM)-$(TARGET_ARCH).zip
|
||||
@ -401,7 +471,7 @@ endif
|
||||
|
||||
.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
|
||||
# that update a dependency and try to `npm install` directly, npm
|
||||
# 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
|
||||
# changing between target architectures, since compiled add-ons
|
||||
# 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
|
||||
./scripts/build/dependencies-npm.sh \
|
||||
-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"
|
||||
rm -f "$ARGV_OUTPUT/resources/default_app.asar"
|
||||
|
||||
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_OUTPUT/$ARGV_APPLICATION_NAME.exe" \
|
||||
--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"
|
||||
./scripts/build/electron-brand-exe.sh \
|
||||
-f "$ARGV_OUTPUT/$ARGV_APPLICATION_NAME.exe" \
|
||||
-n "$ARGV_APPLICATION_NAME" \
|
||||
-d "$ARGV_APPLICATION_DESCRIPTION" \
|
||||
-v "$ARGV_VERSION" \
|
||||
-c "$ARGV_COPYRIGHT" \
|
||||
-m "$ARGV_COMPANY_NAME" \
|
||||
-i "$ARGV_ICON" \
|
||||
-w "$ARGV_DOWNLOAD_DIRECTORY"
|
||||
|
||||
cp "$ARGV_ASAR" "$ARGV_OUTPUT/resources/app.asar"
|
||||
|
||||
|
@ -55,7 +55,7 @@ fi
|
||||
|
||||
function sign_file() {
|
||||
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
|
||||
@ -87,13 +87,11 @@ IFS=$SAVEIFS
|
||||
# its components have been signed
|
||||
sign_file "$ARGV_APPLICATION"
|
||||
|
||||
# Verify signature
|
||||
codesign \
|
||||
--verify \
|
||||
--deep \
|
||||
--display \
|
||||
--verbose=4 "$ARGV_APPLICATION"
|
||||
|
||||
# spctl manages the security assessment policy subsystem.
|
||||
# This subsystem maintains and evaluates rules that determine whether the system
|
||||
# allows the installation, execution, and other operations on files on the system.
|
||||
# We use this tool to simulate whether the OS would accept our code
|
||||
# signature at the moment of installation / execution.
|
||||
spctl \
|
||||
--ignore-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