Files
react-native-devtools-frontend/scripts/dark_mode/check_darkmode_css_up_to_date.js
T
Jack Franklin 8064d3ba7a Lint against non-theme-color variables
This CL turns on the use_theme_colors stylelint rule which enforces that
any colors use variables defined in our codebase.

There are many, many violations, unsurprisingly (about 1500), so for now
I have disabled every single violation. The goal of the dark mode
migration will be in part to remove all violations of this rule.

Additionally, new code going forwards should adhere to the rule and not
add the comment to disable the warning.

Bug: 1152736
Change-Id: I51372724ea51485daef3d4f75b7d3f60a7c8016f
No-Presubmit: true
Reviewed-on: https://chromium-review.googlesource.com/c/devtools/devtools-frontend/+/2671323
Commit-Queue: Jack Franklin <jacktfranklin@chromium.org>
Reviewed-by: Paul Lewis <aerotwist@chromium.org>
2021-02-03 11:02:09 +00:00

54 lines
2.1 KiB
JavaScript

// Copyright 2020 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
const path = require('path');
const fs = require('fs');
// Gets called from the PRESUBMIT with a list of changed CSS files in the developer's branch.
const changedCSSFiles = process.argv.slice(2);
const errors = [];
changedCSSFiles.forEach(file => {
if (file.includes(path.join('front_end', 'third_party'))) {
return;
}
let sourceFile;
let darkModeFile;
if (file.endsWith('.darkmode.css')) {
darkModeFile = file;
sourceFile = path.join(path.dirname(file), path.basename(file, '.darkmode.css') + '.css');
} else {
sourceFile = file;
darkModeFile = path.join(path.dirname(file), path.basename(file, '.css') + '.darkmode.css');
}
const sourceExists = fs.existsSync(sourceFile);
const darkModeExists = fs.existsSync(darkModeFile);
const sourcePathRelative = path.relative(process.cwd(), sourceFile);
const darkModePathRelative = path.relative(process.cwd(), darkModeFile);
if (!sourceExists && darkModeExists) {
// If the dark file exists, but the source does not, the source must have been deleted, so the dark mode file should go.
errors.push(`Found dark mode file ${darkModePathRelative} for deleted source file. ${
darkModePathRelative} should be deleted.`);
} else if (sourceExists && darkModeExists) {
// If the source & dark mode exist, check if the source is more recent than the dark mode, and if so, we need to regen the dark mode.
const sourceFileMTime = fs.statSync(sourceFile).mtime;
const darkFileMTime = fs.statSync(darkModeFile).mtime;
// If the source file was modified more recently than the dark file, the dark file needs to be regenerated.
if (sourceFileMTime > darkFileMTime) {
errors.push(`${sourcePathRelative} has been modified (${sourceFileMTime}) and ${
darkModePathRelative} should be regenerated (${darkFileMTime}).`);
}
}
});
if (errors.length) {
console.error('Dark mode stylesheet errors:');
console.error(errors.join('\n'));
process.exit(1);
}