about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--.codeclimate.yml10
-rw-r--r--.devcontainer/devcontainer.json20
-rw-r--r--.devcontainer/docker-compose.yml5
-rw-r--r--.github/dependabot.yml4
-rw-r--r--.github/workflows/build-image.yml4
-rw-r--r--.github/workflows/check-i18n.yml40
-rw-r--r--.prettierignore78
-rw-r--r--.prettierrc.js3
-rw-r--r--.rubocop.yml22
-rw-r--r--app.json5
-rw-r--r--boxfile.yml32
-rw-r--r--config/database.yml1
-rw-r--r--config/i18n-tasks.yml4
-rw-r--r--docker-compose.yml89
-rw-r--r--package.json5
-rw-r--r--scalingo.json5
-rw-r--r--yarn.lock5
17 files changed, 203 insertions, 129 deletions
diff --git a/.codeclimate.yml b/.codeclimate.yml
index c253bd95a..ee9022cda 100644
--- a/.codeclimate.yml
+++ b/.codeclimate.yml
@@ -1,4 +1,4 @@
-version: "2"
+version: '2'
 checks:
   argument-count:
     enabled: false
@@ -34,8 +34,8 @@ plugins:
   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
diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json
index 78e940763..628efc8ec 100644
--- a/.devcontainer/devcontainer.json
+++ b/.devcontainer/devcontainer.json
@@ -5,22 +5,22 @@
   "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"
 }
diff --git a/.devcontainer/docker-compose.yml b/.devcontainer/docker-compose.yml
index 906fce430..538f6cccd 100644
--- a/.devcontainer/docker-compose.yml
+++ b/.devcontainer/docker-compose.yml
@@ -9,9 +9,9 @@ services:
         # 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:
@@ -34,7 +34,6 @@ services:
       - internal_network
     user: vscode
 
-
   db:
     image: postgres:14-alpine
     restart: unless-stopped
diff --git a/.github/dependabot.yml b/.github/dependabot.yml
index c4cd48878..bb1fccf7c 100644
--- a/.github/dependabot.yml
+++ b/.github/dependabot.yml
@@ -6,7 +6,7 @@
 version: 2
 updates:
   - package-ecosystem: npm
-    directory: "/"
+    directory: '/'
     schedule:
       interval: weekly
     open-pull-requests-limit: 99
@@ -14,7 +14,7 @@ updates:
       - dependency-type: direct
 
   - package-ecosystem: bundler
-    directory: "/"
+    directory: '/'
     schedule:
       interval: weekly
     open-pull-requests-limit: 99
diff --git a/.github/workflows/build-image.yml b/.github/workflows/build-image.yml
index bae185484..75c7b54a6 100644
--- a/.github/workflows/build-image.yml
+++ b/.github/workflows/build-image.yml
@@ -3,9 +3,9 @@ on:
   workflow_dispatch:
   push:
     branches:
-      - "main"
+      - 'main'
     tags:
-      - "*"
+      - '*'
   pull_request:
     paths:
       - .github/workflows/build-image.yml
diff --git a/.github/workflows/check-i18n.yml b/.github/workflows/check-i18n.yml
index 9cb98dd12..be38a096d 100644
--- a/.github/workflows/check-i18n.yml
+++ b/.github/workflows/check-i18n.yml
@@ -2,9 +2,9 @@ name: Check i18n
 
 on:
   push:
-    branches: [ main ]
+    branches: [main]
   pull_request:
-    branches: [ main ]
+    branches: [main]
 
 env:
   RAILS_ENV: test
@@ -14,21 +14,21 @@ jobs:
     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
diff --git a/.prettierignore b/.prettierignore
new file mode 100644
index 000000000..de7673eb6
--- /dev/null
+++ b/.prettierignore
@@ -0,0 +1,78 @@
+# 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
diff --git a/.prettierrc.js b/.prettierrc.js
new file mode 100644
index 000000000..1d70813d5
--- /dev/null
+++ b/.prettierrc.js
@@ -0,0 +1,3 @@
+module.exports = {
+  singleQuote: true
+}
diff --git a/.rubocop.yml b/.rubocop.yml
index 4948aea5a..a76937426 100644
--- a/.rubocop.yml
+++ b/.rubocop.yml
@@ -5,17 +5,17 @@ AllCops:
   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
