0
0
mirror of https://github.com/TrianguloY/UrlChecker.git synced 2024-09-19 20:02:16 +02:00

slightly improvement over the validation (now validate-store-files) action

This commit is contained in:
TrianguloY 2022-08-28 11:16:05 +02:00
parent f6cfddce2e
commit 2f5455c007

View File

@ -1,19 +1,21 @@
name: Validation # This action checks that the store files are valid for Play Store. Current checks:
# - title and description files must not exceed a maximum number of characters
# To be replaced with a more powerful (and less manual) one
name: Validate store files
# Note: this is the second time I'm writting a GitHub action, and the first time I'm using a script. # Note: this is the second time I'm writing a GitHub action, and the first time I'm using a script.
# Most probably there are better ways to do it, if you know one and want to suggest it that'd be wonderful! # Most probably there are better ways to do it, if you know one and want to suggest it that'd be wonderful!
on: on:
push: push:
branches: branches:
- master - master
pull_request: pull_request:
branches: branches:
- master - master
jobs: jobs:
validate: validation:
# This action checks that the title and description files don't exceed the maximum number of characters allowed on PlayStore
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v3
@ -23,20 +25,20 @@ jobs:
// import // import
const { lstatSync, readdirSync, readFileSync, existsSync } = require('fs'); const { lstatSync, readdirSync, readFileSync, existsSync } = require('fs');
const { join } = require('path'); const { join } = require('path');
// header // header
console.log("Validating files:"); console.log("Validating files:");
console.log(""); console.log("");
let error = false; let error = false;
// for each locale // for each locale
const listings = "./app/src/main/play/listings"; const listings = "./app/src/main/play/listings";
readdirSync(listings) readdirSync(listings)
.map(locale => [locale, join(listings, locale)]) .map(locale => [locale, join(listings, locale)])
.filter(([locale, path]) => lstatSync(path).isDirectory()) .filter(([locale, path]) => lstatSync(path).isDirectory())
.forEach(([locale, path]) => { .forEach(([locale, path]) => {
console.log(`[ ] - '${locale}'`); console.log(`[ ] - '${locale}'`);
// check files length // check files length
([ ([
@ -44,7 +46,7 @@ jobs:
["short-description.txt", 80], ["short-description.txt", 80],
["full-description.txt", 4000], ["full-description.txt", 4000],
]).forEach(([file, limit]) => { ]).forEach(([file, limit]) => {
// get file // get file
const subpath = join(path, file); const subpath = join(path, file);
if(existsSync(subpath)){ if(existsSync(subpath)){
@ -53,31 +55,29 @@ jobs:
if(size > limit) { if(size > limit) {
// invalid length, error // invalid length, error
error = true; error = true;
console.log(`[ERROR] - '${file}' length: ${size}/${limit}`); console.log(`[ERROR ] - '${file}' length: ${size}/${limit}`);
console.error(""); console.log("");
console.error("*********"); // '[ERROR]' is detected on GitHub and the line is displayed on red
console.error(`* ERROR : File ${file} from locale ${locale} (${subpath}) must have ${limit} or less chars, and has ${size}. Use synonims or remove less important sentences, otherwise Play Store won't accept it`); console.log(`[ERROR] File ${file} from locale ${locale} (${subpath}) must be ${limit} or less characters long, current length: ${size}. Use synonims or remove less important sentences, otherwise Play Store won't accept it.`);
console.error("*********"); console.log("");
console.error("");
}else{ }else{
// valid length // valid length
console.log(`[ OK ] - '${file}' length: ${size}/${limit}`); console.log(`[ OK ] - '${file}' length: ${size}/${limit}`);
} }
}else{ }else{
// no file // no file
console.log(`[SKIP ] - '${file}': not found`); console.log(`[ SKIP ] - '${file}': not found`);
} }
}) })
}); });
// result // result
console.log(""); console.log("");
if (error) { if (error) {
// error, exit // error, exit
console.error("Validation finished. Errors found, check above for their details"); console.log("Validation finished. Errors found, check above for their details");
process.exit(1); process.exit(1);
}else{ }else{
// ok, end // ok, end
console.log("Validation finished. No errors found."); console.log("Validation finished. No errors found.");
} }