Merge pull request #260 from samuelthomas2774/electron-4.0.0-beta.7
Node Sass and keytar bindings for Electron 4.0.0 beta.7
This commit is contained in:
commit
c2c520fe27
|
@ -255,11 +255,11 @@ export class BetterDiscord {
|
|||
* Basically BetterDiscord needs to load before discord_desktop_core.
|
||||
*/
|
||||
static patchBrowserWindow() {
|
||||
const electron = require('electron');
|
||||
const electron_path = require.resolve('electron');
|
||||
Object.assign(BrowserWindow, electron.BrowserWindow); // Assigns the new chrome-specific ones
|
||||
const newElectron = Object.assign({}, electron, {BrowserWindow});
|
||||
require.cache[electron_path].exports = newElectron;
|
||||
const electron = require('electron');
|
||||
const electron_path = require.resolve('electron');
|
||||
Object.assign(BrowserWindow, electron.BrowserWindow); // Assigns the new chrome-specific ones
|
||||
const newElectron = Object.assign({}, electron, {BrowserWindow});
|
||||
require.cache[electron_path].exports = newElectron;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -1,3 +1,6 @@
|
|||
### node-keytar bindings
|
||||
|
||||
Copy this directory to `node_modules/keytar/build/Release/keytar.node` to use.
|
||||
|
||||
keytar-4.3.0/linux-x64-64.node - poweredge-t30.fancy.org.uk
|
||||
All others - https://github.com/atom/node-keytar/releases
|
||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -2814,7 +2814,8 @@
|
|||
"deep-extend": {
|
||||
"version": "0.4.2",
|
||||
"resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz",
|
||||
"integrity": "sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8="
|
||||
"integrity": "sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8=",
|
||||
"dev": true
|
||||
},
|
||||
"deep-is": {
|
||||
"version": "0.1.3",
|
||||
|
@ -7655,12 +7656,12 @@
|
|||
"dev": true
|
||||
},
|
||||
"keytar": {
|
||||
"version": "4.2.1",
|
||||
"resolved": "https://registry.npmjs.org/keytar/-/keytar-4.2.1.tgz",
|
||||
"integrity": "sha1-igamV3/fY3PgqmsRInfmPex3/RI=",
|
||||
"version": "4.3.0",
|
||||
"resolved": "https://registry.npmjs.org/keytar/-/keytar-4.3.0.tgz",
|
||||
"integrity": "sha512-pd++/v+fS0LQKmzWlW6R1lziTXFqhfGeS6sYLfuTIqEy2pDzAbjutbSW8f9tnJdEEMn/9XhAQlT34VAtl9h4MQ==",
|
||||
"requires": {
|
||||
"nan": "2.8.0",
|
||||
"prebuild-install": "2.5.3"
|
||||
"prebuild-install": "5.2.1"
|
||||
}
|
||||
},
|
||||
"kind-of": {
|
||||
|
@ -8613,6 +8614,11 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"napi-build-utils": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.1.tgz",
|
||||
"integrity": "sha512-boQj1WFgQH3v4clhu3mTNfP+vOBxorDlE8EKiMjUlLG3C4qAESnn9AxIOkFgTR2c9LtzNjPrjS60cT27ZKBhaA=="
|
||||
},
|
||||
"natives": {
|
||||
"version": "1.1.4",
|
||||
"resolved": "https://registry.npmjs.org/natives/-/natives-1.1.4.tgz",
|
||||
|
@ -10445,27 +10451,33 @@
|
|||
}
|
||||
},
|
||||
"prebuild-install": {
|
||||
"version": "2.5.3",
|
||||
"resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-2.5.3.tgz",
|
||||
"integrity": "sha512-/rI36cN2g7vDQnKWN8Uzupi++KjyqS9iS+/fpwG4Ea8d0Pip0PQ5bshUNzVwt+/D2MRfhVAplYMMvWLqWrCF/g==",
|
||||
"version": "5.2.1",
|
||||
"resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-5.2.1.tgz",
|
||||
"integrity": "sha512-9DAccsInWHB48TBQi2eJkLPE049JuAI6FjIH0oIrij4bpDVEbX6JvlWRAcAAlUqBHhjgq0jNqA3m3bBXWm9v6w==",
|
||||
"requires": {
|
||||
"detect-libc": "1.0.3",
|
||||
"expand-template": "1.1.1",
|
||||
"github-from-package": "0.0.0",
|
||||
"minimist": "1.2.0",
|
||||
"mkdirp": "0.5.1",
|
||||
"napi-build-utils": "1.0.1",
|
||||
"node-abi": "2.4.3",
|
||||
"noop-logger": "0.1.1",
|
||||
"npmlog": "4.1.2",
|
||||
"os-homedir": "1.0.2",
|
||||
"pump": "2.0.1",
|
||||
"rc": "1.2.6",
|
||||
"rc": "1.2.8",
|
||||
"simple-get": "2.8.1",
|
||||
"tar-fs": "1.16.3",
|
||||
"tunnel-agent": "0.6.0",
|
||||
"which-pm-runs": "1.0.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"deep-extend": {
|
||||
"version": "0.6.0",
|
||||
"resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
|
||||
"integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA=="
|
||||
},
|
||||
"minimist": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
|
||||
|
@ -10479,6 +10491,17 @@
|
|||
"end-of-stream": "1.4.1",
|
||||
"once": "1.4.0"
|
||||
}
|
||||
},
|
||||
"rc": {
|
||||
"version": "1.2.8",
|
||||
"resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
|
||||
"integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
|
||||
"requires": {
|
||||
"deep-extend": "0.6.0",
|
||||
"ini": "1.3.5",
|
||||
"minimist": "1.2.0",
|
||||
"strip-json-comments": "2.0.1"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -10734,6 +10757,7 @@
|
|||
"version": "1.2.6",
|
||||
"resolved": "https://registry.npmjs.org/rc/-/rc-1.2.6.tgz",
|
||||
"integrity": "sha1-6xiYnG1PTxYsOZ953dKfODVWgJI=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"deep-extend": "0.4.2",
|
||||
"ini": "1.3.5",
|
||||
|
@ -10744,7 +10768,8 @@
|
|||
"minimist": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
|
||||
"integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ="
|
||||
"integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
},
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
"csp-parse": "github:macropodhq/csp-parse",
|
||||
"deepmerge": "^2.1.1",
|
||||
"fs-extra": "^7.0.0",
|
||||
"keytar": "4.2.1",
|
||||
"keytar": "4.3.0",
|
||||
"nedb": "^1.8.0",
|
||||
"node-sass": "^4.9.2",
|
||||
"asar": "^0.14.3"
|
||||
|
|
|
@ -0,0 +1,14 @@
|
|||
#!/bin/sh
|
||||
|
||||
PLATFORM="darwin"
|
||||
ARCH="x64"
|
||||
|
||||
NODE_API_VERSION="53"
|
||||
ELECTRON_VERSION="1.6.15"
|
||||
|
||||
scripts/build-keytar.sh $PLATFORM $ARCH $NODE_API_VERSION $ELECTRON_VERSION
|
||||
|
||||
NODE_API_VERSION="64"
|
||||
ELECTRON_VERSION="4.0.0-beta.7"
|
||||
|
||||
scripts/build-keytar.sh $PLATFORM $ARCH $NODE_API_VERSION $ELECTRON_VERSION
|
|
@ -0,0 +1,14 @@
|
|||
#!/bin/sh
|
||||
|
||||
PLATFORM="linux"
|
||||
ARCH="x64"
|
||||
|
||||
NODE_API_VERSION="53"
|
||||
ELECTRON_VERSION="1.6.15"
|
||||
|
||||
scripts/build-keytar.sh $PLATFORM $ARCH $NODE_API_VERSION $ELECTRON_VERSION
|
||||
|
||||
NODE_API_VERSION="64"
|
||||
ELECTRON_VERSION="4.0.0-beta.7"
|
||||
|
||||
scripts/build-keytar.sh $PLATFORM $ARCH $NODE_API_VERSION $ELECTRON_VERSION
|
|
@ -0,0 +1,41 @@
|
|||
#!/bin/sh
|
||||
|
||||
PLATFORM="$1"
|
||||
ARCH="$2"
|
||||
NODE_API_VERSION="$3"
|
||||
ELECTRON_VERSION="$4"
|
||||
ELECTRON_URL="https://atom.io/download/electron"
|
||||
|
||||
DIRECTORY="release-tmp/keytar.node/keytar-4.3.0"
|
||||
FILENAME="$PLATFORM-$ARCH-$NODE_API_VERSION.node"
|
||||
|
||||
if [ `node -p 'process.platform'` != "$PLATFORM" ]; then
|
||||
echo "You must be running on $PLATFORM to build keytar for it."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
cd node_modules/keytar
|
||||
|
||||
mv build/Release release-tmp
|
||||
|
||||
if [ -f release-tmp/keytar.node ]; then
|
||||
rm release-tmp/keytar.node
|
||||
fi
|
||||
|
||||
if [ -f $DIRECTORY/$FILENAME ]; then
|
||||
echo "A binding already exists at $DIRECTORY/$FILENAME - deleting it"
|
||||
rm $DIRECTORY/$FILENAME
|
||||
fi
|
||||
|
||||
# Build the keytar binding
|
||||
# This will be placed at build/Release/keytar.node
|
||||
echo "Building keytar for $PLATFORM-$ARCH with Node.js API version $NODE_API_VERSION for Electron $ELECTRON_VERSION"
|
||||
../.bin/node-gyp rebuild --target=$ELECTRON_VERSION --arch $ARCH --dist-url=$ELECTRON_URL
|
||||
|
||||
# Move it to the right place
|
||||
echo "Moving keytar.node to $DIRECTORY"
|
||||
mkdir -p $DIRECTORY
|
||||
mv build/Release/keytar.node $DIRECTORY/$FILENAME
|
||||
rm -rf build/Release
|
||||
|
||||
mv release-tmp build/Release
|
|
@ -2,7 +2,13 @@
|
|||
|
||||
PLATFORM="darwin"
|
||||
ARCH="x64"
|
||||
|
||||
NODE_API_VERSION="53"
|
||||
ELECTRON_VERSION="1.6.15"
|
||||
|
||||
scripts/build-node-sass.sh $PLATFORM $ARCH $NODE_API_VERSION $ELECTRON_VERSION
|
||||
|
||||
NODE_API_VERSION="64"
|
||||
ELECTRON_VERSION="4.0.0-beta.7"
|
||||
|
||||
scripts/build-node-sass.sh $PLATFORM $ARCH $NODE_API_VERSION $ELECTRON_VERSION
|
||||
|
|
|
@ -2,7 +2,13 @@
|
|||
|
||||
PLATFORM="linux"
|
||||
ARCH="x64"
|
||||
|
||||
NODE_API_VERSION="53"
|
||||
ELECTRON_VERSION="1.6.15"
|
||||
|
||||
scripts/build-node-sass.sh $PLATFORM $ARCH $NODE_API_VERSION $ELECTRON_VERSION
|
||||
|
||||
NODE_API_VERSION="64"
|
||||
ELECTRON_VERSION="4.0.0-beta.7"
|
||||
|
||||
scripts/build-node-sass.sh $PLATFORM $ARCH $NODE_API_VERSION $ELECTRON_VERSION
|
||||
|
|
|
@ -0,0 +1,13 @@
|
|||
set "PLATFORM=win32"
|
||||
|
||||
set "NODE_API_VERSION=53"
|
||||
set "ELECTRON_VERSION=1.6.15"
|
||||
|
||||
call ./scripts/build-node-sass.bat %PLATFORM% ia32 %NODE_API_VERSION% %ELECTRON_VERSION%
|
||||
call ./scripts/build-node-sass.bat %PLATFORM% x64 %NODE_API_VERSION% %ELECTRON_VERSION%
|
||||
|
||||
set "NODE_API_VERSION=64"
|
||||
set "ELECTRON_VERSION=4.0.0-beta.7"
|
||||
|
||||
call ./scripts/build-node-sass.bat %PLATFORM% ia32 %NODE_API_VERSION% %ELECTRON_VERSION%
|
||||
call ./scripts/build-node-sass.bat %PLATFORM% x64 %NODE_API_VERSION% %ELECTRON_VERSION%
|
|
@ -1,9 +1,9 @@
|
|||
@echo off
|
||||
|
||||
set "ELECTRON=1.6.15"
|
||||
set "PLATFORM=win32"
|
||||
set "ARCH=ia32"
|
||||
set "VER=53"
|
||||
set "ELECTRON=%4"
|
||||
set "PLATFORM=%1"
|
||||
set "ARCH=%2"
|
||||
set "VER=%3"
|
||||
set "VENDOR_PATH=.\node_modules\node-sass\vendor"
|
||||
set "BUILD_PATH=.\node_modules\node-sass\build\Release\binding.node"
|
||||
|
||||
|
@ -26,25 +26,3 @@ if not exist %BUILD_PATH% (
|
|||
echo Copying %BUILD_PATH% to %VENDOR_PATH%\%PLATFORM%-%ARCH%-%VER%
|
||||
copy %BUILD_PATH% %VENDOR_PATH%\%PLATFORM%-%ARCH%-%VER%
|
||||
)
|
||||
|
||||
set "ARCH=x64"
|
||||
|
||||
echo Building %PLATFORM%-%ARCH% bindings
|
||||
call ./node_modules/.bin/electron-rebuild -v=%ELECTRON% -a=%ARCH% -m ./node_modules/node-sass
|
||||
|
||||
if exist %VENDOR_PATH%\%PLATFORM%-%ARCH%-%VER%\binding.node (
|
||||
echo Deleting old %VENDOR_PATH%\%PLATFORM%-%ARCH%-%VER%\binding.node
|
||||
del /S /Q %VENDOR_PATH%\%PLATFORM%-%ARCH%-%VER%\*
|
||||
)
|
||||
|
||||
if not exist %VENDOR_PATH%\%PLATFORM%-%ARCH%-%VER% (
|
||||
echo Dir %VENDOR_PATH%\%PLATFORM%-%ARCH%-%VER% does not exist, creating.
|
||||
mkdir %VENDOR_PATH%\%PLATFORM%-%ARCH%-%VER%
|
||||
)
|
||||
|
||||
if not exist %BUILD_PATH% (
|
||||
echo %BUILD_PATH% Does not exist
|
||||
) else (
|
||||
echo Copying %BUILD_PATH% to %VENDOR_PATH%\%PLATFORM%-%ARCH%-%VER%
|
||||
copy %BUILD_PATH% %VENDOR_PATH%\%PLATFORM%-%ARCH%-%VER%
|
||||
)
|
|
@ -9,7 +9,7 @@ switch (process.platform) {
|
|||
});
|
||||
break;
|
||||
case 'win32':
|
||||
child_process.execSync(`scripts/rebuild-node-sass.bat`, {
|
||||
child_process.execSync(`scripts/build-node-sass-win32.bat`, {
|
||||
stdio: 'inherit'
|
||||
});
|
||||
break;
|
||||
|
|
|
@ -2,27 +2,30 @@ const args = process.argv;
|
|||
const fs = require('fs');
|
||||
const path = require('path');
|
||||
|
||||
const releaseInput = args[2] ? args[2].toLowerCase() : '';
|
||||
const release = releaseInput == 'canary' ? 'DiscordCanary' : releaseInput == 'ptb' ? 'DiscordPTB' : 'Discord';
|
||||
const useBdRelease = args[2] && args[2].toLowerCase() === 'release';
|
||||
const releaseInput = useBdRelease ? args[3] && args[3].toLowerCase() : args[2] && args[2].toLowerCase();
|
||||
const release = releaseInput === 'canary' ? 'Discord Canary' : releaseInput === 'ptb' ? 'Discord PTB' : 'Discord';
|
||||
console.log(`Injecting into version ${release}`);
|
||||
|
||||
const discordPath = (function() {
|
||||
if (process.platform === 'win32') {
|
||||
const basedir = path.join(process.env.LOCALAPPDATA, release);
|
||||
const basedir = path.join(process.env.LOCALAPPDATA, release.replace(/ /g, ''));
|
||||
if (!fs.existsSync(basedir)) throw new Error(`Cannot find directory for ${release}`);
|
||||
const version = fs.readdirSync(basedir).filter(f => fs.lstatSync(path.join(basedir, f)).isDirectory() && f.split('.').length > 1).sort().reverse()[0];
|
||||
const dir = path.join(basedir, version, 'resources');
|
||||
if (!version || !fs.existsSync(dir)) throw new Error(`Cannot find directory for ${release}`);
|
||||
return dir;
|
||||
return path.join(basedir, version, 'resources');
|
||||
} else if (process.platform === 'darwin') {
|
||||
const appPath = releaseInput === 'canary' ? path.join('/Applications', 'Discord Canary.app')
|
||||
: releaseInput === 'ptb' ? path.join('/Applications', 'Discord PTB.app')
|
||||
: useBdRelease && args[3] ? args[3] ? args[2] : args[2]
|
||||
: path.join('/Applications', 'Discord.app');
|
||||
|
||||
return path.join(appPath, 'Contents', 'Resources');
|
||||
} else if (process.platform === 'linux') {
|
||||
return path.join('/usr', 'share', release.toLowerCase().replace(/ /g, '-'), 'resources');
|
||||
}
|
||||
else if (process.platform == 'darwin') {
|
||||
const dir = path.join('Applications', `${release}.app`, 'Contents', 'Resources');
|
||||
if (!fs.existsSync(dir)) throw new Error(`Cannot find directory for ${release}`);
|
||||
return dir;
|
||||
}
|
||||
const dir = path.join('usr', 'share', release.toLowerCase(), 'resources');
|
||||
if (!fs.existsSync(dir)) throw new Error(`Cannot find directory for ${release}`);
|
||||
return dir;
|
||||
})();
|
||||
|
||||
if (!fs.existsSync(discordPath)) throw new Error(`Cannot find directory for ${release}`);
|
||||
console.log(`Found ${release} in ${discordPath}`);
|
||||
|
||||
const appPath = path.join(discordPath, 'app');
|
||||
|
@ -33,13 +36,14 @@ if (!fs.existsSync(appPath)) fs.mkdirSync(appPath);
|
|||
if (fs.existsSync(packageJson)) fs.unlinkSync(packageJson);
|
||||
if (fs.existsSync(indexJs)) fs.unlinkSync(indexJs);
|
||||
|
||||
const bdPath = useBdRelease ? path.resolve(__dirname, '..', 'release') : path.resolve(__dirname, '..');
|
||||
|
||||
console.log(`Writing package.json`);
|
||||
fs.writeFileSync(packageJson, JSON.stringify({
|
||||
name: 'betterdiscord',
|
||||
description: 'BetterDiscord',
|
||||
main: 'index.js',
|
||||
private: true,
|
||||
dependencies: {}
|
||||
private: true
|
||||
}, null, 4));
|
||||
|
||||
console.log(`Writing index.js`);
|
||||
|
@ -48,9 +52,9 @@ const fs = require('fs');
|
|||
const Module = require('module');
|
||||
const electron = require('electron');
|
||||
const basePath = path.join(__dirname, '..', 'app.asar');
|
||||
const pkg = require(path.join(basePath, 'package.json'));
|
||||
electron.app.getAppPath = () => basePath;
|
||||
Module._load(path.join(basePath, pkg.main), null, true);
|
||||
electron.app.on('ready', () => {new (require('${path.join(__dirname, '..', 'core').replace(/\\/g, '/')}').BetterDiscord)();});`);
|
||||
Module._load(basePath, null, true);
|
||||
electron.app.on('ready', () => new (require('${bdPath.replace(/\\/g, '\\\\').replace(/'/g, '\\\'')}').BetterDiscord)());
|
||||
`);
|
||||
|
||||
console.log(`Injection successful, please restart ${release}.`);
|
||||
console.log(`Injection successful, please restart ${release}.`);
|
||||
|
|
Loading…
Reference in New Issue