Parad0x 7 роки тому
батько
коміт
215808bbec
7 змінених файлів з 626 додано та 85 видалено
  1. 2 0
      .gitignore
  2. 535 81
      package-lock.json
  3. 2 0
      package.json
  4. 77 0
      pkg.sh
  5. 2 1
      src/authCode.js
  6. 3 1
      src/db/sequelize.js
  7. 5 2
      src/index.js

+ 2 - 0
.gitignore

@@ -1,6 +1,8 @@
 dst
 *.sqlite
 authCode
+builds
+tmp
 # Created by https://www.gitignore.io/api/node
 
 ### Node ###

Різницю між файлами не показано, бо вона завелика
+ 535 - 81
package-lock.json


+ 2 - 0
package.json

@@ -3,6 +3,7 @@
   "version": "1.0.0",
   "description": "",
   "main": "dst/index.js",
+  "bin": "dst/index.js",
   "scripts": {
     "start": "node dst/index.js",
     "startDev": "nodemon src/index.js",
@@ -25,6 +26,7 @@
     "chalk": "^2.4.1",
     "dotenv": "^6.0.0",
     "moment": "^2.22.2",
+    "pkg": "^4.3.4",
     "randomatic": "^3.0.0",
     "sequelize": "^4.38.0",
     "sqlite3": "^4.0.2",

+ 77 - 0
pkg.sh

@@ -0,0 +1,77 @@
+SQLITEVERSION=$(npm show sqlite3 version)
+NAPI=$(node -e "console.log(process.versions.modules)")
+NVERSION=$(node -e "console.log(process.versions.node)" | cut -d. -f1)
+
+# Build app
+echo "Building app from flowtyped to strict javascript"
+npm run build
+
+# Remove old builds
+echo "Removing old builds"
+rm -r builds 2> /dev/null
+
+# Create folders for completed builds
+echo "Preparing folders"
+mkdir -p builds/linux
+mkdir builds/windows
+mkdir builds/macos
+
+# Build js files for 3 platforms
+echo "Building exectuables from javascript"
+./node_modules/.bin/pkg \
+  -t "node$NVERSION-linux-x64,node$NVERSION-windows-x64,node$NVERSION-mac-x64" \
+  --output builds/totify \
+  package.json
+
+# Move executables to separate folders
+echo "Moving executables to separate folder"
+mv builds/totify-linux builds/linux/totify
+mv builds/totify-macos builds/macos/totify
+mv builds/totify-win.exe builds/windows/totify
+
+# Download correct version of sqlite prebuild grep
+# rm -r tmp 2> /dev/null
+echo "Creating tmp folders for cached download"
+mkdir tmp 2> /dev/null
+cd tmp
+
+echo "Downloading missing sqlite's native dependencies"
+if [ ! -e $NAPI-win32.tar.gz ]; then
+echo "Downloading win32 sqlite"
+curl "https://mapbox-node-binary.s3.amazonaws.com/sqlite3/v$SQLITEVERSION/node-v$NAPI-win32-x64.tar.gz" -o $NAPI-win32.tar.gz > /dev/null
+fi
+
+if [ ! -e $NAPI-linux.tar.gz ]; then
+echo "Downloading linux sqlite"
+curl "https://mapbox-node-binary.s3.amazonaws.com/sqlite3/v$SQLITEVERSION/node-v$NAPI-linux-x64.tar.gz" -o $NAPI-linux.tar.gz > /dev/null
+fi
+
+if [ ! -e $NAPI-mac.tar.gz ]; then
+echo "Downloading mac sqlite"
+curl "https://mapbox-node-binary.s3.amazonaws.com/sqlite3/v$SQLITEVERSION/node-v$NAPI-darwin-x64.tar.gz" -o $NAPI-mac.tar.gz > /dev/null
+fi
+
+echo "Extracting deps to separate folders"
+for name in *.tar.gz
+do
+  OP=$(echo $name | cut -d. -f1)
+  tar -xOf $name > "$OP-node_sqlite3.node" 
+done;
+
+if [ -e $NAPI-mac-node_sqlite3.node ]; then
+mv $NAPI-mac-node_sqlite3.node ../builds/macos/node_sqlite3.node
+fi
+
+if [ -e $NAPI-win32-node_sqlite3.node ]; then
+mv $NAPI-win32-node_sqlite3.node ../builds/windows/node_sqlite3.node
+fi
+
+if [ -e $NAPI-linux-node_sqlite3.node ]; then
+mv $NAPI-linux-node_sqlite3.node ../builds/linux/node_sqlite3.node
+fi
+
+# pkg \
+#   -t latest-linux-x64,latest-windows-x64,latest-mac-x64 \
+#   --out-path builds \
+#   --c pkg.json \
+#   dst/index.js

+ 2 - 1
src/authCode.js

@@ -2,8 +2,9 @@
 
 const rand = require("randomatic");
 const fs = require("fs");
+const path = require("path");
 
-const fn = "authCode";
+const fn = path.join(process.cwd(), "authCode");
 class Auth {
 
   code: string;

+ 3 - 1
src/db/sequelize.js

@@ -1,10 +1,12 @@
 //@flow
 
 const Sequelize = require('sequelize');
+const path = require("path");
+const filename = path.join(process.cwd(), 'database.sqlite');
 const sequelize = new Sequelize({
   dialect: 'sqlite',
   operatorsAliases: false,
-  storage: 'database.sqlite',
+  storage: filename,
   logging: false
 });
 

+ 5 - 2
src/index.js

@@ -1,9 +1,12 @@
 //@flow
 
-require("dotenv").config();
+const path = require("path");
+
+require("dotenv").config({
+  path: path.join(process.cwd(), ".env")
+});
 
 const net = require("net");
-const path = require("path");
 const chalk = require("chalk");
 
 const socketPathCon = require("./utils/socketPath");

Деякі файли не було показано, через те що забагато файлів було змінено