Resolving Hex dependencies... Resolution completed in 0.152s Unchanged: arke 0.6.0 arke_auth 0.4.4 bcrypt_elixir 1.1.1 calendar 1.0.0 certifi 2.15.0 circular_buffer 1.0.0 combine 0.10.0 comeonin 4.1.2 elixir_make 0.9.0 erlsom 1.5.2 expo 1.1.1 finch 0.21.0 gettext 0.26.2 google_api_storage 0.34.0 google_gax 0.4.1 goth 1.3.1 guardian 2.2.4 hackney 1.25.0 hpax 1.0.3 httpoison 2.3.0 idna 6.1.1 interactive_cmd 0.1.4 jason 1.4.4 jose 1.11.12 libcluster 3.5.0 metrics 1.0.1 mime 1.6.0 mimerl 1.5.0 mint 1.7.1 nerves 1.14.0 nerves_discovery 0.1.2 nerves_logging 0.2.4 nerves_runtime 0.13.12 nerves_system_bbb 2.29.3 nerves_system_br 1.33.5 nerves_system_grisp2 0.17.3 nerves_system_mangopi_mq_pro 0.15.3 nerves_system_osd32mp1 0.24.3 nerves_system_qemu_aarch64 0.3.3 nerves_system_rpi 2.0.2 nerves_system_rpi0 2.0.2 nerves_system_rpi0_2 2.0.2 nerves_system_rpi2 2.0.2 nerves_system_rpi3 2.0.2 nerves_system_rpi4 2.0.2 nerves_system_rpi5 2.0.2 nerves_system_x86_64 1.33.3 nerves_toolchain_aarch64_nerves_linux_gnu 13.2.0 nerves_toolchain_armv6_nerves_linux_gnueabihf 13.2.0 nerves_toolchain_armv7_nerves_linux_gnueabihf 13.2.0 nerves_toolchain_ctng 1.10.0 nerves_toolchain_riscv64_nerves_linux_gnu 13.2.0 nerves_toolchain_x86_64_nerves_linux_musl 13.2.0 nerves_uevent 0.1.5 nimble_options 1.1.1 nimble_pool 1.1.0 parse_trans 3.4.1 poison 4.0.1 property_table 0.3.3 ring_logger 0.11.5 shoehorn 0.9.3 ssl_verify_fun 1.1.7 tablet 0.3.2 telemetry 1.4.1 tesla 1.17.0 timex 3.7.13 toolshed 0.4.2 typed_struct 0.2.1 tzdata 1.1.3 uboot_env 1.0.2 unicode_util_compat 0.7.1 uuid 1.1.8 xlsxir 1.6.4 All dependencies have been fetched ==> jason Compiling 10 files (.ex) Generated jason app ==> tablet Compiling 2 files (.ex) Generated tablet app ==> elixir_make Compiling 8 files (.ex) Generated elixir_make app ==> nerves_discovery Compiling 5 files (.ex) Generated nerves_discovery app ==> interactive_cmd Compiling 1 file (.ex) Generated interactive_cmd app ==> nerves HOST_CC port.o HOST_LD port Compiling 51 files (.ex) Generated nerves app ==> nerves_compatibility_test Nerves environment MIX_TARGET: mangopi_mq_pro MIX_ENV: prod Checking for prebuilt Nerves artifacts... Found nerves_system_mangopi_mq_pro in cache /home/nerves/.nerves/artifacts/nerves_system_mangopi_mq_pro-portable-0.15.3 Found nerves_toolchain_riscv64_nerves_linux_gnu in cache /home/nerves/.nerves/artifacts/nerves_toolchain_riscv64_nerves_linux_gnu-linux_aarch64-13.2.0 ==> nerves ==> nerves_toolchain_ctng Compiling 1 file (.ex) Generated nerves_toolchain_ctng app ==> nerves_toolchain_riscv64_nerves_linux_gnu Generated nerves_toolchain_riscv64_nerves_linux_gnu app ==> nerves_system_br Generated nerves_system_br app ==> nerves_system_mangopi_mq_pro Generated nerves_system_mangopi_mq_pro app ==> nerves_compatibility_test Nerves environment MIX_TARGET: mangopi_mq_pro MIX_ENV: prod ==> typed_struct Compiling 2 files (.ex) Generated typed_struct app ==> combine Compiling 6 files (.ex) Generated combine app ==> mime Compiling 2 files (.ex) Generated mime app ==> circular_buffer Compiling 1 file (.ex) Generated circular_buffer app ==> nimble_options Compiling 3 files (.ex) Generated nimble_options app ==> nerves_compatibility_test ===> Analyzing applications... ===> Compiling erlsom ==> poison Compiling 4 files (.ex) warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 127 │ for {char, seq} <- Enum.zip('"\\\n\t\r\f\b', '"\\ntrfb') do │ ~ │ └─ lib/poison/encoder.ex:127:31 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 127 │ for {char, seq} <- Enum.zip('"\\\n\t\r\f\b', '"\\ntrfb') do │ ~ │ └─ lib/poison/encoder.ex:127:48 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 174 │ when char <= 0x1F or char in '"\\' do │ ~ │ └─ lib/poison/encoder.ex:174:37 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 94 │ when char in '-0123456789' do │ ~ │ └─ lib/poison/parser.ex:94:21 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 189 │ when char in '123456789' do │ ~ │ └─ lib/poison/parser.ex:189:21 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 205 │ defp number_exp(<> <> rest, frac, pos, acc) when e in 'eE' do │ ~ │ └─ lib/poison/parser.ex:205:60 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 238 │ when char in '0123456789' do │ ~ │ └─ lib/poison/parser.ex:238:21 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 246 │ defp number_digits_count(<> <> rest, acc) when char in '0123456789' do │ ~ │ └─ lib/poison/parser.ex:246:64 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 270 │ for {seq, char} <- Enum.zip('"\\ntr/fb', '"\\\n\t\r/\f\b') do │ ~ │ └─ lib/poison/parser.ex:270:31 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 270 │ for {seq, char} <- Enum.zip('"\\ntr/fb', '"\\\n\t\r/\f\b') do │ ~ │ └─ lib/poison/parser.ex:270:44 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 277 │ when a1 in 'dD' and a2 in 'dD' and b1 in '89abAB' and │ ~ │ └─ lib/poison/parser.ex:277:24 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 277 │ when a1 in 'dD' and a2 in 'dD' and b1 in '89abAB' and │ ~ │ └─ lib/poison/parser.ex:277:39 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 277 │ when a1 in 'dD' and a2 in 'dD' and b1 in '89abAB' and │ ~ │ └─ lib/poison/parser.ex:277:54 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 334 │ defp skip_whitespace(<> <> rest, pos) when char in '\s\n\t\r' do │ ~ │ └─ lib/poison/parser.ex:334:60 warning: Application.get_env/2 is discouraged in the module body, use Application.compile_env/3 instead │ 42 │ if Application.get_env(:poison, :native) do │ ~ │ └─ lib/poison/parser.ex:42:18: Poison.Parser (module) warning: use Bitwise is deprecated. import Bitwise instead │ 46 │ use Bitwise │ ~~~~~~~~~~~ │ └─ lib/poison/parser.ex:46: Poison.Parser (module) warning: use Bitwise is deprecated. import Bitwise instead │ 117 │ use Bitwise │ ~~~~~~~~~~~ │ └─ lib/poison/encoder.ex:117: Poison.Encoder.BitString (module) Generated poison app ==> hpax Compiling 4 files (.ex) Generated hpax app ==> mint Compiling 1 file (.erl) Compiling 20 files (.ex) Generated mint app ==> nerves_compatibility_test ===> Analyzing applications... ===> Compiling mimerl ==> jose Compiling 113 files (.erl) Compiling 8 files (.ex) Generated jose app ==> ssl_verify_fun Compiling 7 files (.erl) Generated ssl_verify_fun app ==> nerves_logging CC kmsg_tailer.o LD kmsg_tailer Compiling 5 files (.ex) Generated nerves_logging app ==> bcrypt_elixir make: Nothing to be done for 'all'. Compiling 3 files (.ex) warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 57 │ path = :filename.join(:code.priv_dir(:bcrypt_elixir), 'bcrypt_nif') │ ~ │ └─ lib/bcrypt/base.ex:57:59 warning: use Bitwise is deprecated. import Bitwise instead │ 6 │ use Bitwise │ ~~~~~~~~~~~ │ └─ lib/bcrypt/base.ex:6: Bcrypt.Base (module) Generated bcrypt_elixir app ==> comeonin Compiling 2 files (.ex) Generated comeonin app ==> xlsxir Compiling 14 files (.ex) warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 502 │ "#{column_from_index(col_index + 1, '')}#{line}" │ ~ │ └─ lib/xlsxir.ex:502:41 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 20 │ def from_charlist('0'), do: {0, 0, 0} │ ~ │ └─ lib/xlsxir/convert_datetime.ex:20:21 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 25 │ def sax_event_handler({:startElement,_,'si',_,_}, %__MODULE__{tid: tid, index: index}), do: %__MODULE__{tid: tid, index: index} │ ~ │ └─ lib/xlsxir/parse_string.ex:25:42 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 27 │ def sax_event_handler({:startElement,_,'family',_,_}, state) do │ ~ │ └─ lib/xlsxir/parse_string.ex:27:42 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 37 │ def sax_event_handler({:endElement,_,'si',_}, │ ~ │ └─ lib/xlsxir/parse_string.ex:37:40 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 56 │ def sax_event_handler({:startElement, _, 'cellXfs', _, _}, state) do │ ~ │ └─ lib/xlsxir/parse_style.ex:56:44 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 60 │ def sax_event_handler({:endElement, _, 'cellXfs', _}, state) do │ ~ │ └─ lib/xlsxir/parse_style.ex:60:42 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 65 │ {:startElement, _, 'xf', _, xml_attr}, │ ~ │ └─ lib/xlsxir/parse_style.ex:65:28 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 72 │ {:attribute, 'numFmtId', _, _, _} -> true │ ~ │ └─ lib/xlsxir/parse_style.ex:72:26 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 84 │ {:startElement, _, 'numFmt', _, xml_attr}, │ ~ │ └─ lib/xlsxir/parse_style.ex:84:28 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 90 │ {:attribute, 'numFmtId', _, _, id} -> Map.put(acc, :id, id) │ ~ │ └─ lib/xlsxir/parse_style.ex:90:24 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 91 │ {:attribute, 'formatCode', _, _, cd} -> Map.put(acc, :cd, cd) │ ~ │ └─ lib/xlsxir/parse_style.ex:91:24 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 109 │ i when i in @date -> :ets.insert(tid, {index + acc, 'd'}) │ ~ │ └─ lib/xlsxir/parse_style.ex:109:63 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 126 │ String.match?(to_string(v), ~r/[dhmsy]/i) -> Map.put_new(acc, k, 'd') │ ~ │ └─ lib/xlsxir/parse_style.ex:126:74 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 15 │ def sax_event_handler({:startElement, _, 'sheet', _, xml_attrs}, state) do │ ~ │ └─ lib/xlsxir/parse_workbook.ex:15:44 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 19 │ {:attribute, 'name', _, _, name} -> │ ~ │ └─ lib/xlsxir/parse_workbook.ex:19:24 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 22 │ {:attribute, 'sheetId', _, _, sheet_id} -> │ ~ │ └─ lib/xlsxir/parse_workbook.ex:22:24 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 26 │ {:attribute, 'id', _, _, rid} -> │ ~ │ └─ lib/xlsxir/parse_workbook.ex:26:24 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 58 │ {:startElement, _, 'row', _, _}, │ ~ │ └─ lib/xlsxir/parse_worksheet.ex:58:28 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 66 │ def sax_event_handler({:startElement, _, 'c', _, xml_attr}, state, %{styles: styles_tid}, _) do │ ~ │ └─ lib/xlsxir/parse_worksheet.ex:66:44 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 70 │ {:attribute, 'r', _, _, ref} -> {:r, ref} │ ~ │ └─ lib/xlsxir/parse_worksheet.ex:70:24 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 71 │ {:attribute, 's', _, _, style} -> {:s, find_styles(styles_tid, List.to_integer(style))} │ ~ │ └─ lib/xlsxir/parse_worksheet.ex:71:24 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 72 │ {:attribute, 't', _, _, type} -> {:t, type} │ ~ │ └─ lib/xlsxir/parse_worksheet.ex:72:24 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 89 │ def sax_event_handler({:startElement, _, 'f', _, _}, state, _, _) do │ ~ │ └─ lib/xlsxir/parse_worksheet.ex:89:44 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 93 │ def sax_event_handler({:startElement, _, 'v', _, _}, state, _, _) do │ ~ │ └─ lib/xlsxir/parse_worksheet.ex:93:44 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 105 │ def sax_event_handler({:endElement, _, 'c', _}, %__MODULE__{row: row} = state, excel, _) do │ ~ │ └─ lib/xlsxir/parse_worksheet.ex:105:42 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 120 │ {:endElement, _, 'row', _}, │ ~ │ └─ lib/xlsxir/parse_worksheet.ex:120:26 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 146 │ ['e', _, e] -> List.to_string(e) │ ~ │ └─ lib/xlsxir/parse_worksheet.ex:146:8 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 148 │ ['s', _, i] -> find_string(strings_tid, List.to_integer(i)) │ ~ │ └─ lib/xlsxir/parse_worksheet.ex:148:8 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 151 │ ['n', nil, n] -> convert_char_number(n) │ ~ │ └─ lib/xlsxir/parse_worksheet.ex:151:8 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 153 │ [nil, 'd', d] -> convert_date_or_time(d) │ ~ │ └─ lib/xlsxir/parse_worksheet.ex:153:13 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 154 │ ['n', 'd', d] -> convert_date_or_time(d) │ ~ │ └─ lib/xlsxir/parse_worksheet.ex:154:8 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 154 │ ['n', 'd', d] -> convert_date_or_time(d) │ ~ │ └─ lib/xlsxir/parse_worksheet.ex:154:13 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 155 │ ['d', 'd', d] -> convert_iso_date(d) │ ~ │ └─ lib/xlsxir/parse_worksheet.ex:155:8 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 155 │ ['d', 'd', d] -> convert_iso_date(d) │ ~ │ └─ lib/xlsxir/parse_worksheet.ex:155:13 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 157 │ ['str', _, s] -> List.to_string(s) │ ~ │ └─ lib/xlsxir/parse_worksheet.ex:157:8 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 159 │ ['b', _, s] -> s == '1' │ ~ │ └─ lib/xlsxir/parse_worksheet.ex:159:8 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 159 │ ['b', _, s] -> s == '1' │ ~ │ └─ lib/xlsxir/parse_worksheet.ex:159:27 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 161 │ ['inlineStr', _, s] -> List.to_string(s) │ ~ │ └─ lib/xlsxir/parse_worksheet.ex:161:8 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 37 │ def sax_event_handler({:endElement, _, 'row', _}, state, _excel) do │ ~ │ └─ lib/xlsxir/stream_worksheet.ex:37:42 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 104 │ sheet = 'xl/worksheets/sheet#{index + 1}.xml' │ ~ │ └─ lib/xlsxir/unzip.ex:104:15 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 218 │ |> Enum.map(fn worksheet_index -> 'xl/worksheets/sheet#{worksheet_index + 1}.xml' end) │ ~ │ └─ lib/xlsxir/xlsx_file.ex:218:39 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 219 │ |> Enum.concat(['xl/styles.xml', 'xl/sharedStrings.xml', 'xl/workbook.xml']) │ ~ │ └─ lib/xlsxir/xlsx_file.ex:219:21 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 219 │ |> Enum.concat(['xl/styles.xml', 'xl/sharedStrings.xml', 'xl/workbook.xml']) │ ~ │ └─ lib/xlsxir/xlsx_file.ex:219:38 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 219 │ |> Enum.concat(['xl/styles.xml', 'xl/sharedStrings.xml', 'xl/workbook.xml']) │ ~ │ └─ lib/xlsxir/xlsx_file.ex:219:62 warning: a struct for Xlsxir.ParseWorkbook is expected on struct update: %Xlsxir.ParseWorkbook{state | sheets: [sheet | state.sheets]} but got type: dynamic() where "state" was given the type: # type: dynamic() # from: lib/xlsxir/parse_workbook.ex:15:68 state when defining the variable "state", you must also pattern match on "%Xlsxir.ParseWorkbook{}". hint: given pattern matching is enough to catch typing errors, you may optionally convert the struct update into a map update. For example, instead of: user = some_function() %User{user | name: "John Doe"} it is enough to write: %User{} = user = some_function() %{user | name: "John Doe"} typing violation found at: │ 36 │ %__MODULE__{state | sheets: [sheet | state.sheets]} │ ~ │ └─ lib/xlsxir/parse_workbook.ex:36:5: Xlsxir.ParseWorkbook.sax_event_handler/2 warning: Supervisor.Spec.worker/2 is deprecated. Use the new child specifications outlined in the Supervisor module instead │ 10 │ worker(Xlsxir.StateManager, []) │ ~ │ └─ lib/xlsxir.ex:10:7: Xlsxir.start/2 Generated xlsxir app ==> ring_logger Compiling 7 files (.ex) Generated ring_logger app ==> shoehorn Compiling 8 files (.ex) Generated shoehorn app ==> nerves_compatibility_test ===> Analyzing applications... ===> Compiling unicode_util_compat ===> Analyzing applications... ===> Compiling idna ===> Analyzing applications... ===> Compiling telemetry ==> libcluster Compiling 13 files (.ex) Generated libcluster app ==> expo Compiling 2 files (.erl) Compiling 22 files (.ex) Generated expo app ==> gettext Compiling 18 files (.ex) Generated gettext app ==> guardian Compiling 25 files (.ex) warning: use Bitwise is deprecated. import Bitwise instead │ 7 │ use Bitwise │ ~~~~~~~~~~~ │ └─ lib/guardian/permissions/atom_encoding.ex:7: Guardian.Permissions.AtomEncoding (module) warning: use Bitwise is deprecated. import Bitwise instead │ 7 │ use Bitwise │ ~~~~~~~~~~~ │ └─ lib/guardian/permissions/bitwise_encoding.ex:7: Guardian.Permissions.BitwiseEncoding (module) warning: use Bitwise is deprecated. import Bitwise instead │ 7 │ use Bitwise │ ~~~~~~~~~~~ │ └─ lib/guardian/permissions/text_encoding.ex:7: Guardian.Permissions.TextEncoding (module) warning: Guardian.Plug.current_claims/2 is undefined (module Guardian.Plug is not available or is yet to be defined) │ 31 │ claims: Guardian.Plug.current_claims(conn, opts), │ ~ │ └─ lib/guardian/permissions/plug.ex:31:29: Guardian.Permissions.Plug.call/2 warning: Guardian.Plug.Pipeline.fetch_error_handler!/2 is undefined (module Guardian.Plug.Pipeline is not available or is yet to be defined) │ 33 │ handler: Pipeline.fetch_error_handler!(conn, opts), │ ~ │ └─ lib/guardian/permissions/plug.ex:33:25: Guardian.Permissions.Plug.call/2 warning: Guardian.Plug.Pipeline.fetch_module!/2 is undefined (module Guardian.Plug.Pipeline is not available or is yet to be defined) │ 34 │ impl: Pipeline.fetch_module!(conn, opts), │ ~ │ └─ lib/guardian/permissions/plug.ex:34:22: Guardian.Permissions.Plug.call/2 Generated guardian app ==> nerves_compatibility_test ===> Analyzing applications... ===> Compiling certifi ===> Analyzing applications... ===> Compiling parse_trans ==> uboot_env Compiling 5 files (.ex) Generated uboot_env app ==> nimble_pool Compiling 2 files (.ex) Generated nimble_pool app ==> finch Compiling 14 files (.ex) Generated finch app ==> goth Compiling 7 files (.ex) warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead │ 234 │ Logger.warn("Setting http_client: mod | {mod, opts} is deprecated in favour of http_client: fun | {fun, opts}") │ ~ │ └─ lib/goth.ex:234:12: Goth.start_http_client/1 Generated goth app ==> nerves_compatibility_test ===> Analyzing applications... ===> Compiling metrics ===> Analyzing applications... ===> Compiling hackney ==> tzdata Compiling 17 files (.ex) Generated tzdata app ==> calendar Compiling 18 files (.ex) warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 149 │ defp string_for_conv_spec(dt, :l, _) do dt=to_time(dt);"#{dt.hour|>x24h_to_12_h|>elem(0)}"|>pad(2, hd ' ') end │ ~ │ └─ lib/calendar/strftime.ex:149:105 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 158 │ defp string_for_conv_spec(dt, :e, _) do dt=to_date(dt);"#{dt.day}"|>pad(2, hd ' ') end │ ~ │ └─ lib/calendar/strftime.ex:158:81 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 161 │ defp string_for_conv_spec(dt, :k, _) do dt=to_time(dt);"#{dt.hour}"|>pad(2, hd ' ') end │ ~ │ └─ lib/calendar/strftime.ex:161:82 warning: missing parentheses for expression following "do:" keyword. Parentheses are required to solve ambiguity inside keywords. This error happens when you have function calls without parentheses inside keywords. For example: function(arg, one: nested_call a, b, c) function(arg, one: if expr, do: :this, else: :that) In the examples above, we don't know if the arguments "b" and "c" apply to the function "function" or "nested_call". Or if the keywords "do" and "else" apply to the function "function" or "if". You can solve this by explicitly adding parentheses: function(arg, one: if(expr, do: :this, else: :that)) function(arg, one: nested_call(a, b, c)) Ambiguity found at: │ 167 │ defp string_for_conv_spec(dt, :x, lang), do: strftime! dt, date_format_for_lang(lang), lang │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/calendar/strftime.ex:167 warning: missing parentheses for expression following "do:" keyword. Parentheses are required to solve ambiguity inside keywords. This error happens when you have function calls without parentheses inside keywords. For example: function(arg, one: nested_call a, b, c) function(arg, one: if expr, do: :this, else: :that) In the examples above, we don't know if the arguments "b" and "c" apply to the function "function" or "nested_call". Or if the keywords "do" and "else" apply to the function "function" or "if". You can solve this by explicitly adding parentheses: function(arg, one: if(expr, do: :this, else: :that)) function(arg, one: nested_call(a, b, c)) Ambiguity found at: │ 168 │ defp string_for_conv_spec(dt, :X, lang), do: strftime! dt, time_format_for_lang(lang), lang │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/calendar/strftime.ex:168 warning: missing parentheses for expression following "do:" keyword. Parentheses are required to solve ambiguity inside keywords. This error happens when you have function calls without parentheses inside keywords. For example: function(arg, one: nested_call a, b, c) function(arg, one: if expr, do: :this, else: :that) In the examples above, we don't know if the arguments "b" and "c" apply to the function "function" or "nested_call". Or if the keywords "do" and "else" apply to the function "function" or "if". You can solve this by explicitly adding parentheses: function(arg, one: if(expr, do: :this, else: :that)) function(arg, one: nested_call(a, b, c)) Ambiguity found at: │ 169 │ defp string_for_conv_spec(dt, :c, lang), do: strftime! dt, date_time_format_for_lang(lang), lang │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/calendar/strftime.ex:169 warning: a struct for DateTime is expected on struct update: %DateTime{second_before | second: 60} but got type: dynamic() where "second_before" was given the type: # type: dynamic() # from: lib/calendar/date_time.ex:92:19 second_before = shift_zone!( %DateTime{...}, timezone ) when defining the variable "second_before", you must also pattern match on "%DateTime{}". hint: given pattern matching is enough to catch typing errors, you may optionally convert the struct update into a map update. For example, instead of: user = some_function() %User{user | name: "John Doe"} it is enough to write: %User{} = user = some_function() %{user | name: "John Doe"} typing violation found at: │ 94 │ %DateTime{second_before | second: 60} │ ~ │ └─ lib/calendar/date_time.ex:94:5: Calendar.DateTime.shift_zone!/2 warning: a struct for DateTime is expected on struct update: %DateTime{result | microsecond: {elem(result.microsecond, 0), 3}} but got type: dynamic() where "result" was given the type: # type: dynamic() # from: lib/calendar/date_time/parse.ex:177:12 result = unix!(millisec / 1000.0) when defining the variable "result", you must also pattern match on "%DateTime{}". hint: given pattern matching is enough to catch typing errors, you may optionally convert the struct update into a map update. For example, instead of: user = some_function() %User{user | name: "John Doe"} it is enough to write: %User{} = user = some_function() %{user | name: "John Doe"} typing violation found at: │ 178 │ %DateTime{result| microsecond: {elem(result.microsecond, 0), 3}} # change usec precision to 3 │ ~ │ └─ lib/calendar/date_time/parse.ex:178:5: Calendar.DateTime.Parse.js_ms!/1 Generated calendar app ==> timex Compiling 62 files (.ex) warning: a struct for Timex.PosixTimezone is expected on struct update: %Timex.PosixTimezone{rule | std_abbr: abbr} but got type: dynamic() where "rule" was given the type: # type: dynamic() # from: lib/parse/posix/parser.ex:119:33 rule when defining the variable "rule", you must also pattern match on "%Timex.PosixTimezone{}". hint: given pattern matching is enough to catch typing errors, you may optionally convert the struct update into a map update. For example, instead of: user = some_function() %User{user | name: "John Doe"} it is enough to write: %User{} = user = some_function() %{user | name: "John Doe"} typing violation found at: │ 121 │ parse_tz(:std_offset, rest, %TZ{rule | std_abbr: abbr}) │ ~ │ └─ lib/parse/posix/parser.ex:121:35: Timex.Parse.Timezones.Posix.parse_tz/3 warning: a struct for Timex.PosixTimezone is expected on struct update: %Timex.PosixTimezone{rule | std_offset: offset} but got type: dynamic() where "rule" was given the type: # type: dynamic() # from: lib/parse/posix/parser.ex:125:35 rule when defining the variable "rule", you must also pattern match on "%Timex.PosixTimezone{}". hint: given pattern matching is enough to catch typing errors, you may optionally convert the struct update into a map update. For example, instead of: user = some_function() %User{user | name: "John Doe"} it is enough to write: %User{} = user = some_function() %{user | name: "John Doe"} typing violation found at: │ 127 │ parse_tz(:dst_abbr, rest, %TZ{rule | std_offset: offset}) │ ~ │ └─ lib/parse/posix/parser.ex:127:33: Timex.Parse.Timezones.Posix.parse_tz/3 warning: a struct for Timex.PosixTimezone is expected on struct update: %Timex.PosixTimezone{rule | dst_abbr: abbr} but got type: dynamic() where "rule" was given the type: # type: dynamic() # from: lib/parse/posix/parser.ex:141:33 rule when defining the variable "rule", you must also pattern match on "%Timex.PosixTimezone{}". hint: given pattern matching is enough to catch typing errors, you may optionally convert the struct update into a map update. For example, instead of: user = some_function() %User{user | name: "John Doe"} it is enough to write: %User{} = user = some_function() %{user | name: "John Doe"} typing violation found at: │ 143 │ rule = %TZ{rule | dst_abbr: abbr} do │ ~ │ └─ lib/parse/posix/parser.ex:143:17: Timex.Parse.Timezones.Posix.parse_tz/3 warning: a struct for Timex.PosixTimezone is expected on struct update: %Timex.PosixTimezone{rule | dst_offset: offset} but got type: dynamic() where "rule" was given the type: # type: dynamic() # from: lib/parse/posix/parser.ex:160:35 rule when defining the variable "rule", you must also pattern match on "%Timex.PosixTimezone{}". hint: given pattern matching is enough to catch typing errors, you may optionally convert the struct update into a map update. For example, instead of: user = some_function() %User{user | name: "John Doe"} it is enough to write: %User{} = user = some_function() %{user | name: "John Doe"} typing violation found at: │ 162 │ rule = %TZ{rule | dst_offset: offset} do │ ~ │ └─ lib/parse/posix/parser.ex:162:17: Timex.Parse.Timezones.Posix.parse_tz/3 warning: a struct for Timex.PosixTimezone is expected on struct update: %Timex.PosixTimezone{rule | dst_start: dst_start, dst_end: dst_end} but got type: dynamic() where "rule" was given the type: # type: dynamic() # from: lib/parse/posix/parser.ex:185:36 rule when defining the variable "rule", you must also pattern match on "%Timex.PosixTimezone{}". hint: given pattern matching is enough to catch typing errors, you may optionally convert the struct update into a map update. For example, instead of: user = some_function() %User{user | name: "John Doe"} it is enough to write: %User{} = user = some_function() %{user | name: "John Doe"} typing violation found at: │ 190 │ {:ok, %TZ{rule | dst_start: dst_start, dst_end: dst_end}, rest} │ ~ │ └─ lib/parse/posix/parser.ex:190:17: Timex.Parse.Timezones.Posix.parse_tz/3 warning: a struct for Timex.Parse.ZoneInfo.Parser.Zone is expected on struct update: %Timex.Parse.ZoneInfo.Parser.Zone{zone | transitions: transitions, leaps: leaps} but got type: dynamic() where "zone" was given the type: # type: dynamic() # from: lib/parse/zoneinfo/parser.ex:156:28 {:ok, zone, rest} <- parse_content(1, data, %Timex.Parse.ZoneInfo.Parser.Zone{..., version: 1}) when defining the variable "zone", you must also pattern match on "%Timex.Parse.ZoneInfo.Parser.Zone{}". hint: given pattern matching is enough to catch typing errors, you may optionally convert the struct update into a map update. For example, instead of: user = some_function() %User{user | name: "John Doe"} it is enough to write: %User{} = user = some_function() %{user | name: "John Doe"} typing violation found at: │ 159 │ {:ok, %Zone{zone | transitions: transitions, leaps: leaps}, rest} │ ~ │ └─ lib/parse/zoneinfo/parser.ex:159:13: Timex.Parse.ZoneInfo.Parser.parse_versioned_content/2 warning: a struct for Timex.Parse.ZoneInfo.Parser.Zone is expected on struct update: %Timex.Parse.ZoneInfo.Parser.Zone{zone | transitions: times} but got type: dynamic() where "zone" was given the type: # type: dynamic() # from: lib/parse/zoneinfo/parser.ex:270:92 zone when defining the variable "zone", you must also pattern match on "%Timex.Parse.ZoneInfo.Parser.Zone{}". hint: given pattern matching is enough to catch typing errors, you may optionally convert the struct update into a map update. For example, instead of: user = some_function() %User{user | name: "John Doe"} it is enough to write: %User{} = user = some_function() %{user | name: "John Doe"} typing violation found at: │ 272 │ parse_transition_info(version, rest, header, %Zone{zone | transitions: times}) │ ~ │ └─ lib/parse/zoneinfo/parser.ex:272:50: Timex.Parse.ZoneInfo.Parser.parse_transition_times/4 warning: a struct for Timex.Parse.ZoneInfo.Parser.Zone is expected on struct update: %Timex.Parse.ZoneInfo.Parser.Zone{zone | leaps: leaps} but got type: dynamic() where "zone" was given the type: # type: dynamic() # from: lib/parse/zoneinfo/parser.ex:330:79 zone when defining the variable "zone", you must also pattern match on "%Timex.Parse.ZoneInfo.Parser.Zone{}". hint: given pattern matching is enough to catch typing errors, you may optionally convert the struct update into a map update. For example, instead of: user = some_function() %User{user | name: "John Doe"} it is enough to write: %User{} = user = some_function() %{user | name: "John Doe"} typing violation found at: │ 344 │ parse_flags(version, rest, header, %Zone{zone | leaps: leaps}) │ ~ │ └─ lib/parse/zoneinfo/parser.ex:344:40: Timex.Parse.ZoneInfo.Parser.parse_leap_seconds/4 warning: a struct for Timex.Parse.ZoneInfo.Parser.Zone is expected on struct update: %Timex.Parse.ZoneInfo.Parser.Zone{zone | transitions: transitions} but got type: dynamic() where "zone" was given the type: # type: dynamic() # from: lib/parse/zoneinfo/parser.ex:348:90 zone when defining the variable "zone", you must also pattern match on "%Timex.Parse.ZoneInfo.Parser.Zone{}". hint: given pattern matching is enough to catch typing errors, you may optionally convert the struct update into a map update. For example, instead of: user = some_function() %User{user | name: "John Doe"} it is enough to write: %User{} = user = some_function() %{user | name: "John Doe"} typing violation found at: │ 362 │ parse_posixtz_string(version, rest, %Zone{zone | transitions: transitions}) │ ~ │ └─ lib/parse/zoneinfo/parser.ex:362:43: Timex.Parse.ZoneInfo.Parser.parse_flags/4 warning: a struct for Timex.Parse.ZoneInfo.Parser.Zone is expected on struct update: %Timex.Parse.ZoneInfo.Parser.Zone{zone | transitions: transitions} but got type: dynamic() where "zone" was given the type: # type: dynamic() # from: lib/parse/zoneinfo/parser.ex:348:90 zone when defining the variable "zone", you must also pattern match on "%Timex.Parse.ZoneInfo.Parser.Zone{}". hint: given pattern matching is enough to catch typing errors, you may optionally convert the struct update into a map update. For example, instead of: user = some_function() %User{user | name: "John Doe"} it is enough to write: %User{} = user = some_function() %{user | name: "John Doe"} typing violation found at: │ 364 │ {:ok, %Zone{zone | transitions: transitions}, rest} │ ~ │ └─ lib/parse/zoneinfo/parser.ex:364:13: Timex.Parse.ZoneInfo.Parser.parse_flags/4 warning: a struct for Timex.Parse.ZoneInfo.Parser.Zone is expected on struct update: %Timex.Parse.ZoneInfo.Parser.Zone{zone | rule: rule} but got type: dynamic() where "zone" was given the type: # type: dynamic() # from: lib/parse/zoneinfo/parser.ex:369:62 zone when defining the variable "zone", you must also pattern match on "%Timex.Parse.ZoneInfo.Parser.Zone{}". hint: given pattern matching is enough to catch typing errors, you may optionally convert the struct update into a map update. For example, instead of: user = some_function() %User{user | name: "John Doe"} it is enough to write: %User{} = user = some_function() %{user | name: "John Doe"} typing violation found at: │ 372 │ {:ok, %Zone{zone | rule: rule}, format_rest <> rest} │ ~ │ └─ lib/parse/zoneinfo/parser.ex:372:13: Timex.Parse.ZoneInfo.Parser.parse_posixtz_string/3 warning: a struct for Timex.Parse.ZoneInfo.Parser.Rule is expected on struct update: %Timex.Parse.ZoneInfo.Parser.Rule{rule | std_abbr: abbr, dst_abbr: abbr} but got type: dynamic() where "rule" was given the type: # type: dynamic() # from: lib/parse/zoneinfo/parser.ex:383:33 rule when defining the variable "rule", you must also pattern match on "%Timex.Parse.ZoneInfo.Parser.Rule{}". hint: given pattern matching is enough to catch typing errors, you may optionally convert the struct update into a map update. For example, instead of: user = some_function() %User{user | name: "John Doe"} it is enough to write: %User{} = user = some_function() %{user | name: "John Doe"} typing violation found at: │ 385 │ parse_tz(:std_offset, rest, %Rule{rule | std_abbr: abbr, dst_abbr: abbr}) │ ~ │ └─ lib/parse/zoneinfo/parser.ex:385:35: Timex.Parse.ZoneInfo.Parser.parse_tz/3 warning: a struct for Timex.Parse.ZoneInfo.Parser.Rule is expected on struct update: %Timex.Parse.ZoneInfo.Parser.Rule{rule | std_offset: offset, dst_offset: offset} but got type: dynamic() where "rule" was given the type: # type: dynamic() # from: lib/parse/zoneinfo/parser.ex:389:35 rule when defining the variable "rule", you must also pattern match on "%Timex.Parse.ZoneInfo.Parser.Rule{}". hint: given pattern matching is enough to catch typing errors, you may optionally convert the struct update into a map update. For example, instead of: user = some_function() %User{user | name: "John Doe"} it is enough to write: %User{} = user = some_function() %{user | name: "John Doe"} typing violation found at: │ 391 │ parse_tz(:dst_abbr, rest, %Rule{rule | std_offset: offset, dst_offset: offset}) │ ~ │ └─ lib/parse/zoneinfo/parser.ex:391:33: Timex.Parse.ZoneInfo.Parser.parse_tz/3 warning: a struct for Timex.Parse.ZoneInfo.Parser.Rule is expected on struct update: %Timex.Parse.ZoneInfo.Parser.Rule{rule | dst_abbr: abbr} but got type: dynamic() where "rule" was given the type: # type: dynamic() # from: lib/parse/zoneinfo/parser.ex:405:33 rule when defining the variable "rule", you must also pattern match on "%Timex.Parse.ZoneInfo.Parser.Rule{}". hint: given pattern matching is enough to catch typing errors, you may optionally convert the struct update into a map update. For example, instead of: user = some_function() %User{user | name: "John Doe"} it is enough to write: %User{} = user = some_function() %{user | name: "John Doe"} typing violation found at: │ 407 │ rule = %Rule{rule | dst_abbr: abbr} do │ ~ │ └─ lib/parse/zoneinfo/parser.ex:407:17: Timex.Parse.ZoneInfo.Parser.parse_tz/3 warning: a struct for Timex.Parse.ZoneInfo.Parser.Rule is expected on struct update: %Timex.Parse.ZoneInfo.Parser.Rule{rule | dst_offset: offset} but got type: dynamic() where "rule" was given the type: # type: dynamic() # from: lib/parse/zoneinfo/parser.ex:424:35 rule when defining the variable "rule", you must also pattern match on "%Timex.Parse.ZoneInfo.Parser.Rule{}". hint: given pattern matching is enough to catch typing errors, you may optionally convert the struct update into a map update. For example, instead of: user = some_function() %User{user | name: "John Doe"} it is enough to write: %User{} = user = some_function() %{user | name: "John Doe"} typing violation found at: │ 426 │ rule = %Rule{rule | dst_offset: offset} do │ ~ │ └─ lib/parse/zoneinfo/parser.ex:426:17: Timex.Parse.ZoneInfo.Parser.parse_tz/3 warning: a struct for Timex.Parse.ZoneInfo.Parser.Rule is expected on struct update: %Timex.Parse.ZoneInfo.Parser.Rule{rule | start_time: start_time, end_time: end_time} but got type: dynamic() where "rule" was given the type: # type: dynamic() # from: lib/parse/zoneinfo/parser.ex:449:36 rule when defining the variable "rule", you must also pattern match on "%Timex.Parse.ZoneInfo.Parser.Rule{}". hint: given pattern matching is enough to catch typing errors, you may optionally convert the struct update into a map update. For example, instead of: user = some_function() %User{user | name: "John Doe"} it is enough to write: %User{} = user = some_function() %{user | name: "John Doe"} typing violation found at: │ 454 │ {:ok, %Rule{rule | start_time: start_time, end_time: end_time}, rest} │ ~ │ └─ lib/parse/zoneinfo/parser.ex:454:17: Timex.Parse.ZoneInfo.Parser.parse_tz/3 Generated timex app ==> tesla Compiling 41 files (.ex) Generated tesla app ==> google_gax Compiling 5 files (.ex) Generated google_gax app ==> google_api_storage Compiling 54 files (.ex) warning: `use Tesla.Builder` and `use Tesla` in GoogleApi.Storage.V1.Connection are soft-deprecated. It will be removed in future major version in favor of Runtime Configuration instead. Please share your feedback at https://github.com/elixir-tesla/tesla/discussions/732 If you can turn off this warning, add the following to your config.exs: ```elixir config :tesla, disable_deprecated_builder_warning: true ``` (tesla 1.17.0) lib/tesla/builder.ex:12: Tesla.Builder."MACRO-__using__"/2 (elixir 1.19.4) src/elixir_dispatch.erl:257: :elixir_dispatch.expand_macro_fun/7 (elixir 1.19.4) src/elixir_dispatch.erl:149: :elixir_dispatch.dispatch_require/7 (elixir 1.19.4) src/elixir_expand.erl:636: :elixir_expand.expand_block/5 (elixir 1.19.4) src/elixir_expand.erl:52: :elixir_expand.expand/3 (elixir 1.19.4) src/elixir_dispatch.erl:271: :elixir_dispatch.expand_quoted/7 Generated google_api_storage app ==> property_table Compiling 8 files (.ex) Generated property_table app ==> nerves_uevent CC uevent.o LD uevent Compiling 5 files (.ex) Generated nerves_uevent app ==> nerves_runtime Compiling 14 files (.ex) Generated nerves_runtime app ==> toolshed Compiling 5 files (.ex) Generated toolshed app ==> httpoison Compiling 3 files (.ex) Generated httpoison app ==> uuid Compiling 1 file (.ex) warning: use Bitwise is deprecated. import Bitwise instead │ 2 │ use Bitwise, only_operators: true │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/uuid.ex:2: UUID (module) Generated uuid app ==> arke Compiling 33 files (.ex) warning: function random_string/0 is unused │ 48 │ defp random_string() do │ ~ │ └─ lib/arke/application.ex:48:8: Arke.Application (module) warning: function postfix/0 is unused │ 44 │ defp postfix() do │ ~ │ └─ lib/arke/application.ex:44:8: Arke.Application (module) warning: @compile {:parse_transform, :ms_transform} is deprecated. Elixir will no longer support Erlang-based transforms in future versions │ 15 │ defmodule Arke.Boundary.FileManager do │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke/boundary/file_manager.ex:15: Arke.Boundary.FileManager (module) warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead │ 17 │ use Arke.Boundary.UnitManager │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke/boundary/parameter_manager.ex:17: Arke.Boundary.ParameterManager.handle_info/2 warning: @compile {:parse_transform, :ms_transform} is deprecated. Elixir will no longer support Erlang-based transforms in future versions │ 15 │ defmodule Arke.Boundary.ParameterManager do │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke/boundary/parameter_manager.ex:15: Arke.Boundary.ParameterManager (module) warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead │ 17 │ use Arke.Boundary.UnitManager │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke/boundary/group_manager.ex:17: Arke.Boundary.GroupManager.handle_info/2 warning: variable "data" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 27 │ def before_create(%{id: id, data: data, metadata: unit_metadata} = unit, project) do │ ~~~~ │ └─ lib/arke/boundary/group_manager.ex:27:37: Arke.Boundary.GroupManager.before_create/2 warning: variable "id" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 27 │ def before_create(%{id: id, data: data, metadata: unit_metadata} = unit, project) do │ ~~ │ └─ lib/arke/boundary/group_manager.ex:27:27: Arke.Boundary.GroupManager.before_create/2 warning: variable "unit_metadata" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 27 │ def before_create(%{id: id, data: data, metadata: unit_metadata} = unit, project) do │ ~~~~~~~~~~~~~ │ └─ lib/arke/boundary/group_manager.ex:27:53: Arke.Boundary.GroupManager.before_create/2 warning: variable "msg" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 36 │ {:error, msg} -> new_arke_list │ ~ │ └─ lib/arke/boundary/group_manager.ex:36:18: Arke.Boundary.GroupManager.get_arke_list/1 warning: variable "unit" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 32 │ def get_arke_list(%{data: data, metadata: %{project: project}} = unit) do │ ~~~~ │ └─ lib/arke/boundary/group_manager.ex:32:68: Arke.Boundary.GroupManager.get_arke_list/1 warning: variable "unit" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 46 │ def get_arke(%{id: id} = unit, project, arke_id), │ ~~~~ │ └─ lib/arke/boundary/group_manager.ex:46:28: Arke.Boundary.GroupManager.get_arke/3 warning: variable "unit" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 49 │ def get_arke(%{id: id, metadata: %{project: project}} = unit, arke_id), │ ~~~~ │ └─ lib/arke/boundary/group_manager.ex:49:59: Arke.Boundary.GroupManager.get_arke/2 warning: clauses with the same name should be grouped together, "def get_arke/3" was previously defined (lib/arke/boundary/group_manager.ex:46) │ 52 │ def get_arke(unit_id, project, arke_id) when is_binary(arke_id), │ ~ │ └─ lib/arke/boundary/group_manager.ex:52:7 warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead │ 21 │ use Arke.Boundary.UnitManager │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke/boundary/arke_manager.ex:21: Arke.Boundary.ArkeManager.handle_info/2 warning: variable "data" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 26 │ def before_create(%{id: id, data: data, metadata: unit_metadata} = unit, project) do │ ~~~~ │ └─ lib/arke/boundary/arke_manager.ex:26:37: Arke.Boundary.ArkeManager.before_create/2 warning: variable "id" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 26 │ def before_create(%{id: id, data: data, metadata: unit_metadata} = unit, project) do │ ~~ │ └─ lib/arke/boundary/arke_manager.ex:26:27: Arke.Boundary.ArkeManager.before_create/2 warning: variable "unit_metadata" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 26 │ def before_create(%{id: id, data: data, metadata: unit_metadata} = unit, project) do │ ~~~~~~~~~~~~~ │ └─ lib/arke/boundary/arke_manager.ex:26:53: Arke.Boundary.ArkeManager.before_create/2 warning: variable "msg" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 40 │ {:error, msg} -> new_parameters │ ~ │ └─ lib/arke/boundary/arke_manager.ex:40:18: Arke.Boundary.ArkeManager.get_parameters/1 warning: variable "unit" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 32 │ def get_parameters(%{data: data, metadata: %{project: project}} = unit) do │ ~~~~ │ └─ lib/arke/boundary/arke_manager.ex:32:69: Arke.Boundary.ArkeManager.get_parameters/1 warning: variable "unit" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 46 │ def get_parameter(%{id: id} = unit, project, parameter_id), │ ~~~~ │ └─ lib/arke/boundary/arke_manager.ex:46:33: Arke.Boundary.ArkeManager.get_parameter/3 warning: variable "unit" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 49 │ def get_parameter(%{id: id, metadata: %{project: project}} = unit, parameter_id), │ ~~~~ │ └─ lib/arke/boundary/arke_manager.ex:49:64: Arke.Boundary.ArkeManager.get_parameter/2 warning: clauses with the same name should be grouped together, "def get_parameter/3" was previously defined (lib/arke/boundary/arke_manager.ex:46) │ 52 │ def get_parameter(unit_id, project, parameter_id) when is_binary(parameter_id), │ ~ │ └─ lib/arke/boundary/arke_manager.ex:52:7 warning: variable "msg" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 57 │ {:error, msg} -> │ ~ │ └─ lib/arke/boundary/arke_manager.ex:57:16: Arke.Boundary.ArkeManager.get_parameter/3 warning: the underscored variable "__module__" is used after being set. A leading underscore indicates that the value of the variable should be ignored. If this is intended please rename the variable to remove the underscore │ 50 │ __module__: __module__, │ ~ │ └─ lib/arke/core/unit.ex:50:23: Arke.Core.Unit.new/9 warning: the underscored variable "__module__" is used after being set. A leading underscore indicates that the value of the variable should be ignored. If this is intended please rename the variable to remove the underscore │ 103 │ __module__, │ ~ │ └─ lib/arke/core/unit.ex:103:15: Arke.Core.Unit.load/3 warning: variable "parameter_id" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 115 │ ... id: parameter_id, │ ~ │ └─ lib/arke/core/unit.ex:115:71: Arke.Core.Unit.load_data/3 warning: variable "parameter_type" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 116 │ ... arke_id: parameter_type │ ~ │ └─ lib/arke/core/unit.ex:116:76: Arke.Core.Unit.load_data/3 warning: variable "parameters" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 113 │ def load_data(%{data: %{parameters: parameters}} = arke, unit_data, opts) do │ ~~~~~~~~~~ │ └─ lib/arke/core/unit.ex:113:39: Arke.Core.Unit.load_data/3 warning: variable "opts" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 123 │ def load_parameter_value(%{id: :id} = _, data, opts), do: data │ ~~~~ │ └─ lib/arke/core/unit.ex:123:50: Arke.Core.Unit.load_parameter_value/3 warning: variable "opts" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 124 │ def load_parameter_value(%{id: :metadata} = _, data, opts), do: data │ ~~~~ │ └─ lib/arke/core/unit.ex:124:56: Arke.Core.Unit.load_parameter_value/3 warning: variable "opts" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 125 │ def load_parameter_value(%{id: :metadata} = _, data, opts), do: data │ ~~~~ │ └─ lib/arke/core/unit.ex:125:56: Arke.Core.Unit.load_parameter_value/3 warning: variable "opts" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 126 │ def load_parameter_value(%{id: :arke_id} = _, data, opts), do: data │ ~~~~ │ └─ lib/arke/core/unit.ex:126:55: Arke.Core.Unit.load_parameter_value/3 warning: variable "opts" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 127 │ def load_parameter_value(%{id: :inserted_at} = _, data, opts), do: data │ ~~~~ │ └─ lib/arke/core/unit.ex:127:59: Arke.Core.Unit.load_parameter_value/3 warning: variable "opts" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 128 │ def load_parameter_value(%{id: :updated_at} = _, data, opts), do: data │ ~~~~ │ └─ lib/arke/core/unit.ex:128:58: Arke.Core.Unit.load_parameter_value/3 warning: variable "parameter_type" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 130 │ def load_parameter_value(%{id: parameter_id, arke_id: parameter_type} = parameter, data, opts) do │ ~~~~~~~~~~~~~~ │ └─ lib/arke/core/unit.ex:130:57: Arke.Core.Unit.load_parameter_value/3 warning: variable "parameter" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 140 │ def get_default_value(value, parameter), do: value │ ~~~~~~~~~ │ └─ lib/arke/core/unit.ex:140:32: Arke.Core.Unit.get_default_value/2 warning: variable "data" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 203 │ def update(%{data: data, arke_id: arke_id} = unit, args) do │ ~~~~ │ └─ lib/arke/core/unit.ex:203:22: Arke.Core.Unit.update/2 warning: variable "udata" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 233 │ Map.merge(unit.data, parsed_data, fn _k, udata, pdata -> pdata end) │ ~ │ └─ lib/arke/core/unit.ex:233:46: Arke.Core.Unit.update_data/3 warning: clauses with the same name and arity (number of arguments) should be grouped together, "defp handle_id/1" was previously defined (lib/arke/core/unit.ex:247) │ 272 │ defp handle_id(id) when is_nil(id), do: UUID.uuid1() │ ~ │ └─ lib/arke/core/unit.ex:272:8 warning: clauses with the same name and arity (number of arguments) should be grouped together, "def encode_unit_data/2" was previously defined (lib/arke/core/unit.ex:253) │ 278 │ def encode_unit_data(arke, data) do │ ~ │ └─ lib/arke/core/unit.ex:278:7 warning: clauses with the same name and arity (number of arguments) should be grouped together, "defp update_encoded_unit_data/3" was previously defined (lib/arke/core/unit.ex:260) │ 285 │ defp update_encoded_unit_data(%{data: %{only_runtime: true}}, data, _), do: data │ ~ │ └─ lib/arke/core/unit.ex:285:8 warning: variable "unit" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 336 │ def get_value(%Arke.Core.Unit{data: data} = unit, parameter_id), │ ~~~~ │ └─ lib/arke/core/unit.ex:336:47: Arke.Core.Unit.get_value/2 warning: defp parse_value/2 is private, @doc attribute is always discarded for private functions/macros/types │ 350 │ @doc """ │ ~~~~~~~~ │ └─ lib/arke/core/unit.ex:350: Arke.Core.Unit.parse_value/2 warning: variable "cleaned_list" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 404 │ cleaned_list = list_result |> Enum.map(&String.replace(&1, ~r/^['"]|['"]$/, "")) │ ~~~~~~~~~~~~ │ └─ lib/arke/core/unit.ex:404:5: Arke.Core.Unit.parse_value/2 warning: variable "datetime" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 431 │ defp get_data_value(%{"datetime" => datetime, "value" => value} = _), do: value │ ~~~~~~~~ │ └─ lib/arke/core/unit.ex:431:39: Arke.Core.Unit.get_data_value/1 warning: variable "parameter" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 96 │ defp cast_value(%Arke.Core.Unit{arke_id: arke_id} = parameter, value) do │ ~~~~~~~~~ │ └─ lib/arke/core/query.ex:96:57: Arke.Core.Query.BaseFilter.cast_value/2 warning: variable "parameter" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 110 │ defp cast_value(parameter, value), do: value │ ~~~~~~~~~ │ └─ lib/arke/core/query.ex:110:21: Arke.Core.Query.BaseFilter.cast_value/2 warning: variable "offset" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 378 │ def set_offset(query, offset), do: nil │ ~~~~~~ │ └─ lib/arke/core/query.ex:378:25: Arke.Core.Query.set_offset/2 warning: variable "query" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 378 │ def set_offset(query, offset), do: nil │ ~~~~~ │ └─ lib/arke/core/query.ex:378:18: Arke.Core.Query.set_offset/2 warning: variable "limit" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 402 │ def set_limit(query, limit), do: nil │ ~~~~~ │ └─ lib/arke/core/query.ex:402:24: Arke.Core.Query.set_limit/2 warning: variable "query" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 402 │ def set_limit(query, limit), do: nil │ ~~~~~ │ └─ lib/arke/core/query.ex:402:17: Arke.Core.Query.set_limit/2 warning: variable "msg" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 67 │ else: ({:error, msg} -> nil) │ ~ │ └─ lib/arke/boundary/arke_manager.ex:67:30: Arke.Boundary.ArkeManager.get_parameter/3 warning: variable "id" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 60 │ %{id: id, data: data} -> │ ~ │ └─ lib/arke/boundary/arke_manager.ex:60:13: Arke.Boundary.ArkeManager.get_parameter/3 warning: variable "project" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 72 │ def get_parameter(unit_id, project, %Unit{} = parameter), do: parameter │ ~~~~~~~ │ └─ lib/arke/boundary/arke_manager.ex:72:30: Arke.Boundary.ArkeManager.get_parameter/3 warning: variable "unit_id" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 72 │ def get_parameter(unit_id, project, %Unit{} = parameter), do: parameter │ ~~~~~~~ │ └─ lib/arke/boundary/arke_manager.ex:72:21: Arke.Boundary.ArkeManager.get_parameter/3 warning: variable "id" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 85 │ %{id: id, data: data} = arke -> │ ~ │ └─ lib/arke/boundary/arke_manager.ex:85:13: Arke.Boundary.ArkeManager.update_parameter/4 warning: variable "project" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 103 │ defp init_parameter(project, id, metadata, p) do │ ~~~~~~~ │ └─ lib/arke/boundary/arke_manager.ex:103:23: Arke.Boundary.ArkeManager.init_parameter/4 warning: variable "parameter" is unused (there is a variable with the same name in the context, use the pin operator (^) to match on it or prefix this variable with underscore if it is not meant to be used) │ 130 │ parameter = handle_init_p(id, parameter, metadata) │ ~ │ └─ lib/arke/boundary/arke_manager.ex:130:9: Arke.Boundary.ArkeManager.init_parameter/3 warning: variable "id" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 134 │ defp handle_init_p(id, nil, metadata) do │ ~~ │ └─ lib/arke/boundary/arke_manager.ex:134:22: Arke.Boundary.ArkeManager.handle_init_p/3 warning: variable "metadata" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 134 │ defp handle_init_p(id, nil, metadata) do │ ~~~~~~~~ │ └─ lib/arke/boundary/arke_manager.ex:134:31: Arke.Boundary.ArkeManager.handle_init_p/3 warning: variable "pdata" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 139 │ Map.update(parameter,:data, %{},fn v -> Map.merge(v,override_data, fn _k, pdata,ovdata -> ovdata end) end) │ ~ │ └─ lib/arke/boundary/arke_manager.ex:139:79: Arke.Boundary.ArkeManager.handle_init_p/3 warning: variable "id" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 138 │ defp handle_init_p(id, parameter, override_data) do │ ~~ │ └─ lib/arke/boundary/arke_manager.ex:138:22: Arke.Boundary.ArkeManager.handle_init_p/3 warning: function init_parameter/4 is unused │ 103 │ defp init_parameter(project, id, metadata, p) do │ ~ │ └─ lib/arke/boundary/arke_manager.ex:103:8: Arke.Boundary.ArkeManager (module) warning: @compile {:parse_transform, :ms_transform} is deprecated. Elixir will no longer support Erlang-based transforms in future versions │ 15 │ defmodule Arke.Boundary.ArkeManager do │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke/boundary/arke_manager.ex:15: Arke.Boundary.ArkeManager (module) warning: this clause cannot match because a previous clause at line 124 matches the same pattern as this clause │ 125 │ def load_parameter_value(%{id: :metadata} = _, data, opts), do: data │ ~ │ └─ lib/arke/core/unit.ex:125:7 warning: this clause for handle_id/1 cannot match because a previous clause at line 251 always matches │ 272 │ defp handle_id(id) when is_nil(id), do: UUID.uuid1() │ ~ │ └─ lib/arke/core/unit.ex:272:8 warning: this clause for handle_id/1 cannot match because a previous clause at line 251 always matches │ 273 │ defp handle_id(id) when is_atom(id), do: Atom.to_string(id) │ ~ │ └─ lib/arke/core/unit.ex:273:8 warning: this clause for handle_id/1 cannot match because a previous clause at line 251 always matches │ 274 │ defp handle_id(id) when is_binary(id), do: id │ ~ │ └─ lib/arke/core/unit.ex:274:8 warning: this clause for handle_id/1 cannot match because a previous clause at line 251 always matches │ 276 │ defp handle_id(id), do: id │ ~ │ └─ lib/arke/core/unit.ex:276:8 warning: this clause for encode_unit_data/2 cannot match because a previous clause at line 253 always matches │ 278 │ def encode_unit_data(arke, data) do │ ~ │ └─ lib/arke/core/unit.ex:278:7 warning: this clause for update_encoded_unit_data/3 cannot match because a previous clause at line 269 always matches │ 285 │ defp update_encoded_unit_data(%{data: %{only_runtime: true}}, data, _), do: data │ ~ │ └─ lib/arke/core/unit.ex:285:8 warning: this clause for update_encoded_unit_data/3 cannot match because a previous clause at line 269 always matches │ 287 │ defp update_encoded_unit_data(%{id: id}, data, value), │ ~ │ └─ lib/arke/core/unit.ex:287:8 warning: this clause for update_encoded_unit_data/3 cannot match because a previous clause at line 269 always matches │ 294 │ defp update_encoded_unit_data(_, data, _), do: data │ ~ │ └─ lib/arke/core/unit.ex:294:8 warning: variable "msg" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 66 │ else: ({:error, msg} -> nil) │ ~ │ └─ lib/arke/boundary/group_manager.ex:66:25: Arke.Boundary.GroupManager.get_arke/3 warning: variable "project" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 70 │ def get_arke(unit_id, project, %Unit{} = parameter), do: parameter │ ~~~~~~~ │ └─ lib/arke/boundary/group_manager.ex:70:25: Arke.Boundary.GroupManager.get_arke/3 warning: variable "unit_id" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 70 │ def get_arke(unit_id, project, %Unit{} = parameter), do: parameter │ ~~~~~~~ │ └─ lib/arke/boundary/group_manager.ex:70:16: Arke.Boundary.GroupManager.get_arke/3 warning: variable "arke" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 72 │ def get_groups_by_arke(%{id: id, metadata: %{project: project}} = arke), │ ~~~~ │ └─ lib/arke/boundary/group_manager.ex:72:69: Arke.Boundary.GroupManager.get_groups_by_arke/1 warning: variable "id" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 89 │ def get_parameters(%{id: id, metadata: %{project: project}} = group) do │ ~~ │ └─ lib/arke/boundary/group_manager.ex:89:28: Arke.Boundary.GroupManager.get_parameters/1 warning: variable "parameters" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 90 │ parameters = │ ~~~~~~~~~~ │ └─ lib/arke/boundary/group_manager.ex:90:5: Arke.Boundary.GroupManager.get_parameters/1 warning: variable "msg" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 119 │ {:error, msg} -> %{id: child_id, metadata: metadata} │ ~ │ └─ lib/arke/boundary/group_manager.ex:119:16: Arke.Boundary.GroupManager.link_init/4 warning: @compile {:parse_transform, :ms_transform} is deprecated. Elixir will no longer support Erlang-based transforms in future versions │ 15 │ defmodule Arke.Boundary.GroupManager do │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke/boundary/group_manager.ex:15: Arke.Boundary.GroupManager (module) warning: def add_node/5 has multiple clauses and also declares default values. In such cases, the default values should be defined in a header. Instead of: def foo(:first_clause, b \\ :default) do ... end def foo(:second_clause, b) do ... end one should write: def foo(a, b \\ :default) def foo(:first_clause, b) do ... end def foo(:second_clause, b) do ... end the previous clause is defined on line 24 │ 42 │ def add_node(project, parent, child, type, metadata) │ ~ │ └─ lib/arke/link_manager.ex:42:7 warning: variable "metadata" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 74 │ def delete_node(project, %Unit{} = parent, %Unit{} = child, type, metadata \\ %{}) do │ ~~~~~~~~ │ └─ lib/arke/link_manager.ex:74:69: Arke.LinkManager.delete_node/5 warning: def delete_node/5 has multiple clauses and also declares default values. In such cases, the default values should be defined in a header. Instead of: def foo(:first_clause, b \\ :default) do ... end def foo(:second_clause, b) do ... end one should write: def foo(a, b \\ :default) def foo(:first_clause, b) do ... end def foo(:second_clause, b) do ... end the previous clause is defined on line 74 │ 83 │ def delete_node(project, parent, child, type, metadata) │ ~ │ └─ lib/arke/link_manager.ex:83:7 warning: variable "id" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 62 │ def on_unit_create(_arke, %{id: id, metadata: %{project: project}} = unit) do │ ~~ │ └─ lib/arke/core/parameter.ex:62:35: Arke.Core.Parameter.on_unit_create/2 warning: variable "project" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 62 │ def on_unit_create(_arke, %{id: id, metadata: %{project: project}} = unit) do │ ~~~~~~~ │ └─ lib/arke/core/parameter.ex:62:60: Arke.Core.Parameter.on_unit_create/2 warning: variable "id" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 72 │ def on_unit_delete(_, %{id: id, metadata: %{project: project}} = unit) do │ ~~ │ └─ lib/arke/core/parameter.ex:72:31: Arke.Core.Parameter.on_unit_delete/2 warning: variable "project" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 72 │ def on_unit_delete(_, %{id: id, metadata: %{project: project}} = unit) do │ ~~~~~~~ │ └─ lib/arke/core/parameter.ex:72:56: Arke.Core.Parameter.on_unit_delete/2 warning: module attribute @record_fields was set but never used │ 17 │ @record_fields [:id, :data, :metadata, :inserted_at, :updated_at] │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke/link_manager.ex:17: Arke.LinkManager (module) warning: Application.get_env/2 is discouraged in the module body, use Application.compile_env/3 instead │ 49 │ @persistence Application.get_env(:arke, :persistence) │ ~ │ └─ lib/arke/query_manager.ex:49:28: Arke.QueryManager (module) warning: function head for def encode/2 must come at the top of its direct implementation. Instead of: def add(a, b), do: a + b def add(a, b) one should write: def add(a, b) def add(a, b), do: a + b │ 60 │ def encode(unit, opts) │ ~ │ └─ lib/arke/struct_manager.ex:60:7 warning: variable "type" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 80 │ type, │ ~~~~ │ └─ lib/arke/struct_manager.ex:80:10: Arke.StructManager.handle_encode/4 warning: variable "link_id_list" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 130 │ link_id_list = │ ~~~~~~~~~~~~ │ └─ lib/arke/struct_manager.ex:130:5: Arke.StructManager.get_link_id_list/1 warning: variable "id" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 137 │ %{id: id, arke_id: arke_id, metadata: %{project: project}, data: data} = unit │ ~~ │ └─ lib/arke/struct_manager.ex:137:16: Arke.StructManager.get_link_id_list/1 warning: variable "unit" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 137 │ %{id: id, arke_id: arke_id, metadata: %{project: project}, data: data} = unit │ ~~~~ │ └─ lib/arke/struct_manager.ex:137:83: Arke.StructManager.get_link_id_list/1 warning: variable "arke" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 162 │ defp get_parsed_data(nil, arke, _), do: %{} │ ~~~~ │ └─ lib/arke/struct_manager.ex:162:29: Arke.StructManager.get_parsed_data/3 warning: variable "arke" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 163 │ defp get_parsed_data(data, arke, _) when data == %{}, do: %{} │ ~~~~ │ └─ lib/arke/struct_manager.ex:163:30: Arke.StructManager.get_parsed_data/3 warning: clauses with the same name and arity (number of arguments) should be grouped together, "def encode/2" was previously defined (lib/arke/struct_manager.ex:52) │ 173 │ def encode(_unit, _format), do: raise("Must pass a valid unit") │ ~ │ └─ lib/arke/struct_manager.ex:173:7 warning: variable "opts" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 199 │ %{load_values: true} = opts │ ~~~~ │ └─ lib/arke/struct_manager.ex:199:33: Arke.StructManager.parse_value/3 warning: variable "param" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 198 │ %{arke_id: param_type, data: %{multiple: false, values: values}} = param, │ ~~~~~ │ └─ lib/arke/struct_manager.ex:198:77: Arke.StructManager.parse_value/3 warning: variable "opts" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 208 │ %{load_values: true} = opts │ ~~~~ │ └─ lib/arke/struct_manager.ex:208:33: Arke.StructManager.parse_value/3 warning: variable "param" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 207 │ %{arke_id: param_type, data: %{multiple: true, values: values}} = param, │ ~~~~~ │ └─ lib/arke/struct_manager.ex:207:76: Arke.StructManager.parse_value/3 warning: variable "metadata" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 222 │ defp filter_link_units(_link_units, %{id: id, metadata: metadata} = unit, false) │ ~~~~~~~~ │ └─ lib/arke/struct_manager.ex:222:59: Arke.StructManager.filter_link_units/3 warning: variable "unit" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 222 │ defp filter_link_units(_link_units, %{id: id, metadata: metadata} = unit, false) │ ~~~~ │ └─ lib/arke/struct_manager.ex:222:71: Arke.StructManager.filter_link_units/3 warning: variable "data" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 331 │ def get_struct(arke, %{data: data} = unit, opts) do │ ~~~~ │ └─ lib/arke/struct_manager.ex:331:32: Arke.StructManager.get_struct/3 warning: variable "data" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 340 │ def get_struct(arke, %{data: data} = unit) do │ ~~~~ │ └─ lib/arke/struct_manager.ex:340:32: Arke.StructManager.get_struct/2 warning: clauses with the same name should be grouped together, "def get_struct/1" was previously defined (lib/arke/struct_manager.ex:326) │ 362 │ def get_struct(_), do: raise("Must pass a valid arke or unit") │ ~ │ └─ lib/arke/struct_manager.ex:362:7 warning: variable "unit" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 417 │ defp add_value(struct, %{data: data} = unit) do │ ~~~~ │ └─ lib/arke/struct_manager.ex:417:42: Arke.StructManager.add_value/2 warning: variable "parameter" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 427 │ defp add_type_fields({%{arke_id: :string, data: data} = parameter, base_data}, _project) do │ ~~~~~~~~~ │ └─ lib/arke/struct_manager.ex:427:59: Arke.StructManager.add_type_fields/2 warning: variable "parameter" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 466 │ defp add_type_fields({%{arke_id: :boolean, data: data} = parameter, base_data}, _project) do │ ~~~~~~~~~ │ └─ lib/arke/struct_manager.ex:466:60: Arke.StructManager.add_type_fields/2 warning: variable "parameter" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 476 │ defp add_type_fields({%{arke_id: :dict, data: data} = parameter, base_data}, _project) do │ ~~~~~~~~~ │ └─ lib/arke/struct_manager.ex:476:57: Arke.StructManager.add_type_fields/2 warning: variable "parameter" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 486 │ defp add_type_fields({%{arke_id: :list, data: data} = parameter, base_data}, _project) do │ ~~~~~~~~~ │ └─ lib/arke/struct_manager.ex:486:57: Arke.StructManager.add_type_fields/2 warning: variable "project" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 510 │ defp get_arke_or_group_id(nil, project), do: nil │ ~~~~~~~ │ └─ lib/arke/struct_manager.ex:510:34: Arke.StructManager.get_arke_or_group_id/2 warning: variable "p" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 540 │ defp add_type_fields({p, base_data}, _project) do │ ~ │ └─ lib/arke/struct_manager.ex:540:25: Arke.StructManager.add_type_fields/2 warning: clauses with the same name and arity (number of arguments) should be grouped together, "defp add_type_fields/2" was previously defined (lib/arke/struct_manager.ex:427) │ 540 │ defp add_type_fields({p, base_data}, _project) do │ ~ │ └─ lib/arke/struct_manager.ex:540:8 warning: default values for the optional arguments in the private function parse_value/3 are never used │ 182 │ defp parse_value(value, param, _opts \\ []) │ ~ │ └─ lib/arke/struct_manager.ex:182:8: Arke.StructManager (module) warning: default values for the optional arguments in the private function handle_encode/4 are never used │ 61 │ defp handle_encode(u, type, load_links, opts \\ []) │ ~ │ └─ lib/arke/struct_manager.ex:61:8: Arke.StructManager (module) warning: function handle_default_value/2 is unused │ 265 │ defp handle_default_value( │ ~ │ └─ lib/arke/struct_manager.ex:265:8: Arke.StructManager (module) warning: default values for the optional arguments in the private function get_parsed_data/3 are never used │ 161 │ defp get_parsed_data(data, arke, opts \\ []) │ ~ │ └─ lib/arke/struct_manager.ex:161:8: Arke.StructManager (module) warning: variable "query" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 82 │ query = Query.new(arke, project, distinct) │ ~~~~~ │ └─ lib/arke/query_manager.ex:82:5: Arke.QueryManager.query/1 warning: variable "depth" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 120 │ defp parse_link_depth(depth), do: 500 │ ~~~~~ │ └─ lib/arke/query_manager.ex:120:25: Arke.QueryManager.parse_link_depth/1 warning: variable "link_unit" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 181 │ {:ok, parameter, link_unit} -> {errors, link_units} │ ~ │ └─ lib/arke/query_manager.ex:181:28: Arke.QueryManager.handle_link_parameters_unit/2 warning: variable "parameter" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 181 │ {:ok, parameter, link_unit} -> {errors, link_units} │ ~ │ └─ lib/arke/query_manager.ex:181:17: Arke.QueryManager.handle_link_parameters_unit/2 warning: variable "p" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 188 │ Enum.map(link_units, fn {p, u} -> │ ~ │ └─ lib/arke/query_manager.ex:188:34: Arke.QueryManager.handle_link_parameters_unit/2 warning: variable "parameters" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 165 │ %{data: parameters} = arke, │ ~~~~~~~~~~ │ └─ lib/arke/query_manager.ex:165:18: Arke.QueryManager.handle_link_parameters_unit/2 warning: variable "arke" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 204 │ defp handle_create_on_link_parameters_unit(project, unit, parameter, arke, value) │ ~~~~ │ └─ lib/arke/query_manager.ex:204:72: Arke.QueryManager.handle_create_on_link_parameters_unit/5 warning: variable "project" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 204 │ defp handle_create_on_link_parameters_unit(project, unit, parameter, arke, value) │ ~~~~~~~ │ └─ lib/arke/query_manager.ex:204:46: Arke.QueryManager.handle_create_on_link_parameters_unit/5 warning: variable "unit" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 204 │ defp handle_create_on_link_parameters_unit(project, unit, parameter, arke, value) │ ~~~~ │ └─ lib/arke/query_manager.ex:204:55: Arke.QueryManager.handle_create_on_link_parameters_unit/5 warning: variable "arke" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 208 │ defp handle_create_on_link_parameters_unit(project, unit, parameter, arke, value) │ ~~~~ │ └─ lib/arke/query_manager.ex:208:72: Arke.QueryManager.handle_create_on_link_parameters_unit/5 warning: variable "project" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 208 │ defp handle_create_on_link_parameters_unit(project, unit, parameter, arke, value) │ ~~~~~~~ │ └─ lib/arke/query_manager.ex:208:46: Arke.QueryManager.handle_create_on_link_parameters_unit/5 warning: variable "unit" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 208 │ defp handle_create_on_link_parameters_unit(project, unit, parameter, arke, value) │ ~~~~ │ └─ lib/arke/query_manager.ex:208:55: Arke.QueryManager.handle_create_on_link_parameters_unit/5 warning: variable "filters" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 407 │ def and_(_query, _negate, filters), do: raise("filters must be a list") │ ~~~~~~~ │ └─ lib/arke/query_manager.ex:407:29: Arke.QueryManager.and_/3 warning: variable "filters" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 428 │ def or_(_query, _negate, filters), do: raise("filters must be a list") │ ~~~~~~~ │ └─ lib/arke/query_manager.ex:428:28: Arke.QueryManager.or_/3 warning: variable "id" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 566 │ %{id: id} = group = get_group(value, query.project) │ ~~ │ └─ lib/arke/query_manager.ex:566:11: Arke.QueryManager.handle_filter/5 warning: variable "arke_list" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 592 │ defp handle_filter_group(query, group, arke_list, negate) when is_nil(group), do: query │ ~~~~~~~~~ │ └─ lib/arke/query_manager.ex:592:42: Arke.QueryManager.handle_filter_group/4 warning: variable "negate" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 592 │ defp handle_filter_group(query, group, arke_list, negate) when is_nil(group), do: query │ ~~~~~~ │ └─ lib/arke/query_manager.ex:592:53: Arke.QueryManager.handle_filter_group/4 warning: variable "group" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 594 │ defp handle_filter_group(query, group, arke_list, negate), │ ~~~~~ │ └─ lib/arke/query_manager.ex:594:35: Arke.QueryManager.handle_filter_group/4 warning: variable "arke" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 740 │ defp get_parameter_operator(arke, [key, operator]), do: {key, String.to_existing_atom(operator)} │ ~~~~ │ └─ lib/arke/query_manager.ex:740:31: Arke.QueryManager.get_parameter_operator/2 warning: variable "arke" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 741 │ defp get_parameter_operator(arke, [key]), do: {key, :eq} │ ~~~~ │ └─ lib/arke/query_manager.ex:741:31: Arke.QueryManager.get_parameter_operator/2 warning: variable "query" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 745 │ defp get_parameter(%{arke: nil, project: project} = query, %{id: id} = _parameter), │ ~~~~~ │ └─ lib/arke/query_manager.ex:745:55: Arke.QueryManager.get_parameter/2 warning: variable "query" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 748 │ defp get_parameter(%{arke: nil, project: project} = query, key), │ ~~~~~ │ └─ lib/arke/query_manager.ex:748:55: Arke.QueryManager.get_parameter/2 warning: variable "query" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 751 │ defp get_parameter(%{arke: arke, project: project} = query, key) do │ ~~~~~ │ └─ lib/arke/query_manager.ex:751:56: Arke.QueryManager.get_parameter/2 warning: variable "id" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 756 │ %{arke_id: arke_id, metadata: %{project: project}, data: new_data, id: id} = unit, │ ~~ │ └─ lib/arke/query_manager.ex:756:81: Arke.QueryManager.handle_link_parameters/2 warning: variable "value" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 869 │ defp normalize_value(%{id: id} = value) do │ ~~~~~ │ └─ lib/arke/query_manager.ex:869:36: Arke.QueryManager.normalize_value/1 warning: this clause for encode/2 cannot match because a previous clause at line 54 always matches │ 173 │ def encode(_unit, _format), do: raise("Must pass a valid unit") │ ~ │ └─ lib/arke/struct_manager.ex:173:7 warning: module attribute @record_fields was set but never used │ 50 │ @record_fields [:id, :data, :metadata, :inserted_at, :updated_at] │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke/query_manager.ex:50: Arke.QueryManager (module) warning: unused alias Arke │ 25 │ alias Arke.Core.{Unit, Arke} │ ~ │ └─ lib/arke/struct_manager.ex:25:3 warning: unused alias Parameter │ 47 │ alias Arke.Core.{Arke, Unit, Query, Parameter} │ ~ │ └─ lib/arke/query_manager.ex:47:3 warning: unused alias QueryManager │ 43 │ alias Arke.QueryManager │ ~ │ └─ lib/arke/query_manager.ex:43:3 warning: variable "e" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 65 │ e -> │ ~ │ └─ lib/arke/utils/datetime_handler.ex:65:7: Arke.Utils.DatetimeHandler.check_time/2 warning: Application.get_env/2 is discouraged in the module body, use Application.compile_env/3 instead │ 23 │ @persistence Application.get_env(:arke, :persistence) │ ~ │ └─ lib/arke/core/project.ex:23:28: Arke.Core.Project (module) warning: this clause cannot match because a previous clause at line 373 matches the same pattern as this clause │ 373 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/system.ex:373 warning: variable "unit" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 69 │ def base_parameters(arke, %{data: %{parameters: []}} = unit), do: base_parameters(arke) │ ~~~~ │ └─ lib/arke/core/arke.ex:69:58: Arke.Core.Arke.base_parameters/2 warning: variable "content_type" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 35 │ %{path: path, content_type: content_type, filename: filename} = _unit, │ ~~~~~~~~~~~~ │ └─ lib/arke/core/file.ex:35:37: Arke.Core.File.before_load/2 warning: variable "opts" is unused (there is a variable with the same name in the context, use the pin operator (^) to match on it or prefix this variable with underscore if it is not meant to be used) │ 61 │ {:ok, %{signed_url: signed_url} = opts} <- get_url(unit) do │ ~ │ └─ lib/arke/core/file.ex:61:44: Arke.Core.File.on_struct_encode/4 warning: variable "arke" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 57 │ def on_struct_encode(arke, %{metadata: %{project: project}} = unit, data, opts) do │ ~~~~ │ └─ lib/arke/core/file.ex:57:24: Arke.Core.File.on_struct_encode/4 warning: variable "project" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 57 │ def on_struct_encode(arke, %{metadata: %{project: project}} = unit, data, opts) do │ ~~~~~~~ │ └─ lib/arke/core/file.ex:57:53: Arke.Core.File.on_struct_encode/4 warning: this clause cannot match because a previous clause at line 21 matches the same pattern as this clause │ 21 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/arke.ex:21 warning: unused alias Parameter │ 22 │ alias Arke.Core.Parameter │ ~ │ └─ lib/arke/core/arke.ex:22:3 warning: variable "arke" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 27 │ def on_create(arke, unit) do │ ~~~~ │ └─ lib/arke/core/group.ex:27:17: Arke.Core.Group.on_create/2 warning: this clause cannot match because a previous clause at line 20 matches the same pattern as this clause │ 20 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/file.ex:20 warning: unused alias ArkeManager │ 22 │ alias Arke.Boundary.{ArkeManager, FileManager} │ ~ │ └─ lib/arke/core/file.ex:22:3 warning: variable "child_id" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 64 │ data: %{type: type, parent_id: parent_id, child_id: child_id}, │ ~~~~~~~~ │ └─ lib/arke/core/link.ex:64:63: Arke.Core.Link.on_create/2 warning: variable "metadata" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 65 │ metadata: %{project: project} = metadata │ ~~~~~~~~ │ └─ lib/arke/core/link.ex:65:43: Arke.Core.Link.on_create/2 warning: variable "parent_id" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 64 │ data: %{type: type, parent_id: parent_id, child_id: child_id}, │ ~~~~~~~~~ │ └─ lib/arke/core/link.ex:64:42: Arke.Core.Link.on_create/2 warning: variable "project" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 65 │ metadata: %{project: project} = metadata │ ~~~~~~~ │ └─ lib/arke/core/link.ex:65:32: Arke.Core.Link.on_create/2 warning: variable "type" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 64 │ data: %{type: type, parent_id: parent_id, child_id: child_id}, │ ~~~~ │ └─ lib/arke/core/link.ex:64:25: Arke.Core.Link.on_create/2 warning: variable "metadata" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 86 │ metadata: %{project: project} = metadata │ ~~~~~~~~ │ └─ lib/arke/core/link.ex:86:43: Arke.Core.Link.on_delete/2 warning: variable "metadata" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 103 │ metadata: %{project: project} = metadata │ ~~~~~~~~ │ └─ lib/arke/core/link.ex:103:43: Arke.Core.Link.on_delete/2 warning: variable "child_id" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 119 │ data: %{type: type, parent_id: parent_id, child_id: child_id}, │ ~~~~~~~~ │ └─ lib/arke/core/link.ex:119:63: Arke.Core.Link.on_delete/2 warning: variable "metadata" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 120 │ metadata: %{project: project} = metadata │ ~~~~~~~~ │ └─ lib/arke/core/link.ex:120:43: Arke.Core.Link.on_delete/2 warning: variable "parent_id" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 119 │ data: %{type: type, parent_id: parent_id, child_id: child_id}, │ ~~~~~~~~~ │ └─ lib/arke/core/link.ex:119:42: Arke.Core.Link.on_delete/2 warning: variable "project" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 120 │ metadata: %{project: project} = metadata │ ~~~~~~~ │ └─ lib/arke/core/link.ex:120:32: Arke.Core.Link.on_delete/2 warning: variable "type" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 119 │ data: %{type: type, parent_id: parent_id, child_id: child_id}, │ ~~~~ │ └─ lib/arke/core/link.ex:119:25: Arke.Core.Link.on_delete/2 warning: this clause cannot match because a previous clause at line 20 matches the same pattern as this clause │ 20 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/group.ex:20 warning: this clause cannot match because a previous clause at line 18 matches the same pattern as this clause │ 18 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/link.ex:18 warning: unused alias LinkManager │ 19 │ alias Arke.LinkManager │ ~ │ └─ lib/arke/core/link.ex:19:3 warning: this clause cannot match because a previous clause at line 21 matches the same pattern as this clause │ 21 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/project.ex:21 warning: this clause cannot match because a previous clause at line 102 matches the same pattern as this clause │ 102 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:102 warning: variable "project" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 49 │ defp get_arke(project, nil), do: [] │ ~~~~~~~ │ └─ lib/arke/utils/export.ex:49:17: Arke.Utils.Export.get_arke/2 warning: variable "project" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 52 │ defp get_parameter(project, nil), do: [] │ ~~~~~~~ │ └─ lib/arke/utils/export.ex:52:22: Arke.Utils.Export.get_parameter/2 warning: variable "project" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 61 │ defp get_group(project, nil), do: [] │ ~~~~~~~ │ └─ lib/arke/utils/export.ex:61:18: Arke.Utils.Export.get_group/2 warning: variable "parsed_data" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 86 │ parsed_data = │ ~~~~~~~~~~~ │ └─ lib/arke/utils/export.ex:86:5: Arke.Utils.Export.get_all/1 warning: this clause cannot match because a previous clause at line 136 matches the same pattern as this clause │ 136 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:136 warning: Application.get_env/2 is discouraged in the module body, use Application.compile_env/3 instead │ 19 │ @storage Application.get_env(:arke, :storage) │ ~ │ └─ lib/arke/utils/gcp.ex:19:24: Arke.Utils.Gcp (module) warning: variable "object" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 28 │ {:ok, object} = │ ~~~~~~ │ └─ lib/arke/utils/gcp.ex:28:11: Arke.Utils.Gcp.upload_file/3 warning: variable "ext" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 50 │ def get_public_url(%{data: %{name: name, path: path, extension: ext}} = unit, opts \\ []) do │ ~~~ │ └─ lib/arke/utils/gcp.ex:50:67: Arke.Utils.Gcp.get_public_url/2 warning: variable "unit" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 50 │ def get_public_url(%{data: %{name: name, path: path, extension: ext}} = unit, opts \\ []) do │ ~~~~ │ └─ lib/arke/utils/gcp.ex:50:75: Arke.Utils.Gcp.get_public_url/2 warning: def get_public_url/2 has multiple clauses and also declares default values. In such cases, the default values should be defined in a header. Instead of: def foo(:first_clause, b \\ :default) do ... end def foo(:second_clause, b) do ... end one should write: def foo(a, b \\ :default) def foo(:first_clause, b) do ... end def foo(:second_clause, b) do ... end the previous clause is defined on line 50 │ 55 │ def get_public_url(_unit, _opts), do: Error.create(:storage, "invalid unit") │ ~ │ └─ lib/arke/utils/gcp.ex:55:7 warning: variable "err" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 101 │ {:ok, %{status_code: 403} = err} -> │ ~ │ └─ lib/arke/utils/gcp.ex:101:35: Arke.Utils.Gcp.get_bucket_file_signed_url/2 warning: this clause cannot match because a previous clause at line 170 matches the same pattern as this clause │ 170 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:170 warning: this clause for upload_file/2 cannot match because a previous clause at line 16 always matches │ 23 │ def upload_file(file_name, file_data, opts \\ []) do │ ~ │ └─ lib/arke/utils/gcp.ex:23:7 warning: this clause for get_file/1 cannot match because a previous clause at line 16 always matches │ 39 │ def get_file(file_path, opts \\ []) do │ ~ │ └─ lib/arke/utils/gcp.ex:39:7 warning: this clause for get_public_url/1 cannot match because a previous clause at line 16 always matches │ 50 │ def get_public_url(%{data: %{name: name, path: path, extension: ext}} = unit, opts \\ []) do │ ~ │ └─ lib/arke/utils/gcp.ex:50:7 warning: this clause for delete_file/1 cannot match because a previous clause at line 16 always matches │ 57 │ def delete_file(file_path, opts \\ []) do │ ~ │ └─ lib/arke/utils/gcp.ex:57:7 warning: this clause for get_bucket_file_signed_url/1 cannot match because a previous clause at line 16 always matches │ 68 │ def get_bucket_file_signed_url(file_path, opts \\ []) do │ ~ │ └─ lib/arke/utils/gcp.ex:68:7 warning: module attribute @default_bucket was set but never used │ 21 │ @default_bucket @storage[:gcp][:default_bucket] │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke/utils/gcp.ex:21: Arke.Utils.Gcp (module) warning: module attribute @service_account was set but never used │ 20 │ @service_account @storage[:gcp][:service_account] │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke/utils/gcp.ex:20: Arke.Utils.Gcp (module) warning: variable "arke_data" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 51 │ %{data: arke_data} = arke = ArkeManager.get(arke_id, project) │ ~ │ └─ lib/arke/validator.ex:51:15: Arke.Validator.validate/3 warning: variable "unit_id" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 91 │ defp check_duplicate_unit(%{id: unit_id} = unit, _project, _persistence_fn), do: {:ok, unit} │ ~~~~~~~ │ └─ lib/arke/validator.ex:91:35: Arke.Validator.check_duplicate_unit/3 warning: variable "project" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 144 │ defp get_parameter(arke, parameter_id, project), │ ~~~~~~~ │ └─ lib/arke/validator.ex:144:42: Arke.Validator.get_parameter/3 warning: clauses with the same name and arity (number of arguments) should be grouped together, "def validate_parameter/4" was previously defined (lib/arke/validator.ex:134) │ 147 │ def validate_parameter(arke, parameter, value, project) do │ ~ │ └─ lib/arke/validator.ex:147:7 warning: variable "parameter" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 167 │ def get_default_value(parameter, value), do: value │ ~~~~~~~~~ │ └─ lib/arke/validator.ex:167:25: Arke.Validator.get_default_value/2 warning: variable "data" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 169 │ defp parse_value(%{arke_id: :integer, data: %{multiple: false} = data} = _, value) │ ~~~~ │ └─ lib/arke/validator.ex:169:68: Arke.Validator.parse_value/2 warning: variable "data" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 177 │ defp parse_value(%{arke_id: :float, data: %{multiple: false} = data} = _, value) │ ~~~~ │ └─ lib/arke/validator.ex:177:66: Arke.Validator.parse_value/2 warning: variable "project" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 224 │ defp check_duplicate(errors, %{id: id, data: %{unique: true}} = _parameter, nil, project), │ ~~~~~~~ │ └─ lib/arke/validator.ex:224:84: Arke.Validator.check_duplicate/4 warning: variable "parameter" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 227 │ defp check_duplicate(errors, %{id: id, data: %{unique: true}} = parameter, value, project,arke) do │ ~~~~~~~~~ │ └─ lib/arke/validator.ex:227:67: Arke.Validator.check_duplicate/5 warning: variable "parameter" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 287 │ %{arke_id: type, data: %{multiple: true, values: _values, label: label}} = parameter, │ ~~~~~~~~~ │ └─ lib/arke/validator.ex:287:85: Arke.Validator.check_values/3 warning: variable "id" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 306 │ defp check_multiple(errors, %{id: id, data: %{multiple: true}} = parameter, value) when not is_list(value), do: check_multiple(errors, parameter, [value]) │ ~~ │ └─ lib/arke/validator.ex:306:37: Arke.Validator.check_multiple/3 warning: variable "parameter" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 307 │ defp check_multiple(errors, %{id: id, arke_id: type, data: %{ multiple: true}} = parameter, value) do │ ~~~~~~~~~ │ └─ lib/arke/validator.ex:307:84: Arke.Validator.check_multiple/3 warning: variable "parameter" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 317 │ defp check_whitespace(%{data: %{strip: true}} = parameter, value) when is_atom(value) do │ ~~~~~~~~~ │ └─ lib/arke/validator.ex:317:51: Arke.Validator.check_whitespace/2 warning: variable "parameter" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 325 │ defp check_whitespace(%{data: %{strip: true}} = parameter, value) do │ ~~~~~~~~~ │ └─ lib/arke/validator.ex:325:51: Arke.Validator.check_whitespace/2 warning: variable "parameter" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 332 │ defp check_lowercase(%{data: %{lowercase: true}} = parameter, value) when is_atom(value) do │ ~~~~~~~~~ │ └─ lib/arke/validator.ex:332:54: Arke.Validator.check_lowercase/2 warning: variable "parameter" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 339 │ defp check_lowercase(%{data: %{lowercase: true}} = parameter, value) do │ ~~~~~~~~~ │ └─ lib/arke/validator.ex:339:54: Arke.Validator.check_lowercase/2 warning: variable "parameter" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 346 │ defp check_max_length(errors, %{data: %{max_length: max_length}} = parameter, _) │ ~~~~~~~~~ │ └─ lib/arke/validator.ex:346:70: Arke.Validator.check_max_length/3 warning: variable "parameter" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 352 │ %{data: %{label: label, max_length: max_length}} = parameter, │ ~~~~~~~~~ │ └─ lib/arke/validator.ex:352:61: Arke.Validator.check_max_length/3 warning: variable "parameter" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 364 │ defp check_min_length(errors, %{data: %{min_length: min_length}} = parameter, _) │ ~~~~~~~~~ │ └─ lib/arke/validator.ex:364:70: Arke.Validator.check_min_length/3 warning: variable "parameter" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 370 │ %{data: %{label: label, min_length: min_length}} = parameter, │ ~~~~~~~~~ │ └─ lib/arke/validator.ex:370:61: Arke.Validator.check_min_length/3 warning: clauses with the same name and arity (number of arguments) should be grouped together, "defp check_by_type/3" was previously defined (lib/arke/validator.ex:235) │ 386 │ defp check_by_type(errors, %{arke_id: :integer} = parameter, value) │ ~ │ └─ lib/arke/validator.ex:386:8 warning: variable "parameter" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 395 │ defp check_by_type(errors, %{arke_id: :integer, data: %{label: label}} = parameter, _value), │ ~~~~~~~~~ │ └─ lib/arke/validator.ex:395:76: Arke.Validator.check_by_type/3 warning: variable "parameter" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 407 │ defp check_by_type(errors, %{arke_id: :float, data: %{label: label}} = parameter, _value), │ ~~~~~~~~~ │ └─ lib/arke/validator.ex:407:74: Arke.Validator.check_by_type/3 warning: variable "parameter" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 412 │ defp check_by_type(errors, %{arke_id: :dict, data: %{label: label}} = parameter, _value), │ ~~~~~~~~~ │ └─ lib/arke/validator.ex:412:73: Arke.Validator.check_by_type/3 warning: variable "parameter" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 417 │ defp check_by_type(errors, %{arke_id: :list, data: %{label: label}} = parameter, _value), │ ~~~~~~~~~ │ └─ lib/arke/validator.ex:417:73: Arke.Validator.check_by_type/3 warning: variable "parameter" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 420 │ defp check_max(errors, %{data: %{max: max}} = parameter, _) when is_nil(max), do: errors │ ~~~~~~~~~ │ └─ lib/arke/validator.ex:420:49: Arke.Validator.check_max/3 warning: variable "parameter" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 431 │ defp check_min(errors, %{data: %{min: min}} = parameter, _) when is_nil(min), do: errors │ ~~~~~~~~~ │ └─ lib/arke/validator.ex:431:49: Arke.Validator.check_min/3 warning: clauses with the same name and arity (number of arguments) should be grouped together, "defp check_by_type/3" was previously defined (lib/arke/validator.ex:235) │ 443 │ defp check_by_type(errors, %{arke_id: :date} = parameter, value) do │ ~ │ └─ lib/arke/validator.ex:443:8 warning: variable "parameter" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 470 │ defp check_by_type(errors, %{arke_id: :boolean} = parameter, value) │ ~~~~~~~~~ │ └─ lib/arke/validator.ex:470:53: Arke.Validator.check_by_type/3 warning: variable "id" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 495 │ defp __enum_error_common__(errors, %{id: id, data: %{values: nil}} = _parameter), do: errors │ ~~ │ └─ lib/arke/validator.ex:495:44: Arke.Validator.__enum_error_common__/2 warning: variable "id" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 496 │ defp __enum_error_common__(errors, %{id: id, data: %{values: %{}}} = _parameter), do: errors │ ~~ │ └─ lib/arke/validator.ex:496:44: Arke.Validator.__enum_error_common__/2 warning: variable "id" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 497 │ defp __enum_error_common__(errors, %{id: id, data: %{values: []}} = _parameter), do: errors │ ~~ │ └─ lib/arke/validator.ex:497:44: Arke.Validator.__enum_error_common__/2 warning: this clause cannot match because a previous clause at line 200 matches the same pattern as this clause │ 200 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:200 warning: function check_duplicate/4 is unused │ 224 │ defp check_duplicate(errors, %{id: id, data: %{unique: true}} = _parameter, nil, project), │ ~ │ └─ lib/arke/validator.ex:224:8: Arke.Validator (module) warning: variable "exception" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 12 │ def message(%{message: [%{context: context, message: message}]} = exception), │ ~~~~~~~~~ │ └─ lib/error/arke_error.ex:12:69: Arke.Errors.ArkeError.message/1 warning: this clause cannot match because a previous clause at line 224 matches the same pattern as this clause │ 224 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:224 warning: variable "exception" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 15 │ def message(%{message: errors} = exception) when is_list(errors) do │ ~~~~~~~~~ │ └─ lib/error/arke_error.ex:15:36: Arke.Errors.ArkeError.message/1 warning: this clause cannot match because a previous clause at line 248 matches the same pattern as this clause │ 248 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:248 warning: module attribute @decode_keys was set but never used │ 29 │ @decode_keys [:arke, :parameter, :group, :link] │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/mix/tasks/arke.export_data.ex:29: Mix.Tasks.Arke.ExportData (module) warning: unused alias ArkeManager │ 26 │ alias Arke.Boundary.{ArkeManager} │ ~ │ └─ lib/mix/tasks/arke.export_data.ex:26:3 warning: unused alias Error │ 25 │ alias Arke.Utils.ErrorGenerator, as: Error │ ~ │ └─ lib/mix/tasks/arke.export_data.ex:25:3 warning: unused alias LinkManager │ 24 │ alias Arke.LinkManager │ ~ │ └─ lib/mix/tasks/arke.export_data.ex:24:3 warning: unused alias QueryManager │ 23 │ alias Arke.QueryManager │ ~ │ └─ lib/mix/tasks/arke.export_data.ex:23:3 warning: unused alias Unit │ 28 │ alias Arke.Core.Unit │ ~ │ └─ lib/mix/tasks/arke.export_data.ex:28:3 warning: variable "project" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 79 │ defp check_file(_arke_id,project, []), do: nil │ ~~~~~~~ │ └─ lib/mix/tasks/arke.seed_project.ex:79:28: Mix.Tasks.Arke.SeedProject.check_file/3 warning: variable "format" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 256 │ defp parse([],format, data), do: data │ ~~~~~~ │ └─ lib/mix/tasks/arke.seed_project.ex:256:17: Mix.Tasks.Arke.SeedProject.parse/3 warning: default values for the optional arguments in the private function handle_link/3 are never used │ 346 │ defp handle_link(_data,_project, _error \\ []) │ ~ │ └─ lib/mix/tasks/arke.seed_project.ex:346:8: Mix.Tasks.Arke.SeedProject (module) warning: this clause cannot match because a previous clause at line 280 matches the same pattern as this clause │ 280 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:280 warning: this clause cannot match because a previous clause at line 311 matches the same pattern as this clause │ 311 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:311 warning: this clause cannot match because a previous clause at line 346 matches the same pattern as this clause │ 346 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:346 warning: this clause cannot match because a previous clause at line 370 matches the same pattern as this clause │ 370 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:370 warning: this clause cannot match because a previous clause at line 388 matches the same pattern as this clause │ 388 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:388 warning: this clause cannot match because a previous clause at line 404 matches the same pattern as this clause │ 404 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:404 warning: unused alias Parameter │ 402 │ alias Arke.Core.Parameter │ ~ │ └─ lib/arke/core/parameter.ex:402:3 warning: ArkePostgres.Repo.insert_all/3 is undefined (module ArkePostgres.Repo is not available or is yet to be defined) │ 388 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:388: Arke.Core.Parameter.Dynamic.handle_insert/4 warning: ArkePostgres.Repo.insert_all/3 is undefined (module ArkePostgres.Repo is not available or is yet to be defined) │ 404 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:404: Arke.Core.Parameter.Binary.handle_insert/4 warning: ArkeAuth.Guardian.get_member/1 is undefined (module ArkeAuth.Guardian is not available or is yet to be defined) │ 388 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:388: Arke.Core.Parameter.Dynamic.import/1 warning: ArkeAuth.Guardian.get_member/1 is undefined (module ArkeAuth.Guardian is not available or is yet to be defined) │ 404 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:404: Arke.Core.Parameter.Binary.import/1 warning: comparison between distinct types found: check_existing_units_for_import(project, arke, header, u, existing_units) == false given types: dynamic(true) == false where "arke" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:388 arke where "existing_units" (context Arke.System) was given the type: # type: empty_list() # from: lib/arke/core/parameter.ex:388 existing_units = get_existing_units_for_import(project, arke, header, correct_units) where "header" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:388 header = parse_header_for_import(template_header, file_header) where "project" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:388 project where "u" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:388 u While Elixir can compare across all types, you are comparing across types which are always disjoint, and the result is either always true or always false typing violation found at: │ 388 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:388: Arke.Core.Parameter.Dynamic.import_units/5 warning: comparison between distinct types found: check_existing_units_for_import(project, arke, header, u, existing_units) == false given types: dynamic(true) == false where "arke" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:404 arke where "existing_units" (context Arke.System) was given the type: # type: empty_list() # from: lib/arke/core/parameter.ex:404 existing_units = get_existing_units_for_import(project, arke, header, correct_units) where "header" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:404 header = parse_header_for_import(template_header, file_header) where "project" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:404 project where "u" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:404 u While Elixir can compare across all types, you are comparing across types which are always disjoint, and the result is either always true or always false typing violation found at: │ 404 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:404: Arke.Core.Parameter.Binary.import_units/5 warning: ArkePostgres.Repo.insert_all/3 is undefined (module ArkePostgres.Repo is not available or is yet to be defined) │ 370 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:370: Arke.Core.Parameter.Link.handle_insert/4 warning: ArkePostgres.Repo.insert_all/3 is undefined (module ArkePostgres.Repo is not available or is yet to be defined) │ 346 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:346: Arke.Core.Parameter.DateTime.handle_insert/4 warning: ArkeAuth.Guardian.get_member/1 is undefined (module ArkeAuth.Guardian is not available or is yet to be defined) │ 370 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:370: Arke.Core.Parameter.Link.import/1 warning: ArkeAuth.Guardian.get_member/1 is undefined (module ArkeAuth.Guardian is not available or is yet to be defined) │ 346 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:346: Arke.Core.Parameter.DateTime.import/1 warning: comparison between distinct types found: check_existing_units_for_import(project, arke, header, u, existing_units) == false given types: dynamic(true) == false where "arke" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:370 arke where "existing_units" (context Arke.System) was given the type: # type: empty_list() # from: lib/arke/core/parameter.ex:370 existing_units = get_existing_units_for_import(project, arke, header, correct_units) where "header" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:370 header = parse_header_for_import(template_header, file_header) where "project" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:370 project where "u" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:370 u While Elixir can compare across all types, you are comparing across types which are always disjoint, and the result is either always true or always false typing violation found at: │ 370 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:370: Arke.Core.Parameter.Link.import_units/5 warning: comparison between distinct types found: check_existing_units_for_import(project, arke, header, u, existing_units) == false given types: dynamic(true) == false where "arke" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:346 arke where "existing_units" (context Arke.System) was given the type: # type: empty_list() # from: lib/arke/core/parameter.ex:346 existing_units = get_existing_units_for_import(project, arke, header, correct_units) where "header" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:346 header = parse_header_for_import(template_header, file_header) where "project" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:346 project where "u" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:346 u While Elixir can compare across all types, you are comparing across types which are always disjoint, and the result is either always true or always false typing violation found at: │ 346 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:346: Arke.Core.Parameter.DateTime.import_units/5 warning: ArkePostgres.Repo.insert_all/3 is undefined (module ArkePostgres.Repo is not available or is yet to be defined) │ 280 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:280: Arke.Core.Parameter.Date.handle_insert/4 warning: ArkePostgres.Repo.insert_all/3 is undefined (module ArkePostgres.Repo is not available or is yet to be defined) │ 311 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:311: Arke.Core.Parameter.Time.handle_insert/4 warning: ArkeAuth.Guardian.get_member/1 is undefined (module ArkeAuth.Guardian is not available or is yet to be defined) │ 280 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:280: Arke.Core.Parameter.Date.import/1 warning: ArkeAuth.Guardian.get_member/1 is undefined (module ArkeAuth.Guardian is not available or is yet to be defined) │ 311 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:311: Arke.Core.Parameter.Time.import/1 warning: comparison between distinct types found: check_existing_units_for_import(project, arke, header, u, existing_units) == false given types: dynamic(true) == false where "arke" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:280 arke where "existing_units" (context Arke.System) was given the type: # type: empty_list() # from: lib/arke/core/parameter.ex:280 existing_units = get_existing_units_for_import(project, arke, header, correct_units) where "header" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:280 header = parse_header_for_import(template_header, file_header) where "project" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:280 project where "u" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:280 u While Elixir can compare across all types, you are comparing across types which are always disjoint, and the result is either always true or always false typing violation found at: │ 280 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:280: Arke.Core.Parameter.Date.import_units/5 warning: comparison between distinct types found: check_existing_units_for_import(project, arke, header, u, existing_units) == false given types: dynamic(true) == false where "arke" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:311 arke where "existing_units" (context Arke.System) was given the type: # type: empty_list() # from: lib/arke/core/parameter.ex:311 existing_units = get_existing_units_for_import(project, arke, header, correct_units) where "header" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:311 header = parse_header_for_import(template_header, file_header) where "project" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:311 project where "u" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:311 u While Elixir can compare across all types, you are comparing across types which are always disjoint, and the result is either always true or always false typing violation found at: │ 311 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:311: Arke.Core.Parameter.Time.import_units/5 warning: Arke.Boundary.ParameterManager.get_from_persistence/0 is undefined or private │ 34 │ Arke.Boundary.ParameterManager.get_from_persistence() │ ~ │ └─ lib/examples/starter.ex:34:36: Arke.Examples.Starter.init/0 warning: Arke.Core.Parameter.new/1 is undefined or private │ 44 │ parameter = Arke.Core.Parameter.new(p) │ ~ │ └─ lib/examples/starter.ex:44:41: Arke.Examples.Starter.init_arke_by_struct/2 warning: Arke.Boundary.ArkeManager.set_manager/2 is undefined or private │ 50 │ ArkeManager.set_manager(Arke.Core.Arke.new(args), :arke_system) │ ~ │ └─ lib/examples/starter.ex:50:17: Arke.Examples.Starter.init_arke_by_struct/2 warning: Arke.Core.Arke.new/1 is undefined or private │ 50 │ ArkeManager.set_manager(Arke.Core.Arke.new(args), :arke_system) │ ~ │ └─ lib/examples/starter.ex:50:44: Arke.Examples.Starter.init_arke_by_struct/2 └─ lib/examples/starter.ex:61:24: Arke.Examples.Starter.init_arke_by_persistence/0 warning: Arke.Boundary.ArkeManager.add_parameter/4 is undefined or private. Did you mean: * update_parameter/4 │ 78 │ ArkeManager.add_parameter(parent_id, :arke_system, child_id, data.metadata) │ ~ │ └─ lib/examples/starter.ex:78:19: Arke.Examples.Starter.init_arke_parameters_by_persistence/0 warning: ArkePostgres.Repo.insert_all/3 is undefined (module ArkePostgres.Repo is not available or is yet to be defined) │ 248 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:248: Arke.Core.Parameter.List.handle_insert/4 warning: ArkeAuth.Guardian.get_member/1 is undefined (module ArkeAuth.Guardian is not available or is yet to be defined) │ 248 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:248: Arke.Core.Parameter.List.import/1 warning: comparison between distinct types found: check_existing_units_for_import(project, arke, header, u, existing_units) == false given types: dynamic(true) == false where "arke" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:248 arke where "existing_units" (context Arke.System) was given the type: # type: empty_list() # from: lib/arke/core/parameter.ex:248 existing_units = get_existing_units_for_import(project, arke, header, correct_units) where "header" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:248 header = parse_header_for_import(template_header, file_header) where "project" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:248 project where "u" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:248 u While Elixir can compare across all types, you are comparing across types which are always disjoint, and the result is either always true or always false typing violation found at: │ 248 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:248: Arke.Core.Parameter.List.import_units/5 warning: ArkePostgres.Repo.insert_all/3 is undefined (module ArkePostgres.Repo is not available or is yet to be defined) │ 224 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:224: Arke.Core.Parameter.Dict.handle_insert/4 warning: ArkeAuth.Guardian.get_member/1 is undefined (module ArkeAuth.Guardian is not available or is yet to be defined) │ 224 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:224: Arke.Core.Parameter.Dict.import/1 warning: comparison between distinct types found: check_existing_units_for_import(project, arke, header, u, existing_units) == false given types: dynamic(true) == false where "arke" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:224 arke where "existing_units" (context Arke.System) was given the type: # type: empty_list() # from: lib/arke/core/parameter.ex:224 existing_units = get_existing_units_for_import(project, arke, header, correct_units) where "header" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:224 header = parse_header_for_import(template_header, file_header) where "project" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:224 project where "u" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:224 u While Elixir can compare across all types, you are comparing across types which are always disjoint, and the result is either always true or always false typing violation found at: │ 224 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:224: Arke.Core.Parameter.Dict.import_units/5 warning: ArkePostgres.Repo.insert_all/3 is undefined (module ArkePostgres.Repo is not available or is yet to be defined) │ 200 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:200: Arke.Core.Parameter.Boolean.handle_insert/4 warning: ArkeAuth.Guardian.get_member/1 is undefined (module ArkeAuth.Guardian is not available or is yet to be defined) │ 200 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:200: Arke.Core.Parameter.Boolean.import/1 warning: comparison between distinct types found: check_existing_units_for_import(project, arke, header, u, existing_units) == false given types: dynamic(true) == false where "arke" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:200 arke where "existing_units" (context Arke.System) was given the type: # type: empty_list() # from: lib/arke/core/parameter.ex:200 existing_units = get_existing_units_for_import(project, arke, header, correct_units) where "header" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:200 header = parse_header_for_import(template_header, file_header) where "project" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:200 project where "u" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:200 u While Elixir can compare across all types, you are comparing across types which are always disjoint, and the result is either always true or always false typing violation found at: │ 200 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:200: Arke.Core.Parameter.Boolean.import_units/5 warning: ArkePostgres.Repo.insert_all/3 is undefined (module ArkePostgres.Repo is not available or is yet to be defined) │ 170 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:170: Arke.Core.Parameter.Float.handle_insert/4 warning: ArkeAuth.Guardian.get_member/1 is undefined (module ArkeAuth.Guardian is not available or is yet to be defined) │ 170 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:170: Arke.Core.Parameter.Float.import/1 warning: comparison between distinct types found: check_existing_units_for_import(project, arke, header, u, existing_units) == false given types: dynamic(true) == false where "arke" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:170 arke where "existing_units" (context Arke.System) was given the type: # type: empty_list() # from: lib/arke/core/parameter.ex:170 existing_units = get_existing_units_for_import(project, arke, header, correct_units) where "header" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:170 header = parse_header_for_import(template_header, file_header) where "project" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:170 project where "u" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:170 u While Elixir can compare across all types, you are comparing across types which are always disjoint, and the result is either always true or always false typing violation found at: │ 170 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:170: Arke.Core.Parameter.Float.import_units/5 warning: ArkePostgres.Repo.insert_all/3 is undefined (module ArkePostgres.Repo is not available or is yet to be defined) │ 136 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:136: Arke.Core.Parameter.Integer.handle_insert/4 warning: ArkeAuth.Guardian.get_member/1 is undefined (module ArkeAuth.Guardian is not available or is yet to be defined) │ 136 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:136: Arke.Core.Parameter.Integer.import/1 warning: comparison between distinct types found: check_existing_units_for_import(project, arke, header, u, existing_units) == false given types: dynamic(true) == false where "arke" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:136 arke where "existing_units" (context Arke.System) was given the type: # type: empty_list() # from: lib/arke/core/parameter.ex:136 existing_units = get_existing_units_for_import(project, arke, header, correct_units) where "header" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:136 header = parse_header_for_import(template_header, file_header) where "project" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:136 project where "u" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:136 u While Elixir can compare across all types, you are comparing across types which are always disjoint, and the result is either always true or always false typing violation found at: │ 136 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:136: Arke.Core.Parameter.Integer.import_units/5 warning: ArkePostgres.Repo.insert_all/3 is undefined (module ArkePostgres.Repo is not available or is yet to be defined) │ 102 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:102: Arke.Core.Parameter.String.handle_insert/4 warning: ArkeAuth.Guardian.get_member/1 is undefined (module ArkeAuth.Guardian is not available or is yet to be defined) │ 102 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:102: Arke.Core.Parameter.String.import/1 warning: comparison between distinct types found: check_existing_units_for_import(project, arke, header, u, existing_units) == false given types: dynamic(true) == false where "arke" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:102 arke where "existing_units" (context Arke.System) was given the type: # type: empty_list() # from: lib/arke/core/parameter.ex:102 existing_units = get_existing_units_for_import(project, arke, header, correct_units) where "header" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:102 header = parse_header_for_import(template_header, file_header) where "project" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:102 project where "u" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:102 u While Elixir can compare across all types, you are comparing across types which are always disjoint, and the result is either always true or always false typing violation found at: │ 102 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:102: Arke.Core.Parameter.String.import_units/5 warning: ArkePostgres.Repo.insert_all/3 is undefined (module ArkePostgres.Repo is not available or is yet to be defined) │ 21 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/project.ex:21: Arke.Core.Project.handle_insert/4 warning: ArkeAuth.Guardian.get_member/1 is undefined (module ArkeAuth.Guardian is not available or is yet to be defined) │ 21 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/project.ex:21: Arke.Core.Project.import/1 warning: comparison between distinct types found: check_existing_units_for_import(project, arke, header, u, existing_units) == false given types: dynamic(true) == false where "arke" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/project.ex:21 arke where "existing_units" (context Arke.System) was given the type: # type: empty_list() # from: lib/arke/core/project.ex:21 existing_units = get_existing_units_for_import(project, arke, header, correct_units) where "header" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/project.ex:21 header = parse_header_for_import(template_header, file_header) where "project" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/project.ex:21 project where "u" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/project.ex:21 u While Elixir can compare across all types, you are comparing across types which are always disjoint, and the result is either always true or always false typing violation found at: │ 21 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/project.ex:21: Arke.Core.Project.import_units/5 warning: ArkePostgres.Repo.insert_all/3 is undefined (module ArkePostgres.Repo is not available or is yet to be defined) │ 18 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/link.ex:18: Arke.Core.Link.handle_insert/4 warning: ArkeAuth.Guardian.get_member/1 is undefined (module ArkeAuth.Guardian is not available or is yet to be defined) │ 18 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/link.ex:18: Arke.Core.Link.import/1 warning: comparison between distinct types found: check_existing_units_for_import(project, arke, header, u, existing_units) == false given types: dynamic(true) == false where "arke" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/link.ex:18 arke where "existing_units" (context Arke.System) was given the type: # type: empty_list() # from: lib/arke/core/link.ex:18 existing_units = get_existing_units_for_import(project, arke, header, correct_units) where "header" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/link.ex:18 header = parse_header_for_import(template_header, file_header) where "project" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/link.ex:18 project where "u" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/link.ex:18 u While Elixir can compare across all types, you are comparing across types which are always disjoint, and the result is either always true or always false typing violation found at: │ 18 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/link.ex:18: Arke.Core.Link.import_units/5 warning: ArkePostgres.Repo.insert_all/3 is undefined (module ArkePostgres.Repo is not available or is yet to be defined) │ 20 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/group.ex:20: Arke.Core.Group.handle_insert/4 warning: ArkePostgres.Repo.insert_all/3 is undefined (module ArkePostgres.Repo is not available or is yet to be defined) │ 20 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/file.ex:20: Arke.Core.File.handle_insert/4 warning: ArkeAuth.Guardian.get_member/1 is undefined (module ArkeAuth.Guardian is not available or is yet to be defined) │ 20 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/group.ex:20: Arke.Core.Group.import/1 warning: ArkeAuth.Guardian.get_member/1 is undefined (module ArkeAuth.Guardian is not available or is yet to be defined) │ 20 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/file.ex:20: Arke.Core.File.import/1 warning: comparison between distinct types found: check_existing_units_for_import(project, arke, header, u, existing_units) == false given types: dynamic(true) == false where "arke" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/group.ex:20 arke where "existing_units" (context Arke.System) was given the type: # type: empty_list() # from: lib/arke/core/group.ex:20 existing_units = get_existing_units_for_import(project, arke, header, correct_units) where "header" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/group.ex:20 header = parse_header_for_import(template_header, file_header) where "project" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/group.ex:20 project where "u" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/group.ex:20 u While Elixir can compare across all types, you are comparing across types which are always disjoint, and the result is either always true or always false typing violation found at: │ 20 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/group.ex:20: Arke.Core.Group.import_units/5 warning: comparison between distinct types found: check_existing_units_for_import(project, arke, header, u, existing_units) == false given types: dynamic(true) == false where "arke" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/file.ex:20 arke where "existing_units" (context Arke.System) was given the type: # type: empty_list() # from: lib/arke/core/file.ex:20 existing_units = get_existing_units_for_import(project, arke, header, correct_units) where "header" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/file.ex:20 header = parse_header_for_import(template_header, file_header) where "project" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/file.ex:20 project where "u" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/file.ex:20 u While Elixir can compare across all types, you are comparing across types which are always disjoint, and the result is either always true or always false typing violation found at: │ 20 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/file.ex:20: Arke.Core.File.import_units/5 warning: Logger.warn/1 is undefined or private. However, there is a macro with the same name and arity. Be sure to require Logger if you intend to invoke this macro │ 69 │ Logger.warn("error while loading the image: #{msg}") │ ~ │ └─ lib/arke/core/file.ex:69:16: Arke.Core.File.on_struct_encode/4 warning: ArkePostgres.Repo.insert_all/3 is undefined (module ArkePostgres.Repo is not available or is yet to be defined) │ 373 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/system.ex:373: Arke.System.Arke.handle_insert/4 warning: ArkeAuth.Guardian.get_member/1 is undefined (module ArkeAuth.Guardian is not available or is yet to be defined) │ 373 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/system.ex:373: Arke.System.Arke.import/1 warning: comparison between distinct types found: check_existing_units_for_import(project, arke, header, u, existing_units) == false given types: dynamic(true) == false where "arke" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/system.ex:373 arke where "existing_units" (context Arke.System) was given the type: # type: empty_list() # from: lib/arke/system.ex:373 existing_units = get_existing_units_for_import(project, arke, header, correct_units) where "header" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/system.ex:373 header = parse_header_for_import(template_header, file_header) where "project" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/system.ex:373 project where "u" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/system.ex:373 u While Elixir can compare across all types, you are comparing across types which are always disjoint, and the result is either always true or always false typing violation found at: │ 373 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/system.ex:373: Arke.System.Arke.import_units/5 warning: module attribute @impl was not set for function handle_call/3 callback (specified in GenServer). This either means you forgot to add the "@impl true" annotation before the definition or that you are accidentally overriding this callback │ 17 │ use Arke.Boundary.UnitManager │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke/boundary/group_manager.ex:17: Arke.Boundary.GroupManager (module) warning: module attribute @impl was not set for function handle_info/2 callback (specified in GenServer). This either means you forgot to add the "@impl true" annotation before the definition or that you are accidentally overriding this callback │ 17 │ use Arke.Boundary.UnitManager │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke/boundary/group_manager.ex:17: Arke.Boundary.GroupManager (module) warning: module attribute @impl was not set for function terminate/2 callback (specified in GenServer). This either means you forgot to add the "@impl true" annotation before the definition or that you are accidentally overriding this callback │ 17 │ use Arke.Boundary.UnitManager │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke/boundary/group_manager.ex:17: Arke.Boundary.GroupManager (module) warning: Tuple.append/2 is deprecated. Use insert_at instead │ 17 │ use Arke.Boundary.UnitManager │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke/boundary/group_manager.ex:17: Arke.Boundary.GroupManager.call_nodes_manager/3 warning: module attribute @impl was not set for function handle_call/3 callback (specified in GenServer). This either means you forgot to add the "@impl true" annotation before the definition or that you are accidentally overriding this callback │ 21 │ use Arke.Boundary.UnitManager │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke/boundary/arke_manager.ex:21: Arke.Boundary.ArkeManager (module) warning: module attribute @impl was not set for function handle_info/2 callback (specified in GenServer). This either means you forgot to add the "@impl true" annotation before the definition or that you are accidentally overriding this callback │ 21 │ use Arke.Boundary.UnitManager │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke/boundary/arke_manager.ex:21: Arke.Boundary.ArkeManager (module) warning: module attribute @impl was not set for function terminate/2 callback (specified in GenServer). This either means you forgot to add the "@impl true" annotation before the definition or that you are accidentally overriding this callback │ 21 │ use Arke.Boundary.UnitManager │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke/boundary/arke_manager.ex:21: Arke.Boundary.ArkeManager (module) warning: Tuple.append/2 is deprecated. Use insert_at instead │ 21 │ use Arke.Boundary.UnitManager │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke/boundary/arke_manager.ex:21: Arke.Boundary.ArkeManager.call_nodes_manager/3 warning: ArkePostgres.Repo.insert_all/3 is undefined (module ArkePostgres.Repo is not available or is yet to be defined) │ 21 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/arke.ex:21: Arke.Core.Arke.handle_insert/4 warning: ArkeAuth.Guardian.get_member/1 is undefined (module ArkeAuth.Guardian is not available or is yet to be defined) │ 21 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/arke.ex:21: Arke.Core.Arke.import/1 warning: comparison between distinct types found: check_existing_units_for_import(project, arke, header, u, existing_units) == false given types: dynamic(true) == false where "arke" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/arke.ex:21 arke where "existing_units" (context Arke.System) was given the type: # type: empty_list() # from: lib/arke/core/arke.ex:21 existing_units = get_existing_units_for_import(project, arke, header, correct_units) where "header" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/arke.ex:21 header = parse_header_for_import(template_header, file_header) where "project" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/arke.ex:21 project where "u" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/arke.ex:21 u While Elixir can compare across all types, you are comparing across types which are always disjoint, and the result is either always true or always false typing violation found at: │ 21 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/arke.ex:21: Arke.Core.Arke.import_units/5 warning: Unit.update/2 is undefined (module Unit is not available or is yet to be defined). Did you mean: * Arke.Core.Unit.update/2 │ 45 │ unit = Unit.update(unit, %{parameters: parameters}) │ ~ │ └─ lib/arke/core/arke.ex:45:17: Arke.Core.Arke.on_update/2 warning: module attribute @impl was not set for function handle_call/3 callback (specified in GenServer). This either means you forgot to add the "@impl true" annotation before the definition or that you are accidentally overriding this callback │ 17 │ use Arke.Boundary.UnitManager │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke/boundary/parameter_manager.ex:17: Arke.Boundary.ParameterManager (module) warning: module attribute @impl was not set for function handle_info/2 callback (specified in GenServer). This either means you forgot to add the "@impl true" annotation before the definition or that you are accidentally overriding this callback │ 17 │ use Arke.Boundary.UnitManager │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke/boundary/parameter_manager.ex:17: Arke.Boundary.ParameterManager (module) warning: module attribute @impl was not set for function terminate/2 callback (specified in GenServer). This either means you forgot to add the "@impl true" annotation before the definition or that you are accidentally overriding this callback │ 17 │ use Arke.Boundary.UnitManager │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke/boundary/parameter_manager.ex:17: Arke.Boundary.ParameterManager (module) warning: Tuple.append/2 is deprecated. Use insert_at instead │ 17 │ use Arke.Boundary.UnitManager │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke/boundary/parameter_manager.ex:17: Arke.Boundary.ParameterManager.call_nodes_manager/3 warning: Arke.DatetimeHandler.now/1 is undefined (module Arke.DatetimeHandler is not available or is yet to be defined) │ 291 │ :datetime => Arke.DatetimeHandler.now(:datetime) │ ~ │ └─ lib/arke/core/unit.ex:291:43: Arke.Core.Unit.update_encoded_unit_data/3 Generated arke app ==> arke_auth Compiling 13 files (.ex) warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead │ 17 │ use Arke.Boundary.UnitManager │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke_auth/boundary/otp_manager.ex:17: ArkeAuth.Boundary.OtpManager.handle_info/2 warning: @compile {:parse_transform, :ms_transform} is deprecated. Elixir will no longer support Erlang-based transforms in future versions │ 15 │ defmodule ArkeAuth.Boundary.OtpManager do │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke_auth/boundary/otp_manager.ex:15: ArkeAuth.Boundary.OtpManager (module) warning: variable "arke" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 30 │ def on_unit_load(arke, data, _persistence_fn), do: {:ok, data} │ ~~~~ │ └─ lib/arke_auth/core/member.ex:30:20: ArkeAuth.Core.Member.on_unit_load/3 warning: variable "arke_user" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 63 │ arke_user = ArkeManager.get(:user, :arke_system) │ ~~~~~~~~~ │ └─ lib/arke_auth/core/member.ex:63:5: ArkeAuth.Core.Member.before_unit_update/2 warning: variable "arke_member_public" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 91 │ arke_member_public = QueryManager.get_by(project: project, arke_id: "ake", id: "member_public") │ ~~~~~~~~~~~~~~~~~~ │ └─ lib/arke_auth/core/member.ex:91:5: ArkeAuth.Core.Member.handle_get_permission/2 warning: function permission_dict/1 is unused │ 107 │ defp permission_dict(data \\ %{}) do │ ~ │ └─ lib/arke_auth/core/member.ex:107:8: ArkeAuth.Core.Member (module) warning: function handle_get_permission/2 is unused │ 89 │ defp handle_get_permission(member, %{metadata: %{project: project}}=arke) do │ ~ │ └─ lib/arke_auth/core/member.ex:89:8: ArkeAuth.Core.Member (module) warning: function get_permission_dict/2 is unused │ 119 │ defp get_permission_dict(permission_list, is_public \\ false) do │ ~ │ └─ lib/arke_auth/core/member.ex:119:8: ArkeAuth.Core.Member (module) warning: function get_parent_list/1 is unused │ 127 │ defp get_parent_list(nil), do: ["member_public"] │ ~ │ └─ lib/arke_auth/core/member.ex:127:8: ArkeAuth.Core.Member (module) warning: unused alias Member │ 17 │ alias ArkeAuth.Core.Member │ ~ │ └─ lib/arke_auth/core/member.ex:17:3 warning: this clause cannot match because a previous clause at line 6 matches the same pattern as this clause │ 6 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke_auth/core/reset_password_token.ex:6 warning: this clause cannot match because a previous clause at line 23 matches the same pattern as this clause │ 23 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke_auth/core/otp.ex:23 warning: this clause cannot match because a previous clause at line 24 matches the same pattern as this clause │ 24 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke_auth/core/temporary_token.ex:24 warning: this clause cannot match because a previous clause at line 24 matches the same pattern as this clause │ 24 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke_auth/core/user.ex:24 warning: Application.get_env/3 is discouraged in the module body, use Application.compile_env/3 instead │ 19 │ use Guardian, otp_app: :arke_auth │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke_auth/guardian.ex:19: ArkeAuth.Guardian (module) warning: Application.get_env/3 is discouraged in the module body, use Application.compile_env/3 instead │ 19 │ use Guardian, otp_app: :arke_auth │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke_auth/sso_guardian.ex:19: ArkeAuth.SSOGuardian (module) warning: variable "data" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 44 │ data = Map.get(user,:data,%{}) │ ~ │ └─ lib/arke_auth/sso_guardian.ex:44:9: ArkeAuth.SSOGuardian.resource_from_claims/1 warning: this clause for subject_for_token/2 cannot match because a previous clause at line 24 always matches │ 32 │ def subject_for_token(_, _) do │ ~ │ └─ lib/arke_auth/sso_guardian.ex:32:7 warning: this clause for resource_from_claims/1 cannot match because a previous clause at line 39 always matches │ 49 │ def resource_from_claims(_claims) do │ ~ │ └─ lib/arke_auth/sso_guardian.ex:49:7 warning: this clause for subject_for_token/2 cannot match because a previous clause at line 51 always matches │ 61 │ def subject_for_token(_, _) do │ ~ │ └─ lib/arke_auth/guardian.ex:61:7 warning: this clause for resource_from_claims/1 cannot match because a previous clause at line 68 always matches │ 81 │ def resource_from_claims(_claims) do │ ~ │ └─ lib/arke_auth/guardian.ex:81:7 warning: variable "parent_list" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 34 │ parent_list = get_parent_list(member) │ ~~~~~~~~~~~ │ └─ lib/arke_auth/utils/permission.ex:34:5: ArkeAuth.Utils.Permission.get_member_permission/3 warning: variable "parent_list" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 59 │ parent_list = get_parent_list(member) │ ~~~~~~~~~~~ │ └─ lib/arke_auth/utils/permission.ex:59:5: ArkeAuth.Utils.Permission.get_member_permission/3 warning: variable "data" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 112 │ defp permission_dict(data, %{arke_id: :super_admin} = _member), │ ~~~~ │ └─ lib/arke_auth/utils/permission.ex:112:24: ArkeAuth.Utils.Permission.permission_dict/2 warning: variable "data" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 115 │ defp permission_dict(data, %{data: %{subscription_active: false}}), │ ~~~~ │ └─ lib/arke_auth/utils/permission.ex:115:24: ArkeAuth.Utils.Permission.permission_dict/2 warning: default values for the optional arguments in the private function permission_dict/2 are never used │ 110 │ defp permission_dict(data, member \\ nil) │ ~ │ └─ lib/arke_auth/utils/permission.ex:110:8: ArkeAuth.Utils.Permission (module) warning: default values for the optional arguments in the private function get_permission_dict/3 are never used │ 92 │ defp get_permission_dict(permission_list, member \\ nil, is_public \\ false) do │ ~ │ └─ lib/arke_auth/utils/permission.ex:92:8: ArkeAuth.Utils.Permission (module) warning: unused alias Error │ 19 │ alias Arke.Utils.ErrorGenerator, as: Error │ ~ │ └─ lib/arke_auth/utils/permission.ex:19:3 warning: ArkePostgres.Repo.insert_all/3 is undefined (module ArkePostgres.Repo is not available or is yet to be defined) │ 24 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke_auth/core/user.ex:24: ArkeAuth.Core.User.handle_insert/4 warning: comparison between distinct types found: check_existing_units_for_import(project, arke, header, u, existing_units) == false given types: dynamic(true) == false where "arke" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke_auth/core/user.ex:24 arke where "existing_units" (context Arke.System) was given the type: # type: empty_list() # from: lib/arke_auth/core/user.ex:24 existing_units = get_existing_units_for_import(project, arke, header, correct_units) where "header" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke_auth/core/user.ex:24 header = parse_header_for_import(template_header, file_header) where "project" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke_auth/core/user.ex:24 project where "u" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke_auth/core/user.ex:24 u While Elixir can compare across all types, you are comparing across types which are always disjoint, and the result is either always true or always false typing violation found at: │ 24 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke_auth/core/user.ex:24: ArkeAuth.Core.User.import_units/5 warning: ArkePostgres.Repo.insert_all/3 is undefined (module ArkePostgres.Repo is not available or is yet to be defined) │ 24 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke_auth/core/temporary_token.ex:24: ArkeAuth.Core.TemporaryToken.handle_insert/4 warning: comparison between distinct types found: check_existing_units_for_import(project, arke, header, u, existing_units) == false given types: dynamic(true) == false where "arke" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke_auth/core/temporary_token.ex:24 arke where "existing_units" (context Arke.System) was given the type: # type: empty_list() # from: lib/arke_auth/core/temporary_token.ex:24 existing_units = get_existing_units_for_import(project, arke, header, correct_units) where "header" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke_auth/core/temporary_token.ex:24 header = parse_header_for_import(template_header, file_header) where "project" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke_auth/core/temporary_token.ex:24 project where "u" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke_auth/core/temporary_token.ex:24 u While Elixir can compare across all types, you are comparing across types which are always disjoint, and the result is either always true or always false typing violation found at: │ 24 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke_auth/core/temporary_token.ex:24: ArkeAuth.Core.TemporaryToken.import_units/5 warning: ArkeAuth.Guardian.Plug.current_resource/1 is undefined (module ArkeAuth.Guardian.Plug is not available or is yet to be defined) │ 30 │ true -> ArkeAuth.Guardian.Plug.current_resource(conn) │ ~ │ └─ lib/arke_auth/guardian.ex:30:38: ArkeAuth.Guardian.get_member/2 └─ lib/arke_auth/guardian.ex:37:32: ArkeAuth.Guardian.get_impersonate_resources/1 warning: ArkeAuth.Guardian.Plug.current_resource/2 is undefined (module ArkeAuth.Guardian.Plug is not available or is yet to be defined) │ 35 │ case ArkeAuth.Guardian.Plug.current_resource(conn, key: :impersonate) do │ ~ │ └─ lib/arke_auth/guardian.ex:35:33: ArkeAuth.Guardian.get_impersonate_resources/1 warning: ArkePostgres.Repo.insert_all/3 is undefined (module ArkePostgres.Repo is not available or is yet to be defined) │ 23 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke_auth/core/otp.ex:23: ArkeAuth.Core.Otp.handle_insert/4 warning: comparison between distinct types found: check_existing_units_for_import(project, arke, header, u, existing_units) == false given types: dynamic(true) == false where "arke" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke_auth/core/otp.ex:23 arke where "existing_units" (context Arke.System) was given the type: # type: empty_list() # from: lib/arke_auth/core/otp.ex:23 existing_units = get_existing_units_for_import(project, arke, header, correct_units) where "header" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke_auth/core/otp.ex:23 header = parse_header_for_import(template_header, file_header) where "project" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke_auth/core/otp.ex:23 project where "u" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke_auth/core/otp.ex:23 u While Elixir can compare across all types, you are comparing across types which are always disjoint, and the result is either always true or always false typing violation found at: │ 23 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke_auth/core/otp.ex:23: ArkeAuth.Core.Otp.import_units/5 warning: module attribute @impl was not set for function handle_call/3 callback (specified in GenServer). This either means you forgot to add the "@impl true" annotation before the definition or that you are accidentally overriding this callback │ 17 │ use Arke.Boundary.UnitManager │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke_auth/boundary/otp_manager.ex:17: ArkeAuth.Boundary.OtpManager (module) warning: module attribute @impl was not set for function handle_info/2 callback (specified in GenServer). This either means you forgot to add the "@impl true" annotation before the definition or that you are accidentally overriding this callback │ 17 │ use Arke.Boundary.UnitManager │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke_auth/boundary/otp_manager.ex:17: ArkeAuth.Boundary.OtpManager (module) warning: module attribute @impl was not set for function terminate/2 callback (specified in GenServer). This either means you forgot to add the "@impl true" annotation before the definition or that you are accidentally overriding this callback │ 17 │ use Arke.Boundary.UnitManager │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke_auth/boundary/otp_manager.ex:17: ArkeAuth.Boundary.OtpManager (module) warning: Tuple.append/2 is deprecated. Use insert_at instead │ 17 │ use Arke.Boundary.UnitManager │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke_auth/boundary/otp_manager.ex:17: ArkeAuth.Boundary.OtpManager.call_nodes_manager/3 warning: ArkePostgres.Repo.insert_all/3 is undefined (module ArkePostgres.Repo is not available or is yet to be defined) │ 6 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke_auth/core/reset_password_token.ex:6: ArkeAuth.ResetPasswordToken.handle_insert/4 warning: comparison between distinct types found: check_existing_units_for_import(project, arke, header, u, existing_units) == false given types: dynamic(true) == false where "arke" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke_auth/core/reset_password_token.ex:6 arke where "existing_units" (context Arke.System) was given the type: # type: empty_list() # from: lib/arke_auth/core/reset_password_token.ex:6 existing_units = get_existing_units_for_import(project, arke, header, correct_units) where "header" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke_auth/core/reset_password_token.ex:6 header = parse_header_for_import(template_header, file_header) where "project" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke_auth/core/reset_password_token.ex:6 project where "u" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke_auth/core/reset_password_token.ex:6 u While Elixir can compare across all types, you are comparing across types which are always disjoint, and the result is either always true or always false typing violation found at: │ 6 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke_auth/core/reset_password_token.ex:6: ArkeAuth.ResetPasswordToken.import_units/5 Generated arke_auth app ==> nerves_compatibility_test Compiling 2 files (.ex) Generated nerves_compatibility_test app |nerves| Building OTP Release... * [Nerves] validating vm.args * skipping runtime configuration (config/runtime.exs not found) * creating _build/mangopi_mq_pro/rel/nerves_compatibility_test/releases/0.1.0/vm.args Updating base firmware image with Erlang release... scrub-otp-release.sh: ERROR: Unexpected executable format for '/work/proj/_build/mangopi_mq_pro/_nerves-tmp/rootfs_overlay/srv/erlang/lib/bcrypt_elixir-1.1.1/priv/bcrypt_nif.so' Got: readelf:AArch64;0x0 Expecting: readelf:RISC-V;0x5, RVC, double-float ABI This file was compiled for the host or a different target and probably will not work. Check the following: 1. If this file comes from a library, that library may be compiling to its source directory under `deps`. Manually clean up the source directory and try building again. 2. Are you using a path dependency in your mix deps? If so, run 'mix clean' in that directory to avoid pulling in any of its build products. 3. Did you recently upgrade or change your Nerves system? If so, try cleaning and rebuilding this project and its deps. 4. Are you building outside of Nerves' mix integration? If so, make sure that you've sourced 'nerves-env.sh'. If you are very sure you know what you are doing, you may place an empty file in the same directory as the offending file(s) called '.noscrub'. This will explicitly disable scrubbing for that directory. If you're still having trouble, please file an issue on Github at https://github.com/nerves-project/nerves_system_br/issues.