mirror of
https://github.com/balena-io/balena-cli.git
synced 2024-12-18 21:27:51 +00:00
Stop bundling NodeJS in the package
This commit is contained in:
parent
dac2e0a302
commit
a1e6c6cda5
48
Makefile
48
Makefile
@ -1,48 +0,0 @@
|
||||
distribute-win32: release/build/distrib/resin-cli-win32.zip
|
||||
distribute-darwin: release/build/distrib/resin-cli-darwin.tar.gz
|
||||
distribute-linux: release/build/distrib/resin-cli-linux.tar.gz
|
||||
|
||||
installer-win32: release/build/distrib/resin-cli-setup.exe
|
||||
installer-osx: release/build/distrib/resin-cli-setup.pkg
|
||||
|
||||
VERSION=0.0.1
|
||||
|
||||
release/build/resin-cli-%:
|
||||
mkdir -p $@
|
||||
cp -rf bin build package.json $@ && rm -rf $@/bin/node
|
||||
cd $@ && RESIN_BUNDLE=$(subst resin-cli-,,`basename $@`) npm install --production --force
|
||||
flatten-packages $@
|
||||
|
||||
release/build/distrib/resin-cli-win32.zip: release/build/resin-cli-win32
|
||||
mkdir -p `dirname $@`
|
||||
cd $< && zip -r ../../../$@ .
|
||||
|
||||
release/build/distrib/resin-cli-darwin.tar.gz: release/build/resin-cli-darwin
|
||||
mkdir -p `dirname $@`
|
||||
tar fcz $@ -C `dirname $<` `basename $<`
|
||||
|
||||
release/build/distrib/resin-cli-linux.tar.gz: release/build/resin-cli-linux
|
||||
mkdir -p `dirname $@`
|
||||
tar fcz $@ -C `dirname $<` `basename $<`
|
||||
|
||||
release/build/distrib/resin-cli-setup.exe: release/installers/win32/resin-cli.nsi release/build/distrib/resin-cli-win32.zip
|
||||
makensis $<
|
||||
|
||||
release/build/cli.pkg: release/build/resin-cli-darwin
|
||||
pkgbuild --root $< \
|
||||
--identifier io.resin.cli \
|
||||
--scripts release/installers/osx/scripts \
|
||||
--version $(VERSION) \
|
||||
--ownership recommended \
|
||||
$@
|
||||
|
||||
release/build/distrib/resin-cli-setup.pkg: release/build/cli.pkg release/installers/osx/distribution.xml
|
||||
mkdir -p `dirname $@`
|
||||
productbuild --distribution $(word 2, $^) \
|
||||
--resources release/installers/osx/resources \
|
||||
--package-path `dirname $<` \
|
||||
--version $(VERSION) \
|
||||
$@
|
||||
|
||||
clean:
|
||||
rm -rf release/build
|
10
README.md
10
README.md
@ -40,16 +40,6 @@ If you set `DEBUG` environment variable, errors will print with a stack trace:
|
||||
$ DEBUG=true resin ...
|
||||
```
|
||||
|
||||
## Release
|
||||
|
||||
The following command will compile the application into a single executable for the current platform (supports Mac OS X, GNU/Linux and Windows > XP):
|
||||
|
||||
```sh
|
||||
$ gulp release
|
||||
```
|
||||
|
||||
The binary will be located at `build/Release`.
|
||||
|
||||
## Documentation
|
||||
|
||||
You can renegerate the documentation with:
|
||||
|
66
bin/resin
66
bin/resin
@ -1,64 +1,2 @@
|
||||
#!/bin/bash
|
||||
|
||||
function unsupported_platform() {
|
||||
echo "Your platform (`uname -a`) is not supported." && exit 1
|
||||
}
|
||||
|
||||
# Detect CPU arch.
|
||||
ARCHITECTURE=`uname -m`
|
||||
case "$ARCHITECTURE" in
|
||||
i?86) ARCHITECTURE="x86" ;;
|
||||
x86_64) ARCHITECTURE="x64" ;;
|
||||
esac
|
||||
|
||||
# Detect current OS, see http://stackoverflow.com/q/3466166/682252.
|
||||
|
||||
# Darwin
|
||||
if [ "`uname`" == "Darwin" ]; then
|
||||
NODE_BIN="node-darwin-$ARCHITECTURE"
|
||||
|
||||
# Linux
|
||||
elif [ "`expr substr $(uname -s) 1 5`" == "Linux" ]; then
|
||||
NODE_BIN="node-linux-$ARCHITECTURE"
|
||||
|
||||
# Win32
|
||||
elif [ "`expr substr $(uname -s) 1 10`" == "MINGW32_NT" ]; then
|
||||
NODE_BIN="node-win32-$ARCHITECTURE.exe"
|
||||
|
||||
# SunOS
|
||||
elif [ "`uname`" == "SunOS" ]; then
|
||||
NODE_BIN="node-sunos-$ARCHITECTURE"
|
||||
|
||||
else
|
||||
unsupported_platform
|
||||
fi
|
||||
|
||||
BIN_RESIN=$0
|
||||
|
||||
while [ -L "$BIN_RESIN" ]; do
|
||||
BIN_RESIN=`readlink "$BIN_RESIN"`
|
||||
done
|
||||
|
||||
# If a link was resolved (ie BIN_RESIN != $0) and the resolved link is relative,
|
||||
# we assume the link is relative to the dirname of the link location
|
||||
if [[ "$BIN_RESIN" != "$0" ]] && [[ "$BIN_RESIN" != /* ]]; then
|
||||
BIN_RESIN=`dirname $0`/$BIN_RESIN
|
||||
fi
|
||||
|
||||
BIN_DIRECTORY=`dirname $BIN_RESIN`
|
||||
|
||||
NODE_PATH=$BIN_DIRECTORY/node/$NODE_BIN
|
||||
|
||||
if [ ! -x $NODE_PATH ]; then
|
||||
|
||||
echo "Warning: $NODE_PATH does not exist"
|
||||
|
||||
# As a last resource, try to use an already available node
|
||||
if command -v node >/dev/null 2>&1; then
|
||||
NODE_PATH="node"
|
||||
else
|
||||
unsupported_platform
|
||||
fi
|
||||
fi
|
||||
|
||||
$NODE_PATH "$BIN_DIRECTORY/../build/app.js" "$@"
|
||||
#!/usr/bin/env node
|
||||
require('../build/app');
|
||||
|
@ -1,12 +0,0 @@
|
||||
@echo off
|
||||
|
||||
:: http://stackoverflow.com/questions/12322308/batch-file-to-check-64bit-or-32bit-os
|
||||
reg Query "HKLM\Hardware\Description\System\CentralProcessor\0" | find /i "x86" > NUL && set ARCH=x86 || set ARCH=x64
|
||||
|
||||
set NODE_PATH="%~dp0\node\node-win32-%ARCH%.exe"
|
||||
|
||||
@IF NOT EXIST %NODE_PATH% (
|
||||
set NODE_PATH="node.exe"
|
||||
)
|
||||
|
||||
%NODE_PATH% "%~dp0\..\build\app.js" %*
|
@ -1,128 +0,0 @@
|
||||
(function() {
|
||||
var DESTINATION, NODE_VERSION, RESIN_BUNDLE, async, binary, bundle, bundles, fs, getNodeName, i, len, nodeDownload, path;
|
||||
|
||||
async = require('async');
|
||||
|
||||
binary = require('node-binary');
|
||||
|
||||
fs = require('fs');
|
||||
|
||||
path = require('path');
|
||||
|
||||
DESTINATION = process.argv[2];
|
||||
|
||||
if (DESTINATION == null) {
|
||||
console.error('Missing destination argument');
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
NODE_VERSION = require('../package.json').bundled_engine;
|
||||
|
||||
RESIN_BUNDLE = process.env.RESIN_BUNDLE;
|
||||
|
||||
if ((RESIN_BUNDLE == null) || RESIN_BUNDLE === 'current') {
|
||||
bundles = [
|
||||
{
|
||||
os: process.platform,
|
||||
arch: process.arch,
|
||||
version: NODE_VERSION
|
||||
}
|
||||
];
|
||||
} else if (RESIN_BUNDLE === 'darwin') {
|
||||
bundles = [
|
||||
{
|
||||
os: 'darwin',
|
||||
arch: 'x86',
|
||||
version: NODE_VERSION
|
||||
}, {
|
||||
os: 'darwin',
|
||||
arch: 'x64',
|
||||
version: NODE_VERSION
|
||||
}
|
||||
];
|
||||
} else if (RESIN_BUNDLE === 'linux') {
|
||||
bundles = [
|
||||
{
|
||||
os: 'linux',
|
||||
arch: 'x86',
|
||||
version: NODE_VERSION
|
||||
}, {
|
||||
os: 'linux',
|
||||
arch: 'x64',
|
||||
version: NODE_VERSION
|
||||
}
|
||||
];
|
||||
} else if (RESIN_BUNDLE === 'win32') {
|
||||
bundles = [
|
||||
{
|
||||
os: 'win32',
|
||||
arch: 'x86',
|
||||
version: NODE_VERSION
|
||||
}, {
|
||||
os: 'win32',
|
||||
arch: 'x64',
|
||||
version: NODE_VERSION
|
||||
}
|
||||
];
|
||||
} else {
|
||||
console.error("Unknown RESIN_BUNDLE value: " + RESIN_BUNDLE);
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
getNodeName = function(options) {
|
||||
var result;
|
||||
result = "node-" + options.os + "-" + options.arch;
|
||||
if (options.os === 'win32') {
|
||||
result += '.exe';
|
||||
}
|
||||
return result;
|
||||
};
|
||||
|
||||
console.info('Installing the following NodeJS bundles:');
|
||||
|
||||
for (i = 0, len = bundles.length; i < len; i++) {
|
||||
bundle = bundles[i];
|
||||
console.info("- " + (getNodeName(bundle)));
|
||||
}
|
||||
|
||||
nodeDownload = function(destination, options, callback) {
|
||||
var error;
|
||||
try {
|
||||
return binary.download(options, destination, function(error, binaryPath) {
|
||||
var output;
|
||||
if (error != null) {
|
||||
return callback(error);
|
||||
}
|
||||
output = path.join(destination, getNodeName(options));
|
||||
return fs.rename(binaryPath, output, function(error) {
|
||||
if (error != null) {
|
||||
return callback(error);
|
||||
}
|
||||
return callback(null, output);
|
||||
});
|
||||
});
|
||||
} catch (_error) {
|
||||
error = _error;
|
||||
return callback(error);
|
||||
}
|
||||
};
|
||||
|
||||
async.eachLimit(bundles, 2, function(bundle, callback) {
|
||||
console.info("Downloading: " + (getNodeName(bundle)) + " to " + DESTINATION);
|
||||
return nodeDownload(DESTINATION, bundle, function(error, output) {
|
||||
if (error != null) {
|
||||
return callback(error);
|
||||
}
|
||||
console.info("Downloaded: " + (getNodeName(bundle)) + " to " + output);
|
||||
return callback();
|
||||
});
|
||||
}, function(error) {
|
||||
if (error != null) {
|
||||
console.error(error.message);
|
||||
return console.error('Error: Couldn\'t get the required node bundle. Omitting.');
|
||||
} else {
|
||||
return console.info('All NodeJS bundles downloaded');
|
||||
}
|
||||
});
|
||||
|
||||
}).call(this);
|
@ -1,80 +0,0 @@
|
||||
async = require('async')
|
||||
binary = require('node-binary')
|
||||
fs = require('fs')
|
||||
path = require('path')
|
||||
|
||||
DESTINATION = process.argv[2]
|
||||
|
||||
if not DESTINATION?
|
||||
console.error('Missing destination argument')
|
||||
process.exit(1)
|
||||
|
||||
NODE_VERSION = require('../package.json').bundled_engine
|
||||
RESIN_BUNDLE = process.env.RESIN_BUNDLE
|
||||
|
||||
# This will install only the correct node version for the current system,
|
||||
if not RESIN_BUNDLE? or RESIN_BUNDLE is 'current'
|
||||
|
||||
bundles = [
|
||||
os: process.platform
|
||||
arch: process.arch
|
||||
version: NODE_VERSION
|
||||
]
|
||||
|
||||
else if RESIN_BUNDLE is 'darwin'
|
||||
|
||||
bundles = [
|
||||
{ os: 'darwin', arch: 'x86', version: NODE_VERSION }
|
||||
{ os: 'darwin', arch: 'x64', version: NODE_VERSION }
|
||||
]
|
||||
|
||||
else if RESIN_BUNDLE is 'linux'
|
||||
|
||||
bundles = [
|
||||
{ os: 'linux', arch: 'x86', version: NODE_VERSION }
|
||||
{ os: 'linux', arch: 'x64', version: NODE_VERSION }
|
||||
]
|
||||
|
||||
else if RESIN_BUNDLE is 'win32'
|
||||
|
||||
bundles = [
|
||||
{ os: 'win32', arch: 'x86', version: NODE_VERSION }
|
||||
{ os: 'win32', arch: 'x64', version: NODE_VERSION }
|
||||
]
|
||||
|
||||
else
|
||||
console.error("Unknown RESIN_BUNDLE value: #{RESIN_BUNDLE}")
|
||||
process.exit(1)
|
||||
|
||||
getNodeName = (options) ->
|
||||
result = "node-#{options.os}-#{options.arch}"
|
||||
result += '.exe' if options.os is 'win32'
|
||||
return result
|
||||
|
||||
console.info 'Installing the following NodeJS bundles:'
|
||||
for bundle in bundles
|
||||
console.info "- #{getNodeName(bundle)}"
|
||||
|
||||
nodeDownload = (destination, options, callback) ->
|
||||
try
|
||||
binary.download options, destination, (error, binaryPath) ->
|
||||
return callback(error) if error?
|
||||
output = path.join(destination, getNodeName(options))
|
||||
fs.rename binaryPath, output, (error) ->
|
||||
return callback(error) if error?
|
||||
return callback(null, output)
|
||||
catch error
|
||||
return callback(error)
|
||||
|
||||
async.eachLimit bundles, 2, (bundle, callback) ->
|
||||
console.info("Downloading: #{getNodeName(bundle)} to #{DESTINATION}")
|
||||
return nodeDownload DESTINATION, bundle, (error, output) ->
|
||||
return callback(error) if error?
|
||||
console.info("Downloaded: #{getNodeName(bundle)} to #{output}")
|
||||
return callback()
|
||||
, (error) ->
|
||||
if error?
|
||||
console.error(error.message)
|
||||
console.error('Error: Couldn\'t get the required node bundle. Omitting.')
|
||||
else
|
||||
console.info('All NodeJS bundles downloaded')
|
@ -9,7 +9,6 @@
|
||||
"url": "git@github.com:resin-io/resin-cli.git"
|
||||
},
|
||||
"preferGlobal": true,
|
||||
"bundled_engine": "v0.12.0",
|
||||
"man": [
|
||||
"./man/resin.1",
|
||||
"./man/resin-completion.1",
|
||||
@ -21,7 +20,6 @@
|
||||
"scripts": {
|
||||
"prepublish": "gulp build",
|
||||
"test": "gulp test",
|
||||
"install": "node build/install-node.js bin/node",
|
||||
"doc": "./scripts/extract-documentation.sh doc lib/actions"
|
||||
},
|
||||
"keywords": [
|
||||
@ -59,7 +57,6 @@
|
||||
"lodash": "~2.4.1",
|
||||
"lodash-contrib": "~241.4.14",
|
||||
"mkdirp": "~0.5.0",
|
||||
"node-binary": "^1.1.0",
|
||||
"nplugm": "^2.1.0",
|
||||
"open": "0.0.5",
|
||||
"progress-stream": "^0.5.0",
|
||||
|
Loading…
Reference in New Issue
Block a user