Skip to content

Commit 059b64d

Browse files
authored
style: add quokka and format code (#511)
Quokka is a formatter that enforces credo's rules. This PR adds quokka to each subproject and formats everything.
1 parent 10797e6 commit 059b64d

File tree

286 files changed

+1029
-1033
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

286 files changed

+1029
-1033
lines changed

.formatter-config.exs

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
defmodule Formatter.Config do
2+
def quokka do
3+
[
4+
only: [
5+
# Changes to blocks of code
6+
:blocks,
7+
# Fixes for imports, aliases, etc.
8+
:module_directives,
9+
# Various fixes for pipes
10+
:pipes,
11+
# Inefficient function rewrites
12+
:single_node
13+
]
14+
]
15+
end
16+
end

.github/workflows/ci.yml

Lines changed: 24 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,6 @@ on:
66
branches:
77
- main
88

9-
env:
10-
DEFAULT_ELIXIR: 1.15.8-otp-25
11-
DEFAULT_OTP: 25.3.2.4
12-
139
permissions:
1410
contents: read
1511

@@ -30,21 +26,19 @@ jobs:
3026
- expert_credo
3127
- forge
3228
steps:
33-
# Step: Setup Elixir + Erlang image as the base
34-
- uses: extractions/setup-just@f8a3cce218d9f83db3a2ecd90e41ac3de6cdfd9b # v3.1.0
35-
- uses: erlef/setup-beam@e6d7c94229049569db56a7ad5a540c051a010af9 # v1.20.4
36-
with:
37-
otp-version: ${{ env.DEFAULT_OTP }}
38-
elixir-version: ${{ env.DEFAULT_ELIXIR }}
39-
version-type: "strict"
40-
41-
# Step: Check out the code.
4229
- name: Checkout code
4330
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
4431
with:
4532
persist-credentials: false
4633

47-
# Step: Define how to cache deps. Restores existing cache if present.
34+
- uses: extractions/setup-just@f8a3cce218d9f83db3a2ecd90e41ac3de6cdfd9b # v3.1.0
35+
- name: Set up Elixir
36+
id: setup-beam
37+
uses: erlef/setup-beam@e6d7c94229049569db56a7ad5a540c051a010af9 # v1.20.4
38+
with:
39+
version-file: ".tool-versions"
40+
version-type: "strict"
41+
4842
- name: Cache deps
4943
id: cache-deps
5044
uses: actions/cache@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 # v5.0.3
@@ -53,9 +47,9 @@ jobs:
5347
apps/${{ matrix.project }}/deps
5448
apps/${{ matrix.project }}/_build
5549
56-
key: ${{ runner.os }}-mix-${{ matrix.project }}-${{ env.DEFAULT_ELIXIR }}-${{ env.DEFAULT_OTP }}-${{ hashFiles(format('apps/{0}/mix.lock', matrix.project)) }}
50+
key: ${{ runner.os }}-mix-${{ matrix.project }}-${{ steps.setup-beam.outputs.elixir-version }}-${{ steps.setup-beam.outputs.otp-version }}-${{ hashFiles(format('apps/{0}/mix.lock', matrix.project)) }}
5751
restore-keys: |
58-
${{ runner.os }}-mix-${{ matrix.project }}-${{ env.DEFAULT_ELIXIR }}-${{ env.DEFAULT_OTP }}-
52+
${{ runner.os }}-mix-${{ matrix.project }}-${{ steps.setup-beam.outputs.elixir-version }}-${{ steps.setup-beam.outputs.otp-version }}-
5953
6054
- name: Deps
6155
env:
@@ -88,21 +82,19 @@ jobs:
8882
- expert_credo
8983
- forge
9084
steps:
85+
- name: Checkout code
86+
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
87+
with:
88+
persist-credentials: false
89+
9190
- uses: extractions/setup-just@f8a3cce218d9f83db3a2ecd90e41ac3de6cdfd9b # v3.1.0
9291
- name: Set up Elixir
92+
id: setup-beam
9393
uses: erlef/setup-beam@e6d7c94229049569db56a7ad5a540c051a010af9 # v1.20.4
9494
with:
95-
otp-version: ${{ env.DEFAULT_OTP }}
96-
elixir-version: ${{ env.DEFAULT_ELIXIR }}
95+
version-file: ".tool-versions"
9796
version-type: "strict"
9897

99-
# Step: Check out the code.
100-
- name: Checkout code
101-
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
102-
with:
103-
persist-credentials: false
104-
105-
# Step: Define how to cache deps. Restores existing cache if present.
10698
- name: Cache deps
10799
id: cache-deps
108100
uses: actions/cache@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 # v5.0.3
@@ -111,19 +103,18 @@ jobs:
111103
apps/${{ matrix.project }}/deps
112104
apps/${{ matrix.project }}/_build
113105
114-
key: ${{ runner.os }}-mix-${{ matrix.project }}-${{ env.DEFAULT_ELIXIR }}-${{ env.DEFAULT_OTP }}-${{ hashFiles(format('apps/{0}/mix.lock', matrix.project)) }}
106+
key: ${{ runner.os }}-mix-${{ matrix.project }}-${{ steps.setup-beam.outputs.elixir-version }}-${{ steps.setup-beam.outputs.otp-version }}-${{ hashFiles(format('apps/{0}/mix.lock', matrix.project)) }}
115107
restore-keys: |
116-
${{ runner.os }}-mix-${{ matrix.project }}-${{ env.DEFAULT_ELIXIR }}-${{ env.DEFAULT_OTP }}-
108+
${{ runner.os }}-mix-${{ matrix.project }}-${{ steps.setup-beam.outputs.elixir-version }}-${{ steps.setup-beam.outputs.otp-version }}-
117109
118-
# Step: Create dialyzer .plt files if they're not present
119110
- name: Cache dialyzer plt files
120111
id: cache-plt
121112
uses: actions/cache@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 # v5.0.3
122113
with:
123-
key: expert-plts-${{ env.DEFAULT_OTP }}-${{ env.DEFAULT_ELIXIR }}-${{ hashFiles(format('apps/{0}/mix.lock', matrix.project)) }}
114+
key: expert-plts-${{ steps.setup-beam.outputs.otp-version }}-${{ steps.setup-beam.outputs.elixir-version }}-${{ hashFiles(format('apps/{0}/mix.lock', matrix.project)) }}
124115
restore-keys: |
125-
expert-plts-${{ env.DEFAULT_OTP }}-${{ env.DEFAULT_ELIXIR }}-${{ hashFiles(format('apps/{0}/mix.lock', matrix.project)) }}-
126-
expert-plts-${{ env.DEFAULT_OTP }}-${{ env.DEFAULT_ELIXIR }}-
116+
expert-plts-${{ steps.setup-beam.outputs.otp-version }}-${{ steps.setup-beam.outputs.elixir-version }}-${{ hashFiles(format('apps/{0}/mix.lock', matrix.project)) }}-
117+
expert-plts-${{ steps.setup-beam.outputs.otp-version }}-${{ steps.setup-beam.outputs.elixir-version }}-
127118
path: "priv/plts"
128119

129120
- name: Deps
@@ -243,9 +234,9 @@ jobs:
243234
apps/${{ matrix.project }}/deps
244235
apps/${{ matrix.project }}/_build
245236
246-
key: ${{ runner.os }}-mix-${{ matrix.project }}-${{ env.DEFAULT_ELIXIR }}-${{ env.DEFAULT_OTP }}-${{ hashFiles(format('apps/{0}/mix.lock', matrix.project)) }}
237+
key: ${{ runner.os }}-mix-${{ matrix.project }}-${{ matrix.elixir }}-${{ matrix.otp }}-${{ hashFiles(format('apps/{0}/mix.lock', matrix.project)) }}
247238
restore-keys: |
248-
${{ runner.os }}-mix-${{ matrix.project }}-${{ env.DEFAULT_ELIXIR }}-${{ env.DEFAULT_OTP }}-
239+
${{ runner.os }}-mix-${{ matrix.project }}-${{ matrix.elixir }}-${{ matrix.otp }}-
249240
250241
- name: Deps
251242
env:

.tool-versions

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,3 @@
11
zig 0.15.2
2+
elixir 1.15.8-otp-25
3+
erlang 25.3.2.21

apps/engine/.formatter.exs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,15 @@
11
# Used by "mix format"
2+
Code.require_file("../../.formatter-config.exs", __DIR__)
3+
24
current_directory = Path.dirname(__ENV__.file)
35

46
import_deps = [:forge]
57

68
locals_without_parens = [defkey: 2, defkey: 3, with_wal: 2]
79

810
[
11+
plugins: [Quokka],
12+
quokka: Formatter.Config.quokka(),
913
locals_without_parens: locals_without_parens,
1014
export: [locals_without_parens: locals_without_parens],
1115
import_deps: import_deps,

apps/engine/lib/engine/analyzer.ex

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ defmodule Engine.Analyzer do
115115
{:ok, module()} | :error
116116
def expand_alias([_ | _] = segments, %Analysis{} = analysis, %Position{} = position) do
117117
with %Analysis{valid?: true} = analysis <- Forge.Ast.reanalyze_to(analysis, position),
118-
aliases <- aliases_at(analysis, position),
118+
aliases = aliases_at(analysis, position),
119119
{:ok, resolved} <- resolve_alias(segments, aliases) do
120120
{:ok, Module.concat(resolved)}
121121
else

apps/engine/lib/engine/api/proxy.ex

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -29,20 +29,18 @@ defmodule Engine.Api.Proxy do
2929
3030
"""
3131

32-
alias Forge.Document
33-
alias Forge.Document.Changes
32+
@behaviour :gen_statem
33+
34+
import Engine.Api.Proxy.Records, only: :macros
35+
import Record
3436

3537
alias Engine.Api.Proxy.BufferingState
3638
alias Engine.Api.Proxy.DrainingState
3739
alias Engine.Api.Proxy.ProxyingState
38-
alias Engine.Api.Proxy.Records
3940
alias Engine.CodeMod
4041
alias Engine.Commands
41-
42-
import Record
43-
import Records, only: :macros
44-
45-
@behaviour :gen_statem
42+
alias Forge.Document
43+
alias Forge.Document.Changes
4644

4745
defrecord :buffer, contents: nil, return: :ok
4846
defrecord :drop, contents: nil, return: :ok

apps/engine/lib/engine/api/proxy/buffering_state.ex

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
11
defmodule Engine.Api.Proxy.BufferingState do
2-
alias Forge.Document
2+
import Engine.Api.Proxy.Records
3+
import Forge.EngineApi.Messages
34

45
alias Engine.Build
56
alias Engine.Commands
6-
7-
import Forge.EngineApi.Messages
8-
import Engine.Api.Proxy.Records
7+
alias Forge.Document
98

109
defstruct initiator_pid: nil, buffer: []
1110

apps/engine/lib/engine/api/proxy/draining_state.ex

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
defmodule Engine.Api.Proxy.DrainingState do
2+
import Engine.Api.Proxy.Records
3+
24
alias Engine.Api.Proxy.BufferingState
35
alias Engine.Api.Proxy.ProxyingState
4-
alias Engine.Api.Proxy.Records
5-
6-
import Records
76

87
defstruct [:proxying_state, :buffering_state]
98

apps/engine/lib/engine/api/proxy/proxying_state.ex

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,8 @@
11
defmodule Engine.Api.Proxy.ProxyingState do
2-
alias Engine.Api.Proxy.Records
2+
import Engine.Api.Proxy.Records
33

44
defstruct refs_to_from: %{}
55

6-
import Records
7-
86
def new do
97
%__MODULE__{}
108
end

apps/engine/lib/engine/api/proxy/records.ex

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
defmodule Engine.Api.Proxy.Records do
2-
alias Forge.Formats
3-
42
import Record
53

4+
alias Forge.Formats
5+
66
defrecord :mfa, module: nil, function: nil, arguments: [], seq: nil
77

88
def mfa(module, function, arguments) do
@@ -22,7 +22,7 @@ defmodule Engine.Api.Proxy.Records do
2222
Code.ensure_compiled!(module)
2323
Code.ensure_loaded!(module)
2424

25-
unless function_exported?(module, f, arity) do
25+
if !function_exported?(module, f, arity) do
2626
mfa = Formats.mfa(module, f, arity)
2727

2828
raise CompileError.message(%{

0 commit comments

Comments
 (0)