diff --git a/.eslintrc.js b/.eslintrc.js
new file mode 100644
index 0000000..0414d8e
--- /dev/null
+++ b/.eslintrc.js
@@ -0,0 +1,29 @@
+module.exports = {
+ "env": {
+ "browser": true,
+ "jquery": true
+ },
+ "extends": "eslint:recommended",
+ "parserOptions": {
+ "ecmaVersion": 6
+ },
+ "rules": {
+ "indent": [
+ "error",
+ 4
+ ],
+ "linebreak-style": [
+ "error",
+ "unix"
+ ],
+ "no-console": "off",
+ "quotes": [
+ "error",
+ "double"
+ ],
+ "semi": [
+ "error",
+ "always"
+ ]
+ }
+};
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index 49d7703..ea19d4c 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -1,7 +1,7 @@
---
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
- rev: v1.3.0
+ rev: v1.4.0-1
hooks:
- id: trailing-whitespace
- id: end-of-file-fixer
@@ -11,13 +11,14 @@ repos:
- id: check-merge-conflict
- id: check-symlinks
- id: check-vcs-permalinks
+ - id: check-json
- id: flake8
- id: debug-statements
- id: requirements-txt-fixer
- id: check-yaml
files: .*\.(yaml|yml)$
- repo: https://github.com/adrienverge/yamllint.git
- rev: v1.11.1
+ rev: v1.12.0
hooks:
- id: yamllint
files: \.(yaml|yml)$
@@ -26,3 +27,8 @@ repos:
rev: 0.6.0
hooks:
- id: bashate
+ - repo: https://github.com/pre-commit/mirrors-eslint
+ rev: v5.6.1 # Use the sha / tag you want to point at
+ hooks:
+ - id: eslint
+ entry: "eslint --format unix"
diff --git a/coats/openstack_gerrit_zuul_status.user.js b/coats/openstack_gerrit_zuul_status.user.js
index 4d3b27e..455c2ac 100644
--- a/coats/openstack_gerrit_zuul_status.user.js
+++ b/coats/openstack_gerrit_zuul_status.user.js
@@ -31,44 +31,47 @@ const zuul_status_url = zuul_status_base + "api/status/change/";
// Script start
-$('style#gerrit_sitecss').append('.result_RUNNING { color: #1e9ced; }');
+/* defined by hideci.js */
+/* global ci_latest_patchset, ci_parse_comments */
+
+$("style#gerrit_sitecss").append(".result_RUNNING { color: #1e9ced; }");
var render = function(jobs) {
- var location = $('table.test_result_table');
+ var location = $("table.test_result_table");
- var table = '
' +
- '' +
- '' +
- '' +
- '
';
+ var table = "" +
+ "" +
+ "" +
+ "" +
+ "
";
- $.each(jobs, function(i, job) {
- var status_with_completeness = ((job.status === 'running' && typeof job.completeness !== 'undefined') ? 'RUNNING (' + job.completeness + ')' : job.status.toUpperCase());
- var voting = job.voting === true ? '' : ' (non-voting)';
+ $.each(jobs, function(i, job) {
+ var status_with_completeness = ((job.status === "running" && typeof job.completeness !== "undefined") ? "RUNNING (" + job.completeness + ")" : job.status.toUpperCase());
+ var voting = job.voting === true ? "" : " (non-voting)";
- table += '' +
- '' + job.name + '' + voting + ' | ' +
- ' | ' +
- '
';
- });
+ table += "" +
+ "" + job.name + "" + voting + " | " +
+ " | " +
+ "
";
+ });
- table += '';
+ table += "";
- location.html(table);
+ location.html(table);
};
var main = function() {
- const url = $(location).attr('href');
+ const url = $(location).attr("href");
const matches_url = /^https?:\/\/review\.openstack\.org\/(#\/c\/)?(\d*)\/?(\d*)?\/?$/.exec(url);
const change_id = matches_url[2];
var change_ver = matches_url[3];
- if (typeof change_ver === 'undefined'){
+ if (typeof change_ver === "undefined"){
change_ver = ci_latest_patchset(ci_parse_comments());
}
- var status_url = zuul_status_url + change_id + ',' + change_ver;
+ var status_url = zuul_status_url + change_id + "," + change_ver;
$.getJSON(status_url, function(data) {
@@ -76,17 +79,17 @@ var main = function() {
var jobs = [];
if (data.length === 0){
- if ($('.result_WARNING').length > 0){
- location.reload();
- }
- return;
+ if ($(".result_WARNING").length > 0){
+ location.reload();
+ }
+ return;
}
- for(i=0; i <= data.length; i++){
- queue = data[i];
- if (queue.items_behind.length == 0){
- break;
- }
+ for(var i=0; i <= data.length; i++){
+ queue = data[i];
+ if (queue.items_behind.length == 0){
+ break;
+ }
}
if (!queue){
@@ -97,14 +100,14 @@ var main = function() {
$.each(queue.jobs, function(i, job) {
var item = {};
- item.status = job.result ? job.result.toLowerCase() : (job.url ? 'running' : 'queued');
+ item.status = job.result ? job.result.toLowerCase() : (job.url ? "running" : "queued");
item.name = job.name;
- item.voting = job.voting
+ item.voting = job.voting;
item.pipeline = job.pipeline;
item.url = job.result ? job.report_url : (job.url ? zuul_status_base + job.url : "#");
- if (item.status === 'running' && job.remaining_time !== null){
- item.completeness = Math.round(100 * (job.elapsed_time / (job.elapsed_time + job.remaining_time))) + '%';
+ if (item.status === "running" && job.remaining_time !== null){
+ item.completeness = Math.round(100 * (job.elapsed_time / (job.elapsed_time + job.remaining_time))) + "%";
}
jobs.push(item);
@@ -119,18 +122,19 @@ var main = function() {
// So we refresh on each update.
-MutationObserver = window.MutationObserver || window.WebKitMutationObserver;
+var MutationObserver = window.MutationObserver || window.WebKitMutationObserver;
+/* eslint no-unused-vars: 0 */
var observer = new MutationObserver(function(mutations, observer) {
- var span = $("span.rpcStatus");
- $.each(mutations, function(i, mutation) {
- if (mutation.target === span[0] &&
+ var span = $("span.rpcStatus");
+ $.each(mutations, function(i, mutation) {
+ if (mutation.target === span[0] &&
mutation.attributeName === "style" &&
(!(span.is(":visible")))) {
- main();
- }
- });
+ main();
+ }
+ });
});
observer.observe(document, {
- subtree: true,
- attributes: true
+ subtree: true,
+ attributes: true
});
diff --git a/cspell.json b/cspell.json
index 0a8696d..15eb016 100644
--- a/cspell.json
+++ b/cspell.json
@@ -11,6 +11,7 @@
"envlist",
"envs",
"gerrit",
+ "hideci",
"htmlcov",
"ifeq",
"ifndef",