-version: "2"
+version: '2'
checks:
argument-count:
enabled: false
sass-lint:
enabled: true
exclude_patterns:
-- spec/
-- vendor/asset/
+ - spec/
+ - vendor/asset/
-- app/javascript/mastodon/locales/**/*.json
-- config/locales/**/*.yml
+ - app/javascript/mastodon/locales/**/*.json
+ - config/locales/**/*.yml
"workspaceFolder": "/workspaces/mastodon",
// Set *default* container specific settings.json values on container create.
- "settings": {},
+ "settings": {},
// Add the IDs of extensions you want installed when the container is created.
- "extensions": [
+ "extensions": [
"EditorConfig.EditorConfig",
"dbaeumer.vscode-eslint",
- "rebornix.Ruby"
- ],
+ "rebornix.Ruby"
+ ],
// Use 'forwardPorts' to make a list of ports inside the container available locally.
- // This can be used to network with other containers or the host.
- "forwardPorts": [3000, 4000],
+ // This can be used to network with other containers or the host.
+ "forwardPorts": [3000, 4000],
- // Use 'postCreateCommand' to run commands after the container is created.
- "postCreateCommand": "bundle install --path vendor/bundle && yarn install && ./bin/rails db:setup",
+ // Use 'postCreateCommand' to run commands after the container is created.
+ "postCreateCommand": "bundle install --path vendor/bundle && yarn install && ./bin/rails db:setup",
- // Comment out to connect as root instead. More info: https://aka.ms/vscode-remote/containers/non-root.
- "remoteUser": "vscode"
+ // Comment out to connect as root instead. More info: https://aka.ms/vscode-remote/containers/non-root.
+ "remoteUser": "vscode"
}
# Update 'VARIANT' to pick a version of Ruby: 3, 3.1, 3.0, 2, 2.7, 2.6
# Append -bullseye or -buster to pin to an OS version.
# Use -bullseye variants on local arm64/Apple Silicon.
- VARIANT: "3.0-bullseye"
+ VARIANT: '3.0-bullseye'
# Optional Node.js version to install
- NODE_VERSION: "14"
+ NODE_VERSION: '14'
volumes:
- ..:/workspaces/mastodon:cached
environment:
- internal_network
user: vscode
-
db:
image: postgres:14-alpine
restart: unless-stopped
version: 2
updates:
- package-ecosystem: npm
- directory: "/"
+ directory: '/'
schedule:
interval: weekly
open-pull-requests-limit: 99
- dependency-type: direct
- package-ecosystem: bundler
- directory: "/"
+ directory: '/'
schedule:
interval: weekly
open-pull-requests-limit: 99
workflow_dispatch:
push:
branches:
- - "main"
+ - 'main'
tags:
- - "*"
+ - '*'
pull_request:
paths:
- .github/workflows/build-image.yml
on:
push:
- branches: [ main ]
+ branches: [main]
pull_request:
- branches: [ main ]
+ branches: [main]
env:
RAILS_ENV: test
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v2
- - name: Install system dependencies
- run: |
- sudo apt-get update
- sudo apt-get install -y libicu-dev libidn11-dev
- - name: Set up Ruby
- uses: ruby/setup-ruby@v1
- with:
- ruby-version: '3.0'
- bundler-cache: true
- - name: Check locale file normalization
- run: bundle exec i18n-tasks check-normalized
- - name: Check for unused strings
- run: bundle exec i18n-tasks unused -l en
- - name: Check for wrong string interpolations
- run: bundle exec i18n-tasks check-consistent-interpolations
- - name: Check that all required locale files exist
- run: bundle exec rake repo:check_locales_files
+ - uses: actions/checkout@v2
+ - name: Install system dependencies
+ run: |
+ sudo apt-get update
+ sudo apt-get install -y libicu-dev libidn11-dev
+ - name: Set up Ruby
+ uses: ruby/setup-ruby@v1
+ with:
+ ruby-version: '3.0'
+ bundler-cache: true
+ - name: Check locale file normalization
+ run: bundle exec i18n-tasks check-normalized
+ - name: Check for unused strings
+ run: bundle exec i18n-tasks unused -l en
+ - name: Check for wrong string interpolations
+ run: bundle exec i18n-tasks check-consistent-interpolations
+ - name: Check that all required locale files exist
+ run: bundle exec rake repo:check_locales_files
--- /dev/null
+# See https://help.github.com/articles/ignoring-files for more about ignoring files.
+#
+# If you find yourself ignoring temporary files generated by your text editor
+# or operating system, you probably want to add a global ignore instead:
+# git config --global core.excludesfile '~/.gitignore_global'
+
+# Ignore bundler config and downloaded libraries.
+/.bundle
+/vendor/bundle
+
+# Ignore the default SQLite database.
+/db/*.sqlite3
+/db/*.sqlite3-journal
+
+# Ignore all logfiles and tempfiles.
+.eslintcache
+/log/*
+!/log/.keep
+/tmp
+/coverage
+/public/system
+/public/assets
+/public/packs
+/public/packs-test
+.env
+.env.production
+.env.development
+/node_modules/
+/build/
+
+# Ignore Vagrant files
+.vagrant/
+
+# Ignore Capistrano customizations
+/config/deploy/*
+
+# Ignore IDE files
+.vscode/
+.idea/
+
+# Ignore postgres + redis + elasticsearch volume optionally created by docker-compose
+/postgres
+/postgres14
+/redis
+/elasticsearch
+
+# ignore Helm dependency charts
+/chart/charts/*.tgz
+
+# Ignore Apple files
+.DS_Store
+
+# Ignore vim files
+*~
+*.swp
+
+# Ignore npm debug log
+npm-debug.log
+
+# Ignore yarn log files
+yarn-error.log
+yarn-debug.log
+
+# Ignore vagrant log files
+*-cloudimg-console.log
+
+# Ignore Docker option files
+docker-compose.override.yml
+
+# Ignore Helm files
+/chart
+
+# Ignore emoji map file
+/app/javascript/mastodon/features/emoji/emoji_map.json
+
+# Ignore locale files
+/app/javascript/mastodon/locales
+/config/locales
--- /dev/null
+module.exports = {
+ singleQuote: true
+}
TargetRubyVersion: 2.5
NewCops: disable
Exclude:
- - 'spec/**/*'
- - 'db/**/*'
- - 'app/views/**/*'
- - 'config/**/*'
- - 'bin/*'
- - 'Rakefile'
- - 'node_modules/**/*'
- - 'Vagrantfile'
- - 'vendor/**/*'
- - 'lib/json_ld/*'
- - 'lib/templates/**/*'
+ - 'spec/**/*'
+ - 'db/**/*'
+ - 'app/views/**/*'
+ - 'config/**/*'
+ - 'bin/*'
+ - 'Rakefile'
+ - 'node_modules/**/*'
+ - 'Vagrantfile'
+ - 'vendor/**/*'
+ - 'lib/json_ld/*'
+ - 'lib/templates/**/*'
Bundler/OrderedGems:
Enabled: false
"scripts": {
"postdeploy": "bundle exec rails db:migrate && bundle exec rails db:seed"
},
- "addons": [
- "heroku-postgresql",
- "heroku-redis"
- ]
+ "addons": ["heroku-postgresql", "heroku-redis"]
}
fs_watch: true
-
deploy.config:
extra_steps:
- NODE_ENV=production bundle exec rake assets:precompile
transform:
- - "envsubst < /app/.env.nanobox > /app/.env.production"
+ - 'envsubst < /app/.env.nanobox > /app/.env.production'
- |-
- if [ -z "$LOCAL_DOMAIN" ]
- then
- . /app/.env.production
- export LOCAL_DOMAIN
- fi
- erb /app/nanobox/nginx-web.conf.erb > /app/nanobox/nginx-web.conf
- erb /app/nanobox/nginx-stream.conf.erb > /app/nanobox/nginx-stream.conf
+ if [ -z "$LOCAL_DOMAIN" ]
+ then
+ . /app/.env.production
+ export LOCAL_DOMAIN
+ fi
+ erb /app/nanobox/nginx-web.conf.erb > /app/nanobox/nginx-web.conf
+ erb /app/nanobox/nginx-stream.conf.erb > /app/nanobox/nginx-stream.conf
- touch /app/log/production.log
before_live:
web.web:
after_live:
worker.sidekiq:
- |-
- if [[ "${ES_ENABLED}" != "false" ]]
- then
- bin/tootctl search deploy
- fi
-
+ if [[ "${ES_ENABLED}" != "false" ]]
+ then
+ bin/tootctl search deploy
+ fi
web.web:
start:
data.storage:
- public/system
-
web.stream:
start:
nginx: nginx -c /app/nanobox/nginx-stream.conf
writable_dirs:
- tmp
-
worker.sidekiq:
start:
default: bundle exec sidekiq -c 5 -q default -L /app/log/sidekiq.log
data.storage:
- public/system
-
data.db:
image: nanobox/postgresql:9.6
curl -k -H "X-AUTH-TOKEN: ${WAREHOUSE_DATA_HOARDER_TOKEN}" https://${WAREHOUSE_DATA_HOARDER_HOST}:7410/blobs/${file} -X DELETE
done
-
data.elastic:
image: nanobox/elasticsearch:5
curl -k -H "X-AUTH-TOKEN: ${WAREHOUSE_DATA_HOARDER_TOKEN}" https://${WAREHOUSE_DATA_HOARDER_HOST}:7410/blobs/${file} -X DELETE
done
-
data.redis:
image: nanobox/redis:4.0
curl -k -H "X-AUTH-TOKEN: ${WAREHOUSE_DATA_HOARDER_TOKEN}" https://${WAREHOUSE_DATA_HOARDER_HOST}:7410/blobs/${file} -X DELETE
done
-
data.storage:
image: nanobox/unfs:0.9
host: <%= ENV['DB_HOST'] || 'localhost' %>
port: <%= ENV['DB_PORT'] || 5432 %>
prepared_statements: <%= ENV['PREPARED_STATEMENTS'] || 'true' %>
-
search:
paths:
- - app/
- - config/navigation.rb
+ - app/
+ - config/navigation.rb
relative_roots:
- app/controllers
version: '3'
services:
-
db:
restart: always
image: postgres:14-alpine
networks:
- internal_network
healthcheck:
- test: ["CMD", "pg_isready", "-U", "postgres"]
+ test: ['CMD', 'pg_isready', '-U', 'postgres']
volumes:
- ./postgres14:/var/lib/postgresql/data
environment:
- - "POSTGRES_HOST_AUTH_METHOD=trust"
+ - 'POSTGRES_HOST_AUTH_METHOD=trust'
redis:
restart: always
networks:
- internal_network
healthcheck:
- test: ["CMD", "redis-cli", "ping"]
+ test: ['CMD', 'redis-cli', 'ping']
volumes:
- ./redis:/data
-# es:
-# restart: always
-# image: docker.elastic.co/elasticsearch/elasticsearch-oss:7.10.2
-# environment:
-# - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
-# - "cluster.name=es-mastodon"
-# - "discovery.type=single-node"
-# - "bootstrap.memory_lock=true"
-# networks:
-# - internal_network
-# healthcheck:
-# test: ["CMD-SHELL", "curl --silent --fail localhost:9200/_cluster/health || exit 1"]
-# volumes:
-# - ./elasticsearch:/usr/share/elasticsearch/data
-# ulimits:
-# memlock:
-# soft: -1
-# hard: -1
+ # es:
+ # restart: always
+ # image: docker.elastic.co/elasticsearch/elasticsearch-oss:7.10.2
+ # environment:
+ # - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
+ # - "cluster.name=es-mastodon"
+ # - "discovery.type=single-node"
+ # - "bootstrap.memory_lock=true"
+ # networks:
+ # - internal_network
+ # healthcheck:
+ # test: ["CMD-SHELL", "curl --silent --fail localhost:9200/_cluster/health || exit 1"]
+ # volumes:
+ # - ./elasticsearch:/usr/share/elasticsearch/data
+ # ulimits:
+ # memlock:
+ # soft: -1
+ # hard: -1
web:
build: .
- external_network
- internal_network
healthcheck:
- test: ["CMD-SHELL", "wget -q --spider --proxy=off localhost:3000/health || exit 1"]
+ # prettier-ignore
+ test: ['CMD-SHELL', 'wget -q --spider --proxy=off localhost:3000/health || exit 1']
ports:
- - "127.0.0.1:3000:3000"
+ - '127.0.0.1:3000:3000'
depends_on:
- db
- redis
-# - es
+ # - es
volumes:
- ./public/system:/mastodon/public/system
- external_network
- internal_network
healthcheck:
- test: ["CMD-SHELL", "wget -q --spider --proxy=off localhost:4000/api/v1/streaming/health || exit 1"]
+ # prettier-ignore
+ test: ['CMD-SHELL', 'wget -q --spider --proxy=off localhost:4000/api/v1/streaming/health || exit 1']
ports:
- - "127.0.0.1:4000:4000"
+ - '127.0.0.1:4000:4000'
depends_on:
- db
- redis
volumes:
- ./public/system:/mastodon/public/system
healthcheck:
- test: ["CMD-SHELL", "ps aux | grep '[s]idekiq\ 6' || false"]
+ test: ['CMD-SHELL', "ps aux | grep '[s]idekiq\ 6' || false"]
-## Uncomment to enable federation with tor instances along with adding the following ENV variables
-## http_proxy=http://privoxy:8118
-## ALLOW_ACCESS_TO_HIDDEN_SERVICE=true
-# tor:
-# image: sirboops/tor
-# networks:
-# - external_network
-# - internal_network
-#
-# privoxy:
-# image: sirboops/privoxy
-# volumes:
-# - ./priv-config:/opt/config
-# networks:
-# - external_network
-# - internal_network
+ ## Uncomment to enable federation with tor instances along with adding the following ENV variables
+ ## http_proxy=http://privoxy:8118
+ ## ALLOW_ACCESS_TO_HIDDEN_SERVICE=true
+ # tor:
+ # image: sirboops/tor
+ # networks:
+ # - external_network
+ # - internal_network
+ #
+ # privoxy:
+ # image: sirboops/privoxy
+ # volumes:
+ # - ./priv-config:/opt/config
+ # networks:
+ # - external_network
+ # - internal_network
networks:
external_network:
"test:lint": "${npm_execpath} run test:lint:js && ${npm_execpath} run test:lint:sass",
"test:lint:js": "eslint --ext=js . --cache",
"test:lint:sass": "sass-lint -v",
- "test:jest": "cross-env NODE_ENV=test jest"
+ "test:jest": "cross-env NODE_ENV=test jest",
+ "format": "prettier --write '**/*.{json,yml}",
+ "format-check": "prettier --write '**/*.{json,yml}"
},
"repository": {
"type": "git",
"eslint-plugin-promise": "~6.0.0",
"eslint-plugin-react": "~7.29.3",
"jest": "^27.5.1",
+ "prettier": "^2.6.0",
"raf": "^3.4.1",
"react-intl-translations-manager": "^5.0.3",
"react-test-renderer": "^16.14.0",
"scripts": {
"postdeploy": "bundle exec rails db:migrate && bundle exec rails db:seed"
},
- "addons": [
- "postgresql",
- "redis"
- ]
+ "addons": ["postgresql", "redis"]
}
resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54"
integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=
+prettier@^2.6.0:
+ version "2.6.0"
+ resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.6.0.tgz#12f8f504c4d8ddb76475f441337542fa799207d4"
+ integrity sha512-m2FgJibYrBGGgQXNzfd0PuDGShJgRavjUoRCw1mZERIWVSXF0iLzLm+aOqTAbLnC3n6JzUhAA8uZnFVghHJ86A==
+
pretty-format@^25.2.1, pretty-format@^25.5.0:
version "25.5.0"
resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-25.5.0.tgz#7873c1d774f682c34b8d48b6743a2bf2ac55791a"