diff --git a/app.json b/app.json
index 6b4365383..c694908c5 100644
--- a/app.json
+++ b/app.json
@@ -95,8 +95,5 @@
   "scripts": {
     "postdeploy": "bundle exec rails db:migrate && bundle exec rails db:seed"
   },
-  "addons": [
-    "heroku-postgresql",
-    "heroku-redis"
-  ]
+  "addons": ["heroku-postgresql", "heroku-redis"]
 }
diff --git a/boxfile.yml b/boxfile.yml
index c1d89bb15..27166cec9 100644
--- a/boxfile.yml
+++ b/boxfile.yml
@@ -43,20 +43,19 @@ run.config:
 
   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:
@@ -65,11 +64,10 @@ deploy.config:
   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:
@@ -89,7 +87,6 @@ web.web:
     data.storage:
       - public/system
 
-
 web.stream:
   start:
     nginx: nginx -c /app/nanobox/nginx-stream.conf
@@ -103,7 +100,6 @@ web.stream:
   writable_dirs:
     - tmp
 
-
 worker.sidekiq:
   start:
     default: bundle exec sidekiq -c 5 -q default -L /app/log/sidekiq.log
@@ -123,7 +119,6 @@ worker.sidekiq:
     data.storage:
       - public/system
 
-
 data.db:
   image: nanobox/postgresql:9.6
 
@@ -145,7 +140,6 @@ data.db:
           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
 
@@ -171,7 +165,6 @@ data.elastic:
           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
 
@@ -191,7 +184,6 @@ data.redis:
           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
 
diff --git a/config/database.yml b/config/database.yml
index 9b8d096e9..127a78abf 100644
--- a/config/database.yml
+++ b/config/database.yml
@@ -32,4 +32,3 @@ production:
   host: <%= ENV['DB_HOST'] || 'localhost' %>
   port: <%= ENV['DB_PORT'] || 5432 %>
   prepared_statements: <%= ENV['PREPARED_STATEMENTS'] || 'true' %>
-
diff --git a/config/i18n-tasks.yml b/config/i18n-tasks.yml
index 7f879b1aa..bc48323e4 100644
--- a/config/i18n-tasks.yml
+++ b/config/i18n-tasks.yml
@@ -17,8 +17,8 @@ data:
 
 search:
   paths:
-   - app/
-   - config/navigation.rb
+    - app/
+    - config/navigation.rb
 
   relative_roots:
     - app/controllers
diff --git a/docker-compose.yml b/docker-compose.yml
index 01fe320a4..5c2c0c5df 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -1,6 +1,5 @@
 version: '3'
 services:
-
   db:
     restart: always
     image: postgres:14-alpine
@@ -8,11 +7,11 @@ services:
     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
@@ -20,28 +19,28 @@ services:
     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: .
@@ -53,13 +52,14 @@ services:
       - 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
 
@@ -73,9 +73,10 @@ services:
       - 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
@@ -95,24 +96,24 @@ services:
     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:
diff --git a/package.json b/package.json
index d42c92ced..61b3622f7 100644
--- a/package.json
+++ b/package.json
@@ -14,7 +14,9 @@
     "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",
@@ -182,6 +184,7 @@
     "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",
diff --git a/scalingo.json b/scalingo.json
index 51d9b5b9f..511c1802a 100644
--- a/scalingo.json
+++ b/scalingo.json
@@ -92,8 +92,5 @@
   "scripts": {
     "postdeploy": "bundle exec rails db:migrate && bundle exec rails db:seed"
   },
-  "addons": [
-    "postgresql",
-    "redis"
-  ]
+  "addons": ["postgresql", "redis"]
 }
diff --git a/yarn.lock b/yarn.lock
index 45e459c40..1327e9f73 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -8651,6 +8651,11 @@ prelude-ls@~1.1.2:
   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"