Skip to content

Commit 83765f1

Browse files
kybishopjoshk
andauthored
Introduce Quokka for automatic lint fixes (defs and line lengths only) (#2293)
This introduces [Quokka](https://github.com/emkguts/quokka), an automatic formatting tool that respects and fixes issues highlighted by credo configurations. We use Quokka across multiple apps at Smartrent and adoption continues to grow. I've personally found it saving me tens of cumulative hours not having to think about various formatting idiosyncrasies. This PR is just a step 1 including only line length fixups. After this the diffs of each included fixup module will be significantly smaller (and the wins larger). Co-authored-by: Josh Kalderimis <[email protected]>
1 parent cb0bcd9 commit 83765f1

File tree

82 files changed

+241
-695
lines changed

Some content is hidden

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

82 files changed

+241
-695
lines changed

.formatter.exs

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,12 @@
11
# Used by "mix format"
22
[
3-
plugins: [Phoenix.LiveView.HTMLFormatter],
4-
inputs: ["{mix,.formatter}.exs", "{config,lib,test}/**/*.{heex,ex,exs}"],
53
heex_line_length: 200,
6-
import_deps: [:assert_eventually]
4+
import_deps: [:assert_eventually],
5+
inputs: ["{mix,.formatter}.exs", "{config,lib,test}/**/*.{heex,ex,exs}"],
6+
plugins: [Phoenix.LiveView.HTMLFormatter, Quokka],
7+
quokka: [
8+
only: [
9+
:defs
10+
]
11+
]
712
]

config/runtime.exs

Lines changed: 11 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -19,37 +19,29 @@ config :nerves_hub,
1919
support_email_platform_name: System.get_env("SUPPORT_EMAIL_PLATFORM_NAME", "NervesHub"),
2020
support_email_address: System.get_env("SUPPORT_EMAIL_ADDRESS"),
2121
support_email_signoff: System.get_env("SUPPORT_EMAIL_SIGNOFF"),
22-
device_endpoint_redirect:
23-
System.get_env("DEVICE_ENDPOINT_REDIRECT", "https://docs.nerves-hub.org/"),
24-
device_health_days_to_retain:
25-
String.to_integer(System.get_env("HEALTH_CHECK_DAYS_TO_RETAIN", "7")),
26-
device_health_delete_limit:
27-
String.to_integer(System.get_env("DEVICE_HEALTH_DELETE_LIMIT", "100000")),
22+
device_endpoint_redirect: System.get_env("DEVICE_ENDPOINT_REDIRECT", "https://docs.nerves-hub.org/"),
23+
device_health_days_to_retain: String.to_integer(System.get_env("HEALTH_CHECK_DAYS_TO_RETAIN", "7")),
24+
device_health_delete_limit: String.to_integer(System.get_env("DEVICE_HEALTH_DELETE_LIMIT", "100000")),
2825
device_deployment_change_jitter_seconds:
2926
String.to_integer(System.get_env("DEVICE_DEPLOYMENT_CHANGE_JITTER_SECONDS", "10")),
3027
device_last_seen_update_interval_minutes:
3128
String.to_integer(System.get_env("DEVICE_LAST_SEEN_UPDATE_INTERVAL_MINUTES", "15")),
3229
device_last_seen_update_interval_jitter_seconds:
3330
String.to_integer(System.get_env("DEVICE_LAST_SEEN_UPDATE_INTERVAL_JITTER_SECONDS", "300")),
34-
device_connection_max_age_days:
35-
String.to_integer(System.get_env("DEVICE_CONNECTION_MAX_AGE_DAYS", "14")),
36-
device_connection_delete_limit:
37-
String.to_integer(System.get_env("DEVICE_CONNECTION_DELETE_LIMIT", "100000")),
31+
device_connection_max_age_days: String.to_integer(System.get_env("DEVICE_CONNECTION_MAX_AGE_DAYS", "14")),
32+
device_connection_delete_limit: String.to_integer(System.get_env("DEVICE_CONNECTION_DELETE_LIMIT", "100000")),
3833
deployment_calculator_interval_seconds:
3934
String.to_integer(System.get_env("DEPLOYMENT_CALCULATOR_INTERVAL_SECONDS", "3600")),
4035
mapbox_access_token: System.get_env("MAPBOX_ACCESS_TOKEN"),
4136
dashboard_enabled: System.get_env("DASHBOARD_ENABLED", "false") == "true",
4237
extension_config: [
4338
geo: [
4439
# No interval, fetch geo on device connection by default
45-
interval_minutes:
46-
System.get_env("FEATURES_GEO_INTERVAL_MINUTES", "0") |> String.to_integer()
40+
interval_minutes: System.get_env("FEATURES_GEO_INTERVAL_MINUTES", "0") |> String.to_integer()
4741
],
4842
health: [
49-
interval_minutes:
50-
System.get_env("FEATURES_HEALTH_INTERVAL_MINUTES", "60") |> String.to_integer(),
51-
ui_polling_seconds:
52-
System.get_env("FEATURES_HEALTH_UI_POLLING_SECONDS", "60") |> String.to_integer()
43+
interval_minutes: System.get_env("FEATURES_HEALTH_INTERVAL_MINUTES", "60") |> String.to_integer(),
44+
ui_polling_seconds: System.get_env("FEATURES_HEALTH_UI_POLLING_SECONDS", "60") |> String.to_integer()
5345
],
5446
logging: [
5547
days_to_keep: String.to_integer(System.get_env("EXTENSIONS_LOGGING_DAYS_TO_KEEP", "3"))
@@ -59,8 +51,7 @@ config :nerves_hub,
5951

6052
config :nerves_hub, :device_socket_drainer,
6153
batch_size: String.to_integer(System.get_env("DEVICE_SOCKET_DRAINER_BATCH_SIZE", "1000")),
62-
batch_interval:
63-
String.to_integer(System.get_env("DEVICE_SOCKET_DRAINER_BATCH_INTERVAL", "4000")),
54+
batch_interval: String.to_integer(System.get_env("DEVICE_SOCKET_DRAINER_BATCH_INTERVAL", "4000")),
6455
shutdown: String.to_integer(System.get_env("DEVICE_SOCKET_DRAINER_SHUTDOWN", "30000"))
6556

6657
# only set this in :prod as not to override the :dev config
@@ -298,8 +289,7 @@ if config_env() == :prod do
298289

299290
config :nerves_hub, NervesHub.Uploads.S3, bucket: System.fetch_env!("S3_BUCKET_NAME")
300291

301-
config :nerves_hub, NervesHub.Firmwares.Upload.S3,
302-
bucket: System.fetch_env!("S3_BUCKET_NAME")
292+
config :nerves_hub, NervesHub.Firmwares.Upload.S3, bucket: System.fetch_env!("S3_BUCKET_NAME")
303293

304294
if System.get_env("S3_ACCESS_KEY_ID") do
305295
config :ex_aws, :s3,
@@ -448,8 +438,7 @@ end
448438

449439
config :nerves_hub, :audit_logs,
450440
enabled: System.get_env("TRUNCATE_AUDIT_LOGS_ENABLED", "false") == "true",
451-
default_days_kept:
452-
String.to_integer(System.get_env("TRUNCATE_AUDIT_LOGS_DEFAULT_DAYS_KEPT", "30"))
441+
default_days_kept: String.to_integer(System.get_env("TRUNCATE_AUDIT_LOGS_DEFAULT_DAYS_KEPT", "30"))
453442

454443
config :nerves_hub, NervesHub.RateLimit,
455444
limit: System.get_env("DEVICE_CONNECT_RATE_LIMIT", "100") |> String.to_integer()

lib/mix/tasks/gen.metrics.ex

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,8 @@ defmodule Mix.Tasks.NervesHub.Gen.Metrics do
3030
@doc """
3131
Runs recursively until current timestamp is less than or equal to ending timestamp
3232
"""
33-
def add_metrics(device_id, current_timestamp, ending_timestamp)
34-
when current_timestamp <= ending_timestamp,
35-
do: save_metrics(device_id, current_timestamp)
33+
def add_metrics(device_id, current_timestamp, ending_timestamp) when current_timestamp <= ending_timestamp,
34+
do: save_metrics(device_id, current_timestamp)
3635

3736
def add_metrics(device_id, current_timestamp, ending_timestamp) do
3837
save_metrics(device_id, current_timestamp)

lib/nerves_hub/accounts.ex

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -50,9 +50,7 @@ defmodule NervesHub.Accounts do
5050
deleted_at = DateTime.truncate(DateTime.utc_now(), :second)
5151

5252
Multi.new()
53-
|> Multi.update_all(:soft_delete_products, Ecto.assoc(org, :products),
54-
set: [deleted_at: deleted_at]
55-
)
53+
|> Multi.update_all(:soft_delete_products, Ecto.assoc(org, :products), set: [deleted_at: deleted_at])
5654
|> Multi.update(:soft_delete_org, Org.delete_changeset(org))
5755
|> Repo.transaction()
5856
|> case do
@@ -135,8 +133,7 @@ defmodule NervesHub.Accounts do
135133
{:ok, %{to: ..., body: ...}}
136134
137135
"""
138-
def deliver_user_password_updated(%User{} = user, reset_url_fun)
139-
when is_function(reset_url_fun, 1) do
136+
def deliver_user_password_updated(%User{} = user, reset_url_fun) when is_function(reset_url_fun, 1) do
140137
{encoded_token, user_token} = UserToken.build_hashed_token(user, "reset_password", nil)
141138
Repo.insert!(user_token)
142139
UserNotifier.deliver_password_updated(user, reset_url_fun.(encoded_token))
@@ -328,8 +325,7 @@ defmodule NervesHub.Accounts do
328325
nil
329326
330327
"""
331-
def get_user_by_email_and_password(email, password)
332-
when is_binary(email) and is_binary(password) do
328+
def get_user_by_email_and_password(email, password) when is_binary(email) and is_binary(password) do
333329
user = Repo.get_by(User, email: email)
334330
if User.valid_password?(user, password), do: user
335331
end
@@ -929,11 +925,7 @@ defmodule NervesHub.Accounts do
929925
{:ok, %{to: ..., body: ...}}
930926
931927
"""
932-
def deliver_user_reset_password_instructions(
933-
%User{google_id: google_id} = user,
934-
_reset_password_url_fun,
935-
login_url
936-
)
928+
def deliver_user_reset_password_instructions(%User{google_id: google_id} = user, _reset_password_url_fun, login_url)
937929
when not is_nil(google_id) do
938930
UserNotifier.deliver_login_with_google_reminder(user, login_url)
939931
end

lib/nerves_hub/accounts/user.ex

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -92,8 +92,7 @@ defmodule NervesHub.Accounts.User do
9292
|> maybe_add_confirmed_at()
9393
end
9494

95-
defp maybe_add_confirmed_at(%{data: %{confirmed_at: confirmed_at}} = changeset)
96-
when is_nil(confirmed_at) do
95+
defp maybe_add_confirmed_at(%{data: %{confirmed_at: confirmed_at}} = changeset) when is_nil(confirmed_at) do
9796
now = NaiveDateTime.utc_now() |> NaiveDateTime.truncate(:second)
9897

9998
put_change(changeset, :confirmed_at, now)

lib/nerves_hub/application.ex

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,8 @@ defmodule NervesHub.Application do
3030
{Task.Supervisor, name: NervesHub.TaskSupervisor},
3131
{Oban, Application.fetch_env!(:nerves_hub, Oban)},
3232
NervesHubWeb.Presence,
33-
{NervesHub.RateLimit.LogLines,
34-
[clean_period: :timer.minutes(5), key_older_than: :timer.hours(1)]},
35-
{PartitionSupervisor,
36-
child_spec: Task.Supervisor, name: NervesHub.AnalyticsEventsProcessing}
33+
{NervesHub.RateLimit.LogLines, [clean_period: :timer.minutes(5), key_older_than: :timer.hours(1)]},
34+
{PartitionSupervisor, child_spec: Task.Supervisor, name: NervesHub.AnalyticsEventsProcessing}
3735
] ++
3836
deployments_orchestrator(deploy_env()) ++
3937
endpoints(deploy_env())
@@ -97,14 +95,12 @@ defmodule NervesHub.Application do
9795
[
9896
Supervisor.child_spec(
9997
{Ecto.Migrator,
100-
repos: [NervesHub.Repo],
101-
skip: Application.get_env(:nerves_hub, :database_auto_migrator) != true},
98+
repos: [NervesHub.Repo], skip: Application.get_env(:nerves_hub, :database_auto_migrator) != true},
10299
id: :repo_migrator
103100
),
104101
Supervisor.child_spec(
105102
{Ecto.Migrator,
106-
repos: [NervesHub.AnalyticsRepo],
107-
skip: Application.get_env(:nerves_hub, :analytics_auto_migrator) != true},
103+
repos: [NervesHub.AnalyticsRepo], skip: Application.get_env(:nerves_hub, :analytics_auto_migrator) != true},
108104
id: :analytics_repo_migrator
109105
)
110106
]

lib/nerves_hub/audit_logs/templates/device_templates.ex

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -115,11 +115,7 @@ defmodule NervesHub.AuditLogs.DeviceTemplates do
115115
end
116116

117117
@spec audit_device_archive_update_triggered(Device.t(), Archive.t(), UUIDv7.t()) :: :ok
118-
def audit_device_archive_update_triggered(
119-
device,
120-
archive,
121-
reference_id
122-
) do
118+
def audit_device_archive_update_triggered(device, archive, reference_id) do
123119
description =
124120
"Archive update triggered for #{device.identifier}. Sending archive #{archive.uuid}."
125121

lib/nerves_hub/certificate.ex

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -112,8 +112,7 @@ defmodule NervesHub.Certificate do
112112

113113
defp convert_timestamp({:utcTime, timestamp}) do
114114
<<year::binary-unit(8)-size(2), month::binary-unit(8)-size(2), day::binary-unit(8)-size(2),
115-
hour::binary-unit(8)-size(2), minute::binary-unit(8)-size(2),
116-
second::binary-unit(8)-size(2), "Z">> = timestamp
115+
hour::binary-unit(8)-size(2), minute::binary-unit(8)-size(2), second::binary-unit(8)-size(2), "Z">> = timestamp
117116

118117
NaiveDateTime.new(
119118
String.to_integer(year) + @era,
@@ -134,8 +133,7 @@ defmodule NervesHub.Certificate do
134133

135134
defp convert_timestamp({:generalTime, timestamp}) do
136135
<<year::binary-unit(8)-size(4), month::binary-unit(8)-size(2), day::binary-unit(8)-size(2),
137-
hour::binary-unit(8)-size(2), minute::binary-unit(8)-size(2),
138-
second::binary-unit(8)-size(2), "Z">> = timestamp
136+
hour::binary-unit(8)-size(2), minute::binary-unit(8)-size(2), second::binary-unit(8)-size(2), "Z">> = timestamp
139137

140138
NaiveDateTime.new(
141139
String.to_integer(year),

lib/nerves_hub/devices.ex

Lines changed: 14 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -207,8 +207,7 @@ defmodule NervesHub.Devices do
207207
{:error, :not_found}
208208

209209
device ->
210-
{:ok,
211-
Repo.preload(device, [:org, :product, :latest_connection, deployment_group: [:firmware]])}
210+
{:ok, Repo.preload(device, [:org, :product, :latest_connection, deployment_group: [:firmware]])}
212211
end
213212
end
214213

@@ -218,8 +217,7 @@ defmodule NervesHub.Devices do
218217
end
219218

220219
@spec get_device_by_identifier(Org.t(), String.t()) :: {:ok, Device.t()} | {:error, :not_found}
221-
def get_device_by_identifier(org, identifier, preload_assoc \\ nil)
222-
when is_binary(identifier) do
220+
def get_device_by_identifier(org, identifier, preload_assoc \\ nil) when is_binary(identifier) do
223221
get_device_by_identifier_query(org, identifier, preload_assoc)
224222
|> Repo.one()
225223
|> case do
@@ -229,8 +227,7 @@ defmodule NervesHub.Devices do
229227
end
230228

231229
@spec get_device_by_identifier!(Org.t(), String.t()) :: Device.t()
232-
def get_device_by_identifier!(org, identifier, preload_assoc \\ nil)
233-
when is_binary(identifier) do
230+
def get_device_by_identifier!(org, identifier, preload_assoc \\ nil) when is_binary(identifier) do
234231
get_device_by_identifier_query(org, identifier, preload_assoc)
235232
|> Repo.one!()
236233
end
@@ -442,8 +439,7 @@ defmodule NervesHub.Devices do
442439
|> get_device_by_certificate()
443440
end
444441

445-
def get_device_by_certificate(%DeviceCertificate{device: %Device{} = device}),
446-
do: {:ok, Repo.preload(device, :org)}
442+
def get_device_by_certificate(%DeviceCertificate{device: %Device{} = device}), do: {:ok, Repo.preload(device, :org)}
447443

448444
def get_device_by_certificate(_), do: {:error, :not_found}
449445

@@ -522,8 +518,7 @@ defmodule NervesHub.Devices do
522518

523519
@spec create_ca_certificate_from_x509(Org.t(), X509.Certificate.t(), binary() | nil) ::
524520
{:ok, CACertificate.t()} | {:error, Ecto.Changeset.t()}
525-
def create_ca_certificate_from_x509(%Org{} = org, otp_cert, description \\ nil)
526-
when is_tuple(otp_cert) do
521+
def create_ca_certificate_from_x509(%Org{} = org, otp_cert, description \\ nil) when is_tuple(otp_cert) do
527522
{not_before, not_after} = Certificate.get_validity(otp_cert)
528523

529524
params = %{
@@ -624,9 +619,7 @@ defmodule NervesHub.Devices do
624619
DeploymentGroup
625620
|> where([dep], dep.product_id == ^product_id)
626621
|> join(:inner, [dep], dev in Device, on: dev.deployment_id == dep.id)
627-
|> join(:inner, [dep, dev], f in Firmware,
628-
on: f.uuid == fragment("d1.firmware_metadata->>'uuid'")
629-
)
622+
|> join(:inner, [dep, dev], f in Firmware, on: f.uuid == fragment("d1.firmware_metadata->>'uuid'"))
630623
# Exclude the current firmware, we don't need to generate that one
631624
|> where([dep, dev, f], f.id != dep.firmware_id)
632625
|> select([dep, dev, f], {f.id, dep.firmware_id})
@@ -639,9 +632,7 @@ defmodule NervesHub.Devices do
639632
DeploymentGroup
640633
|> where([dep], dep.id == ^deployment_id)
641634
|> join(:inner, [dep], dev in Device, on: dev.deployment_id == dep.id)
642-
|> join(:inner, [dep, dev], f in Firmware,
643-
on: f.uuid == fragment("d1.firmware_metadata->>'uuid'")
644-
)
635+
|> join(:inner, [dep, dev], f in Firmware, on: f.uuid == fragment("d1.firmware_metadata->>'uuid'"))
645636
# Exclude the current firmware, we don't need to generate that one
646637
|> where([dep, dev, f], f.id != dep.firmware_id)
647638
|> select([dep, dev, f], {f.id, dep.firmware_id})
@@ -1225,8 +1216,7 @@ defmodule NervesHub.Devices do
12251216
DeploymentGroup.t() | non_neg_integer()
12261217
) ::
12271218
{:ok, %{updated: non_neg_integer(), ignored: non_neg_integer()}}
1228-
def move_many_to_deployment_group(device_ids, deployment_id)
1229-
when is_number(deployment_id) do
1219+
def move_many_to_deployment_group(device_ids, deployment_id) when is_number(deployment_id) do
12301220
deployment_group =
12311221
DeploymentGroup |> where(id: ^deployment_id) |> preload(:firmware) |> Repo.one()
12321222

@@ -1460,9 +1450,7 @@ defmodule NervesHub.Devices do
14601450
Enum.all?(deployment_group_tags, fn tag -> tag in device_tags end)
14611451
end
14621452

1463-
def maybe_copy_firmware_keys(%{firmware_metadata: %{uuid: uuid}, org_id: source}, %Org{
1464-
id: target
1465-
}) do
1453+
def maybe_copy_firmware_keys(%{firmware_metadata: %{uuid: uuid}, org_id: source}, %Org{id: target}) do
14661454
existing_target_keys = from(k in OrgKey, where: [org_id: ^target], select: k.key)
14671455

14681456
from(
@@ -1541,9 +1529,7 @@ defmodule NervesHub.Devices do
15411529
# Device already has an inflight update, fetch it
15421530
case Repo.get_by(InflightUpdate, device_id: device_id, deployment_id: deployment_group.id) do
15431531
nil ->
1544-
Logger.error(
1545-
"An inflight update could not be created or found for the device (#{device_id})"
1546-
)
1532+
Logger.error("An inflight update could not be created or found for the device (#{device_id})")
15471533

15481534
:error
15491535

@@ -1713,21 +1699,13 @@ defmodule NervesHub.Devices do
17131699
"""
17141700
@spec get_delta_or_firmware_url(Device.t(), Firmware.t() | DeploymentGroup.t()) ::
17151701
{:ok, String.t()} | {:error, :failure}
1716-
def get_delta_or_firmware_url(
1717-
%Device{} = device,
1718-
%DeploymentGroup{
1719-
delta_updatable: true,
1720-
firmware: target
1721-
}
1722-
) do
1702+
def get_delta_or_firmware_url(%Device{} = device, %DeploymentGroup{delta_updatable: true, firmware: target}) do
17231703
get_delta_or_firmware_url(device, target)
17241704
end
17251705

17261706
def get_delta_or_firmware_url(
17271707
%{firmware_metadata: %{uuid: source_uuid}, product_id: product_id} = device,
1728-
%Firmware{
1729-
delta_updatable: true
1730-
} = target
1708+
%Firmware{delta_updatable: true} = target
17311709
) do
17321710
# Get firmware delta URL if available but otherwise deliver full firmware
17331711
with {:delta_updatable, true} <-
@@ -1789,10 +1767,7 @@ defmodule NervesHub.Devices do
17891767
end
17901768
end
17911769

1792-
def get_delta_or_firmware_url(
1793-
%Device{firmware_metadata: fw_meta} = device,
1794-
%DeploymentGroup{firmware: target} = dg
1795-
) do
1770+
def get_delta_or_firmware_url(%Device{firmware_metadata: fw_meta} = device, %DeploymentGroup{firmware: target} = dg) do
17961771
Logger.warning(
17971772
"Delivering full firmware: deltas disabled for deployment group.",
17981773
device_id: device.id,
@@ -1804,10 +1779,7 @@ defmodule NervesHub.Devices do
18041779
Firmwares.get_firmware_url(target)
18051780
end
18061781

1807-
def get_delta_or_firmware_url(
1808-
%Device{firmware_metadata: fw_meta} = device,
1809-
%Firmware{} = target
1810-
) do
1782+
def get_delta_or_firmware_url(%Device{firmware_metadata: fw_meta} = device, %Firmware{} = target) do
18111783
Logger.warning(
18121784
"Delivering full firmware: deltas disabled for firmware.",
18131785
device_id: device.id,

0 commit comments

Comments
 (0)