Merge pull request #5545 from consuldemocracy/linters_in_github_actions
Run every linter separately in Github Actions
This commit is contained in:
@@ -1,5 +1,7 @@
|
|||||||
---
|
---
|
||||||
EnableDefaultLinters: false
|
EnableDefaultLinters: false
|
||||||
|
exclude:
|
||||||
|
- '**/vendor/**/*'
|
||||||
linters:
|
linters:
|
||||||
AllowedScriptType:
|
AllowedScriptType:
|
||||||
enabled: true
|
enabled: true
|
||||||
@@ -9,6 +11,16 @@ linters:
|
|||||||
enabled: true
|
enabled: true
|
||||||
ErbSafety:
|
ErbSafety:
|
||||||
enabled: true
|
enabled: true
|
||||||
|
exclude:
|
||||||
|
- app/components/budgets/investments/content_blocks_component.html.erb
|
||||||
|
- app/components/layout/footer_component.html.erb
|
||||||
|
- app/components/layout/social_component.html.erb
|
||||||
|
- app/components/layout/subnavigation_component.html.erb
|
||||||
|
- app/components/layout/top_links_component.html.erb
|
||||||
|
- app/views/admin/site_customization/content_blocks/index.html.erb
|
||||||
|
- app/views/layouts/application.html.erb
|
||||||
|
- app/views/layouts/dashboard.html.erb
|
||||||
|
- app/views/layouts/devise.html.erb
|
||||||
ExtraNewline:
|
ExtraNewline:
|
||||||
enabled: true
|
enabled: true
|
||||||
FinalNewline:
|
FinalNewline:
|
||||||
|
|||||||
@@ -1,4 +1,9 @@
|
|||||||
{
|
{
|
||||||
|
"ignorePatterns": [
|
||||||
|
"app/assets/javascripts/ckeditor/config.js",
|
||||||
|
"node_modules/",
|
||||||
|
"vendor/"
|
||||||
|
],
|
||||||
"env": {
|
"env": {
|
||||||
"browser": true,
|
"browser": true,
|
||||||
"es6": false
|
"es6": false
|
||||||
|
|||||||
25
.github/workflows/linters.yml
vendored
25
.github/workflows/linters.yml
vendored
@@ -1,9 +1,25 @@
|
|||||||
name: linters
|
name: linters
|
||||||
on: [pull_request]
|
on: [pull_request]
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
linters:
|
linters:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
include:
|
||||||
|
- name: RuboCop
|
||||||
|
run: bundle exec rubocop --fail-level convention --display-only-fail-level-offenses -f github
|
||||||
|
- name: ERB Lint
|
||||||
|
run: bundle exec erblint .
|
||||||
|
- name: ESLint
|
||||||
|
run: npx eslint . --quiet
|
||||||
|
- name: Stylelint
|
||||||
|
run: npx stylelint app/assets/stylesheets
|
||||||
|
name: ${{ matrix.name }}
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout code
|
- name: Checkout code
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
@@ -20,10 +36,5 @@ jobs:
|
|||||||
node-version-file: ".node-version"
|
node-version-file: ".node-version"
|
||||||
- name: Install node packages
|
- name: Install node packages
|
||||||
run: npm clean-install
|
run: npm clean-install
|
||||||
- name: Run pronto
|
- name: ${{ matrix.name }}
|
||||||
run: |
|
run: ${{ matrix.run }}
|
||||||
if [[ ${{ github.event.pull_request.head.repo.full_name }} == ${{ github.event.pull_request.base.repo.full_name }} && ${{ github.actor }} != dependabot* ]]; then
|
|
||||||
PRONTO_PULL_REQUEST_ID="$(jq --raw-output .number "$GITHUB_EVENT_PATH")" PRONTO_GITHUB_ACCESS_TOKEN="${{ github.token }}" bundle exec pronto run -f github_status github_pr -c origin/${{ github.base_ref }}
|
|
||||||
else
|
|
||||||
bundle exec pronto run --exit-code -c origin/${{ github.base_ref }}
|
|
||||||
fi
|
|
||||||
|
|||||||
25
.github/workflows/pronto.yml
vendored
Normal file
25
.github/workflows/pronto.yml
vendored
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
name: pronto
|
||||||
|
on: [pull_request]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
pronto:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
if: github.event.pull_request.head.repo.full_name == github.event.pull_request.base.repo.full_name && github.actor != 'dependabot'
|
||||||
|
steps:
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
- run: |
|
||||||
|
git fetch --no-tags --prune origin +refs/heads/*:refs/remotes/origin/*
|
||||||
|
- name: Setup Ruby
|
||||||
|
uses: ruby/setup-ruby@v1
|
||||||
|
with:
|
||||||
|
bundler-cache: true
|
||||||
|
- name: Setup NPM
|
||||||
|
uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
cache: "npm"
|
||||||
|
node-version-file: ".node-version"
|
||||||
|
- name: Install node packages
|
||||||
|
run: npm clean-install
|
||||||
|
- name: Run pronto
|
||||||
|
run: PRONTO_PULL_REQUEST_ID="$(jq --raw-output .number "$GITHUB_EVENT_PATH")" PRONTO_GITHUB_ACCESS_TOKEN="${{ github.token }}" bundle exec pronto run -f github_status github_pr -c origin/${{ github.base_ref }}
|
||||||
@@ -11,6 +11,7 @@ AllCops:
|
|||||||
Exclude:
|
Exclude:
|
||||||
- "db/schema.rb"
|
- "db/schema.rb"
|
||||||
- "app/lib/ckeditor/backend/active_storage.rb"
|
- "app/lib/ckeditor/backend/active_storage.rb"
|
||||||
|
- "vendor/**/*"
|
||||||
DisabledByDefault: true
|
DisabledByDefault: true
|
||||||
|
|
||||||
Bundler/DuplicatedGem:
|
Bundler/DuplicatedGem:
|
||||||
|
|||||||
@@ -89,3 +89,14 @@ rules:
|
|||||||
"@stylistic/color-hex-case": "lower"
|
"@stylistic/color-hex-case": "lower"
|
||||||
"@stylistic/number-leading-zero": "always"
|
"@stylistic/number-leading-zero": "always"
|
||||||
"@stylistic/selector-list-comma-newline-after": always
|
"@stylistic/selector-list-comma-newline-after": always
|
||||||
|
overrides:
|
||||||
|
- files: app/assets/stylesheets/datepicker_overrides.scss
|
||||||
|
rules:
|
||||||
|
scss/selector-no-redundant-nesting-selector: null
|
||||||
|
- files: app/assets/stylesheets/legislation_process.scss
|
||||||
|
rules:
|
||||||
|
max-nesting-depth: 8
|
||||||
|
selector-max-compound-selectors: 8
|
||||||
|
- files: app/assets/stylesheets/shared/social_share.scss
|
||||||
|
rules:
|
||||||
|
selector-class-pattern: "^([a-z][a-z0-9]*)((-|_)[a-z0-9]+)*$"
|
||||||
|
|||||||
@@ -20,11 +20,11 @@
|
|||||||
pass += possible_chars.charAt(Math.floor(Math.random() * possible_chars.length)).toUpperCase();
|
pass += possible_chars.charAt(Math.floor(Math.random() * possible_chars.length)).toUpperCase();
|
||||||
}
|
}
|
||||||
|
|
||||||
for (var i = 0; i < password_complexity.digit; i++) {
|
for (var j = 0; j < password_complexity.digit; j++) {
|
||||||
pass += possible_digits.charAt(Math.floor(Math.random() * possible_digits.length));
|
pass += possible_digits.charAt(Math.floor(Math.random() * possible_digits.length));
|
||||||
}
|
}
|
||||||
|
|
||||||
for (var i = 0; i < password_complexity.symbol; i++) {
|
for (var k = 0; k < password_complexity.symbol; k++) {
|
||||||
pass += possible_symbols.charAt(Math.floor(Math.random() * possible_symbols.length));
|
pass += possible_symbols.charAt(Math.floor(Math.random() * possible_symbols.length));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1284,35 +1284,6 @@ table {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.social-share-button .ssb-icon {
|
|
||||||
background-image: none;
|
|
||||||
color: #fff;
|
|
||||||
height: $icon-width;
|
|
||||||
line-height: $icon-width;
|
|
||||||
text-align: center;
|
|
||||||
width: $icon-width;
|
|
||||||
|
|
||||||
&::before {
|
|
||||||
font-size: calc(#{$icon-width} / 2);
|
|
||||||
margin-right: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
&:hover,
|
|
||||||
&:focus {
|
|
||||||
background: #fff;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.ssb-twitter {
|
|
||||||
@include has-fa-icon(twitter, brands);
|
|
||||||
background: #45b0e3;
|
|
||||||
|
|
||||||
&:hover,
|
|
||||||
&:focus {
|
|
||||||
color: #40a2d1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.button.button-facebook {
|
.button.button-facebook {
|
||||||
@include has-fa-icon(facebook-f, brands);
|
@include has-fa-icon(facebook-f, brands);
|
||||||
background: #ebeef4;
|
background: #ebeef4;
|
||||||
@@ -1323,16 +1294,6 @@ table {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.ssb-facebook {
|
|
||||||
@include has-fa-icon(facebook-f, brands);
|
|
||||||
background: #3b5998;
|
|
||||||
|
|
||||||
&:hover,
|
|
||||||
&:focus {
|
|
||||||
color: #354f88;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.button.button-google {
|
.button.button-google {
|
||||||
@include has-fa-icon(google, brands);
|
@include has-fa-icon(google, brands);
|
||||||
background: #fcedea;
|
background: #fcedea;
|
||||||
@@ -1353,42 +1314,6 @@ table {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.ssb-telegram {
|
|
||||||
@include has-fa-icon(telegram-plane, brands);
|
|
||||||
background: #08c;
|
|
||||||
|
|
||||||
&:hover,
|
|
||||||
&:focus {
|
|
||||||
color: #40a2d1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.ssb-whatsapp_app {
|
|
||||||
@include has-fa-icon(whatsapp, brands);
|
|
||||||
background: #43d854;
|
|
||||||
|
|
||||||
&:hover,
|
|
||||||
&:focus {
|
|
||||||
color: #43d854;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@include breakpoint(medium) {
|
|
||||||
|
|
||||||
.ssb-telegram,
|
|
||||||
.ssb-whatsapp_app {
|
|
||||||
display: none !important;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.share-supported {
|
|
||||||
text-align: center;
|
|
||||||
|
|
||||||
.social-share-button {
|
|
||||||
display: inline-block;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 14. Verification
|
// 14. Verification
|
||||||
// ----------------
|
// ----------------
|
||||||
|
|
||||||
|
|||||||
75
app/assets/stylesheets/shared/social_share.scss
Normal file
75
app/assets/stylesheets/shared/social_share.scss
Normal file
@@ -0,0 +1,75 @@
|
|||||||
|
.social-share-button .ssb-icon {
|
||||||
|
background-image: none;
|
||||||
|
color: #fff;
|
||||||
|
height: $icon-width;
|
||||||
|
line-height: $icon-width;
|
||||||
|
text-align: center;
|
||||||
|
width: $icon-width;
|
||||||
|
|
||||||
|
&::before {
|
||||||
|
font-size: calc(#{$icon-width} / 2);
|
||||||
|
margin-right: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:hover,
|
||||||
|
&:focus {
|
||||||
|
background: #fff;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.ssb-twitter {
|
||||||
|
@include has-fa-icon(twitter, brands);
|
||||||
|
background: #45b0e3;
|
||||||
|
|
||||||
|
&:hover,
|
||||||
|
&:focus {
|
||||||
|
color: #40a2d1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.ssb-facebook {
|
||||||
|
@include has-fa-icon(facebook-f, brands);
|
||||||
|
background: #3b5998;
|
||||||
|
|
||||||
|
&:hover,
|
||||||
|
&:focus {
|
||||||
|
color: #354f88;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.ssb-telegram {
|
||||||
|
@include has-fa-icon(telegram-plane, brands);
|
||||||
|
background: #08c;
|
||||||
|
|
||||||
|
&:hover,
|
||||||
|
&:focus {
|
||||||
|
color: #40a2d1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.ssb-whatsapp_app {
|
||||||
|
@include has-fa-icon(whatsapp, brands);
|
||||||
|
background: #43d854;
|
||||||
|
|
||||||
|
&:hover,
|
||||||
|
&:focus {
|
||||||
|
color: #43d854;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@include breakpoint(medium) {
|
||||||
|
|
||||||
|
.ssb-telegram,
|
||||||
|
.ssb-whatsapp_app {
|
||||||
|
display: none !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.share-supported {
|
||||||
|
text-align: center;
|
||||||
|
|
||||||
|
.social-share-button {
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -64,15 +64,15 @@
|
|||||||
<% stats.all_phases.each do |phase| %>
|
<% stats.all_phases.each do |phase| %>
|
||||||
<td id="total_participants_<%= phase %>_phase_heading_<%= heading.id %>"
|
<td id="total_participants_<%= phase %>_phase_heading_<%= heading.id %>"
|
||||||
class="border-left text-center">
|
class="border-left text-center">
|
||||||
<%= stats.headings[heading.id]["total_participants_#{phase}_phase".to_sym] %>
|
<%= stats.headings[heading.id][:"total_participants_#{phase}_phase"] %>
|
||||||
</td>
|
</td>
|
||||||
<td id="percentage_participants_<%= phase %>_phase_heading_<%= heading.id %>"
|
<td id="percentage_participants_<%= phase %>_phase_heading_<%= heading.id %>"
|
||||||
class="border-left border-right text-center">
|
class="border-left border-right text-center">
|
||||||
<%= number_to_stats_percentage(stats.headings[heading.id]["percentage_participants_#{phase}_phase".to_sym]) %>
|
<%= number_to_stats_percentage(stats.headings[heading.id][:"percentage_participants_#{phase}_phase"]) %>
|
||||||
</td>
|
</td>
|
||||||
<td id="percentage_district_population_<%= phase %>_phase_heading_<%= heading.id %>"
|
<td id="percentage_district_population_<%= phase %>_phase_heading_<%= heading.id %>"
|
||||||
class="text-center border-right">
|
class="text-center border-right">
|
||||||
<%= number_to_stats_percentage(stats.headings[heading.id]["percentage_district_population_#{phase}_phase".to_sym]) %>
|
<%= number_to_stats_percentage(stats.headings[heading.id][:"percentage_district_population_#{phase}_phase"]) %>
|
||||||
</td>
|
</td>
|
||||||
<% end %>
|
<% end %>
|
||||||
</tr>
|
</tr>
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<% if current_user.poll_officer? %>
|
<% if current_user.poll_officer? %>
|
||||||
<div id="officing-booth" class="callout info">
|
<div id="officing-booth" class="callout info">
|
||||||
<%= t("admin.officing_booth.title", booth: try(:current_booth)&.location) %>
|
<%= t("admin.officing_booth.title", booth: current_booth&.location) %>
|
||||||
</div>
|
</div>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|||||||
948
package-lock.json
generated
948
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@@ -12,6 +12,7 @@
|
|||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@stylistic/stylelint-plugin": "^2.1.0",
|
"@stylistic/stylelint-plugin": "^2.1.0",
|
||||||
|
"eslint": "^8.57.0",
|
||||||
"postcss-scss": "^4.0.9",
|
"postcss-scss": "^4.0.9",
|
||||||
"stylelint": "^16.3.1",
|
"stylelint": "^16.3.1",
|
||||||
"stylelint-order": "^6.0.4",
|
"stylelint-order": "^6.0.4",
|
||||||
|
|||||||
Reference in New Issue
Block a user