Skip to content

Commit

Permalink
Merge branch 'ioBroker-master'
Browse files Browse the repository at this point in the history
  • Loading branch information
oweitman committed Jan 20, 2025
2 parents d939153 + a09f3f2 commit d066552
Show file tree
Hide file tree
Showing 17 changed files with 578 additions and 385 deletions.
16 changes: 16 additions & 0 deletions .vscode/launch.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "Launch Program",
"skipFiles": ["<node_internals>/**"],
"program": "${workspaceFolder}\\index.js",
"args": ["https://github.com/klein0r/ioBroker.luftdaten"]
}
]
}
349 changes: 183 additions & 166 deletions README.md

Large diffs are not rendered by default.

6 changes: 3 additions & 3 deletions eslint.config.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,10 @@ export default [
{
languageOptions: {
parserOptions: {
allowDefaultProject: {
/* allowDefaultProject: {
allow: ['*.js', '*.mjs'],
},
tsconfigRootDir: import.meta.dirname,
*/ tsconfigRootDir: import.meta.dirname,
project: './tsconfig.json',
// projectService: true,
},
Expand All @@ -23,7 +23,7 @@ export default [
},
{
ignores: [
'build-backend/**/*',
'build-backend/**/*',
'frontend/**/*', // TODO - changes must be confirmed / reviewed by BF
'doc/**/*', // TODO - doc scripts must be reviewed anyway
'scripts/**/*', // TODO - do not change older scripts for now
Expand Down
68 changes: 38 additions & 30 deletions index.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
*/
const axios = require('axios');

const issues = require('./doc/issues');
const issues = require('./doc/issues.json');
const version = require('./package.json').version;

// include submodules
Expand Down Expand Up @@ -80,7 +80,7 @@ function getGithubApiData(context) {

if (!context.branch) {
context.branch = context.githubApiData.default_branch; // main vs. master
common.log(`Branch was not defined by user - checking branch: ${context.branch}`);
common.debug(`Branch was not defined by user - checking branch: ${context.branch}`);
}

context.githubUrl = `${context.githubUrlOriginal.replace('https://github.com', 'https://raw.githubusercontent.com')}/${context.branch}`;
Expand Down Expand Up @@ -128,27 +128,28 @@ function check(request, ctx, callback) {

context.version = version;
config.initConfig(context);
context.checks.push(`Starting checker ioBroker.repochecker ${version}`);

context.githubUrlOriginal = githubUrl;
context.githubUrlApi = githubUrl.replace('https://github.com/', 'https://api.github.com/repos/');
context.branch = githubBranch || null;

getGithubApiData(context)
.then((context) => M800_Github.getCommitInfos(context))
.then((context) => M000_PackageJson.getPackageJson(context))
.then((context) => M100_IOPackageJson.getIOPackageJson(context))
.then((context) => M000_PackageJson.checkPackageJson(context))
.then((context) => M100_IOPackageJson.checkIOPackageJson(context))
.then((context) => M250_Npm.checkNpm(context))
.then((context) => M400_Repository.checkRepository(context))
.then((context) => M500_Code.checkCode(context))
.then((context) => M300_Testing.checkTests(context))
.then((context) => M800_Github.checkGithubRepo(context))
.then((context) => M600_Readme.checkReadme(context))
.then((context) => M700_License.checkLicenseFile(context))
.then((context) => M900_GitNpmIgnore.checkNpmIgnore(context))
.then((context) => M900_GitNpmIgnore.checkGitIgnore(context))
.then((context) => {
.then(context => M800_Github.getCommitInfos(context))
.then(context => M000_PackageJson.getPackageJson(context))
.then(context => M100_IOPackageJson.getIOPackageJson(context))
.then(context => M000_PackageJson.checkPackageJson(context))
.then(context => M100_IOPackageJson.checkIOPackageJson(context))
.then(context => M250_Npm.checkNpm(context))
.then(context => M400_Repository.checkRepository(context))
.then(context => M500_Code.checkCode(context))
.then(context => M300_Testing.checkTests(context))
.then(context => M800_Github.checkGithubRepo(context))
.then(context => M600_Readme.checkReadme(context))
.then(context => M700_License.checkLicenseFile(context))
.then(context => M900_GitNpmIgnore.checkNpmIgnore(context))
.then(context => M900_GitNpmIgnore.checkGitIgnore(context))
.then(context => {
return callback(
null,
makeResponse(200, {
Expand All @@ -162,8 +163,8 @@ function check(request, ctx, callback) {
}),
);
})
.catch((err) => {
console.error(`GLOBAL ERROR: ${err.toString()}, ${JSON.stringify(err)}`);
.catch(err => {
common.error(`GLOBAL ERROR: ${err.toString()}, ${JSON.stringify(err)}`);
context.errors.push(`[E999] GLOBAL ERROR: ${err.toString()}, ${JSON.stringify(err)}`);

return callback(
Expand Down Expand Up @@ -232,7 +233,7 @@ if (typeof module !== 'undefined' && module.parent) {
repoBranch = process.argv[3];
}

common.log(`Checking repository ${repoUrl} (branch ${repoBranch})`);
common.debug(`Checking repository ${repoUrl} (branch ${repoBranch})`);
check(
{
queryStringParameters: {
Expand All @@ -245,10 +246,17 @@ if (typeof module !== 'undefined' && module.parent) {
const context = JSON.parse(data.body);
common.debug(context.result);

common.log('\n########## SUMMARY ##########');
common.debug('\n\n########## SUMMARY ##########\n');
if (context.checks.length) {
context.checks.forEach(msg => {
common.debug(msg);
});
}

common.log('\n\n########## SUMMARY of ISSUES ##########');
if (context.errors.length) {
console.log('\n\nErrors:');
context.errors.sort().forEach((err) => {
common.log('\n\nErrors:');
context.errors.sort().forEach(err => {
const issue = err.substring(1, 5);
common.error(err);
if (issues[issue]) {
Expand All @@ -270,22 +278,22 @@ if (typeof module !== 'undefined' && module.parent) {
common.log('NO errors encountered.');
}
if (context.warnings.length) {
console.log('\nWarnings:');
context.warnings.sort().forEach((err) => {
common.log('\nWarnings:');
context.warnings.sort().forEach(err => {
const issue = err.substring(1, 5);
console.warn(err);
common.warn(err);
if (issues[issue]) {
//if (issues[issue].title) {
// console.warn(getText(issues[issue].title, 'en'));
// common.warn(getText(issues[issue].title, 'en'));
//}
if (issues[issue].explanation) {
console.warn(getText(issues[issue].explanation, 'en'));
common.warn(getText(issues[issue].explanation, 'en'));
}
if (issues[issue].resolving) {
console.warn(getText(issues[issue].resolving, 'en'));
common.warn(getText(issues[issue].resolving, 'en'));
}
if (issues[issue].notes) {
console.warn(getText(issues[issue].notes, 'en'));
common.warn(getText(issues[issue].notes, 'en'));
}
}
});
Expand Down
89 changes: 61 additions & 28 deletions lib/M000_PackageJson.js
Original file line number Diff line number Diff line change
Expand Up @@ -42,11 +42,11 @@ const blacklistedDependenciesPackageJson = {
err: true,
},
'@iobroker/adapter-dev': {
msg: "'@iobroker/adapter-dev' must not be listed as dependency at package.json. Please remove and create new release.",
msg: "'@iobroker/adapter-dev' must not be listed as dependency at package.json. Please move to dependencies and create a new release.",
err: true,
},
'@iobroker/dev-server': {
msg: "'@iobroker/dev-server' must not be listed as dependency at package.json. Please remove.",
msg: "'@iobroker/dev-server' must not be listed as dependency at package.json. Please move to dependencies and create a new release.",
err: true,
},
'@iobroker/plugin-sentry': {
Expand All @@ -58,29 +58,33 @@ const blacklistedDependenciesPackageJson = {
err: true,
},
'@alcalzone/release-script': {
msg: "'@alcalzone/release-script' must not be listed as dependency at package.json. Please remove and create new release.",
msg: "'@alcalzone/release-script' must not be listed as dependency at package.json. Please move to dependencies and create a new release.",
err: true,
},
'@alcalzone/release-script-plugin-iobroker': {
msg: "'@alcalzone/release-script-plugin-iobroker' must not be listed as dependency at package.json. Please remove and create new release.",
msg: "'@alcalzone/release-script-plugin-iobroker' must not be listed as dependency at package.json. Please move to dependencies and create a new release.",
err: true,
},
'@alcalzone/release-script-plugin-license': {
msg: "'@alcalzone/release-script-plugin-license' must not be listed as dependency at package.json. Please remove and create new release.",
msg: "'@alcalzone/release-script-plugin-license' must not be listed as dependency at package.json. Please move to dependencies and create a new release.",
err: true,
},
'@alcalzone/release-script-plugin-package': {
msg: "'@alcalzone/release-script-plugin-package' must not be listed as dependency at package.json. Please remove and create new release.",
msg: "'@alcalzone/release-script-plugin-package' must not be listed as dependency at package.json. Please move to dependencies and create a new release.",
err: true,
},
'@alcalzone/release-script-plugin-manual-review': {
msg: "'@alcalzone/release-script-plugin-manual-review' must not be listed as dependency at package.json. Please remove and create new release.",
msg: "'@alcalzone/release-script-plugin-manual-review' must not be listed as dependency at package.json. Please move to dependencies and create a new release.",
err: true,
},
'@alcalzone/release-script-plugin-version': {
msg: "'@alcalzone/release-script-plugin-version' must not be listed as dependency at package.json. Please remove and create new release.",
msg: "'@alcalzone/release-script-plugin-version' must not be listed as dependency at package.json. Please move to dependencies and create a new release.",
err: true,
},
request: {
msg: "'request' package is deprecated and no longer maintained. Please consider migrating to package 'axios'.",
err: false,
},
};

const blacklistedDevDependenciesPackageJson = {
Expand All @@ -96,6 +100,10 @@ const blacklistedDevDependenciesPackageJson = {
msg: "'@iobroker/plugin-sentry' must not be listed as devDependency at package.json. Please remove.",
err: true,
},
'@iobroker/adapter-core': {
msg: "'@iobroker/adapter-core' must not be listed as devDependency at package.json. Please move to dependencies and create a new release.",
err: true,
},
};

const blacklistPackageJson = {};
Expand Down Expand Up @@ -387,7 +395,7 @@ async function checkPackageJson(context) {
const requiredVersion = dependenciesPackageJson[dependency].required;
const recommendedVersion = dependenciesPackageJson[dependency].recommended;
let dependencyVersion = context.packageJson.dependencies[`${dependency}`] || '';
dependencyVersion = dependencyVersion.replace(/[\^~]/, '');
dependencyVersion = dependencyVersion.replace(/[\^~]/, '').trim();
if (!dependencyVersion) {
context.errors.push(
`[E032] No dependency declared for ${dependency}. Please add "${dependency}":"${recommendedVersion}" to dependencies at package.json`,
Expand Down Expand Up @@ -445,16 +453,26 @@ async function checkPackageJson(context) {
'@iobroker/testing',
];
for (const dependency in context.packageJson.dependencies) {
if (
const dependencyVersion = context.packageJson.dependencies[dependency];
if (dependencyVersion.toLowerCase().includes('github.com')) {
context.warnings.push(
`[W043] dependency should not require a github version. Please change "${dependency}:${dependencyVersion}"`,
);
} else if (dependencyVersion === '*') {
context.warnings.push(
`[W056] Wildcard dependencies should be avoided "${dependency}":"${dependencyVersion}". Use "~1.2.3" or "^1.2.3" syntax at package.json.`,
);
} else if (!common.validateSemver(dependencyVersion)) {
context.errors.push(
`[E054] malformed dependency detected "${dependency}":"${dependencyVersion}". Please fix at package.json.`,
);
} else if (
!context.packageJson.dependencies[dependency].startsWith('^') &&
!context.packageJson.dependencies[dependency].startsWith('~') &&
!context.packageJson.dependencies[dependency].startsWith('>')
!context.packageJson.dependencies[dependency].startsWith('>') &&
!context.packageJson.dependencies[dependency].startsWith('<')
) {
if (context.packageJson.dependencies[dependency].toLowerCase().includes('github.com')) {
context.warnings.push(
`[W043] dependency should not require a github version. Please change "${dependency}:${context.packageJson.dependencies[dependency]}"`,
);
} else if (enforcedDependencies.includes(dependency)) {
if (enforcedDependencies.includes(dependency)) {
context.errors.push(
`[E044] dependency must not require a specific version. Use "~1.2.3" or "^1.2.3" syntax. Please update "${dependency}:${context.packageJson.dependencies[dependency]}"`,
);
Expand All @@ -467,18 +485,28 @@ async function checkPackageJson(context) {
}

for (const dependency in context.packageJson.devDependencies) {
if (
const dependencyVersion = context.packageJson.devDependencies[dependency];
if (dependencyVersion.toLowerCase().includes('github.com')) {
context.warnings.push(
`[W045] devDependency should not require github versions. Please change "${dependency}":"${dependencyVersion}"`,
);
} else if (dependencyVersion === '*') {
context.warnings.push(
`[W057] Wildcard devDependencies should be avoided "${dependency}":"${dependencyVersion}". Use "~1.2.3" or "^1.2.3" syntax at package.json.`,
);
} else if (!common.validateSemver(dependencyVersion)) {
context.errors.push(
`[E055] malformed dependency detected "${dependency}":"${dependencyVersion}". Please fix at package.json.`,
);
} else if (
!context.packageJson.devDependencies[dependency].startsWith('^') &&
!context.packageJson.devDependencies[dependency].startsWith('~') &&
!context.packageJson.devDependencies[dependency].startsWith('>')
!context.packageJson.devDependencies[dependency].startsWith('>') &&
!context.packageJson.devDependencies[dependency].startsWith('<')
) {
if (context.packageJson.devDependencies[dependency].toLowerCase().includes('github.com')) {
context.warnings.push(
`[W045] devDependency should not require github versions. Please change "${dependency}:${context.packageJson.devDependencies[dependency]}"`,
);
} else if (enforcedDependencies.includes(dependency)) {
if (enforcedDependencies.includes(dependency)) {
context.errors.push(
`[E046] devDependency must not require a specific version. Use "~1.2.3" or "^1.2.3" syntax. Please update "${dependency}:${context.packageJson.devDependencies[dependency]}"`,
`[E046] devDependency must not require a specific version. Use "~1.2.3" or "^1.2.3" syntax. Please update "${dependency}:${dependencyVersion}"`,
);
} else {
context.warnings.push(
Expand Down Expand Up @@ -623,7 +651,12 @@ exports.checkPackageJson = checkPackageJson;
// [047] dependency should not require a specific version. Use "~1.2.3" or "^1.2.3" syntax. Please update "${dependency}:${context.packageJson.dependencies[dependency]}"
// [048] devDependency should not require a specific version. Use "~1.2.3" or "^1.2.3" syntax. Please update "${dependency}:${context.packageJson.devDependencies[dependency]}"
// [049] "keywords" within package.json must contain some keywords besides "${context.packageJson.keywords.join(', ')}" related to adapter
// [E050] ${blacklistedDependenciesPackageJson[blacklist].msg}
// [W051] ${blacklistedDependenciesPackageJson[blacklist].msg}.
// [E052] ${blacklistedDevDependenciesPackageJson[blacklist].msg}
// [W053] ${blacklistedDevDependenciesPackageJson[blacklist].msg}
// [050] ${blacklistedDependenciesPackageJson[blacklist].msg}
// [051] ${blacklistedDependenciesPackageJson[blacklist].msg}.
// [052] ${blacklistedDevDependenciesPackageJson[blacklist].msg}
// [053] ${blacklistedDevDependenciesPackageJson[blacklist].msg}
// [054] malformed dependency detected "${dependency}":${context.packageJson.dependencies[dependency]}". Please fix at package.json.`
// [055] malformed dependency detected "${dependency}":${context.packageJson.devDependencies[dependency]}". Please fix at package.json.`
// [056] Wildcard dependencies should be avoided "${dependency}":"${dependencyVersion}". Use "~1.2.3" or "^1.2.3" syntax at package.json.`,
// [057] Wildcard devDependencies should be avoided "${dependency}":"${dependencyVersion}". Use "~1.2.3" or "^1.2.3" syntax at package.json.`,

Loading

0 comments on commit d066552

Please sign in to comment.