Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found
Select Git revision
Loading items

Target

Select target project
  • cordeliaze/cesium
  • pfouque06/cesium
  • wellno1/cesium
  • 1000i100/cesium
  • vincentux/cesium
  • calbasi/cesium
  • thomasbromehead/cesium
  • matograine/cesium
  • clients/cesium-grp/cesium
  • cedricmenec/cesium
  • Pamplemousse/cesium
  • etienneleba/cesium
  • tnntwister/cesium
  • scanlegentil/cesium
  • morvanc/cesium
  • yyy/cesium
  • Axce/cesium
  • Bertrandbenj/cesium
  • Lupus/cesium
  • elmau/cesium
  • MartinDelille/cesium
  • tykayn/cesium
  • numeropi/cesium
  • Vivakvo/cesium
  • pokapow/cesium
  • pini-gh/cesium
  • anam/cesium
  • RavanH/cesium
  • bpresles/cesium
  • am97/cesium
  • tuxmain/cesium
  • jytou/cesium
  • oliviermaurice/cesium
  • 666titi999/cesium
  • Yvv/cesium
35 results
Select Git revision
Loading items
Show changes
Showing
with 1224 additions and 0 deletions
#!/bin/bash
# Get to the root project
if [[ "_" == "_${PROJECT_DIR}" ]]; then
cd ..
PROJECT_DIR=`pwd`
export PROJECT_DIR
fi;
# Preparing Android environment
. ${PROJECT_DIR}/scripts/env-android.sh
if [[ $? -ne 0 ]]; then
exit 1
fi
cd ${PROJECT_DIR}
# Run the build
echo "Running Android emulator..."
ionic cordova emulate android --warning-mode=none --color
#!/bin/sh
# Get to the root project
SCRIPT_DIR=$(dirname "$(readlink "$BASH_SOURCE" || echo "$BASH_SOURCE")")
PROJECT_DIR=$(cd "${SCRIPT_DIR}/.." && pwd -P)
export PROJECT_DIR
# Preparing environment
. "${PROJECT_DIR}/scripts/env-global.sh"
BUILD_TOOLS_DIR="${ANDROID_SDK_ROOT}/build-tools/${ANDROID_SDK_VERSION}/"
if test -z "${CORDOVA_ANDROID_GRADLE_DISTRIBUTION_URL}"; then
echo "ERROR: Missing Gradle distribution URL - please export env variable 'CORDOVA_ANDROID_GRADLE_DISTRIBUTION_URL'"
fi
echo "--- Preparing Android environment:"
echo " Root: ${PROJECT_DIR}"
echo " NodeJS: ${NODE_VERSION} with options: ${NODE_OPTIONS}"
echo " Android SDK: ${ANDROID_SDK_ROOT}"
echo " Android CLI: ${ANDROID_SDK_CLI_ROOT}"
echo " Build Tools: ${ANDROID_BUILD_TOOLS_ROOT}"
echo " Gradle: ${GRADLE_HOME} with options: ${GRADLE_OPTS}"
echo " Java: ${JAVA_HOME}"
# Make sure javac exists
JAVAC_PATH=$(which javac)
if test -z "${JAVAC_PATH}"; then
echo "ERROR: 'javac' executable not found in PATH. Make sure you have installed a complete Java JDK, and not only a JRE."
#exit 1
fi
# Prepare Android SDK tools
if ! test -d "${ANDROID_SDK_CLI_ROOT}"; then
. ${PROJECT_DIR}/scripts/install-android-sdk-tools.sh
if test $? -ne 0; then
echo "ERROR: Unable to install Android SDK Tools & CLI"
fi
else
# Add SDK CLI to path
export PATH=${ANDROID_SDK_CLI_ROOT}/bin:$PATH
fi
# Install Gradle
if test -z "$(which gradle)" && ! test -d "${GRADLE_HOME}"; then
cd "${PROJECT_DIR}/scripts"
echo "--- Installing gradle... ${GRADLE_HOME}"
test -e "gradle-${GRADLE_VERSION}-all.zip" || wget -kL ${CORDOVA_ANDROID_GRADLE_DISTRIBUTION_URL}
GRADLE_PARENT=$(dirname $GRADLE_HOME)
test -e "${GRADLE_PARENT}" || mkdir -p ${GRADLE_PARENT}
test -e "${GRADLE_PARENT}/gradle-${GRADLE_VERSION}" || unzip -qq gradle-${GRADLE_VERSION}-all.zip -d "${GRADLE_PARENT}"
if test $? -eq 0; then
test -e "${GRADLE_HOME}" || mv "${GRADLE_PARENT}/gradle-${GRADLE_VERSION}" "${GRADLE_HOME}"
if test $? -eq 0; then
test -e "${GRADLE_PARENT}/gradle-${GRADLE_VERSION}" || rm "${GRADLE_PARENT}/gradle-${GRADLE_VERSION}"
fi
fi
if test $? -ne 0; then
echo "ERROR: Unable to install Gradle"
fi
fi
# Prepare Android platform
if ! test -d "${PROJECT_DIR}/platforms/android"; then
echo "--- Adding Cordova Android platform..."
cd "${PROJECT_DIR}"
ionic cordova prepare android --color --verbose
if test $? -ne 0; then
echo "ERROR: Cannot install Android platform (using cordova)"
fi
fi
# Copy local files
ANDROID_OVERWRITE_DIR=${PROJECT_DIR}/.local/android
if test -d "${ANDROID_OVERWRITE_DIR}"; then
echo "Copying files from directory '${ANDROID_OVERWRITE_DIR}' into '${PROJECT_DIR}/platforms/android'..."
cp -rf ${ANDROID_OVERWRITE_DIR}/* ${PROJECT_DIR}/platforms/android
if test $? -ne 0; then
echo "ERROR: Cannot copy local files '${ANDROID_OVERWRITE_DIR}/*'"
fi
else
echo "No directory '${ANDROID_OVERWRITE_DIR}' not found. Please create it, with a file 'release-signing.properties' for release signing"
fi
echo
echo "--- Checking Android requirements..."
cordova requirements android --verbose
if test $? -ne 0; then
echo "ERROR: Check Cordova requirements failed"
fi
# Add Gradle to path
PATH=${GRADLE_HOME}/bin:${PATH}
# Export useful variables
export PATH \
BUILD_TOOLS_DIR
echo "--- Android environment is ready!"
#!/bin/bash
# Get to the root project
if [[ "_" == "_${PROJECT_DIR}" ]]; then
SCRIPT_DIR=$(dirname $0)
PROJECT_DIR=$(cd ${SCRIPT_DIR}/.. && pwd)
export PROJECT_DIR
fi;
if [[ ! -f "${PROJECT_DIR}/package.json" ]]; then
echo "Invalid project dir: file 'package.json' not found in ${PROJECT_DIR}"
echo "-> Make sur to run the script 'prepare_env.sh' from the project directory, or export env variable 'PROJECT_DIR'"
exit 1
fi;
cd ${PROJECT_DIR}
#echo "Cleaning project dependencies..."
#rm -rf node_modules
echo "Cleaning Cordova plugins..."
rm -rf plugins
echo "Cleaning Android platform..."
#rm -rf platforms/android
#!/bin/sh
# Get to the root project
SCRIPT_DIR=$(dirname "$(readlink "$BASH_SOURCE" || echo "$BASH_SOURCE")")
PROJECT_DIR=$(cd "${SCRIPT_DIR}/.." && pwd -P)
export PROJECT_DIR
echo "Preparing project environment..."
echo " - using Project dir: $PROJECT_DIR"
if ! test -f "${PROJECT_DIR}/package.json"; then
echo "ERROR: Invalid project dir: file 'package.json' not found in ${PROJECT_DIR}"
echo " -> Make sure to run the script inside his directory, or export env variable 'PROJECT_DIR'"
#exit 1
fi;
PROJECT_NAME="cesium"
REPO="duniter/cesium"
REPO_API_URL="https://api.github.com/repos/${REPO}"
REPO_PUBLIC_URL="https://github.com/${REPO}"
NODE_VERSION=16
#NODE_OPTIONS=--max-old-space-size=4096
IONIC_CLI_VERSION=6.20.9
ANDROID_NDK_VERSION=21.0.6113669 # Should be compatible with 'cordova-sqlite-storage' plugin
ANDROID_SDK_VERSION=33.0.2
ANDROID_SDK_CLI_VERSION=8512546 # See https://developer.android.com/studio#command-tools
ANDROID_SDK_ROOT="${HOME}/Android/Sdk"
ANDROID_ALTERNATIVE_SDK_ROOT=/usr/lib/android-sdk
ANDROID_SDK_CLI_ROOT=${ANDROID_SDK_ROOT}/cmdline-tools/${ANDROID_SDK_CLI_VERSION}
ANDROID_BUILD_TOOLS_ROOT="${ANDROID_SDK_ROOT}/build-tools/${ANDROID_SDK_VERSION}"
ANDROID_OUTPUT_APK_PREFIX=app
ANDROID_OUTPUT_APK=${PROJECT_DIR}/platforms/android/${ANDROID_OUTPUT_APK_PREFIX}/build/outputs/apk
ANDROID_OUTPUT_APK_DEBUG=${ANDROID_OUTPUT_APK}/debug
ANDROID_OUTPUT_APK_RELEASE=${ANDROID_OUTPUT_APK}/release
ANDROID_OUTPUT_MIN_SDK_VERSION=22 # Used by release-android-sign.sh
ANDROID_OUTPUT_MAX_SDK_VERSION=34 # Used by release-android-sign.sh
DIST_WEB=${PROJECT_DIR}/dist/web/build
DIST_ANDROID=${PROJECT_DIR}/dist/android/build # Where APK are stored
SOURCES_ANDROID=${PROJECT_DIR}/dist/android/sources # Where git cesium-android is checkout
# Addons Mozilla Web extension ID
WEB_EXT_ID=${WEB_EXT_ID:-"{6f9922f7-a054-4609-94ce-d269993246a5}"}
# /!\ WARN can be define in your <project>/.local/env.sh file
#JAVA_HOME=
GRADLE_VERSION=6.7.1
GRADLE_HOME=${HOME}/.gradle/${GRADLE_VERSION}
CORDOVA_ANDROID_GRADLE_DISTRIBUTION_URL=https://services.gradle.org/distributions/gradle-${GRADLE_VERSION}-all.zip
GRADLE_OPTS=-Dorg.gradle.jvmargs=-Xmx512m
# Override with a local file, if any
if test -f "${PROJECT_DIR}/.local/env.sh"; then
echo "Loading environment variables from: '.local/env.sh'"
. ${PROJECT_DIR}/.local/env.sh
else
echo "No file '${PROJECT_DIR}/.local/env.sh' found. Will use defaults"
fi
# Checking Java installed
if test -d "${JAVA_HOME}"; then
JAVA_CMD=`which java`
if test -z "${JAVA_CMD}"; then
echo "ERROR: No Java installed. Please install java, or set env variable JAVA_HOME "
#exit 1
fi
# Check the Java version
JAVA_VERSION=$(java -version 2>&1 | egrep "(java|openjdk) version" | awk '{print $3}' | tr -d \")
if test $? -ne 0 || test -z "${JAVA_VERSION}"; then
echo "No Java JRE 1.8 found in machine. This is required for Android artifacts."
else
if ! test "${JAVA_VERSION}" -eq "11"; then
JAVA_MAJOR_VERSION=$(echo ${JAVA_VERSION} | awk '{split($0, array, ".")} END{print array[1]}')
JAVA_MINOR_VERSION=$(echo ${JAVA_VERSION} | awk '{split($0, array, ".")} END{print array[2]}')
if ! test "${JAVA_MAJOR_VERSION}" -eq "11" || ! test "${JAVA_MINOR_VERSION}" -eq "0"; then
echo "ERROR: Require a Java SDK in version 11, but found ${JAVA_VERSION}. You can override your default JAVA_HOME in '.local/env.sh'."
fi
fi
fi
fi
# Check Android SDK root path
if test -z "${ANDROID_SDK_ROOT}" || ! test -d "${ANDROID_SDK_ROOT}"; then
if test -d "${ANDROID_ALTERNATIVE_SDK_ROOT}"; then
export ANDROID_SDK_ROOT="${ANDROID_ALTERNATIVE_SDK_ROOT}"
else
echo "ERROR: Please set env variable ANDROID_SDK_ROOT to an existing directory"
fi
fi
# Add Java, Android SDK tools to path
PATH=${ANDROID_SDK_CLI_ROOT}/bin:${GRADLE_HOME}/bin:${JAVA_HOME}/bin$:$PATH
# Export useful variables
export PATH \
PROJECT_DIR \
JAVA_HOME \
ANDROID_SDK_ROOT \
ANDROID_SDK_CLI_ROOT \
CORDOVA_ANDROID_GRADLE_DISTRIBUTION_URL
# Node JS
export NVM_DIR="$HOME/.nvm"
if test -d "${NVM_DIR}"; then
# Load NVM
. "${NVM_DIR}/nvm.sh"
# Switch to expected version
nvm use ${NODE_VERSION}
# Or install it
if test $? -ne 0; then
nvm install ${NODE_VERSION}
fi
else
echo "nvm (Node version manager) not found (directory ${NVM_DIR} not found). Please install, and retry"
fi
# Checking if some global dependencies are missing
GLOBAL_TOOLS="yarn gulp ionic cordova web-ext cordova-res native-run"
MISSING_GLOBAL_TOOLS=
for GLOBAL_TOOL in ${GLOBAL_TOOLS}
do
GLOBAL_TOOL_PATH=$(which ${GLOBAL_TOOL})
if test -z "${GLOBAL_TOOL_PATH}"; then
echo "- Missing global dependency: ${GLOBAL_TOOL}"
MISSING_GLOBAL_TOOLS="${GLOBAL_TOOL} ${MISSING_GLOBAL_TOOLS}"
fi
done
# Install global dependencies
if ! test -z "${MISSING_GLOBAL_TOOLS}"; then
echo "Installing global dependencies..."
npm install -g yarn gulp cordova @ionic/cli@$IONIC_CLI_VERSION web-ext cordova-res native-run
if ! test $? == 0; then
echo "ERROR: Unable to install global dependencies"
#exit 1
fi
# Make sure Ionic use yarn
ionic config set -g yarn true
fi
# Install project dependencies
if ! test -d "${PROJECT_DIR}/node_modules"; then
echo "--- Installing project dependencies..."
cd ${PROJECT_DIR}
yarn install
fi
# Install platform Android
if ! test -d "${PROJECT_DIR}/platforms/android"; then
echo "-- Installing platform Android..."
cd ${PROJECT_DIR}
ionic cordova platform add android
if ! test $? == 0; then
echo "ERROR: Unable to install Android platform. Will not be able to build Android artifacts!"
#exit 1
fi
fi
if ! test -d "${PROJECT_DIR}/dist/desktop"; then
echo "-- Checkout submodules (dist/desktop) ..."
cd "${PROJECT_DIR}"
git submodule init && git submodule sync && git submodule update --remote --merge
if ! test $? == 0; then
echo "ERROR: Unable to sync git submodule. Will not be able to build desktop artifacts!"
#exit 1
fi
fi
export PATH \
PROJECT_DIR PROJECT_NAME \
REPO REPO_API_URL REPO_PUBLIC_URL \
NODE_VERSION \
JAVA_HOME \
ANDROID_NDK_VERSION ANDROID_SDK_VERSION ANDROID_SDK_CLI_VERSION \
ANDROID_HOME ANDROID_SDK_ROOT ANDROID_ALTERNATIVE_SDK_ROOT ANDROID_SDK_CLI_ROOT \
ANDROID_OUTPUT_APK ANDROID_OUTPUT_APK_DEBUG ANDROID_OUTPUT_APK_RELEASE \
CORDOVA_ANDROID_GRADLE_DISTRIBUTION_URL \
GRADLE_HOME GRADLE_OPTS \
DIST_WEB DIST_ANDROID \
WEB_EXT_ID
echo "Project environment is ready!"
# Cordova Hooks
Cordova Hooks represent special scripts which could be added by application and plugin developers or even by your own build system to customize cordova commands. See Hooks Guide for more details: https://cordova.apache.org/docs/en/latest/guide/appdev/hooks/.
\ No newline at end of file
#!/usr/bin/env node
const gulp = require('gulp'),
path = require("path"),
log = require('fancy-log'),
colors = require('ansi-colors');
module.exports = function(context) {
const now = Date.now();
log("Executing '" + colors.cyan("after_prepare") + "' hook...");
const projectRoot = context && context.opts && context.opts.projectRoot || '.';
const platforms = context && context.opts && context.opts.platforms || ['android'];
const gulpFile = require(path.join(projectRoot, 'gulpfile'));
if (!projectRoot || !platforms || !gulpFile) return; // Skip
return Promise.all(platforms
.map(platform => {
return new Promise(done => gulpFile.cdvAfterPrepare(done, projectRoot, platform.trim().toLowerCase()));
}))
.then(() => {
log(colors.grey("Hook 'after_prepare' finished in " + (Date.now() - now) + 'ms'));
});
}
#!/usr/bin/env node
const gulp = require('gulp'),
path = require("path"),
log = require('fancy-log'),
colors = require('ansi-colors');
module.exports = function(context) {
const now = Date.now();
log("Executing '" + colors.cyan("before_compile") + "' hook...");
const projectRoot = context && context.opts && context.opts.projectRoot || '.';
const platforms = context && context.opts && context.opts.platforms || ['android'];
const gulpFile = require(path.join(projectRoot, 'gulpfile'));
if (!projectRoot || !platforms || !gulpFile) return; // Skip
return Promise.all(platforms
.map(platform => {
return new Promise(done => gulpFile.cdvBeforeCompile(done, projectRoot, platform.trim().toLowerCase()));
}))
.then(() => {
log(colors.grey("Hook 'before_compile' finished in " + (Date.now() - now) + 'ms'));
});
}
#!/usr/bin/env node
const gulp = require('gulp'),
path = require("path"),
colors = require('ansi-colors'),
jshint = require('../node/jshint-utils'),
log = require('fancy-log');
module.exports = function(context) {
const now = Date.now();
log("Executing '" + colors.cyan("before_prepare") + "' hook...");
const projectRoot = context && context.opts && context.opts.projectRoot || '.';
const platforms = context && context.opts && context.opts.platforms || ['android'];
const gulpFile = require(path.join(projectRoot, 'gulpfile'));
if (!projectRoot || !platforms || !gulpFile) return; // Skip
// Run JS Lint
return jshint.validate(projectRoot) // new Promise(done => gulpFile.lint(done))
.then(() => {
log(colors.grey("Hook 'before_prepare' finished in " + (Date.now() - now) + 'ms'));
});
}
#!/bin/bash -e
# Load global variables
. "$(dirname $0)/env-global.sh"
# Make sure variables are set
if [[ "_" == "_${ANDROID_SDK_ROOT}" ]]; then
echo "Please set env variable ANDROID_SDK_ROOT"
exit 1
fi
if [[ "_" == "_${ANDROID_SDK_CLI_ROOT}" ]]; then
echo "Please set env variable ANDROID_SDK_CLI_ROOT"
exit 1
fi
if [[ ! -d "${ANDROID_SDK_CLI_ROOT}/bin" ]]; then
echo "-------------------------------------------"
echo "Installing Android SDK CLI... ${ANDROID_SDK_CLI_ROOT}"
mkdir -vp "${ANDROID_SDK_CLI_ROOT}"
ANDROID_SDK_CLI_FILE="commandlinetools-linux-${ANDROID_SDK_CLI_VERSION}_latest.zip"
test -e "${ANDROID_SDK_CLI_FILE}" || wget -kL https://dl.google.com/android/repository/${ANDROID_SDK_CLI_FILE}
test -e "${ANDROID_SDK_CLI_ROOT}" || sudo mkdir -p "${ANDROID_SDK_CLI_ROOT}"
test -e "/tmp/cmdline-tools" && sudo rm -rf /tmp/cmdline-tools
test -e "${ANDROID_SDK_CLI_ROOT}" && sudo unzip -qq ${ANDROID_SDK_CLI_FILE} -d /tmp
test -e "/tmp/cmdline-tools" && sudo mv /tmp/cmdline-tools/* "${ANDROID_SDK_CLI_ROOT}"
test -e "${ANDROID_SDK_CLI_FILE}" && sudo rm "${ANDROID_SDK_CLI_FILE}"
fi
if [[ ! -d "${ANDROID_SDK_CLI_ROOT}/bin" ]]; then
echo "Failed to install Android SDK CLI. If you are not root, try with \`sudo -E ./install-android-sdk-tools.sh\`"
exit 1
fi
mkdir -p ${ANDROID_SDK_ROOT}/licenses
echo 8933bad161af4178b1185d1a37fbf41ea5269c55 > ${ANDROID_SDK_ROOT}/licenses/android-sdk-license
echo 601085b94cd77f0b54ff86406957099ebe79c4d6 > ${ANDROID_SDK_ROOT}/licenses/android-googletv-license
echo 33b6a2b64607f11b759f320ef9dff4ae5c47d97a > ${ANDROID_SDK_ROOT}/licenses/google-gdk-license
yes | sdkmanager --licenses "--sdk_root=${ANDROID_SDK_ROOT}"
mkdir -p ~/.android
touch ~/.android/repositories.cfg
echo y | sdkmanager "platform-tools" "--sdk_root=${ANDROID_SDK_ROOT}" | tee sdkmanager.log
echo y | sdkmanager "extras;android;m2repository" "--sdk_root=${ANDROID_SDK_ROOT}" | tee -a sdkmanager.log
echo y | sdkmanager "extras;google;m2repository" "--sdk_root=${ANDROID_SDK_ROOT}" | tee -a sdkmanager.log
echo y | sdkmanager "cmdline-tools;latest" "--sdk_root=${ANDROID_SDK_ROOT}" | tee sdkmanager.log
# Install build tools
echo ""
echo "-------------------------------------------"
echo "--- Installing Android build-tools ${ANDROID_SDK_VERSION}..."
echo y | sdkmanager "build-tools;${ANDROID_SDK_VERSION}" --sdk_root=${ANDROID_SDK_ROOT} | tee -a sdkmanager.log
[[ $? -ne 0 ]] && exit 1
# Install platforms
TARGET_VERSIONS="22 23 24 25 26 27 28 29 30 31 32 33"
for TARGET_VERSION in $TARGET_VERSIONS
do
echo "-------------------------------------------"
echo "--- Installing Android target ${TARGET_VERSION}..."
echo y | sdkmanager "platforms;android-${TARGET_VERSION}" --sdk_root=${ANDROID_SDK_ROOT} | tee -a sdkmanager.log
[[ $? -ne 0 ]] && exit 1
done
# Install NDK
echo "-------------------------------------------"
echo "--- Installing Android NDK..."
echo y | sdkmanager "ndk;22.0.7026061" --sdk_root=${ANDROID_SDK_ROOT} | tee -a sdkmanager.log
#echo y | sdkmanager "ndk;25.2.9519653" --sdk_root=${ANDROID_SDK_ROOT} | tee -a sdkmanager.log
echo y | sdkmanager "ndk;${ANDROID_NDK_VERSION}" --sdk_root=${ANDROID_SDK_ROOT} | tee -a sdkmanager.log
echo "--- Installing Android [OK]"
#!/bin/bash
# Get to the root project
if [[ "_" == "_${PROJECT_DIR}" ]]; then
SCRIPT_DIR=$(dirname $0)
PROJECT_DIR=$(cd ${SCRIPT_DIR}/.. && pwd)
export PROJECT_DIR
fi;
# Preparing Android environment
. ${PROJECT_DIR}/scripts/env-android.sh
if [[ $? -ne 0 ]]; then
exit 1
fi
cd ${PROJECT_DIR}
echo "Updating Ionic..."
npm update -g @ionic/cli
echo "Updating Cordova..."
npm update -g cordova@latest
if [[ $? -ne 0 ]]; then
exit 1
fi
if [[ ! -d "${PROJECT_DIR}/plugins" ]]; then
echo "Installing Cordova plugins..."
ionic cordova prepare
fi
#echo "Updating Cordova plugins..."
#ionic cordova platform update android --save
#if [[ $? -ne 0 ]]; then
# exit 1
#fi
'use strict';
const fs = require('fs'),
path = require('path'),
jshint = require('jshint').JSHINT,
log = require('fancy-log'),
colors = require('ansi-colors'),
glob = require("glob");
async function lintFolder(dir) {
log(colors.grey('Processing folder ' + dir + '...'));
const files = fs.readdirSync(dir);
return Promise.all(files.map(file => {
file = dir + '/' + file;
return new Promise((resolve, reject) => {
const stat = fs.statSync(file);
if (stat.isDirectory() || path.extname(file) !== ".js") return resolve(); // Skip
return lintFile(file).then(resolve).catch(reject);
})
}));
}
function lintFile(file) {
return new Promise((resolve, reject) => {
log(colors.grey('Processing file ./' + file + '...'));
fs.readFile(file, (err, data) => {
if(err) {
log(colors.red('Error: ' + err));
reject(err);
return;
}
if(jshint(data.toString())) {
resolve();
} else {
const out = jshint.data(),
errors = out.errors;
for(let j = 0; j < errors.length; j++) {
log(colors.red(`${colors.bold(file + ':' + errors[j].line + ':0' )} -> ${colors.bold(errors[j].evidence.trim())}`));
log(colors.red(` ${errors[j].reason}`));
}
log('-----------------------------------------');
reject();
}
});
});
}
function getJSFolder(rootDir) {
// Get folders, from files
const jsFolders = glob.sync(rootDir + "/www/**/*.js", {nonull: true})
// Map to file's folder
.map(file => file.substring(0, file.lastIndexOf('/')))
// Reduce to a map of folders
.reduce((res, folder) => {
if (folder.indexOf('www/dist/') !== -1 || // Exclude dist js
folder.indexOf('/plugins/rml') !== -1 || // Exclude plugin tutorial
folder.indexOf('www/js/vendor') !== -1 || // exclude vendor libs
folder.indexOf('www/lib') !== -1 // exclude www/lib
) {
return res;
}
res[folder] = res[folder] || true;
return res;
}, {});
return Object.keys(jsFolders);
}
function validate(projectRoot) {
projectRoot = projectRoot || '.';
const now = Date.now();
log(colors.green('Linting JS files... ' + projectRoot));
const jsFolders = getJSFolder(projectRoot);
// Process each folder with Js file
return Promise.all(
jsFolders.map(folder => lintFolder(folder))
)
.catch(err => {
console.log(err);
log(colors.red(`Some JS files have errors`));
process.exit(1);
throw err;
})
.then(() => {
// Success message
log(colors.grey('Linting JS files finished in ' + (Date.now() - now) + 'ms'));
});
}
/* --------------------------------------------------------------------------
-- Define public function
--------------------------------------------------------------------------*/
exports.validate = validate;
#!/usr/bin/env node
const jshint = require('./jshint-utils');
jshint.validate();
#!/usr/bin/env node
const fs = require('fs'),
path = require('path');
// Remove not used file (from old cordova-uglify plugin)
try {
fs.unlinkSync('hooks/uglify-config.json');
} catch (e) {
// Silent
}
// Replace /www/lib with a symbolic link to bower component libs
try {
fs.unlinkSync('www/lib');
}
catch(e ) {
// Silent
}
try {
fs.symlinkSync(path.resolve('node_modules/@bower_components'), 'www/lib', 'junction');
} catch (e) {
throw new Error(e);
}
// Remove some symbolic links, from the www/lib.
// This is a workaround, because Cordova copy failed on this file
try {
fs.unlinkSync('www/lib/ionic-material/node_modules/.bin/gulp');
}
catch(e) {
// Silent
}
try {
fs.unlinkSync('www/lib/moment/meteor/moment.js');
} catch (e) {
// Silent
}
## Chat GPT prompt for translations
I need translations for the following messages in a web application, in these languages/locales: en, en-GB, de-DE, eo-EO, es-CT, es-ES, it-IT, nl-NL, pt-PT. Please follow these constraints: maintain the input JSON format, indentation, and message keys; preserve HTML tags and case; and keep proper nouns untranslated (e.g., "Duniter" and "Cesium"). Here is the source message in French:
```json
"ORIGINAL_KEY_UNCHANGED": "<your_translation>"
```
Please provide the translations for each language/locale in this format:
- <language_code> (e.g., en, en-GB, ...):
```json
{
"ORIGINAL_KEY_UNCHANGED": "<your_translation>"
}
```
If you have any questions before starting, please ask for clarifications to avoid mistakes.
\ No newline at end of file
#!/bin/bash
# Get to the root project
if [[ "_" == "_${PROJECT_DIR}" ]]; then
SCRIPT_DIR=$(dirname $0)
PROJECT_DIR=$(cd ${SCRIPT_DIR}/.. && pwd)
export PROJECT_DIR
fi;
# Default env variables (can be override in '.local/env.sh' file)
KEYSTORE_FILE=${PROJECT_DIR}/.local/android/Cesium.keystore
KEY_ALIAS=Cesium
KEYSTORE_PWD=
# Preparing Android environment
. ${PROJECT_DIR}/scripts/env-android.sh
[[ $? -ne 0 ]] && exit 1
APK_SIGNED_FILE=${APK_SIGNED_FILE:-"${ANDROID_OUTPUT_APK_RELEASE}/${ANDROID_OUTPUT_APK_PREFIX}-release-signed.apk"}
APK_UNSIGNED_FILE=${ANDROID_OUTPUT_APK_RELEASE}/${ANDROID_OUTPUT_APK_PREFIX}-release-unsigned.apk
APK_UNSIGNED_FILE_ALTERNATIVE=${ANDROID_OUTPUT_APK_RELEASE}/${ANDROID_OUTPUT_APK_PREFIX}-release.apk
cd ${PROJECT_DIR}
# Checking files
if [[ ! -f "${KEYSTORE_FILE}" ]]; then
echo "ERROR: Keystore file not found: ${KEYSTORE_FILE}"
exit 1
fi
if [[ ! -f "${APK_UNSIGNED_FILE}" ]]; then
# Check in an alternative path (e.g. Android default signed file)
if [[ ! -f "${APK_UNSIGNED_FILE_ALTERNATIVE}" ]]; then
echo "ERROR: Unsigned APK file not found: ${APK_UNSIGNED_FILE}"
exit 1
fi
APK_UNSIGNED_FILE=${APK_UNSIGNED_FILE_ALTERNATIVE}
fi
echo "--- Signing Android APK..."
echo ""
# Remove previous version (only if unsigned exists)
if [[ -f "${APK_SIGNED_FILE}" ]]; then
echo "Delete previous signed APK file: ${APK_SIGNED_FILE}"
rm -f ${APK_SIGNED_FILE}*
fi
#echo "Executing jarsigner..."
#jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -storepass ${KEYSTORE_PWD} -keystore ${KEYSTORE_FILE} ${APK_UNSIGNED_FILE} ${KEY_ALIAS}
#[[ $? -ne 0 ]] && exit 1
#echo "Executing jarsigner [OK]"
cd ${ANDROID_BUILD_TOOLS_ROOT}
[[ $? -ne 0 ]] && exit 1
echo "Executing zipalign..."
./zipalign -v 4 ${APK_UNSIGNED_FILE} ${APK_SIGNED_FILE}
[[ $? -ne 0 ]] && exit 1
echo "Executing zipalign [OK]"
echo ""
echo "Executing apksigner..."
./apksigner sign --ks ${KEYSTORE_FILE} --ks-pass "pass:${KEYSTORE_PWD}" --ks-key-alias ${KEY_ALIAS} \
--min-sdk-version ${ANDROID_OUTPUT_MIN_SDK_VERSION} \
--max-sdk-version ${ANDROID_OUTPUT_MAX_SDK_VERSION} \
${APK_SIGNED_FILE}
[[ $? -ne 0 ]] && exit 1
echo "Executing apksigner [OK]"
echo ""
echo "Verify APK signature..."
./apksigner verify --verbose --print-certs ${APK_SIGNED_FILE}
[[ $? -ne 0 ]] && exit 1
echo "Verify APK signature [OK]"
echo ""
export APK_SIGNED_FILE
echo "--- Successfully generated signed APK at: ${APK_SIGNED_FILE}"
exit 0
#!/bin/bash
# Get to the root project
if [[ "_" == "_${PROJECT_DIR}" ]]; then
SCRIPT_DIR=$(dirname $0)
PROJECT_DIR=$(cd ${SCRIPT_DIR}/.. && pwd)
export PROJECT_DIR
fi;
### Get version to release
cd ${PROJECT_DIR}
current=$(grep -m1 -P "version\": \"\d+.\d+.\d+(-\w+[-0-9]*)?\"" package.json | grep -oP "\d+.\d+.\d+(-\w+[-0-9]*)?")
if [[ "_$current" == "_" ]]; then
echo " - Make sure the file 'package.json' exists and is readable."
echo " - Check version format is: x.y.z (x and y should be an integer)"
exit 1
fi
# Preparing the environment
source ${PROJECT_DIR}/scripts/env-global.sh
[[ $? -ne 0 ]] && exit 1
# Make sure to checkout the source project
if ! test -d "${SOURCES_ANDROID}"; then
echo "-- Checkout submodules (dist/android/sources) ..."
cd "${PROJECT_DIR}"
git submodule init && git submodule sync && git submodule update --remote --merge
if ! test $? == 0; then
echo "ERROR: Unable to sync git submodule. Will not be able commit android sources !"
#exit 1
else
echo "-- Checkout submodules (dist/android/sources) [OK]"
fi
fi
if test -d "${SOURCES_ANDROID}"; then
# Revert changes in the Android sources project
cd ${SOURCES_ANDROID} || exit 1
git fetch && git reset --hard --merge HEAD
# Update sources, from platforms/android
echo "--- Copy Android sources from 'platforms/android' to '${SOURCES_ANDROID}' ..."
rsync -rlptgocq --exclude=.* --exclude=build --exclude=release-signing.* --exclude=*.keystore --delete --force "${PROJECT_DIR}/platforms/android/" "${SOURCES_ANDROID}/"
echo "--- Copy Android sources [OK] ..."
echo ""
echo "--- Git push Android sources, and tag as 'v$current'..."
cd ${SOURCES_ANDROID} || exit 1
git add -A
git commit -a -m "v$current"
git tag -f -a "v$current" -m "Release v$current"
# Push the tag
git push -f origin "v$current"
# Push the master branch
git push -f origin
if [[ $? -ne 0 ]]; then
echo "ERROR: cannot push Android sources at '${SOURCES_ANDROID}' ! Continue anyway..."
else
echo "--- Git push Android sources, and tag [OK]"
fi
fi
#!/bin/bash
# Get to the root project
if [[ "_" == "_${PROJECT_DIR}" ]]; then
SCRIPT_DIR=$(dirname $0)
PROJECT_DIR=$(cd ${SCRIPT_DIR}/.. && pwd)
export PROJECT_DIR
fi;
# Default env variables (can be override in '.local/env.sh' file)
KEYSTORE_FILE=${PROJECT_DIR}/.local/Cesium.keystore
KEY_ALIAS=Cesium
KEY_PWD=
# Preparing Android environment
cd ${PROJECT_DIR}
source scripts/env-android.sh
[[ $? -ne 0 ]] && exit 1
APK_SIGNED_FILE=${ANDROID_OUTPUT_APK_RELEASE}/${ANDROID_OUTPUT_APK_PREFIX}-release-signed.apk
APK_UNSIGNED_FILE=${ANDROID_OUTPUT_APK_RELEASE}/${ANDROID_OUTPUT_APK_PREFIX}-release-unsigned.apk
echo "--- Cleaning previous Android APK ..."
rm -f ${ANDROID_OUTPUT_APK_RELEASE}/*.apk*
echo "--- Cleaning previous Android APK [OK]"
echo ""
# Run the build
echo "--- Building Android APK..."
echo ""
yarn run build:android
[[ $? -ne 0 ]] && exit 1
echo "--- Building Android APK [OK]"
echo ""
# Sign APK file
cd ${PROJECT_DIR}/scripts
./release-android-sign.sh
# Check signed APK exists
if [[ ! -f "${APK_SIGNED_FILE}" ]]; then
echo "Missing signed APK file at: ${APK_SIGNED_FILE}"
exit 1
fi
# Get current version
cd ${PROJECT_DIR}
current=$(grep -m 1 -oP "version\": \"\d+.\d+.\d+(-\w+[-0-9]*)?\"" package.json | grep -m 1 -oP "\d+.\d+.\d+(-\w+[-0-9]*)?")
if [[ "_$current" == "_" ]]; then
echo "Unable to read the current version in 'package.json'. Please check version format is: x.y.z (x and y should be an integer)."
exit 1;
fi
# Copy signed APK to 'dist/android/build'
echo ""
echo "--- Copying Android APK to '${APK_FINAL_FILE}'..."
APK_BASENAME="${PROJECT_NAME}-v${current}-android.apk"
APK_FINAL_FILE="${DIST_ANDROID}/${APK_BASENAME}"
mkdir -p "${DIST_ANDROID}"
cp -f "${APK_SIGNED_FILE}" "${APK_FINAL_FILE}"
echo "--- Copying Android APK [OK]"
echo ""
#!/bin/bash
# Get to the root project
if [[ "_" == "_${PROJECT_DIR}" ]]; then
SCRIPT_DIR=$(dirname $0)
PROJECT_DIR=$(cd ${SCRIPT_DIR}/.. && pwd)
export PROJECT_DIR
fi;
cd ${PROJECT_DIR}
# Preparing the environment
source ${PROJECT_DIR}/scripts/env-global.sh
[[ $? -ne 0 ]] && exit 1
### Control that the script is run on `dev` branch
branch=$(git rev-parse --abbrev-ref HEAD)
if [[ ! "$branch" = "master" ]];
then
echo ">> This script must be run under \`master\` branch"
exit 1
fi
### Get version to release
current=$(grep -P "version\": \"\d+.\d+.\d+(-\w+[-0-9]*)?\"" package.json | grep -m 1 -oP "\d+.\d+.\d+(-\w+[-0-9]*)?")
if [[ "_$current" == "_" ]]; then
echo "Unable to read the current version in 'package.json'. Please check version format is: x.y.z (x and y should be an integer)."
exit 1;
fi
### Check submodule exists
if [[ ! -d "${PROJECT_DIR}/dist/desktop" ]]; then
echo "ERROR: dist/desktop not found -> Make sure git submodule has been init!"
exit 1
fi;
### Sign extension
case "$1" in
pre|rel)
echo "Building v$current desktop artifacts..."
;;
*)
echo "No task given"
echo "Usage:"
echo " > $0 pre|rel"
exit 1
;;
esac
cd "${PROJECT_DIR}/dist/desktop"
# Fetch last updates
git fetch origin && git merge origin/master || exit 1
### Skip windows assets (workaround because it often failed)
if [[ "${DESKTOP_ASSETS}" == "linux" ]]; then
echo "Skipping windows assets, because DESKTOP_ASSETS env was set to 'linux'."
EXPECTED_ASSETS="${PROJECT_NAME}-desktop-v$current-linux-x64.deb
${PROJECT_NAME}-desktop-v$current-linux-x64.tar.gz
${PROJECT_NAME}-desktop-v$current-linux-x64.AppImage"
fi
# Build desktop assets
./release.sh $current
[[ $? -ne 0 ]] && exit 1
#!/bin/bash
# Get to the root project
if [[ "_" == "_${PROJECT_DIR}" ]]; then
SCRIPT_DIR=$(dirname $0)
PROJECT_DIR=$(cd ${SCRIPT_DIR}/.. && pwd)
export PROJECT_DIR
fi;
# Preparing Android environment
cd ${PROJECT_DIR}
source scripts/env-global.sh
### Control that the script is run on `dev` branch
branch=$(git rev-parse --abbrev-ref HEAD)
if [[ ! "$branch" = "master" ]];
then
echo ">> This script must be run under \`master\` branch"
exit 1
fi
### Get version to release
current=$(grep -m 1 -oP "version\": \"\d+.\d+.\d+(-\w+[-0-9]*)?\"" package.json | grep -m 1 -oP "\d+.\d+.\d+(-\w+[-0-9]*)?")
if [[ "_$current" == "_" ]]; then
echo "Unable to read the current version in 'package.json'. Please check version format is: x.y.z (x and y should be an integer)."
exit 1;
fi
echo "Sending v$current extension for Mozilla..."
XPI_BASENAME=${PROJECT_NAME}-$current-an+fx.xpi
XPI_FILE=${PROJECT_DIR}/dist/web/build/${XPI_BASENAME}
XPI_FINAL_BASENAME=${PROJECT_NAME}-v$current-extension-firefox.xpi
XPI_FINAL_FILE=${PROJECT_DIR}/dist/web/build/${XPI_FINAL_BASENAME}
### Check AMO account
if [[ "_" == "_${AMO_JWT_ISSUER}" || "_" == "_${AMO_JWT_SECRET}" ]]; then
echo "ERROR: Unable to find Addons Mozilla account: "
echo " - Please add environment variables 'AMO_JWT_ISSUER' or 'AMO_JWT_SECRET', then retry."
echo " - You can use the file './local/env.sh'."
exit 1
fi
### Sign extension
case "$1" in
pre)
echo "web-ext sign \"--api-key=${AMO_JWT_ISSUER}\" \"--api-secret=${AMO_JWT_SECRET}\" \"--source-dir=${PROJECT_DIR}/dist/web/ext\" \"--artifacts-dir=${PROJECT_DIR}/dist/web/build\" --id=${WEB_EXT_ID} --channel=unlisted"
web-ext sign "--api-key=${AMO_JWT_ISSUER}" "--api-secret=${AMO_JWT_SECRET}" "--source-dir=${PROJECT_DIR}/dist/web/ext" "--artifacts-dir=${PROJECT_DIR}/dist/web/build" --id=${WEB_EXT_ID} --channel=unlisted
if [[ $? -ne 0 ]]; then
if [[ -f "${XPI_FILE}" || -f "${XPI_FINAL_FILE}" ]]; then
echo "WARN: web-ext failed! Continue anyway, because output file exists"
else
exit 1
fi;
fi
;;
rel)
web-ext sign "--api-key=${AMO_JWT_ISSUER}" "--api-secret=${AMO_JWT_SECRET}" "--source-dir=${PROJECT_DIR}/dist/web/ext" "--artifacts-dir=${PROJECT_DIR}/dist/web/build" --id=${WEB_EXT_ID} --channel=listed
# Comment out, because always failed with message:
# "Your add-on has been submitted for review. It passed validation but could not be automatically signed because this is a listed add-on."
#if [[ $? -ne 0 ]]; then
# exit 1
#fi
;;
*)
echo "No task given"
echo "Usage:"
echo " > $0 pre|rel <release_description>"
exit 1
;;
esac
## Rename output file
if [[ -f "${XPI_FILE}" ]]; then
# add a 'v' before version
mv ${XPI_FILE} ${XPI_FINAL_FILE}
fi
#!/bin/bash
# Get to the root project
if [[ "_" == "_${PROJECT_DIR}" ]]; then
SCRIPT_DIR=$(dirname $0)
PROJECT_DIR=$(cd ${SCRIPT_DIR}/.. && pwd)
export PROJECT_DIR
fi;
# Preparing Android environment
cd ${PROJECT_DIR}
source ${PROJECT_DIR}/scripts/env-global.sh
### Control that the script is run on `dev` branch
branch=$(git rev-parse --abbrev-ref HEAD)
if [[ ! "$branch" = "master" ]];
then
echo ">> This script must be run under \`master\` branch"
exit 1
fi
### Get version to release
current=$(grep -m1 -P "version\": \"\d+.\d+.\d+(-\w+[-0-9]*)?\"" package.json | grep -oP "\d+.\d+.\d+(-\w+[-0-9]*)?")
if [[ "_$current" == "_" ]]; then
echo " - Make sure the file 'package.json' exists and is readable."
echo " - Check version format is: x.y.z (x and y should be an integer)"
exit 1
fi
### get auth token
if [[ "_${GITHUB_TOKEN}" == "_" ]]; then
# Get it from user config dir
GITHUB_TOKEN=$(cat ~/.config/${PROJECT_NAME}/.github)
fi
if [[ "_${GITHUB_TOKEN}" != "_" ]]; then
GITHUT_AUTH="Authorization: token ${GITHUB_TOKEN}"
else
echo "ERROR: Unable to find github authentication token file: "
echo " - You can create such a token at https://github.com/settings/tokens > 'Generate a new token'."
echo " - [if CI] Add a pipeline variable named 'GITHUB_TOKEN';"
echo " - [else] Or copy/paste the token into the file '~/.config/${PROJECT_NAME}/.github'."
exit 1
fi
### check arguments
case "$1" in
del)
result=$(curl -i "$REPO_API_URL/releases/tags/v$current")
release_url=$(echo "$result" | grep -P "\"url\": \"[^\"]+" | grep -oP "$REPO_API_URL/releases/\d+")
if [[ $release_url != "" ]]; then
echo "--- Deleting existing release..."
curl -H ''"$GITHUT_AUTH"'' -XDELETE $release_url
fi
exit 0;
;;
pre)
prerelease="true"
echo "--- Creating new pre-release v$current..."
;;
rel)
prerelease="false"
echo "--- Creating new release v$current..."
;;
*)
echo "No task given, or wrong arguments"
echo "Usage:"
echo " > $0 del|pre|rel <release_description>"
echo "With:"
echo " - del: delete existing release"
echo " - pre: use for pre-release"
echo " - rel: for full release"
exit 1
;;
esac
description=$(echo $2)
if [[ "_$description" = "_" ]]; then
description="Release v$current"
fi
result=$(curl -s -H ''"$GITHUT_AUTH"'' "$REPO_API_URL/releases/tags/v$current")
release_url=$(echo "$result" | grep -P "\"url\": \"[^\"]+" | grep -oP "https://[A-Za-z0-9/.-]+/releases/\d+")
if [[ "_$release_url" != "_" ]]; then
echo "--- Deleting existing release... $release_url"
result=$(curl -H ''"$GITHUT_AUTH"'' -s -XDELETE $release_url)
if [[ "_$result" != "_" ]]; then
error_message=$(echo "$result" | grep -P "\"message\": \"[^\"]+" | grep -oP ": \"[^\"]+\"")
echo "Delete existing release failed with error$error_message"
exit 1
fi
else
echo "Release not exists yet on github."
fi
echo "--- Clean previous SHA256 files..."
rm -rf ${PROJECT_DIR}/dist/**/*.sha256
echo ""
echo "--- Creating new release..."
echo " - tag: v$current"
echo " - description: $description"
result=$(curl -X POST -H "Accept: application/vnd.github+json" -H "X-GitHub-Api-Version: 2022-11-28" -H ''"$GITHUT_AUTH"'' -s $REPO_API_URL/releases -d '{"tag_name": "v'"$current"'","target_commitish": "master","name": "'"$current"'","body": "'"$description"'","draft": false,"prerelease": '"$prerelease"'}')
upload_url=$(echo "$result" | grep -P "\"upload_url\": \"[^\"]+" | grep -oP "https://[A-Za-z0-9/.-]+")
if [[ "_$upload_url" = "_" ]]; then
echo "Failed to create new release for repo $REPO."
echo "Server response:"
echo "$result"
exit 1
fi
### Sending files
echo "--- Uploading files to ${upload_url} ..."
# Upload web file
WEB_BASENAME="${PROJECT_NAME}-v$current-web.zip"
WEB_FILE="${DIST_WEB}/${WEB_BASENAME}"
if [[ -f "${WEB_FILE}" ]]; then
result=$(curl -s -H ''"$GITHUT_AUTH"'' -H 'Content-Type: application/zip' -T "${WEB_FILE}" "${upload_url}?name=${WEB_BASENAME}")
browser_download_url=$(echo "$result" | grep -P "\"browser_download_url\":[ ]?\"[^\"]+" | grep -oP "\"browser_download_url\":[ ]?\"[^\"]+" | grep -oP "https://[A-Za-z0-9/.-]+")
WEB_SHA256=$(cd ${DIST_WEB} && sha256sum "${WEB_BASENAME}")
echo " - ${browser_download_url} | SHA256 Checksum: ${WEB_SHA256}"
echo "${WEB_SHA256} ${WEB_BASENAME}" > "${WEB_FILE}.sha256"
result=$(curl -s -H ''"$GITHUT_AUTH"'' -H 'Content-Type: text/plain' -T "${WEB_FILE}.sha256" "${upload_url}?name=${WEB_BASENAME}.sha256")
else
echo " - ERROR: Web release (ZIP) not found! Skipping."
missing_file=true
fi
# Upload web extension (ZIP) file
WEB_EXT_ZIP_BASENAME="${PROJECT_NAME}-v$current-extension.zip"
WEB_EXT_ZIP_FILE="${DIST_WEB}/${WEB_EXT_ZIP_BASENAME}"
if [[ -f "${WEB_EXT_ZIP_FILE}" ]]; then
result=$(curl -s -H ''"$GITHUT_AUTH"'' -H 'Content-Type: application/zip' -T "${WEB_EXT_ZIP_FILE}" "${upload_url}?name=${WEB_EXT_ZIP_BASENAME}")
browser_download_url=$(echo "$result" | grep -P "\"browser_download_url\":[ ]?\"[^\"]+" | grep -oP "\"browser_download_url\":[ ]?\"[^\"]+" | grep -oP "https://[A-Za-z0-9/.-]+")
WEB_EXT_ZIP_SHA256=$(cd ${DIST_WEB} && sha256sum "${WEB_EXT_ZIP_BASENAME}")
echo " - ${browser_download_url} | Checksum: ${WEB_EXT_ZIP_SHA256}"
echo "${WEB_EXT_ZIP_SHA256} ${WEB_EXT_ZIP_BASENAME}" > "${WEB_EXT_ZIP_FILE}.sha256"
result=$(curl -s -H ''"$GITHUT_AUTH"'' -H 'Content-Type: text/plain' -T "${WEB_EXT_ZIP_FILE}.sha256" "${upload_url}?name=${WEB_EXT_ZIP_BASENAME}.sha256")
else
echo " - ERROR: Web extension artifact (ZIP) not found! Skipping."
missing_file=true
fi
# Upload web extension (XPI) file
WEB_EXT_XPI_BASENAME="${PROJECT_NAME}-v$current-extension-firefox.xpi"
WEB_EXT_XPI_FILE="${DIST_WEB}/${WEB_EXT_XPI_BASENAME}"
if [[ -f "${WEB_EXT_XPI_FILE}" ]]; then
result=$(curl -s -H ''"$GITHUT_AUTH"'' -H 'Content-Type: application/zip' -T "${WEB_EXT_XPI_FILE}" "${upload_url}?name=${WEB_EXT_XPI_BASENAME}")
browser_download_url=$(echo "$result" | grep -P "\"browser_download_url\":[ ]?\"[^\"]+" | grep -oP "\"browser_download_url\":[ ]?\"[^\"]+" | grep -oP "https://[A-Za-z0-9/.-]+")
WEB_EXT_XPI_SHA256=$(cd ${DIST_WEB} && sha256sum "${WEB_EXT_XPI_BASENAME}")
echo " - ${browser_download_url} | Checksum: ${WEB_EXT_XPI_SHA256}"
echo "${WEB_EXT_XPI_SHA256} ${WEB_EXT_XPI_BASENAME}" > "${WEB_EXT_XPI_FILE}.sha256"
result=$(curl -s -H ''"$GITHUT_AUTH"'' -H 'Content-Type: text/plain' -T "${WEB_EXT_XPI_FILE}.sha256" "${upload_url}?name=${WEB_EXT_XPI_BASENAME}.sha256")
else
echo " - ERROR: Web signed extension artifact (XPI) not found! Skipping."
missing_file=true
fi
# Upload Android APK file
APK_BASENAME="${PROJECT_NAME}-v${current}-android.apk"
APK_FILE="${DIST_ANDROID}/${APK_BASENAME}"
if [[ -f "${APK_FILE}" ]]; then
result=$(curl -s -H ''"$GITHUT_AUTH"'' -H 'Content-Type: application/vnd.android.package-archive' -T "${APK_FILE}" "${upload_url}?name=${APK_BASENAME}")
browser_download_url=$(echo "$result" | grep -P "\"browser_download_url\":[ ]?\"[^\"]+" | grep -oP "\"browser_download_url\":[ ]?\"[^\"]+" | grep -oP "https://[A-Za-z0-9/.-]+")
APK_SHA256=$(sha256sum "${APK_FILE}" | sed 's/ /\n/gi' | head -n 1)
echo " - ${browser_download_url} | SHA256 Checksum: ${APK_SHA256}"
echo "${APK_SHA256} ${APK_BASENAME}" > "${APK_FILE}.sha256"
result=$(curl -s -H ''"$GITHUT_AUTH"'' -H 'Content-Type: text/plain' -T "${APK_FILE}.sha256" "${upload_url}?name=${APK_BASENAME}.sha256")
else
echo "- ERROR: Android release (APK) not found! Skipping."
missing_file=true
fi
echo ""
if [[ ${missing_file} == true ]]; then
echo "-------------------------------------------"
echo "ERROR: missing some artifacts (see logs)"
echo " -> Release url: ${REPO_PUBLIC_URL}/releases/tag/${version}"
exit 1
else
echo "-------------------------------------------"
echo "Successfully uploading files !"
echo " -> Release url: ${REPO_PUBLIC_URL}/releases/tag/${version}"
exit 0
fi