Initial commit
This commit is contained in:
commit
dd64ef10a8
|
@ -0,0 +1,52 @@
|
||||||
|
name: Linting
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
- main
|
||||||
|
pull_request:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
|
||||||
|
- name: Set up Node.js
|
||||||
|
uses: actions/setup-node@v1
|
||||||
|
with:
|
||||||
|
node-version: 12
|
||||||
|
|
||||||
|
- name: Set up ruby
|
||||||
|
uses: ruby/setup-ruby@v1
|
||||||
|
with:
|
||||||
|
ruby-version: 2.7
|
||||||
|
bundler-cache: true
|
||||||
|
|
||||||
|
- name: Yarn install
|
||||||
|
run: yarn install
|
||||||
|
|
||||||
|
- name: ESLint
|
||||||
|
if: ${{ always() }}
|
||||||
|
run: yarn eslint --ext .js,.js.es6 --no-error-on-unmatched-pattern {test,assets}/javascripts
|
||||||
|
|
||||||
|
- name: Prettier
|
||||||
|
if: ${{ always() }}
|
||||||
|
run: |
|
||||||
|
yarn prettier -v
|
||||||
|
if [ -d "assets" ]; then \
|
||||||
|
yarn prettier --list-different "assets/**/*.{scss,js,es6}" ; \
|
||||||
|
fi
|
||||||
|
if [ -d "test" ]; then \
|
||||||
|
yarn prettier --list-different "test/**/*.{js,es6}" ; \
|
||||||
|
fi
|
||||||
|
|
||||||
|
- name: Ember template lint
|
||||||
|
if: ${{ always() }}
|
||||||
|
run: yarn ember-template-lint assets/javascripts
|
||||||
|
|
||||||
|
- name: Rubocop
|
||||||
|
if: ${{ always() }}
|
||||||
|
run: bundle exec rubocop .
|
|
@ -0,0 +1,131 @@
|
||||||
|
name: Plugin Tests
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
- main
|
||||||
|
pull_request:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
name: ${{ matrix.build_type }}
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
container: discourse/discourse_test:release
|
||||||
|
timeout-minutes: 60
|
||||||
|
|
||||||
|
env:
|
||||||
|
DISCOURSE_HOSTNAME: www.example.com
|
||||||
|
RUBY_GLOBAL_METHOD_CACHE_SIZE: 131072
|
||||||
|
RAILS_ENV: test
|
||||||
|
PGHOST: postgres
|
||||||
|
PGUSER: discourse
|
||||||
|
PGPASSWORD: discourse
|
||||||
|
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
|
||||||
|
matrix:
|
||||||
|
build_type: ["backend", "frontend"]
|
||||||
|
ruby: ["2.7"]
|
||||||
|
postgres: ["12"]
|
||||||
|
redis: ["4.x"]
|
||||||
|
|
||||||
|
services:
|
||||||
|
postgres:
|
||||||
|
image: postgres:${{ matrix.postgres }}
|
||||||
|
ports:
|
||||||
|
- 5432:5432
|
||||||
|
env:
|
||||||
|
POSTGRES_USER: discourse
|
||||||
|
POSTGRES_PASSWORD: discourse
|
||||||
|
options: >-
|
||||||
|
--mount type=tmpfs,destination=/var/lib/postgresql/data
|
||||||
|
--health-cmd pg_isready
|
||||||
|
--health-interval 10s
|
||||||
|
--health-timeout 5s
|
||||||
|
--health-retries 5
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
with:
|
||||||
|
repository: discourse/discourse
|
||||||
|
fetch-depth: 1
|
||||||
|
|
||||||
|
- name: Install plugin
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
with:
|
||||||
|
path: plugins/${{ github.event.repository.name }}
|
||||||
|
fetch-depth: 1
|
||||||
|
|
||||||
|
- name: Check spec existence
|
||||||
|
id: check_spec
|
||||||
|
uses: andstor/file-existence-action@v1
|
||||||
|
with:
|
||||||
|
files: "plugins/${{ github.event.repository.name }}/spec"
|
||||||
|
|
||||||
|
- name: Check qunit existence
|
||||||
|
id: check_qunit
|
||||||
|
uses: andstor/file-existence-action@v1
|
||||||
|
with:
|
||||||
|
files: "plugins/${{ github.event.repository.name }}/test/javascripts"
|
||||||
|
|
||||||
|
- name: Setup Git
|
||||||
|
run: |
|
||||||
|
git config --global user.email "ci@ci.invalid"
|
||||||
|
git config --global user.name "Discourse CI"
|
||||||
|
|
||||||
|
- name: Setup redis
|
||||||
|
uses: shogo82148/actions-setup-redis@v1
|
||||||
|
with:
|
||||||
|
redis-version: ${{ matrix.redis }}
|
||||||
|
|
||||||
|
- name: Bundler cache
|
||||||
|
uses: actions/cache@v2
|
||||||
|
with:
|
||||||
|
path: vendor/bundle
|
||||||
|
key: ${{ runner.os }}-${{ matrix.ruby }}-gem-${{ hashFiles('**/Gemfile.lock') }}
|
||||||
|
restore-keys: |
|
||||||
|
${{ runner.os }}-${{ matrix.ruby }}-gem-
|
||||||
|
|
||||||
|
- name: Setup gems
|
||||||
|
run: |
|
||||||
|
bundle config --local path vendor/bundle
|
||||||
|
bundle config --local deployment true
|
||||||
|
bundle config --local without development
|
||||||
|
bundle install --jobs 4
|
||||||
|
bundle clean
|
||||||
|
|
||||||
|
- name: Lint English locale
|
||||||
|
if: matrix.build_type == 'backend'
|
||||||
|
run: bundle exec ruby script/i18n_lint.rb "plugins/${{ github.event.repository.name }}/locales/{client,server}.en.yml"
|
||||||
|
|
||||||
|
- name: Get yarn cache directory
|
||||||
|
id: yarn-cache-dir
|
||||||
|
run: echo "::set-output name=dir::$(yarn cache dir)"
|
||||||
|
|
||||||
|
- name: Yarn cache
|
||||||
|
uses: actions/cache@v2
|
||||||
|
id: yarn-cache
|
||||||
|
with:
|
||||||
|
path: ${{ steps.yarn-cache-dir.outputs.dir }}
|
||||||
|
key: ${{ runner.os }}-${{ matrix.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
|
||||||
|
restore-keys: |
|
||||||
|
${{ runner.os }}-${{ matrix.os }}-yarn-
|
||||||
|
|
||||||
|
- name: Yarn install
|
||||||
|
run: yarn install
|
||||||
|
|
||||||
|
- name: Migrate database
|
||||||
|
run: |
|
||||||
|
bin/rake db:create
|
||||||
|
bin/rake db:migrate
|
||||||
|
|
||||||
|
- name: Plugin RSpec
|
||||||
|
if: matrix.build_type == 'backend' && steps.check_spec.outputs.files_exists == 'true'
|
||||||
|
run: bin/rake plugin:spec[${{ github.event.repository.name }}]
|
||||||
|
|
||||||
|
- name: Plugin QUnit
|
||||||
|
if: matrix.build_type == 'frontend' && steps.check_qunit.outputs.files_exists == 'true'
|
||||||
|
run: bundle exec rake plugin:qunit['${{ github.event.repository.name }}','1200000']
|
||||||
|
timeout-minutes: 30
|
|
@ -0,0 +1 @@
|
||||||
|
node_modules
|
|
@ -0,0 +1 @@
|
||||||
|
{}
|
|
@ -0,0 +1,2 @@
|
||||||
|
inherit_gem:
|
||||||
|
rubocop-discourse: default.yml
|
|
@ -0,0 +1,4 @@
|
||||||
|
module.exports = {
|
||||||
|
plugins: ["ember-template-lint-plugin-discourse"],
|
||||||
|
extends: "discourse:recommended",
|
||||||
|
};
|
|
@ -0,0 +1,7 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
source 'https://rubygems.org'
|
||||||
|
|
||||||
|
group :development do
|
||||||
|
gem 'rubocop-discourse'
|
||||||
|
end
|
|
@ -0,0 +1,43 @@
|
||||||
|
GEM
|
||||||
|
remote: https://rubygems.org/
|
||||||
|
specs:
|
||||||
|
ast (2.4.2)
|
||||||
|
parallel (1.20.1)
|
||||||
|
parser (3.0.0.0)
|
||||||
|
ast (~> 2.4.1)
|
||||||
|
rainbow (3.0.0)
|
||||||
|
regexp_parser (2.1.1)
|
||||||
|
rexml (3.2.4)
|
||||||
|
rubocop (1.12.0)
|
||||||
|
parallel (~> 1.10)
|
||||||
|
parser (>= 3.0.0.0)
|
||||||
|
rainbow (>= 2.2.2, < 4.0)
|
||||||
|
regexp_parser (>= 1.8, < 3.0)
|
||||||
|
rexml
|
||||||
|
rubocop-ast (>= 1.2.0, < 2.0)
|
||||||
|
ruby-progressbar (~> 1.7)
|
||||||
|
unicode-display_width (>= 1.4.0, < 3.0)
|
||||||
|
rubocop-ast (1.4.1)
|
||||||
|
parser (>= 2.7.1.5)
|
||||||
|
rubocop-discourse (2.4.1)
|
||||||
|
rubocop (>= 1.1.0)
|
||||||
|
rubocop-rspec (>= 2.0.0)
|
||||||
|
rubocop-rspec (2.2.0)
|
||||||
|
rubocop (~> 1.0)
|
||||||
|
rubocop-ast (>= 1.1.0)
|
||||||
|
ruby-progressbar (1.11.0)
|
||||||
|
unicode-display_width (2.0.0)
|
||||||
|
|
||||||
|
PLATFORMS
|
||||||
|
arm64-darwin-20
|
||||||
|
ruby
|
||||||
|
x86_64-darwin-18
|
||||||
|
x86_64-darwin-19
|
||||||
|
x86_64-darwin-20
|
||||||
|
x86_64-linux
|
||||||
|
|
||||||
|
DEPENDENCIES
|
||||||
|
rubocop-discourse
|
||||||
|
|
||||||
|
BUNDLED WITH
|
||||||
|
2.2.13
|
|
@ -0,0 +1,21 @@
|
||||||
|
The MIT License (MIT)
|
||||||
|
|
||||||
|
Copyright (c) 2021 Civilized Discourse Construction Kit
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in
|
||||||
|
all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
|
THE SOFTWARE.
|
|
@ -0,0 +1,2 @@
|
||||||
|
en:
|
||||||
|
js:
|
|
@ -0,0 +1 @@
|
||||||
|
en:
|
|
@ -0,0 +1 @@
|
||||||
|
plugins:
|
|
@ -0,0 +1,10 @@
|
||||||
|
{
|
||||||
|
"name": "discourse-plugin-name",
|
||||||
|
"version": "0.0.1",
|
||||||
|
"repository": "TODO",
|
||||||
|
"author": "Discourse",
|
||||||
|
"license": "MIT",
|
||||||
|
"devDependencies": {
|
||||||
|
"eslint-config-discourse": "^1.1.8"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,12 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
# name: discourse-plugin-name
|
||||||
|
# about: TODO
|
||||||
|
# version: 0.0.1
|
||||||
|
# authors: Discourse
|
||||||
|
# url: TODO
|
||||||
|
|
||||||
|
enabled_site_setting :plugin_name_enabled
|
||||||
|
|
||||||
|
after_initialize do
|
||||||
|
end
|
|
@ -0,0 +1,7 @@
|
||||||
|
# Configuration file for discourse-translator-bot
|
||||||
|
|
||||||
|
files:
|
||||||
|
- source_path: config/locales/client.en.yml
|
||||||
|
destination_path: client.yml
|
||||||
|
- source_path: config/locales/server.en.yml
|
||||||
|
destination_path: server.yml
|
Loading…
Reference in New Issue