Auto merged - #2574 at Mon, 06 Sep 2021 21:17:13 GMT
Standardised configurator version naming.10.8-maintenance
commit
f0bc8219c8
|
@ -1,5 +1,5 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<widget xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0" xmlns:android="http://schemas.android.com/apk/res/android" id="com.betaflight.betaflightconfigurator" version="[INJECTED_BY_GULPFILE]">
|
<widget xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0" xmlns:android="http://schemas.android.com/apk/res/android" id="[INJECTED_BY_GULPFILE]" version="[INJECTED_BY_GULPFILE]">
|
||||||
<name>[INJECTED_BY_GULPFILE]</name>
|
<name>[INJECTED_BY_GULPFILE]</name>
|
||||||
<description>[INJECTED_BY_GULPFILE]</description>
|
<description>[INJECTED_BY_GULPFILE]</description>
|
||||||
<author href="https://betaflight.com">[INJECTED_BY_GULPFILE]</author>
|
<author href="https://betaflight.com">[INJECTED_BY_GULPFILE]</author>
|
||||||
|
@ -44,6 +44,7 @@
|
||||||
<meta-data android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" android:resource="@xml/usb_device_filter"/>
|
<meta-data android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" android:resource="@xml/usb_device_filter"/>
|
||||||
</config-file>
|
</config-file>
|
||||||
<resource-file src="usb_device_filter.xml" target="app/src/main/res/xml/usb_device_filter.xml"/>
|
<resource-file src="usb_device_filter.xml" target="app/src/main/res/xml/usb_device_filter.xml"/>
|
||||||
|
<resource-file src="manifest.json" target="app/src/main/assets/www/manifest.json"/>
|
||||||
</platform>
|
</platform>
|
||||||
<platform name="ios">
|
<platform name="ios">
|
||||||
<allow-intent href="itms:*"/>
|
<allow-intent href="itms:*"/>
|
||||||
|
|
230
gulpfile.js
230
gulpfile.js
|
@ -1,9 +1,5 @@
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
const pkg = require('./package.json');
|
|
||||||
// remove gulp-appdmg from the package.json we're going to write
|
|
||||||
delete pkg.optionalDependencies['gulp-appdmg'];
|
|
||||||
|
|
||||||
const child_process = require('child_process');
|
const child_process = require('child_process');
|
||||||
const fs = require('fs');
|
const fs = require('fs');
|
||||||
const fse = require('fs-extra');
|
const fse = require('fs-extra');
|
||||||
|
@ -28,7 +24,7 @@ const replace = require('gulp-replace');
|
||||||
const jeditor = require("gulp-json-editor");
|
const jeditor = require("gulp-json-editor");
|
||||||
const xmlTransformer = require("gulp-xml-transformer");
|
const xmlTransformer = require("gulp-xml-transformer");
|
||||||
const os = require('os');
|
const os = require('os');
|
||||||
const git = require('gulp-git');
|
const git = require('simple-git')();
|
||||||
const source = require('vinyl-source-stream');
|
const source = require('vinyl-source-stream');
|
||||||
const stream = require('stream');
|
const stream = require('stream');
|
||||||
|
|
||||||
|
@ -47,8 +43,8 @@ const LINUX_INSTALL_DIR = '/opt/betaflight';
|
||||||
|
|
||||||
const NODE_ENV = process.env.NODE_ENV || 'production';
|
const NODE_ENV = process.env.NODE_ENV || 'production';
|
||||||
|
|
||||||
// Global variable to hold the change hash from when we get it, to when we use it.
|
const NAME_REGEX = /-/g;
|
||||||
let gitChangeSetId;
|
|
||||||
|
|
||||||
const nwBuilderOptions = {
|
const nwBuilderOptions = {
|
||||||
version: '0.54.1',
|
version: '0.54.1',
|
||||||
|
@ -61,13 +57,18 @@ const nwBuilderOptions = {
|
||||||
|
|
||||||
const nwArmVersion = '0.27.6';
|
const nwArmVersion = '0.27.6';
|
||||||
|
|
||||||
|
let metadata = {};
|
||||||
|
|
||||||
let cordovaDependencies = true;
|
let cordovaDependencies = true;
|
||||||
|
|
||||||
|
|
||||||
//-----------------
|
//-----------------
|
||||||
//Pre tasks operations
|
//Pre tasks operations
|
||||||
//-----------------
|
//-----------------
|
||||||
|
|
||||||
const SELECTED_PLATFORMS = getInputPlatforms();
|
const SELECTED_PLATFORMS = getInputPlatforms();
|
||||||
|
|
||||||
|
|
||||||
//-----------------
|
//-----------------
|
||||||
//Tasks
|
//Tasks
|
||||||
//-----------------
|
//-----------------
|
||||||
|
@ -86,21 +87,35 @@ gulp.task('clean-cache', clean_cache);
|
||||||
|
|
||||||
gulp.task('clean-cordova', clean_cordova);
|
gulp.task('clean-cordova', clean_cordova);
|
||||||
|
|
||||||
|
gulp.task('test-cordova', cordova_browserify);
|
||||||
|
|
||||||
|
|
||||||
// Function definitions are processed before function calls.
|
// Function definitions are processed before function calls.
|
||||||
const getChangesetId = gulp.series(getHash, writeChangesetId);
|
|
||||||
gulp.task('get-changeset-id', getChangesetId);
|
function process_package_release(done) {
|
||||||
|
getGitRevision(done, processPackage, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
function process_package_debug(done) {
|
||||||
|
getGitRevision(done, processPackage, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// dist_yarn MUST be done after dist_src
|
// dist_yarn MUST be done after dist_src
|
||||||
const distBuild = gulp.series(dist_src, dist_changelog, dist_yarn, dist_locale, dist_libraries, dist_resources, dist_rollup, getChangesetId, gulp.series(cordova_dist()));
|
|
||||||
|
const distBuild = gulp.series(process_package_release, dist_src, dist_changelog, dist_yarn, dist_locale, dist_libraries, dist_resources, dist_rollup, gulp.series(cordova_dist()));
|
||||||
|
|
||||||
|
const debugDistBuild = gulp.series(process_package_debug, dist_src, dist_changelog, dist_yarn, dist_locale, dist_libraries, dist_resources, dist_rollup, gulp.series(cordova_dist()));
|
||||||
|
|
||||||
const distRebuild = gulp.series(clean_dist, distBuild);
|
const distRebuild = gulp.series(clean_dist, distBuild);
|
||||||
gulp.task('dist', distRebuild);
|
gulp.task('dist', distRebuild);
|
||||||
|
|
||||||
const appsBuild = gulp.series(gulp.parallel(clean_apps, distRebuild), apps, gulp.series(cordova_apps()), gulp.parallel(listPostBuildTasks(APPS_DIR)));
|
const appsBuild = gulp.series(gulp.parallel(clean_apps, distRebuild), apps, gulp.series(cordova_apps()), gulp.parallel(listPostBuildTasks(APPS_DIR)));
|
||||||
gulp.task('apps', appsBuild);
|
gulp.task('apps', appsBuild);
|
||||||
|
|
||||||
const debugAppsBuild = gulp.series(gulp.parallel(clean_debug, distRebuild), debug, gulp.parallel(listPostBuildTasks(DEBUG_DIR)));
|
const debugAppsBuild = gulp.series(gulp.parallel(clean_debug, gulp.series(clean_dist, debugDistBuild)), debug, gulp.series(cordova_apps()), gulp.parallel(listPostBuildTasks(DEBUG_DIR)));
|
||||||
|
|
||||||
const debugBuild = gulp.series(distBuild, debug, gulp.parallel(listPostBuildTasks(DEBUG_DIR)), start_debug);
|
const debugBuild = gulp.series(debugDistBuild, debug, gulp.parallel(listPostBuildTasks(DEBUG_DIR)), start_debug);
|
||||||
gulp.task('debug', debugBuild);
|
gulp.task('debug', debugBuild);
|
||||||
|
|
||||||
const releaseBuild = gulp.series(gulp.parallel(clean_release, appsBuild), gulp.parallel(listReleaseTasks(APPS_DIR)));
|
const releaseBuild = gulp.series(gulp.parallel(clean_release, appsBuild), gulp.parallel(listReleaseTasks(APPS_DIR)));
|
||||||
|
@ -111,6 +126,7 @@ gulp.task('debug-release', debugReleaseBuild);
|
||||||
|
|
||||||
gulp.task('default', debugBuild);
|
gulp.task('default', debugBuild);
|
||||||
|
|
||||||
|
|
||||||
// -----------------
|
// -----------------
|
||||||
// Helper functions
|
// Helper functions
|
||||||
// -----------------
|
// -----------------
|
||||||
|
@ -203,21 +219,21 @@ function getRunDebugAppCommand(arch) {
|
||||||
|
|
||||||
switch (arch) {
|
switch (arch) {
|
||||||
case 'osx64':
|
case 'osx64':
|
||||||
const pkgName = `${pkg.name}.app`;
|
const packageName = `${metadata.name}.app`;
|
||||||
command = `open ${path.join(DEBUG_DIR, pkg.name, arch, pkgName)}`;
|
command = `open ${path.join(DEBUG_DIR, metadata.name, arch, packageName)}`;
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'linux64':
|
case 'linux64':
|
||||||
case 'linux32':
|
case 'linux32':
|
||||||
case 'armv7':
|
case 'armv7':
|
||||||
command = path.join(DEBUG_DIR, pkg.name, arch, pkg.name);
|
command = path.join(DEBUG_DIR, metadata.name, arch, metadata.name);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'win32':
|
case 'win32':
|
||||||
case 'win64':
|
case 'win64':
|
||||||
command = path.join(DEBUG_DIR, pkg.name, arch, `${pkg.name}.exe`);
|
command = path.join(DEBUG_DIR, metadata.name, arch, `${metadata.name}.exe`);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -231,7 +247,7 @@ function getRunDebugAppCommand(arch) {
|
||||||
}
|
}
|
||||||
|
|
||||||
function getReleaseFilename(platform, ext) {
|
function getReleaseFilename(platform, ext) {
|
||||||
return `${pkg.name}_${pkg.version}_${platform}.${ext}`;
|
return `${metadata.name}_${metadata.version}_${platform}.${ext}`;
|
||||||
}
|
}
|
||||||
|
|
||||||
function clean_dist() {
|
function clean_dist() {
|
||||||
|
@ -256,19 +272,51 @@ function clean_cache() {
|
||||||
|
|
||||||
// Real work for dist task. Done in another task to call it via
|
// Real work for dist task. Done in another task to call it via
|
||||||
// run-sequence.
|
// run-sequence.
|
||||||
|
|
||||||
|
function processPackage(done, gitRevision, isReleaseBuild) {
|
||||||
|
const metadataKeys = [ 'name', 'productName', 'description', 'author', 'license', 'version' ];
|
||||||
|
|
||||||
|
const pkg = require('./package.json');
|
||||||
|
|
||||||
|
// remove gulp-appdmg from the package.json we're going to write
|
||||||
|
delete pkg.optionalDependencies['gulp-appdmg'];
|
||||||
|
|
||||||
|
pkg.gitRevision = gitRevision;
|
||||||
|
if (!isReleaseBuild) {
|
||||||
|
pkg.productName = `${pkg.productName} (Debug Build)`;
|
||||||
|
pkg.description = `${pkg.description} (Debug Build)`;
|
||||||
|
pkg.version = `${pkg.version}-debug-${gitRevision}`;
|
||||||
|
|
||||||
|
metadata.packageId = `${pkg.name}-debug`;
|
||||||
|
} else {
|
||||||
|
metadata.packageId = pkg.name;
|
||||||
|
}
|
||||||
|
|
||||||
|
const packageJson = new stream.Readable;
|
||||||
|
packageJson.push(JSON.stringify(pkg, undefined, 2));
|
||||||
|
packageJson.push(null);
|
||||||
|
|
||||||
|
Object.keys(pkg)
|
||||||
|
.filter(key => metadataKeys.includes(key))
|
||||||
|
.forEach((key) => {
|
||||||
|
metadata[key] = pkg[key];
|
||||||
|
});
|
||||||
|
|
||||||
|
packageJson
|
||||||
|
.pipe(source('package.json'))
|
||||||
|
.pipe(gulp.dest(DIST_DIR));
|
||||||
|
|
||||||
|
done();
|
||||||
|
}
|
||||||
|
|
||||||
function dist_src() {
|
function dist_src() {
|
||||||
const distSources = [
|
const distSources = [
|
||||||
'./src/**/*',
|
'./src/**/*',
|
||||||
'!./src/css/dropdown-lists/LICENSE',
|
'!./src/css/dropdown-lists/LICENSE',
|
||||||
'!./src/support/**',
|
'!./src/support/**',
|
||||||
];
|
];
|
||||||
const packageJson = new stream.Readable;
|
|
||||||
packageJson.push(JSON.stringify(pkg,undefined,2));
|
|
||||||
packageJson.push(null);
|
|
||||||
|
|
||||||
return packageJson
|
return gulp.src(distSources, { base: 'src' })
|
||||||
.pipe(source('package.json'))
|
|
||||||
.pipe(gulp.src(distSources, { base: 'src' }))
|
|
||||||
.pipe(gulp.src('yarn.lock'))
|
.pipe(gulp.src('yarn.lock'))
|
||||||
.pipe(gulp.dest(DIST_DIR));
|
.pipe(gulp.dest(DIST_DIR));
|
||||||
}
|
}
|
||||||
|
@ -395,7 +443,7 @@ function post_build(arch, folder, done) {
|
||||||
|
|
||||||
if ((arch === 'linux32') || (arch === 'linux64')) {
|
if ((arch === 'linux32') || (arch === 'linux64')) {
|
||||||
// Copy Ubuntu launcher scripts to destination dir
|
// Copy Ubuntu launcher scripts to destination dir
|
||||||
const launcherDir = path.join(folder, pkg.name, arch);
|
const launcherDir = path.join(folder, metadata.name, arch);
|
||||||
console.log(`Copy Ubuntu launcher scripts to ${launcherDir}`);
|
console.log(`Copy Ubuntu launcher scripts to ${launcherDir}`);
|
||||||
return gulp.src('assets/linux/**')
|
return gulp.src('assets/linux/**')
|
||||||
.pipe(gulp.dest(launcherDir));
|
.pipe(gulp.dest(launcherDir));
|
||||||
|
@ -403,7 +451,7 @@ function post_build(arch, folder, done) {
|
||||||
|
|
||||||
if (arch === 'armv7') {
|
if (arch === 'armv7') {
|
||||||
console.log('Moving ARMv7 build from "linux32" to "armv7" directory...');
|
console.log('Moving ARMv7 build from "linux32" to "armv7" directory...');
|
||||||
fse.moveSync(path.join(folder, pkg.name, 'linux32'), path.join(folder, pkg.name, 'armv7'));
|
fse.moveSync(path.join(folder, metadata.name, 'linux32'), path.join(folder, metadata.name, 'armv7'));
|
||||||
}
|
}
|
||||||
|
|
||||||
return done();
|
return done();
|
||||||
|
@ -542,27 +590,21 @@ function buildNWApps(platforms, flavor, dir, done) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function getHash(cb) {
|
function getGitRevision(done, callback, isReleaseBuild) {
|
||||||
git.revParse({args: '--short HEAD'}, function (err, hash) {
|
let gitRevision = 'norevision';
|
||||||
if (err) {
|
git.diff([ '--shortstat' ], function (err, diff) {
|
||||||
gitChangeSetId = 'unsupported';
|
if (!err && !diff) {
|
||||||
} else {
|
git.log([ '-1', '--pretty=format:%h' ], function (err, rev) {
|
||||||
gitChangeSetId = hash;
|
if (!err) {
|
||||||
}
|
gitRevision = rev.latest.hash;
|
||||||
cb();
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function writeChangesetId() {
|
callback(done, gitRevision, isReleaseBuild);
|
||||||
const versionJson = new stream.Readable;
|
});
|
||||||
versionJson.push(JSON.stringify({
|
} else {
|
||||||
gitChangesetId: gitChangeSetId,
|
callback(done, gitRevision, isReleaseBuild);
|
||||||
version: pkg.version,
|
}
|
||||||
}, undefined, 2));
|
});
|
||||||
versionJson.push(null);
|
|
||||||
return versionJson
|
|
||||||
.pipe(source('version.json'))
|
|
||||||
.pipe(gulp.dest(DIST_DIR));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function start_debug(done) {
|
function start_debug(done) {
|
||||||
|
@ -590,7 +632,7 @@ function release_win(arch, appDirectory, done) {
|
||||||
const parameters = [];
|
const parameters = [];
|
||||||
|
|
||||||
// Extra parameters to replace inside the iss file
|
// Extra parameters to replace inside the iss file
|
||||||
parameters.push(`/Dversion=${pkg.version}`);
|
parameters.push(`/Dversion=${metadata.version}`);
|
||||||
parameters.push(`/DarchName=${arch}`);
|
parameters.push(`/DarchName=${arch}`);
|
||||||
parameters.push(`/DarchAllowed=${(arch === 'win32') ? 'x86 x64' : 'x64'}`);
|
parameters.push(`/DarchAllowed=${(arch === 'win32') ? 'x86 x64' : 'x64'}`);
|
||||||
parameters.push(`/DarchInstallIn64bit=${(arch === 'win32') ? '' : 'x64'}`);
|
parameters.push(`/DarchInstallIn64bit=${(arch === 'win32') ? '' : 'x64'}`);
|
||||||
|
@ -616,9 +658,9 @@ function release_win(arch, appDirectory, done) {
|
||||||
|
|
||||||
// Create distribution package (zip) for windows and linux platforms
|
// Create distribution package (zip) for windows and linux platforms
|
||||||
function release_zip(arch, appDirectory) {
|
function release_zip(arch, appDirectory) {
|
||||||
const src = path.join(appDirectory, pkg.name, arch, '**');
|
const src = path.join(appDirectory, metadata.name, arch, '**');
|
||||||
const output = getReleaseFilename(arch, 'zip');
|
const output = getReleaseFilename(arch, 'zip');
|
||||||
const base = path.join(appDirectory, pkg.name, arch);
|
const base = path.join(appDirectory, metadata.name, arch);
|
||||||
|
|
||||||
return compressFiles(src, base, output, 'Betaflight Configurator');
|
return compressFiles(src, base, output, 'Betaflight Configurator');
|
||||||
}
|
}
|
||||||
|
@ -641,25 +683,25 @@ function release_deb(arch, appDirectory, done) {
|
||||||
done();
|
done();
|
||||||
}
|
}
|
||||||
|
|
||||||
return gulp.src([path.join(appDirectory, pkg.name, arch, '*')])
|
return gulp.src([path.join(appDirectory, metadata.name, arch, '*')])
|
||||||
.pipe(deb({
|
.pipe(deb({
|
||||||
package: pkg.name,
|
package: metadata.name,
|
||||||
version: pkg.version,
|
version: metadata.version,
|
||||||
section: 'base',
|
section: 'base',
|
||||||
priority: 'optional',
|
priority: 'optional',
|
||||||
architecture: getLinuxPackageArch('deb', arch),
|
architecture: getLinuxPackageArch('deb', arch),
|
||||||
maintainer: pkg.author,
|
maintainer: metadata.author,
|
||||||
description: pkg.description,
|
description: metadata.description,
|
||||||
preinst: [`rm -rf ${LINUX_INSTALL_DIR}/${pkg.name}`],
|
preinst: [`rm -rf ${LINUX_INSTALL_DIR}/${metadata.name}`],
|
||||||
postinst: [
|
postinst: [
|
||||||
`chown root:root ${LINUX_INSTALL_DIR}`,
|
`chown root:root ${LINUX_INSTALL_DIR}`,
|
||||||
`chown -R root:root ${LINUX_INSTALL_DIR}/${pkg.name}`,
|
`chown -R root:root ${LINUX_INSTALL_DIR}/${metadata.name}`,
|
||||||
`xdg-desktop-menu install ${LINUX_INSTALL_DIR}/${pkg.name}/${pkg.name}.desktop`,
|
`xdg-desktop-menu install ${LINUX_INSTALL_DIR}/${metadata.name}/${metadata.name}.desktop`,
|
||||||
],
|
],
|
||||||
prerm: [`xdg-desktop-menu uninstall ${pkg.name}.desktop`],
|
prerm: [`xdg-desktop-menu uninstall ${metadata.name}.desktop`],
|
||||||
depends: 'libgconf-2-4',
|
depends: 'libgconf-2-4',
|
||||||
changelog: [],
|
changelog: [],
|
||||||
_target: `${LINUX_INSTALL_DIR}/${pkg.name}`,
|
_target: `${LINUX_INSTALL_DIR}/${metadata.name}`,
|
||||||
_out: RELEASE_DIR,
|
_out: RELEASE_DIR,
|
||||||
_copyright: 'assets/linux/copyright',
|
_copyright: 'assets/linux/copyright',
|
||||||
_clean: true,
|
_clean: true,
|
||||||
|
@ -677,24 +719,22 @@ function release_rpm(arch, appDirectory, done) {
|
||||||
// The buildRpm does not generate the folder correctly, manually
|
// The buildRpm does not generate the folder correctly, manually
|
||||||
createDirIfNotExists(RELEASE_DIR);
|
createDirIfNotExists(RELEASE_DIR);
|
||||||
|
|
||||||
const regex = /-/g;
|
|
||||||
|
|
||||||
const options = {
|
const options = {
|
||||||
name: pkg.name,
|
name: metadata.name,
|
||||||
version: pkg.version.replace(regex, '_'), // RPM does not like release candidate versions
|
version: metadata.version.replace(NAME_REGEX, '_'), // RPM does not like release candidate versions
|
||||||
buildArch: getLinuxPackageArch('rpm', arch),
|
buildArch: getLinuxPackageArch('rpm', arch),
|
||||||
vendor: pkg.author,
|
vendor: metadata.author,
|
||||||
summary: pkg.description,
|
summary: metadata.description,
|
||||||
license: 'GNU General Public License v3.0',
|
license: 'GNU General Public License v3.0',
|
||||||
requires: 'libgconf-2-4',
|
requires: 'libgconf-2-4',
|
||||||
prefix: '/opt',
|
prefix: '/opt',
|
||||||
files: [{
|
files: [{
|
||||||
cwd: path.join(appDirectory, pkg.name, arch),
|
cwd: path.join(appDirectory, metadata.name, arch),
|
||||||
src: '*',
|
src: '*',
|
||||||
dest: `${LINUX_INSTALL_DIR}/${pkg.name}`,
|
dest: `${LINUX_INSTALL_DIR}/${metadata.name}`,
|
||||||
}],
|
}],
|
||||||
postInstallScript: [`xdg-desktop-menu install ${LINUX_INSTALL_DIR}/${pkg.name}/${pkg.name}.desktop`],
|
postInstallScript: [`xdg-desktop-menu install ${LINUX_INSTALL_DIR}/${metadata.name}/${metadata.name}.desktop`],
|
||||||
preUninstallScript: [`xdg-desktop-menu uninstall ${pkg.name}.desktop`],
|
preUninstallScript: [`xdg-desktop-menu uninstall ${metadata.name}.desktop`],
|
||||||
tempDir: path.join(RELEASE_DIR, `tmp-rpm-build-${arch}`),
|
tempDir: path.join(RELEASE_DIR, `tmp-rpm-build-${arch}`),
|
||||||
keepTemp: false,
|
keepTemp: false,
|
||||||
verbose: false,
|
verbose: false,
|
||||||
|
@ -743,12 +783,12 @@ function release_osx64(appDirectory) {
|
||||||
return gulp.src(['.'])
|
return gulp.src(['.'])
|
||||||
.pipe(appdmg({
|
.pipe(appdmg({
|
||||||
target: path.join(RELEASE_DIR, getReleaseFilename('macOS', 'dmg')),
|
target: path.join(RELEASE_DIR, getReleaseFilename('macOS', 'dmg')),
|
||||||
basepath: path.join(appDirectory, pkg.name, 'osx64'),
|
basepath: path.join(appDirectory, metadata.name, 'osx64'),
|
||||||
specification: {
|
specification: {
|
||||||
title: 'Betaflight Configurator',
|
title: 'Betaflight Configurator',
|
||||||
contents: [
|
contents: [
|
||||||
{ 'x': 448, 'y': 342, 'type': 'link', 'path': '/Applications' },
|
{ 'x': 448, 'y': 342, 'type': 'link', 'path': '/Applications' },
|
||||||
{ 'x': 192, 'y': 344, 'type': 'file', 'path': `${pkg.name}.app`, 'name': 'Betaflight Configurator.app' },
|
{ 'x': 192, 'y': 344, 'type': 'file', 'path': `${metadata.name}.app`, 'name': 'Betaflight Configurator.app' },
|
||||||
],
|
],
|
||||||
background: path.join(__dirname, 'assets/osx/dmg-background.png'),
|
background: path.join(__dirname, 'assets/osx/dmg-background.png'),
|
||||||
format: 'UDZO',
|
format: 'UDZO',
|
||||||
|
@ -849,6 +889,7 @@ function cordova_dist() {
|
||||||
distTasks.push(cordova_rename_src_config);
|
distTasks.push(cordova_rename_src_config);
|
||||||
distTasks.push(cordova_rename_src_package);
|
distTasks.push(cordova_rename_src_package);
|
||||||
distTasks.push(cordova_packagejson);
|
distTasks.push(cordova_packagejson);
|
||||||
|
distTasks.push(cordova_manifestjson);
|
||||||
distTasks.push(cordova_configxml);
|
distTasks.push(cordova_configxml);
|
||||||
distTasks.push(cordova_browserify);
|
distTasks.push(cordova_browserify);
|
||||||
distTasks.push(cordova_depedencies);
|
distTasks.push(cordova_depedencies);
|
||||||
|
@ -875,7 +916,6 @@ function cordova_apps() {
|
||||||
return appsTasks;
|
return appsTasks;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function clean_cordova() {
|
function clean_cordova() {
|
||||||
const patterns = [];
|
const patterns = [];
|
||||||
if (cordovaDependencies) {
|
if (cordovaDependencies) {
|
||||||
|
@ -886,14 +926,18 @@ function clean_cordova() {
|
||||||
}
|
}
|
||||||
return del(patterns, { force: true });
|
return del(patterns, { force: true });
|
||||||
}
|
}
|
||||||
|
|
||||||
function cordova_copy_www() {
|
function cordova_copy_www() {
|
||||||
return gulp.src(`${DIST_DIR}**`, { base: DIST_DIR })
|
return gulp.src(`${DIST_DIR}**`, { base: DIST_DIR })
|
||||||
.pipe(gulp.dest(`${CORDOVA_DIST_DIR}www/`));
|
.pipe(gulp.dest(`${CORDOVA_DIST_DIR}www/`));
|
||||||
}
|
}
|
||||||
|
|
||||||
function cordova_resources() {
|
function cordova_resources() {
|
||||||
|
|
||||||
return gulp.src('assets/android/**')
|
return gulp.src('assets/android/**')
|
||||||
.pipe(gulp.dest(`${CORDOVA_DIST_DIR}resources/android/`));
|
.pipe(gulp.dest(`${CORDOVA_DIST_DIR}resources/android/`));
|
||||||
}
|
}
|
||||||
|
|
||||||
function cordova_include_www() {
|
function cordova_include_www() {
|
||||||
return gulp.src(`${CORDOVA_DIST_DIR}www/main.html`)
|
return gulp.src(`${CORDOVA_DIST_DIR}www/main.html`)
|
||||||
.pipe(replace('<!-- CORDOVA_INCLUDE js/cordova_chromeapi.js -->', '<script type="text/javascript" src="./js/cordova_chromeapi.js"></script>'))
|
.pipe(replace('<!-- CORDOVA_INCLUDE js/cordova_chromeapi.js -->', '<script type="text/javascript" src="./js/cordova_chromeapi.js"></script>'))
|
||||||
|
@ -901,43 +945,60 @@ function cordova_include_www() {
|
||||||
.pipe(replace('<!-- CORDOVA_INCLUDE cordova.js -->', '<script type="text/javascript" src="cordova.js"></script>'))
|
.pipe(replace('<!-- CORDOVA_INCLUDE cordova.js -->', '<script type="text/javascript" src="cordova.js"></script>'))
|
||||||
.pipe(gulp.dest(`${CORDOVA_DIST_DIR}www`));
|
.pipe(gulp.dest(`${CORDOVA_DIST_DIR}www`));
|
||||||
}
|
}
|
||||||
|
|
||||||
function cordova_copy_src() {
|
function cordova_copy_src() {
|
||||||
return gulp.src([`${CORDOVA_DIR}**`, `!${CORDOVA_DIR}config_template.xml`, `!${CORDOVA_DIR}package_template.json`])
|
return gulp.src([`${CORDOVA_DIR}**`, `!${CORDOVA_DIR}config_template.xml`, `!${CORDOVA_DIR}package_template.json`])
|
||||||
.pipe(gulp.dest(`${CORDOVA_DIST_DIR}`));
|
.pipe(gulp.dest(`${CORDOVA_DIST_DIR}`));
|
||||||
}
|
}
|
||||||
|
|
||||||
function cordova_rename_src_config() {
|
function cordova_rename_src_config() {
|
||||||
return gulp.src(`${CORDOVA_DIR}config_template.xml`)
|
return gulp.src(`${CORDOVA_DIR}config_template.xml`)
|
||||||
.pipe(rename('config.xml'))
|
.pipe(rename('config.xml'))
|
||||||
.pipe(gulp.dest(`${CORDOVA_DIST_DIR}`));
|
.pipe(gulp.dest(`${CORDOVA_DIST_DIR}`));
|
||||||
}
|
}
|
||||||
|
|
||||||
function cordova_rename_src_package() {
|
function cordova_rename_src_package() {
|
||||||
return gulp.src(`${CORDOVA_DIR}package_template.json`)
|
return gulp.src(`${CORDOVA_DIR}package_template.json`)
|
||||||
.pipe(rename('package.json'))
|
.pipe(rename('package.json'))
|
||||||
.pipe(gulp.dest(`${CORDOVA_DIST_DIR}`));
|
.pipe(gulp.dest(`${CORDOVA_DIST_DIR}`));
|
||||||
}
|
}
|
||||||
|
|
||||||
function cordova_packagejson() {
|
function cordova_packagejson() {
|
||||||
return gulp.src(`${CORDOVA_DIST_DIR}package.json`)
|
return gulp.src(`${CORDOVA_DIST_DIR}package.json`)
|
||||||
.pipe(jeditor({
|
.pipe(jeditor({
|
||||||
'name': pkg.name,
|
'name': metadata.name,
|
||||||
'description': pkg.description,
|
'description': metadata.description,
|
||||||
'version': pkg.version,
|
'version': metadata.version,
|
||||||
'author': pkg.author,
|
'author': metadata.author,
|
||||||
'license': pkg.license,
|
'license': metadata.license,
|
||||||
}))
|
}))
|
||||||
.pipe(gulp.dest(CORDOVA_DIST_DIR));
|
.pipe(gulp.dest(CORDOVA_DIST_DIR));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Required to make getManifest() work in cordova
|
||||||
|
|
||||||
|
function cordova_manifestjson() {
|
||||||
|
return gulp.src(`${DIST_DIR}package.json`)
|
||||||
|
.pipe(rename('manifest.json'))
|
||||||
|
.pipe(gulp.dest(CORDOVA_DIST_DIR));
|
||||||
|
}
|
||||||
|
|
||||||
function cordova_configxml() {
|
function cordova_configxml() {
|
||||||
|
let androidName = metadata.packageId.replace(NAME_REGEX, '_');
|
||||||
|
|
||||||
return gulp.src([`${CORDOVA_DIST_DIR}config.xml`])
|
return gulp.src([`${CORDOVA_DIST_DIR}config.xml`])
|
||||||
.pipe(xmlTransformer([
|
.pipe(xmlTransformer([
|
||||||
{ path: '//xmlns:name', text: pkg.productName },
|
{ path: '//xmlns:name', text: metadata.productName },
|
||||||
{ path: '//xmlns:description', text: pkg.description },
|
{ path: '//xmlns:description', text: metadata.description },
|
||||||
{ path: '//xmlns:author', text: pkg.author },
|
{ path: '//xmlns:author', text: metadata.author },
|
||||||
], 'http://www.w3.org/ns/widgets'))
|
], 'http://www.w3.org/ns/widgets'))
|
||||||
.pipe(xmlTransformer([
|
.pipe(xmlTransformer([
|
||||||
{ path: '.', attr: { 'version': pkg.version } },
|
{ path: '.', attr: { 'id': `com.betaflight.${androidName}` } },
|
||||||
|
{ path: '.', attr: { 'version': metadata.version } },
|
||||||
]))
|
]))
|
||||||
.pipe(gulp.dest(CORDOVA_DIST_DIR));
|
.pipe(gulp.dest(CORDOVA_DIST_DIR));
|
||||||
}
|
}
|
||||||
|
|
||||||
function cordova_browserify(callback) {
|
function cordova_browserify(callback) {
|
||||||
const readFile = function(file) {
|
const readFile = function(file) {
|
||||||
return new Promise(function(resolve) {
|
return new Promise(function(resolve) {
|
||||||
|
@ -967,6 +1028,7 @@ function cordova_browserify(callback) {
|
||||||
readLoop();
|
readLoop();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function cordova_execbrowserify(file) {
|
function cordova_execbrowserify(file) {
|
||||||
const filename = file.split('/').pop();
|
const filename = file.split('/').pop();
|
||||||
const destpath = file.replace(filename, '');
|
const destpath = file.replace(filename, '');
|
||||||
|
@ -976,21 +1038,24 @@ function cordova_execbrowserify(file) {
|
||||||
.pipe(source(filename))
|
.pipe(source(filename))
|
||||||
.pipe(gulp.dest(destpath));
|
.pipe(gulp.dest(destpath));
|
||||||
}
|
}
|
||||||
gulp.task('test', cordova_browserify);
|
|
||||||
function cordova_depedencies() {
|
function cordova_depedencies() {
|
||||||
process.chdir('dist_cordova');
|
process.chdir(CORDOVA_DIST_DIR);
|
||||||
return gulp.src(['./package.json', './yarn.lock'])
|
return gulp.src(['./package.json', './yarn.lock'])
|
||||||
.pipe(gulp.dest('./'))
|
.pipe(gulp.dest('./'))
|
||||||
.pipe(yarn({
|
.pipe(yarn({
|
||||||
production: true,
|
production: true,
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
function cordova_platforms() {
|
function cordova_platforms() {
|
||||||
return cordova.platform('add', ['android']);
|
return cordova.platform('add', ['android']);
|
||||||
}
|
}
|
||||||
|
|
||||||
function cordova_debug() {
|
function cordova_debug() {
|
||||||
cordova.run();
|
cordova.run();
|
||||||
}
|
}
|
||||||
|
|
||||||
function cordova_build(cb) {
|
function cordova_build(cb) {
|
||||||
cordova.build({
|
cordova.build({
|
||||||
'platforms': ['android'],
|
'platforms': ['android'],
|
||||||
|
@ -1002,8 +1067,9 @@ function cordova_build(cb) {
|
||||||
process.chdir('../');
|
process.chdir('../');
|
||||||
cb();
|
cb();
|
||||||
});
|
});
|
||||||
console.log('APK will be generated at dist_cordova/platforms/android/app/build/outputs/apk/release/app-release.apk');
|
console.log(`APK will be generated at ${CORDOVA_DIST_DIR}platforms/android/app/build/outputs/apk/release/app-release.apk`);
|
||||||
}
|
}
|
||||||
|
|
||||||
async function cordova_release() {
|
async function cordova_release() {
|
||||||
const filename = await getReleaseFilename('android', 'apk');
|
const filename = await getReleaseFilename('android', 'apk');
|
||||||
console.log(`Release APK : release/${filename}`);
|
console.log(`Release APK : release/${filename}`);
|
||||||
|
|
|
@ -543,9 +543,13 @@
|
||||||
"message": "<strong>the accelerometer is enabled but it is not calibrated</strong>.<br>If you plan to use the accelerometer, please follow the instructions for '$t(initialSetupButtonCalibrateAccel.message)' on the '$t(tabSetup.message)' tab. If any function that requires the accelerometer (auto level modes, GPS rescue, ...) is enabled, arming of the craft will be disabled until the accelerometer has been calibrated.<br>If you are not planning on using the accelerometer it is recommended that you disable it in '$t(configurationSystem.message)' on the '$t(tabConfiguration.message)' tab."
|
"message": "<strong>the accelerometer is enabled but it is not calibrated</strong>.<br>If you plan to use the accelerometer, please follow the instructions for '$t(initialSetupButtonCalibrateAccel.message)' on the '$t(tabSetup.message)' tab. If any function that requires the accelerometer (auto level modes, GPS rescue, ...) is enabled, arming of the craft will be disabled until the accelerometer has been calibrated.<br>If you are not planning on using the accelerometer it is recommended that you disable it in '$t(configurationSystem.message)' on the '$t(tabConfiguration.message)' tab."
|
||||||
},
|
},
|
||||||
|
|
||||||
"infoVersions": {
|
"infoVersionOs": {
|
||||||
"message" : "Running - OS: <strong>{{operatingSystem}}</strong>, Configurator: <strong>{{configuratorVersion}}</strong>",
|
"message" : "OS: <strong>{{operatingSystem}}</strong>",
|
||||||
"description": "Message that appears in the GUI log panel indicating operating system and Configurator version"
|
"description": "Message that appears in the GUI log panel indicating operating system"
|
||||||
|
},
|
||||||
|
"infoVersionConfigurator": {
|
||||||
|
"message" : "Configurator: <strong>{{configuratorVersion}}</strong>",
|
||||||
|
"description": "Message that appears in the GUI log panel indicating Configurator version"
|
||||||
},
|
},
|
||||||
"buildServerLoaded": {
|
"buildServerLoaded": {
|
||||||
"message" : "Loaded builds information for $1 from build server."
|
"message" : "Loaded builds information for $1 from build server."
|
||||||
|
|
|
@ -93,7 +93,6 @@
|
||||||
"gulp": "^4.0.2",
|
"gulp": "^4.0.2",
|
||||||
"gulp-concat": "~2.6.1",
|
"gulp-concat": "~2.6.1",
|
||||||
"gulp-debian": "~0.1.8",
|
"gulp-debian": "~0.1.8",
|
||||||
"gulp-git": "^2.10.0",
|
|
||||||
"gulp-json-editor": "^2.5.4",
|
"gulp-json-editor": "^2.5.4",
|
||||||
"gulp-rename": "^2.0.0",
|
"gulp-rename": "^2.0.0",
|
||||||
"gulp-replace": "^1.0.0",
|
"gulp-replace": "^1.0.0",
|
||||||
|
@ -118,6 +117,7 @@
|
||||||
"rollup-plugin-vue": "^5.*.*",
|
"rollup-plugin-vue": "^5.*.*",
|
||||||
"rpm-builder": "^1.2.1",
|
"rpm-builder": "^1.2.1",
|
||||||
"run-script-os": "^1.1.3",
|
"run-script-os": "^1.1.3",
|
||||||
|
"simple-git": "^2.44.0",
|
||||||
"sinon": "^9.0.0",
|
"sinon": "^9.0.0",
|
||||||
"sinon-chai": "^3.5.0",
|
"sinon-chai": "^3.5.0",
|
||||||
"targz": "^1.0.1",
|
"targz": "^1.0.1",
|
||||||
|
|
|
@ -26,7 +26,6 @@
|
||||||
:firmware-version="firmwareVersion"
|
:firmware-version="firmwareVersion"
|
||||||
:firmware-id="firmwareId"
|
:firmware-id="firmwareId"
|
||||||
:hardware-id="hardwareId"
|
:hardware-id="hardwareId"
|
||||||
:git-changeset-id="gitChangesetId"
|
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
@ -73,9 +72,6 @@ export default {
|
||||||
hardwareId: {
|
hardwareId: {
|
||||||
type: String,
|
type: String,
|
||||||
},
|
},
|
||||||
gitChangesetId: {
|
|
||||||
type: String,
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
|
@ -8,7 +8,6 @@
|
||||||
<span v-if="hardwareId">
|
<span v-if="hardwareId">
|
||||||
, {{ $t("versionLabelTarget") }}: {{ hardwareId }}
|
, {{ $t("versionLabelTarget") }}: {{ hardwareId }}
|
||||||
</span>
|
</span>
|
||||||
({{ gitChangesetId }})
|
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
@ -27,9 +26,6 @@ export default {
|
||||||
hardwareId: {
|
hardwareId: {
|
||||||
type: String,
|
type: String,
|
||||||
},
|
},
|
||||||
gitChangesetId: {
|
|
||||||
type: String,
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
const Analytics = function (trackingId, userId, appName, appVersion, changesetId, os, checkForDebugVersions, optOut, debugMode, buildType) {
|
const Analytics = function (trackingId, userId, appName, appVersion, gitRevision, os, checkForDebugVersions, optOut, debugMode, buildType) {
|
||||||
this._trackingId = trackingId;
|
this._trackingId = trackingId;
|
||||||
|
|
||||||
this.setOptOut(optOut);
|
this.setOptOut(optOut);
|
||||||
|
@ -76,7 +76,7 @@ const Analytics = function (trackingId, userId, appName, appVersion, changesetId
|
||||||
};
|
};
|
||||||
|
|
||||||
this.setDimension(this.DIMENSIONS.CONFIGURATOR_OS, os);
|
this.setDimension(this.DIMENSIONS.CONFIGURATOR_OS, os);
|
||||||
this.setDimension(this.DIMENSIONS.CONFIGURATOR_CHANGESET_ID, changesetId);
|
this.setDimension(this.DIMENSIONS.CONFIGURATOR_CHANGESET_ID, gitRevision);
|
||||||
this.setDimension(this.DIMENSIONS.CONFIGURATOR_USE_DEBUG_VERSIONS, checkForDebugVersions);
|
this.setDimension(this.DIMENSIONS.CONFIGURATOR_USE_DEBUG_VERSIONS, checkForDebugVersions);
|
||||||
this.setDimension(this.DIMENSIONS.CONFIGURATOR_BUILD_TYPE, buildType);
|
this.setDimension(this.DIMENSIONS.CONFIGURATOR_BUILD_TYPE, buildType);
|
||||||
|
|
||||||
|
|
|
@ -29,8 +29,17 @@ const CONFIGURATOR = {
|
||||||
virtualApiVersion: '0.0.1',
|
virtualApiVersion: '0.0.1',
|
||||||
cliActive: false,
|
cliActive: false,
|
||||||
cliValid: false,
|
cliValid: false,
|
||||||
gitChangesetId: 'unknown',
|
productName: 'Betaflight Configurator',
|
||||||
version: '0.0.1',
|
version: '0.0.1',
|
||||||
|
gitRevision: 'norevision',
|
||||||
latestVersion: '0.0.1',
|
latestVersion: '0.0.1',
|
||||||
latestVersionReleaseUrl: 'https://github.com/betaflight/betaflight-configurator/releases',
|
latestVersionReleaseUrl: 'https://github.com/betaflight/betaflight-configurator/releases',
|
||||||
|
|
||||||
|
getDisplayVersion: function () {
|
||||||
|
if (this.version.indexOf(this.gitRevision) === -1) {
|
||||||
|
return `${this.version} (${this.gitRevision})`;
|
||||||
|
} else {
|
||||||
|
return `${this.version}`;
|
||||||
|
}
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
|
@ -21,11 +21,15 @@ function useGlobalNodeFunctions() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function appReady() {
|
function readConfiguratorVersionMetadata() {
|
||||||
$.getJSON('version.json', function(data) {
|
let manifest = chrome.runtime.getManifest();
|
||||||
CONFIGURATOR.version = data.version;
|
CONFIGURATOR.productName = manifest.productName;
|
||||||
CONFIGURATOR.gitChangesetId = data.gitChangesetId;
|
CONFIGURATOR.version = manifest.version;
|
||||||
|
CONFIGURATOR.gitRevision = manifest.gitRevision;
|
||||||
|
}
|
||||||
|
|
||||||
|
function appReady() {
|
||||||
|
readConfiguratorVersionMetadata();
|
||||||
i18n.init(function() {
|
i18n.init(function() {
|
||||||
startProcess();
|
startProcess();
|
||||||
|
|
||||||
|
@ -35,7 +39,6 @@ function appReady() {
|
||||||
|
|
||||||
initializeSerialBackend();
|
initializeSerialBackend();
|
||||||
});
|
});
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function checkSetupAnalytics(callback) {
|
function checkSetupAnalytics(callback) {
|
||||||
|
@ -74,7 +77,7 @@ function setupAnalytics(result) {
|
||||||
|
|
||||||
const debugMode = typeof process === "object" && process.versions['nw-flavor'] === 'sdk';
|
const debugMode = typeof process === "object" && process.versions['nw-flavor'] === 'sdk';
|
||||||
|
|
||||||
window.analytics = new Analytics('UA-123002063-1', userId, 'Betaflight Configurator', CONFIGURATOR.version, CONFIGURATOR.gitChangesetId, GUI.operating_system,
|
window.analytics = new Analytics('UA-123002063-1', userId, CONFIGURATOR.productName, CONFIGURATOR.version, CONFIGURATOR.gitRevision, GUI.operating_system,
|
||||||
checkForDebugVersions, optOut, debugMode, getBuildType());
|
checkForDebugVersions, optOut, debugMode, getBuildType());
|
||||||
|
|
||||||
function logException(exception) {
|
function logException(exception) {
|
||||||
|
@ -165,9 +168,8 @@ function startProcess() {
|
||||||
// translate to user-selected language
|
// translate to user-selected language
|
||||||
i18n.localizePage();
|
i18n.localizePage();
|
||||||
|
|
||||||
GUI.log(i18n.getMessage('infoVersions', {
|
GUI.log(i18n.getMessage('infoVersionOs', { operatingSystem: GUI.operating_system }));
|
||||||
operatingSystem: GUI.operating_system,
|
GUI.log(i18n.getMessage('infoVersionConfigurator', { configuratorVersion: CONFIGURATOR.getDisplayVersion() }));
|
||||||
configuratorVersion: CONFIGURATOR.version }));
|
|
||||||
|
|
||||||
if (GUI.isNWJS()) {
|
if (GUI.isNWJS()) {
|
||||||
let nwWindow = GUI.nwGui.Window.get();
|
let nwWindow = GUI.nwGui.Window.get();
|
||||||
|
|
|
@ -408,7 +408,7 @@ function checkReportProblems() {
|
||||||
if (semver.gt(FC.CONFIG.apiVersion, CONFIGURATOR.API_VERSION_MAX_SUPPORTED)) {
|
if (semver.gt(FC.CONFIG.apiVersion, CONFIGURATOR.API_VERSION_MAX_SUPPORTED)) {
|
||||||
const problemName = 'API_VERSION_MAX_SUPPORTED';
|
const problemName = 'API_VERSION_MAX_SUPPORTED';
|
||||||
problemItemTemplate.clone().html(i18n.getMessage(`reportProblemsDialog${problemName}`,
|
problemItemTemplate.clone().html(i18n.getMessage(`reportProblemsDialog${problemName}`,
|
||||||
[CONFIGURATOR.latestVersion, CONFIGURATOR.latestVersionReleaseUrl, CONFIGURATOR.version, FC.CONFIG.flightControllerVersion])).appendTo(problemDialogList);
|
[CONFIGURATOR.latestVersion, CONFIGURATOR.latestVersionReleaseUrl, CONFIGURATOR.getDisplayVersion(), FC.CONFIG.flightControllerVersion])).appendTo(problemDialogList);
|
||||||
needsProblemReportingDialog = true;
|
needsProblemReportingDialog = true;
|
||||||
|
|
||||||
analytics.sendEvent(analytics.EVENT_CATEGORIES.FLIGHT_CONTROLLER, PROBLEM_ANALYTICS_EVENT,
|
analytics.sendEvent(analytics.EVENT_CATEGORIES.FLIGHT_CONTROLLER, PROBLEM_ANALYTICS_EVENT,
|
||||||
|
|
|
@ -162,7 +162,7 @@
|
||||||
<em class="fas fa-bars"></em>
|
<em class="fas fa-bars"></em>
|
||||||
</div>
|
</div>
|
||||||
<betaflight-logo
|
<betaflight-logo
|
||||||
:configurator-version="CONFIGURATOR.version"
|
:configurator-version="CONFIGURATOR.getDisplayVersion()"
|
||||||
:firmware-version="FC.CONFIG.flightControllerVersion"
|
:firmware-version="FC.CONFIG.flightControllerVersion"
|
||||||
:firmware-id="FC.CONFIG.flightControllerIdentifier"
|
:firmware-id="FC.CONFIG.flightControllerIdentifier"
|
||||||
:hardware-id="FC.CONFIG.hardwareName"
|
:hardware-id="FC.CONFIG.hardwareName"
|
||||||
|
@ -297,7 +297,7 @@
|
||||||
<div id="tab-content-container">
|
<div id="tab-content-container">
|
||||||
<div class="tab_container">
|
<div class="tab_container">
|
||||||
<betaflight-logo
|
<betaflight-logo
|
||||||
:configurator-version="CONFIGURATOR.version"
|
:configurator-version="CONFIGURATOR.getDisplayVersion()"
|
||||||
:firmware-version="FC.CONFIG.flightControllerVersion"
|
:firmware-version="FC.CONFIG.flightControllerVersion"
|
||||||
:firmware-id="FC.CONFIG.flightControllerIdentifier"
|
:firmware-id="FC.CONFIG.flightControllerIdentifier"
|
||||||
:hardware-id="FC.CONFIG.hardwareName"
|
:hardware-id="FC.CONFIG.hardwareName"
|
||||||
|
@ -373,11 +373,10 @@
|
||||||
:cycle-time="FC.CONFIG.cycleTime"
|
:cycle-time="FC.CONFIG.cycleTime"
|
||||||
:cpu-load="FC.CONFIG.cpuload"
|
:cpu-load="FC.CONFIG.cpuload"
|
||||||
|
|
||||||
:configurator-version="CONFIGURATOR.version"
|
:configurator-version="CONFIGURATOR.getDisplayVersion()"
|
||||||
:firmware-version="FC.CONFIG.flightControllerVersion"
|
:firmware-version="FC.CONFIG.flightControllerVersion"
|
||||||
:firmware-id="FC.CONFIG.flightControllerIdentifier"
|
:firmware-id="FC.CONFIG.flightControllerIdentifier"
|
||||||
:hardware-id="FC.CONFIG.hardwareName"
|
:hardware-id="FC.CONFIG.hardwareName"
|
||||||
:git-changeset-id="CONFIGURATOR.gitChangesetId"
|
|
||||||
></status-bar>
|
></status-bar>
|
||||||
<div id="cache">
|
<div id="cache">
|
||||||
<div class="data-loading">
|
<div class="data-loading">
|
||||||
|
|
91
yarn.lock
91
yarn.lock
|
@ -63,6 +63,18 @@
|
||||||
resolved "https://registry.yarnpkg.com/@korzio/djv-draft-04/-/djv-draft-04-2.0.1.tgz#2984289426cac5ed622b26a58c3af8584aefbdfe"
|
resolved "https://registry.yarnpkg.com/@korzio/djv-draft-04/-/djv-draft-04-2.0.1.tgz#2984289426cac5ed622b26a58c3af8584aefbdfe"
|
||||||
integrity sha512-MeTVcNsfCIYxK6T7jW1sroC7dBAb4IfLmQe6RoCqlxHN5NFkzNpgdnBPR+/0D2wJDUJHM9s9NQv+ouhxKjvUjg==
|
integrity sha512-MeTVcNsfCIYxK6T7jW1sroC7dBAb4IfLmQe6RoCqlxHN5NFkzNpgdnBPR+/0D2wJDUJHM9s9NQv+ouhxKjvUjg==
|
||||||
|
|
||||||
|
"@kwsites/file-exists@^1.1.1":
|
||||||
|
version "1.1.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/@kwsites/file-exists/-/file-exists-1.1.1.tgz#ad1efcac13e1987d8dbaf235ef3be5b0d96faa99"
|
||||||
|
integrity sha512-m9/5YGR18lIwxSFDwfE3oA7bWuq9kdau6ugN4H2rJeyhFQZcG9AgSHkQtSD15a8WvTgfz9aikZMrKPHvbpqFiw==
|
||||||
|
dependencies:
|
||||||
|
debug "^4.1.1"
|
||||||
|
|
||||||
|
"@kwsites/promise-deferred@^1.1.1":
|
||||||
|
version "1.1.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/@kwsites/promise-deferred/-/promise-deferred-1.1.1.tgz#8ace5259254426ccef57f3175bc64ed7095ed919"
|
||||||
|
integrity sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw==
|
||||||
|
|
||||||
"@mrmlnc/readdir-enhanced@^2.2.1":
|
"@mrmlnc/readdir-enhanced@^2.2.1":
|
||||||
version "2.2.1"
|
version "2.2.1"
|
||||||
resolved "https://registry.yarnpkg.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde"
|
resolved "https://registry.yarnpkg.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde"
|
||||||
|
@ -514,11 +526,6 @@ any-promise@^1.0.0:
|
||||||
resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f"
|
resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f"
|
||||||
integrity sha1-q8av7tzqUugJzcA3au0845Y10X8=
|
integrity sha1-q8av7tzqUugJzcA3au0845Y10X8=
|
||||||
|
|
||||||
any-shell-escape@^0.1.1:
|
|
||||||
version "0.1.1"
|
|
||||||
resolved "https://registry.yarnpkg.com/any-shell-escape/-/any-shell-escape-0.1.1.tgz#d55ab972244c71a9a5e1ab0879f30bf110806959"
|
|
||||||
integrity sha1-1Vq5ciRMcaml4asIefML8RCAaVk=
|
|
||||||
|
|
||||||
anymatch@^2.0.0:
|
anymatch@^2.0.0:
|
||||||
version "2.0.0"
|
version "2.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb"
|
resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb"
|
||||||
|
@ -2264,6 +2271,13 @@ debug@^4.1.1:
|
||||||
dependencies:
|
dependencies:
|
||||||
ms "^2.1.1"
|
ms "^2.1.1"
|
||||||
|
|
||||||
|
debug@^4.3.1:
|
||||||
|
version "4.3.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b"
|
||||||
|
integrity sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==
|
||||||
|
dependencies:
|
||||||
|
ms "2.1.2"
|
||||||
|
|
||||||
debug@~3.1.0:
|
debug@~3.1.0:
|
||||||
version "3.1.0"
|
version "3.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261"
|
resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261"
|
||||||
|
@ -3352,13 +3366,6 @@ fined@^1.0.1:
|
||||||
object.pick "^1.2.0"
|
object.pick "^1.2.0"
|
||||||
parse-filepath "^1.0.1"
|
parse-filepath "^1.0.1"
|
||||||
|
|
||||||
first-chunk-stream@^2.0.0:
|
|
||||||
version "2.0.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/first-chunk-stream/-/first-chunk-stream-2.0.0.tgz#1bdecdb8e083c0664b91945581577a43a9f31d70"
|
|
||||||
integrity sha1-G97NuOCDwGZLkZRVgVd6Q6nzHXA=
|
|
||||||
dependencies:
|
|
||||||
readable-stream "^2.0.2"
|
|
||||||
|
|
||||||
flagged-respawn@^1.0.0:
|
flagged-respawn@^1.0.0:
|
||||||
version "1.0.1"
|
version "1.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/flagged-respawn/-/flagged-respawn-1.0.1.tgz#e7de6f1279ddd9ca9aac8a5971d618606b3aab41"
|
resolved "https://registry.yarnpkg.com/flagged-respawn/-/flagged-respawn-1.0.1.tgz#e7de6f1279ddd9ca9aac8a5971d618606b3aab41"
|
||||||
|
@ -3928,20 +3935,6 @@ gulp-debian@~0.1.8:
|
||||||
through2 "^2.0.1"
|
through2 "^2.0.1"
|
||||||
title-case "^2.1.0"
|
title-case "^2.1.0"
|
||||||
|
|
||||||
gulp-git@^2.10.0:
|
|
||||||
version "2.10.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/gulp-git/-/gulp-git-2.10.0.tgz#ba96e596c79c3f864392285b5f5b3d951f5ea371"
|
|
||||||
integrity sha512-AYh0xXpKdDYS+ftCuyF9+LFXoltjtFlpfKITTCKDI0LunztpwVuHFtp31SvRSFVZikvRHTHUGMZ9Z0TnXjDIxQ==
|
|
||||||
dependencies:
|
|
||||||
any-shell-escape "^0.1.1"
|
|
||||||
fancy-log "^1.3.2"
|
|
||||||
lodash.template "^4.4.0"
|
|
||||||
plugin-error "^1.0.1"
|
|
||||||
require-dir "^1.0.0"
|
|
||||||
strip-bom-stream "^3.0.0"
|
|
||||||
through2 "^2.0.3"
|
|
||||||
vinyl "^2.0.1"
|
|
||||||
|
|
||||||
gulp-json-editor@^2.5.4:
|
gulp-json-editor@^2.5.4:
|
||||||
version "2.5.4"
|
version "2.5.4"
|
||||||
resolved "https://registry.yarnpkg.com/gulp-json-editor/-/gulp-json-editor-2.5.4.tgz#b77b46bca22d2dd1ac9f15bbec1eddbe5ef3567c"
|
resolved "https://registry.yarnpkg.com/gulp-json-editor/-/gulp-json-editor-2.5.4.tgz#b77b46bca22d2dd1ac9f15bbec1eddbe5ef3567c"
|
||||||
|
@ -5435,14 +5428,6 @@ lodash.template@^3.0.0:
|
||||||
lodash.restparam "^3.0.0"
|
lodash.restparam "^3.0.0"
|
||||||
lodash.templatesettings "^3.0.0"
|
lodash.templatesettings "^3.0.0"
|
||||||
|
|
||||||
lodash.template@^4.4.0:
|
|
||||||
version "4.5.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.5.0.tgz#f976195cf3f347d0d5f52483569fe8031ccce8ab"
|
|
||||||
integrity sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==
|
|
||||||
dependencies:
|
|
||||||
lodash._reinterpolate "^3.0.0"
|
|
||||||
lodash.templatesettings "^4.0.0"
|
|
||||||
|
|
||||||
lodash.templatesettings@^3.0.0:
|
lodash.templatesettings@^3.0.0:
|
||||||
version "3.1.1"
|
version "3.1.1"
|
||||||
resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-3.1.1.tgz#fb307844753b66b9f1afa54e262c745307dba8e5"
|
resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-3.1.1.tgz#fb307844753b66b9f1afa54e262c745307dba8e5"
|
||||||
|
@ -5451,13 +5436,6 @@ lodash.templatesettings@^3.0.0:
|
||||||
lodash._reinterpolate "^3.0.0"
|
lodash._reinterpolate "^3.0.0"
|
||||||
lodash.escape "^3.0.0"
|
lodash.escape "^3.0.0"
|
||||||
|
|
||||||
lodash.templatesettings@^4.0.0:
|
|
||||||
version "4.2.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz#e481310f049d3cf6d47e912ad09313b154f0fb33"
|
|
||||||
integrity sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==
|
|
||||||
dependencies:
|
|
||||||
lodash._reinterpolate "^3.0.0"
|
|
||||||
|
|
||||||
lodash.union@^4.6.0:
|
lodash.union@^4.6.0:
|
||||||
version "4.6.0"
|
version "4.6.0"
|
||||||
resolved "https://registry.yarnpkg.com/lodash.union/-/lodash.union-4.6.0.tgz#48bb5088409f16f1821666641c44dd1aaae3cd88"
|
resolved "https://registry.yarnpkg.com/lodash.union/-/lodash.union-4.6.0.tgz#48bb5088409f16f1821666641c44dd1aaae3cd88"
|
||||||
|
@ -7400,11 +7378,6 @@ request@^2.88.0:
|
||||||
tunnel-agent "^0.6.0"
|
tunnel-agent "^0.6.0"
|
||||||
uuid "^3.3.2"
|
uuid "^3.3.2"
|
||||||
|
|
||||||
require-dir@^1.0.0:
|
|
||||||
version "1.2.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/require-dir/-/require-dir-1.2.0.tgz#0d443b75e96012d3ca749cf19f529a789ae74817"
|
|
||||||
integrity sha512-LY85DTSu+heYgDqq/mK+7zFHWkttVNRXC9NKcKGyuGLdlsfbjEPrIEYdCVrx6hqnJb+xSu3Lzaoo8VnmOhhjNA==
|
|
||||||
|
|
||||||
require-directory@^2.1.1:
|
require-directory@^2.1.1:
|
||||||
version "2.1.1"
|
version "2.1.1"
|
||||||
resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
|
resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
|
||||||
|
@ -7814,6 +7787,15 @@ simple-concat@^1.0.0:
|
||||||
resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f"
|
resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f"
|
||||||
integrity sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==
|
integrity sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==
|
||||||
|
|
||||||
|
simple-git@^2.44.0:
|
||||||
|
version "2.44.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/simple-git/-/simple-git-2.44.0.tgz#94eca4162b7e21707b5a1a40b22e6f29b007d3a8"
|
||||||
|
integrity sha512-wIjcAmymhzgdaM0Y/a+XxmNGlivvHQTPZDYXVmyHMShVDwdeVqu3+OOyDbYu0DnfVzqLs2EOxRTgMNbC3YquwQ==
|
||||||
|
dependencies:
|
||||||
|
"@kwsites/file-exists" "^1.1.1"
|
||||||
|
"@kwsites/promise-deferred" "^1.1.1"
|
||||||
|
debug "^4.3.1"
|
||||||
|
|
||||||
simple-glob@~0.2.0:
|
simple-glob@~0.2.0:
|
||||||
version "0.2.0"
|
version "0.2.0"
|
||||||
resolved "https://registry.yarnpkg.com/simple-glob/-/simple-glob-0.2.0.tgz#95cf6a5fb5d84843a52a58529cba31b0f5c3478c"
|
resolved "https://registry.yarnpkg.com/simple-glob/-/simple-glob-0.2.0.tgz#95cf6a5fb5d84843a52a58529cba31b0f5c3478c"
|
||||||
|
@ -8253,21 +8235,6 @@ strip-ansi@^6.0.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
ansi-regex "^5.0.0"
|
ansi-regex "^5.0.0"
|
||||||
|
|
||||||
strip-bom-buf@^1.0.0:
|
|
||||||
version "1.0.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/strip-bom-buf/-/strip-bom-buf-1.0.0.tgz#1cb45aaf57530f4caf86c7f75179d2c9a51dd572"
|
|
||||||
integrity sha1-HLRar1dTD0yvhsf3UXnSyaUd1XI=
|
|
||||||
dependencies:
|
|
||||||
is-utf8 "^0.2.1"
|
|
||||||
|
|
||||||
strip-bom-stream@^3.0.0:
|
|
||||||
version "3.0.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/strip-bom-stream/-/strip-bom-stream-3.0.0.tgz#956bcc5d84430f69256a90ed823765cd858e159c"
|
|
||||||
integrity sha1-lWvMXYRDD2klapDtgjdlzYWOFZw=
|
|
||||||
dependencies:
|
|
||||||
first-chunk-stream "^2.0.0"
|
|
||||||
strip-bom-buf "^1.0.0"
|
|
||||||
|
|
||||||
strip-bom@^2.0.0:
|
strip-bom@^2.0.0:
|
||||||
version "2.0.0"
|
version "2.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e"
|
resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e"
|
||||||
|
@ -9047,7 +9014,7 @@ vinyl@^0.5.0:
|
||||||
clone-stats "^0.0.1"
|
clone-stats "^0.0.1"
|
||||||
replace-ext "0.0.1"
|
replace-ext "0.0.1"
|
||||||
|
|
||||||
vinyl@^2.0.0, vinyl@^2.0.1, vinyl@^2.1.0:
|
vinyl@^2.0.0, vinyl@^2.1.0:
|
||||||
version "2.2.0"
|
version "2.2.0"
|
||||||
resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-2.2.0.tgz#d85b07da96e458d25b2ffe19fece9f2caa13ed86"
|
resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-2.2.0.tgz#d85b07da96e458d25b2ffe19fece9f2caa13ed86"
|
||||||
integrity sha512-MBH+yP0kC/GQ5GwBqrTPTzEfiiLjta7hTtvQtbxBgTeSXsmKQRQecjibMbxIXzVT3Y9KJK+drOz1/k+vsu8Nkg==
|
integrity sha512-MBH+yP0kC/GQ5GwBqrTPTzEfiiLjta7hTtvQtbxBgTeSXsmKQRQecjibMbxIXzVT3Y9KJK+drOz1/k+vsu8Nkg==
|
||||||
|
|
Loading…
Reference in New Issue