-module(go_over@packages). -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]). -export([read_manifest/1]). -export_type([package/0]). -type package() :: {package, binary(), gleamsver:sem_ver(), binary(), boolean()}. -file("/home/bwireman/src/go-over/src/go_over/packages.gleam", 16). -spec read_manifest(binary()) -> list(package()). read_manifest(Path) -> Res = begin _pipe = simplifile:read(Path), go_over@util@util:hard_fail( _pipe, <<"could not parse "/utf8, Path/binary>> ) end, Manifest = begin _pipe@1 = tom:parse(Res), go_over@util@util:hard_fail( _pipe@1, <<"could not parse "/utf8, Path/binary>> ) end, Packages = begin _pipe@2 = tom:get_array(Manifest, [<<"packages"/utf8>>]), go_over@util@util:hard_fail( _pipe@2, <<<<"could not parse "/utf8, Path/binary>>/binary, " value: packages"/utf8>> ) end, Requirements = begin _pipe@3 = tom:get_table(Manifest, [<<"requirements"/utf8>>]), go_over@util@util:hard_fail( _pipe@3, <<<<"could not parse "/utf8, Path/binary>>/binary, " value: requirements"/utf8>> ) end, Required_packages = gleam@dict:keys(Requirements), _pipe@7 = gleam@list:map(Packages, fun(P) -> case P of {inline_table, T} -> Name = begin _pipe@4 = tom:get_string(T, [<<"name"/utf8>>]), go_over@util@util:hard_fail( _pipe@4, <<"could not parse parckage: "/utf8, (gleam@string:inspect(T))/binary>> ) end, Ver = begin _pipe@5 = tom:get_string(T, [<<"version"/utf8>>]), go_over@util@util:hard_fail( _pipe@5, <<"could not parse parckage: "/utf8, (gleam@string:inspect(T))/binary>> ) end, Semver = begin _pipe@6 = gleamsver:parse(Ver), go_over@util@util:hard_fail( _pipe@6, <<"could not parse parckage version: "/utf8, Ver/binary>> ) end, {some, {package, Name, Semver, Ver, gleam@list:contains(Required_packages, Name)}}; _ -> go_over@util@print:warning( <<"could not parse packages: incorrect type"/utf8>> ), shellout_ffi:os_exit(1), none end end), gleam@option:values(_pipe@7).