Added some automatic scripts
This commit is contained in:
parent
e54647f598
commit
ad3421843c
@ -1,4 +1,4 @@
|
|||||||
import * as installer from "electron-installer-debian";
|
const installer = require("electron-installer-debian");
|
||||||
import * as packager from "./package";
|
import * as packager from "./package";
|
||||||
import {parse_version, Version} from "../modules/shared/version";
|
import {parse_version, Version} from "../modules/shared/version";
|
||||||
|
|
||||||
|
14
installer/tsconfig_linux.json
Normal file
14
installer/tsconfig_linux.json
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
{
|
||||||
|
"compilerOptions": {
|
||||||
|
"module": "commonjs",
|
||||||
|
"target": "es6",
|
||||||
|
"sourceMap": true,
|
||||||
|
"moduleResolution": "node"
|
||||||
|
},
|
||||||
|
"include": [
|
||||||
|
"./deploy/",
|
||||||
|
"build.ts",
|
||||||
|
"package.ts",
|
||||||
|
"package_linux.ts"
|
||||||
|
]
|
||||||
|
}
|
14
installer/tsconfig_windows.json
Normal file
14
installer/tsconfig_windows.json
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
{
|
||||||
|
"compilerOptions": {
|
||||||
|
"module": "commonjs",
|
||||||
|
"target": "es6",
|
||||||
|
"sourceMap": true,
|
||||||
|
"moduleResolution": "node"
|
||||||
|
},
|
||||||
|
"include": [
|
||||||
|
"./deploy/",
|
||||||
|
"build.ts",
|
||||||
|
"package.ts",
|
||||||
|
"package_linux.ts"
|
||||||
|
]
|
||||||
|
}
|
58
jenkins/create_build.sh
Executable file
58
jenkins/create_build.sh
Executable file
@ -0,0 +1,58 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
cd "../$(dirname $0)"
|
||||||
|
|
||||||
|
project_name="__build_teaclient"
|
||||||
|
source ../scripts/build_helper.sh
|
||||||
|
|
||||||
|
function install_npm() {
|
||||||
|
begin_task "${project_name}_update" "Installing NPM"
|
||||||
|
npm install
|
||||||
|
check_err_exit ${project_name} "Failed to install nodejs files!"
|
||||||
|
npm update
|
||||||
|
check_err_exit ${project_name} "Failed to update nodejs files!"
|
||||||
|
begin_task "${project_name}_update" "NPM installed"
|
||||||
|
}
|
||||||
|
|
||||||
|
function compile_scripts() {
|
||||||
|
begin_task "${project_name}_tsc_sass" "Compiling TypeScript & SASS"
|
||||||
|
npm run compile-tsc -- -p modules/tsconfig_main.json
|
||||||
|
npm run compile-tsc -- -p modules/tsconfig_renderer.json
|
||||||
|
npm run compile-tsc -- -p installer/tsconfig_linux.json
|
||||||
|
check_err_exit ${project_name} "Failed to compile typescript files!"
|
||||||
|
|
||||||
|
npm run compile-sass
|
||||||
|
check_err_exit ${project_name} "Failed to compile sass files!"
|
||||||
|
begin_task "${project_name}_tsc_sass" "TypeScript & SASS compiled"
|
||||||
|
echo ""
|
||||||
|
}
|
||||||
|
|
||||||
|
function compile_native() {
|
||||||
|
begin_task "${project_name}_native" "Compiling native extensions"
|
||||||
|
|
||||||
|
local build_path="native/out/${build_os_type}_${build_os_arch}/"
|
||||||
|
[[ -d ${build_path} ]] && rm -r ${build_path}
|
||||||
|
mkdir -p ${build_path}
|
||||||
|
check_err_exit ${project_name} "Failed to create build directory!"
|
||||||
|
|
||||||
|
cd ${build_path}
|
||||||
|
check_err_exit ${project_name} "Failed to enter build directory!"
|
||||||
|
|
||||||
|
cmake ../../ -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_MODULE_PATH="/home/wolverindev/TeaSpeak-Client/cmake/" -DCMAKE_PLATFORM_INCLUDE="/home/wolverindev/TeaSpeak-Client/cmake/config/tearoot-client.cmake" -DLIBRARY_PATH="/home/wolverindev/TeaSpeak-Client/third_party/"
|
||||||
|
check_err_exit ${project_name} "Failed create build targets!"
|
||||||
|
|
||||||
|
cmake --build `pwd` --target teaclient_connection -- -j 12
|
||||||
|
check_err_exit ${project_name} "Failed build teaclient connection!"
|
||||||
|
|
||||||
|
cmake --build `pwd` --target teaclient_crash_handler -- -j 12
|
||||||
|
check_err_exit ${project_name} "Failed build teaclient crash handler!"
|
||||||
|
|
||||||
|
cmake --build `pwd` --target teaclient_ppt -- -j 12
|
||||||
|
check_err_exit ${project_name} "Failed build teaclient ppt!"
|
||||||
|
|
||||||
|
begin_task "${project_name}_native" "Native extensions compiled"
|
||||||
|
}
|
||||||
|
|
||||||
|
install_npm
|
||||||
|
compile_scripts
|
||||||
|
compile_native
|
22
jenkins/deploy_build.sh
Executable file
22
jenkins/deploy_build.sh
Executable file
@ -0,0 +1,22 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
cd "../$(dirname $0)"
|
||||||
|
if [[ "${teaclient_deploy_secret}" == "" ]]; then
|
||||||
|
echo "Missing deploy secret!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ $# -lt 1 ]]; then
|
||||||
|
echo "Missing build channel!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
npm run build-linux-64
|
||||||
|
if [[ $? -ne 0 ]]; then
|
||||||
|
echo "Failed to build project"
|
||||||
|
fi
|
||||||
|
|
||||||
|
npm run package-linux-64 $1
|
||||||
|
if [[ $? -ne 0 ]]; then
|
||||||
|
echo "Failed to package project"
|
||||||
|
fi
|
@ -19,7 +19,7 @@ import {Headers} from "tar-stream";
|
|||||||
import {Arguments, process_args} from "../../shared/process-arguments";
|
import {Arguments, process_args} from "../../shared/process-arguments";
|
||||||
import * as electron from "electron";
|
import * as electron from "electron";
|
||||||
import {PassThrough} from "stream";
|
import {PassThrough} from "stream";
|
||||||
import {prevent_instant_close} from "../../core/main_window";
|
import * as _main_windows from "../main_window";
|
||||||
import ErrnoException = NodeJS.ErrnoException;
|
import ErrnoException = NodeJS.ErrnoException;
|
||||||
import {EPERM} from "constants";
|
import {EPERM} from "constants";
|
||||||
import * as winmgr from "../window";
|
import * as winmgr from "../window";
|
||||||
@ -484,7 +484,7 @@ export async function execute_update(update_file: string, restart_callback: (cal
|
|||||||
console.debug("Extracting entry %s of type %s to %s", header.name, header.type, target_file);
|
console.debug("Extracting entry %s of type %s to %s", header.name, header.type, target_file);
|
||||||
|
|
||||||
if(header.type == "directory") {
|
if(header.type == "directory") {
|
||||||
await util.promisify(ofs.mkdir)(target_file, {recursive: true});
|
await fs.mkdirp(target_file);
|
||||||
} else if(header.type == "file") {
|
} else if(header.type == "file") {
|
||||||
{
|
{
|
||||||
const directory = path.parse(target_file).dir;
|
const directory = path.parse(target_file).dir;
|
||||||
@ -492,7 +492,7 @@ export async function execute_update(update_file: string, restart_callback: (cal
|
|||||||
if(!(await util.promisify(ofs.exists)(directory)) || !(await util.promisify(ofs.stat)(directory)).isDirectory()) {
|
if(!(await util.promisify(ofs.exists)(directory)) || !(await util.promisify(ofs.stat)(directory)).isDirectory()) {
|
||||||
console.log("Creating directory %s", directory);
|
console.log("Creating directory %s", directory);
|
||||||
try {
|
try {
|
||||||
await util.promisify(ofs.mkdir)(directory, {recursive: true});
|
await fs.mkdirp(directory);
|
||||||
} catch(error) {
|
} catch(error) {
|
||||||
console.warn("failed to create directory for file %s", header.type);
|
console.warn("failed to create directory for file %s", header.type);
|
||||||
}
|
}
|
||||||
@ -801,7 +801,7 @@ export async function execute_graphical(channel: string, ask_install: boolean) :
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
await execute_update(update_path, callback => {
|
await execute_update(update_path, callback => {
|
||||||
prevent_instant_close = true;
|
_main_windows.set_prevent_instant_close(true);
|
||||||
update_restart_pending = true;
|
update_restart_pending = true;
|
||||||
window.close();
|
window.close();
|
||||||
callback();
|
callback();
|
||||||
|
@ -3,6 +3,10 @@ import * as electron from "electron";
|
|||||||
import * as winmgr from "./window";
|
import * as winmgr from "./window";
|
||||||
|
|
||||||
export let prevent_instant_close: boolean = true;
|
export let prevent_instant_close: boolean = true;
|
||||||
|
export function set_prevent_instant_close(flag: boolean) {
|
||||||
|
prevent_instant_close = flag;
|
||||||
|
}
|
||||||
|
|
||||||
export let is_debug: boolean;
|
export let is_debug: boolean;
|
||||||
export let allow_dev_tools: boolean;
|
export let allow_dev_tools: boolean;
|
||||||
|
|
||||||
|
@ -4,10 +4,17 @@ import * as fs from "fs-extra";
|
|||||||
|
|
||||||
import {BrowserWindow, ipcMain as ipc} from "electron";
|
import {BrowserWindow, ipcMain as ipc} from "electron";
|
||||||
import {Arguments, process_args} from "../../shared/process-arguments";
|
import {Arguments, process_args} from "../../shared/process-arguments";
|
||||||
import UserData = forum.UserData;
|
|
||||||
import {main_window} from "../main_window";
|
import {main_window} from "../main_window";
|
||||||
import * as winmgr from "../window";
|
import * as winmgr from "../window";
|
||||||
|
|
||||||
|
export interface UserData {
|
||||||
|
session_id: string;
|
||||||
|
username: string;
|
||||||
|
|
||||||
|
application_data: string;
|
||||||
|
application_data_sign: string;
|
||||||
|
}
|
||||||
|
|
||||||
let current_window: BrowserWindow;
|
let current_window: BrowserWindow;
|
||||||
let _current_data: UserData;
|
let _current_data: UserData;
|
||||||
|
|
||||||
|
@ -1,4 +1,6 @@
|
|||||||
window.$ = require("jquery");
|
import {UserData} from "../index";
|
||||||
|
|
||||||
|
(window as any).$ = require("jquery");
|
||||||
{
|
{
|
||||||
const request = require('request');
|
const request = require('request');
|
||||||
const util = require('util');
|
const util = require('util');
|
||||||
|
@ -259,7 +259,7 @@ export namespace _connection {
|
|||||||
data[0]["return_code"] = return_code;
|
data[0]["return_code"] = return_code;
|
||||||
|
|
||||||
console.log("Sending %s (%o)", command, data);
|
console.log("Sending %s (%o)", command, data);
|
||||||
const promise = new Promise((resolve, reject) => {
|
const promise = new Promise<CommandResult>((resolve, reject) => {
|
||||||
const timeout_id = setTimeout(() => {
|
const timeout_id = setTimeout(() => {
|
||||||
delete this._return_listener[return_code];
|
delete this._return_listener[return_code];
|
||||||
reject("timeout");
|
reject("timeout");
|
||||||
|
@ -76,7 +76,7 @@ namespace _dns {
|
|||||||
const aaaa_response: string[] | undefined | null = await async_resolve_aaaa(address, options.timeout).catch(error => {
|
const aaaa_response: string[] | undefined | null = await async_resolve_aaaa(address, options.timeout).catch(error => {
|
||||||
options.log("AAAA record resolved unsuccessfully (%o)", error);
|
options.log("AAAA record resolved unsuccessfully (%o)", error);
|
||||||
return Promise.resolve(undefined);
|
return Promise.resolve(undefined);
|
||||||
});
|
}) as any;
|
||||||
|
|
||||||
|
|
||||||
if(typeof(aaaa_response) !== "undefined") {
|
if(typeof(aaaa_response) !== "undefined") {
|
||||||
@ -95,7 +95,7 @@ namespace _dns {
|
|||||||
const a_response: string[] | undefined | null = await async_resolve_a(address, options.timeout).catch(error => {
|
const a_response: string[] | undefined | null = await async_resolve_a(address, options.timeout).catch(error => {
|
||||||
options.log("A record resolved unsuccessfully (%o)", error);
|
options.log("A record resolved unsuccessfully (%o)", error);
|
||||||
return Promise.resolve(undefined);
|
return Promise.resolve(undefined);
|
||||||
});
|
}) as any;
|
||||||
|
|
||||||
if(typeof(a_response) !== "undefined") {
|
if(typeof(a_response) !== "undefined") {
|
||||||
if(!a_response || a_response.length == 0)
|
if(!a_response || a_response.length == 0)
|
||||||
|
@ -107,7 +107,7 @@ const parse = (args: string[], options: minimist.Opts) => {
|
|||||||
flags.strings[key] || flags.bools[key] || aliases[key];
|
flags.strings[key] || flags.bools[key] || aliases[key];
|
||||||
}
|
}
|
||||||
|
|
||||||
function setArg (key, val, arg) {
|
function setArg (key, val, arg?) {
|
||||||
if (arg && flags.unknownFn && !argDefined(key, arg)) {
|
if (arg && flags.unknownFn && !argDefined(key, arg)) {
|
||||||
if (flags.unknownFn(arg) === false) return;
|
if (flags.unknownFn(arg) === false) return;
|
||||||
}
|
}
|
||||||
@ -156,7 +156,7 @@ const parse = (args: string[], options: minimist.Opts) => {
|
|||||||
// http://stackoverflow.com/a/1068308/13216
|
// http://stackoverflow.com/a/1068308/13216
|
||||||
var m = arg.match(/^--([^=]+)=([\s\S]*)$/);
|
var m = arg.match(/^--([^=]+)=([\s\S]*)$/);
|
||||||
var key = m[1];
|
var key = m[1];
|
||||||
var value = m[2];
|
var value: any = m[2];
|
||||||
if (flags.bools[key]) {
|
if (flags.bools[key]) {
|
||||||
value = value !== 'false';
|
value = value !== 'false';
|
||||||
}
|
}
|
||||||
|
19
modules/tsconfig_main.json
Normal file
19
modules/tsconfig_main.json
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
{
|
||||||
|
"compilerOptions": {
|
||||||
|
"module": "commonjs",
|
||||||
|
"target": "es6",
|
||||||
|
"sourceMap": true,
|
||||||
|
"moduleResolution": "node"
|
||||||
|
},
|
||||||
|
"include": [
|
||||||
|
"./core",
|
||||||
|
"./crash_handler",
|
||||||
|
"./shared",
|
||||||
|
"../main.ts"
|
||||||
|
],
|
||||||
|
"exclude": [
|
||||||
|
"node_modules",
|
||||||
|
"declarations",
|
||||||
|
"app/dummy-declarations/*.d.ts"
|
||||||
|
]
|
||||||
|
}
|
20
modules/tsconfig_renderer.json
Normal file
20
modules/tsconfig_renderer.json
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
{
|
||||||
|
"compilerOptions": {
|
||||||
|
"module": "commonjs",
|
||||||
|
"target": "es6",
|
||||||
|
"sourceMap": true,
|
||||||
|
"moduleResolution": "node"
|
||||||
|
},
|
||||||
|
"include": [
|
||||||
|
"./renderer",
|
||||||
|
"./crash_handler",
|
||||||
|
"./shared",
|
||||||
|
|
||||||
|
"../native/*/exports/"
|
||||||
|
],
|
||||||
|
"exclude": [
|
||||||
|
"node_modules",
|
||||||
|
"declarations",
|
||||||
|
"app/dummy-declarations/*.d.ts"
|
||||||
|
]
|
||||||
|
}
|
@ -114,13 +114,14 @@ include_directories(${opus_INCLUDE_DIR})
|
|||||||
|
|
||||||
find_package(spdlog REQUIRED)
|
find_package(spdlog REQUIRED)
|
||||||
|
|
||||||
|
message("Libraries: ${LIBEVENT_LIBRARIES}")
|
||||||
set(REQUIRED_LIBRARIES
|
set(REQUIRED_LIBRARIES
|
||||||
${TeaSpeak_SharedLib_LIBRARIES_STATIC}
|
${TeaSpeak_SharedLib_LIBRARIES_STATIC}
|
||||||
|
|
||||||
${TomCrypt_LIBRARIES_STATIC}
|
${TomCrypt_LIBRARIES_STATIC}
|
||||||
${TomMath_LIBRARIES_STATIC}
|
${TomMath_LIBRARIES_STATIC}
|
||||||
|
|
||||||
${LIBEVENT_STATIC_LIBRARIES}
|
${LIBEVENT_LIBRARIES}
|
||||||
|
|
||||||
${StringVariable_LIBRARIES_STATIC}
|
${StringVariable_LIBRARIES_STATIC}
|
||||||
${DataPipes_LIBRARIES_STATIC} #Needs to be static because something causes ca bad function call when loaded in electron
|
${DataPipes_LIBRARIES_STATIC} #Needs to be static because something causes ca bad function call when loaded in electron
|
||||||
|
@ -1,9 +0,0 @@
|
|||||||
/* General file with least possible errors. This is just for your IDE (PHP-Storm for example) */
|
|
||||||
{
|
|
||||||
"compilerOptions": {
|
|
||||||
"target": "es6",
|
|
||||||
"module": "commonjs",
|
|
||||||
"sourceMap": true
|
|
||||||
},
|
|
||||||
"exclude": [ ]
|
|
||||||
}
|
|
@ -30,8 +30,9 @@
|
|||||||
"asar": "^2.0.1",
|
"asar": "^2.0.1",
|
||||||
"cmake-js": "^4.0.1",
|
"cmake-js": "^4.0.1",
|
||||||
"ejs": "^2.6.2",
|
"ejs": "^2.6.2",
|
||||||
"electron-packager": "^14.0.0",
|
"electron-packager": "^14.0.1",
|
||||||
"nodemon": "^1.19.1"
|
"nodemon": "^1.19.1",
|
||||||
|
"typescript": "^3.5.2"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@types/minimist": "^1.2.0",
|
"@types/minimist": "^1.2.0",
|
||||||
@ -54,7 +55,7 @@
|
|||||||
"nan": "^2.14.0",
|
"nan": "^2.14.0",
|
||||||
"node-ssh": "^6.0.0",
|
"node-ssh": "^6.0.0",
|
||||||
"only": "0.0.2",
|
"only": "0.0.2",
|
||||||
"psl": "^1.1.33",
|
"psl": "^1.2.0",
|
||||||
"pure-uuid": "^1.5.7",
|
"pure-uuid": "^1.5.7",
|
||||||
"request": "^2.47.1",
|
"request": "^2.47.1",
|
||||||
"request-progress": "^3.0.0",
|
"request-progress": "^3.0.0",
|
||||||
|
Loading…
x
Reference in New Issue
Block a user