From 4223317086c70127164ede88dc9c73b4eb0bab7f Mon Sep 17 00:00:00 2001 From: Christoph Knittel Date: Sun, 13 May 2018 17:36:42 +0200 Subject: [PATCH] Upgrade to Reason 3.2.0 and directly use Reason parser api instead of running the refmt exe --- .travis.yml | 2 - bin/Extract.re | 21 ++--- esy.lock | 234 +++++-------------------------------------------- lib/jbuild | 2 +- package.json | 3 +- 5 files changed, 29 insertions(+), 233 deletions(-) diff --git a/.travis.yml b/.travis.yml index e96985d..5a63796 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,8 +6,6 @@ os: - osx install: - npm install --global esy -- if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then npm install --global reason-cli@3.1.0-linux; fi -- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then npm install --global reason-cli@3.1.0-darwin; fi - esy install script: - esy build diff --git a/bin/Extract.re b/bin/Extract.re index ffde3f8..37f50ab 100644 --- a/bin/Extract.re +++ b/bin/Extract.re @@ -20,27 +20,19 @@ let iterator = let extractMessages = ast => iterator.structure(iterator, Obj.magic(ast)); -let readMessagesFromChannel = channel => - switch (Ast_io.from_channel(channel)) { - | Result.Ok((_, Ast_io.Impl((module Version), ast))) => - module Convert = Convert(Version, OCaml_406); - let converted = Obj.magic(Convert.copy_structure(ast)); - extractMessages(converted); - | Result.Ok((_, Ast_io.Intf(_, _))) => Printf.eprintf("Interface AST not supported, only implementation AST\n") - | Result.Error(Not_a_binary_ast(_)) => Printf.eprintf("Error: input is not a binary AST\n") - | Result.Error(Unknown_version(v)) => Printf.eprintf("Error: unknown AST version: %s\n", v) - }; - let processReasonFile = filename => { - let channel = Unix.open_process_in("refmt -p binary " ++ filename); - readMessagesFromChannel(channel); - Unix.close_process_in(channel) |> ignore; + let channel = open_in_bin(filename); + let lexbuf = Lexing.from_channel(channel); + let ast = Reason_toolchain.RE.implementation(lexbuf); + close_in(channel); + extractMessages(ast); }; let rec processDirectory = dir => Sys.readdir(dir) |> Array.iter(filename => { let path = Filename.concat(dir, filename); + if (Sys.is_directory(path)) { processDirectory(path); } else if (Filename.extension(filename) == ".re") { @@ -55,6 +47,7 @@ let outputJson = () => { |> List.map(((_id, message)) => message) |> List.sort(Message.compare) |> List.map(Message.toJson); + Yojson.Basic.pretty_to_channel(stdout, `List(sortedJsonObjects)); print_newline(); }; diff --git a/esy.lock b/esy.lock index 08a9c02..36a4811 100644 --- a/esy.lock +++ b/esy.lock @@ -7,8 +7,8 @@ resolved "https://registry.yarnpkg.com/@esy-ocaml/esy-installer/-/esy-installer-0.0.0.tgz#6b0e2bd4ee43531ac74793fe55cfcc3aca197a66" "@esy-ocaml/merlin@*": - version "3.0.5003" - resolved "https://registry.yarnpkg.com/@esy-ocaml/merlin/-/merlin-3.0.5003.tgz#4b3d68a7ddef3051f1b05fdb5b2f69d5791034d3" + version "3.0.5004" + resolved "https://registry.yarnpkg.com/@esy-ocaml/merlin/-/merlin-3.0.5004.tgz#e92a1cb8448b230874837dcf7da29def41f46170" dependencies: "@esy-ocaml/esy-installer" "^0.0.0" "@esy-ocaml/substs" "^0.0.1" @@ -17,9 +17,9 @@ peerDependencies: ocaml " >= 4.2.1 < 4.7.0" -"@esy-ocaml/reason@^3.0.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@esy-ocaml/reason/-/reason-3.1.0.tgz#9e77f50622c9268ef4a7cb079ca5150fc2d9140f" +"@esy-ocaml/reason@^3.0.0", "@esy-ocaml/reason@^3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@esy-ocaml/reason/-/reason-3.2.0.tgz#9b68a6649f3ba38a11a0fdc7b7c004cab512ac8e" dependencies: "@esy-ocaml/esy-installer" "^0.0.0" "@esy-ocaml/substs" "^0.0.1" @@ -45,16 +45,6 @@ peerDependencies: ocaml " >= 4.2.0" -"@opam/base-threads@*": - version "0.0.0-base" - uid "5601b815938b487242834ca2ddd7e3fc" - resolved "@opam/base-threads@0.0.0-base-5601b815938b487242834ca2ddd7e3fc.tgz" - dependencies: - "@esy-ocaml/esy-installer" "^0.0.0" - "@esy-ocaml/substs" "^0.0.1" - peerDependencies: - ocaml "*" - "@opam/base-unix@*": version "0.0.0-base" uid "04bc004c59f2edca849d38ea6891bb7f" @@ -78,31 +68,6 @@ peerDependencies: ocaml " >= 4.2.3000" -"@opam/camlp4@*": - version "4.6.0-1" - uid ec9e71b1e73d101ab8ef9a66cc9035e7 - resolved "@opam/camlp4@4.6.0-1-ec9e71b1e73d101ab8ef9a66cc9035e7.tgz" - dependencies: - "@esy-ocaml/esy-installer" "^0.0.0" - "@esy-ocaml/substs" "^0.0.1" - "@opam/ocamlbuild" "*" - peerDependencies: - ocaml " >= 4.6.0 < 4.7.0" - -"@opam/camomile@ >= 0.8.0", "@opam/camomile@*": - version "0.8.7" - uid c128e86f078793c4ef45907002f0cb86 - resolved "@opam/camomile@0.8.7-c128e86f078793c4ef45907002f0cb86.tgz" - dependencies: - "@esy-ocaml/esy-installer" "^0.0.0" - "@esy-ocaml/substs" "^0.0.1" - "@opam/base-bytes" "*" - "@opam/camlp4" "*" - "@opam/cppo" "*" - "@opam/jbuilder" " >= 1.0.0-beta7" - peerDependencies: - ocaml " >= 4.2.3000" - "@opam/conf-m4@*": version "1.0.0" uid "97f0966b2e2652d02c0d9125781c31df" @@ -123,7 +88,7 @@ peerDependencies: ocaml "*" -"@opam/cppo@ >= 1.1.0", "@opam/cppo@ >= 1.1.2", "@opam/cppo@*": +"@opam/cppo@*": version "1.6.4" uid "0caf37d16727e17fbcd4e9b41a467f91" resolved "@opam/cppo@1.6.4-0caf37d16727e17fbcd4e9b41a467f91.tgz" @@ -147,18 +112,7 @@ peerDependencies: ocaml " >= 4.2.3000" -"@opam/jbuilder@ >= 1.0.0-beta10", "@opam/jbuilder@ >= 1.0.0-beta14", "@opam/jbuilder@ >= 1.0.0-beta17", "@opam/jbuilder@ >= 1.0.0-beta7", "@opam/jbuilder@ >= 1.0.0-beta9", "@opam/jbuilder@*", "@opam/jbuilder@^1.0.0-beta14": - version "1.0.0-beta18" - uid "281d8c71c86a42346d78ad4090b8b945" - resolved "@opam/jbuilder@1.0.0-beta18-281d8c71c86a42346d78ad4090b8b945.tgz" - dependencies: - "@esy-ocaml/esy-installer" "^0.0.0" - "@esy-ocaml/substs" "^0.0.1" - "@opam/ocamlfind" "*" - peerDependencies: - ocaml " >= 4.2.3000" - -"@opam/jbuilder@ >= 1.0.0-beta181": +"@opam/jbuilder@ >= 1.0.0-beta10", "@opam/jbuilder@ >= 1.0.0-beta17", "@opam/jbuilder@ >= 1.0.0-beta181", "@opam/jbuilder@ >= 1.0.0-beta7", "@opam/jbuilder@*", "@opam/jbuilder@^1.0.0-beta14": version "1.0.0-beta20" uid "1648206284a54407f6eee01ed950fff7" resolved "@opam/jbuilder@1.0.0-beta20-1648206284a54407f6eee01ed950fff7.tgz" @@ -169,51 +123,6 @@ peerDependencies: ocaml " >= 4.2.3000" -"@opam/lambda-term@ >= 1.2.0": - version "1.12.0" - uid "472857378659d1a1599183ff632c0797" - resolved "@opam/lambda-term@1.12.0-472857378659d1a1599183ff632c0797.tgz" - dependencies: - "@esy-ocaml/esy-installer" "^0.0.0" - "@esy-ocaml/substs" "^0.0.1" - "@opam/camomile" "*" - "@opam/jbuilder" " >= 1.0.0-beta9" - "@opam/lwt" " >= 2.7.0" - "@opam/lwt_react" "*" - "@opam/react" "*" - "@opam/zed" " >= 1.2.0" - peerDependencies: - ocaml " >= 4.2.3000" - -"@opam/lwt@ >= 2.7.0", "@opam/lwt@ >= 3.0.0", "@opam/lwt@*": - version "3.2.1" - uid "0dc31662087c7ed246f43c4c81ce681e" - resolved "@opam/lwt@3.2.1-0dc31662087c7ed246f43c4c81ce681e.tgz" - dependencies: - "@esy-ocaml/esy-installer" "^0.0.0" - "@esy-ocaml/substs" "^0.0.1" - "@opam/cppo" " >= 1.1.0" - "@opam/jbuilder" " >= 1.0.0-beta14" - "@opam/ocaml-migrate-parsetree" "*" - "@opam/ocamlfind" " >= 1.7.3--1" - "@opam/ppx_tools_versioned" " >= 5.0.1" - "@opam/result" "*" - peerDependencies: - ocaml " >= 4.2.0" - -"@opam/lwt_react@*": - version "1.1.0" - uid "20a2a8d3c6e4d1038ae9d01666a15320" - resolved "@opam/lwt_react@1.1.0-20a2a8d3c6e4d1038ae9d01666a15320.tgz" - dependencies: - "@esy-ocaml/esy-installer" "^0.0.0" - "@esy-ocaml/substs" "^0.0.1" - "@opam/jbuilder" " >= 1.0.0-beta10" - "@opam/lwt" " >= 3.0.0" - "@opam/react" " >= 1.0.0" - peerDependencies: - ocaml "*" - "@opam/menhir@ >= 20170418.0.0 <= 20171013.0.0": version "20171013.0.0" uid "358990f51123ce9d3629e66b9ead67ee" @@ -238,20 +147,7 @@ peerDependencies: ocaml " >= 4.2.3000" -"@opam/ocaml-migrate-parsetree@ >= 0.4.0", "@opam/ocaml-migrate-parsetree@*": - version "1.0.7" - uid "8dd63da93ee2ed29313f5b50471c94ae" - resolved "@opam/ocaml-migrate-parsetree@1.0.7-8dd63da93ee2ed29313f5b50471c94ae.tgz" - dependencies: - "@esy-ocaml/esy-installer" "^0.0.0" - "@esy-ocaml/substs" "^0.0.1" - "@opam/jbuilder" " >= 1.0.0-beta10" - "@opam/ocamlfind" "*" - "@opam/result" "*" - peerDependencies: - ocaml " >= 4.2.0" - -"@opam/ocaml-migrate-parsetree@^1.0.10": +"@opam/ocaml-migrate-parsetree@*": version "1.0.10" uid "48723a85ec73e8dc29f6f8710d1178a4" resolved "@opam/ocaml-migrate-parsetree@1.0.10-48723a85ec73e8dc29f6f8710d1178a4.tgz" @@ -274,72 +170,29 @@ peerDependencies: ocaml " >= 4.3.0" -"@opam/ocamlfind@", "@opam/ocamlfind@ >= 1.5.0", "@opam/ocamlfind@ >= 1.5.2", "@opam/ocamlfind@ >= 1.5.3", "@opam/ocamlfind@ >= 1.6.1", "@opam/ocamlfind@ >= 1.7.2", "@opam/ocamlfind@ >= 1.7.3--1", "@opam/ocamlfind@*": - version "1.7.3--1" - uid "2e5446e160cfd1aae7944b2f7add39b7" - resolved "@opam/ocamlfind@1.7.3--1-2e5446e160cfd1aae7944b2f7add39b7.tgz" +"@opam/ocamlfind@", "@opam/ocamlfind@ >= 1.5.2", "@opam/ocamlfind@ >= 1.5.3", "@opam/ocamlfind@*": + version "1.8.0" + uid "525500c3041431ef23d0f7d1895c8b9a" + resolved "@opam/ocamlfind@1.8.0-525500c3041431ef23d0f7d1895c8b9a.tgz" dependencies: "@esy-ocaml/esy-installer" "^0.0.0" "@esy-ocaml/substs" "^0.0.1" "@opam/conf-m4" "*" peerDependencies: - ocaml " >= 3.12.0" - -"@opam/ppx_tools_versioned@ >= 5.0.1": - version "5.1.0" - uid "8c474fc8622c3cdf7683533fae007ea5" - resolved "@opam/ppx_tools_versioned@5.1.0-8c474fc8622c3cdf7683533fae007ea5.tgz" - dependencies: - "@esy-ocaml/esy-installer" "^0.0.0" - "@esy-ocaml/substs" "^0.0.1" - "@opam/ocaml-migrate-parsetree" " >= 0.4.0" - "@opam/ocamlfind" " >= 1.5.0" - peerDependencies: - ocaml " >= 4.2.0" + ocaml " >= 4.0.0" "@opam/re@*": - version "1.7.2" - uid "3d51cbd58d4882081ab0bbad4ed9e83e" - resolved "@opam/re@1.7.2-3d51cbd58d4882081ab0bbad4ed9e83e.tgz" + version "1.7.3" + uid "98b9a57656724b0540d0e404ad8a6024" + resolved "@opam/re@1.7.3-98b9a57656724b0540d0e404ad8a6024.tgz" dependencies: "@esy-ocaml/esy-installer" "^0.0.0" "@esy-ocaml/substs" "^0.0.1" - "@opam/base-bytes" "*" - "@opam/jbuilder" "*" + "@opam/jbuilder" " >= 1.0.0-beta10" peerDependencies: ocaml " >= 4.2.3000" -"@opam/react@ >= 1.0.0", "@opam/react@*": - version "1.2.1" - uid "719921829ec3b46cecefeeaefcb6cb61" - resolved "@opam/react@1.2.1-719921829ec3b46cecefeeaefcb6cb61.tgz" - dependencies: - "@esy-ocaml/esy-installer" "^0.0.0" - "@esy-ocaml/substs" "^0.0.1" - "@opam/ocamlbuild" "*" - "@opam/ocamlfind" "*" - "@opam/topkg" " >= 0.9.0" - peerDependencies: - ocaml " >= 4.1.0" - -"@opam/reason@^3.0.0": - version "3.0.4" - resolved "@opam/reason@3.0.4-679737717dd62f1873ec5f0bb1e3c293.tgz" - dependencies: - "@esy-ocaml/esy-installer" "^0.0.0" - "@esy-ocaml/substs" "^0.0.1" - "@opam/jbuilder" "*" - "@opam/menhir" " >= 20170418.0.0 <= 20171013.0.0" - "@opam/merlin-extend" " >= 0.3.0" - "@opam/ocaml-migrate-parsetree" "*" - "@opam/ocamlbuild" "*" - "@opam/ocamlfind" "" - "@opam/result" "=1.2.0" - "@opam/utop" " >= 1.17.0" - peerDependencies: - ocaml " >= 4.2.0 < 4.7.0" - -"@opam/result@*", "@opam/result@1.2.0", "@opam/result@=1.2.0": +"@opam/result@*", "@opam/result@1.2.0": version "1.2.0" uid "5c62071e67f4a84e28ceeaac2969d1ae" resolved "@opam/result@1.2.0-5c62071e67f4a84e28ceeaac2969d1ae.tgz" @@ -349,39 +202,6 @@ peerDependencies: ocaml "*" -"@opam/topkg@ >= 0.9.0": - version "0.9.1" - uid "516192416bf683eb7edf2dbd649d014d" - resolved "@opam/topkg@0.9.1-516192416bf683eb7edf2dbd649d014d.tgz" - dependencies: - "@esy-ocaml/esy-installer" "^0.0.0" - "@esy-ocaml/substs" "^0.0.1" - "@opam/ocamlbuild" "*" - "@opam/ocamlfind" " >= 1.6.1" - "@opam/result" "*" - peerDependencies: - ocaml " >= 4.1.0" - -"@opam/utop@ >= 1.17.0": - version "2.1.0" - uid "52ddf36354cf7530843a68ffd29ed6ac" - resolved "@opam/utop@2.1.0-52ddf36354cf7530843a68ffd29ed6ac.tgz" - dependencies: - "@esy-ocaml/esy-installer" "^0.0.0" - "@esy-ocaml/substs" "^0.0.1" - "@opam/base-threads" "*" - "@opam/base-unix" "*" - "@opam/camomile" "*" - "@opam/cppo" " >= 1.1.2" - "@opam/jbuilder" " >= 1.0.0-beta9" - "@opam/lambda-term" " >= 1.2.0" - "@opam/lwt" "*" - "@opam/lwt_react" "*" - "@opam/ocamlfind" " >= 1.7.2" - "@opam/react" " >= 1.0.0" - peerDependencies: - ocaml " >= 4.2.3000" - "@opam/yojson@*", "@opam/yojson@^1.4.1": version "1.4.1" uid "1d23ddc5148ccb2ca2e11f0a854d35dd" @@ -396,27 +216,13 @@ peerDependencies: ocaml " >= 4.2.3000" -"@opam/zed@ >= 1.2.0": - version "1.6.0" - uid "9a4c3157c2db719927f9648234487c6d" - resolved "@opam/zed@1.6.0-9a4c3157c2db719927f9648234487c6d.tgz" - dependencies: - "@esy-ocaml/esy-installer" "^0.0.0" - "@esy-ocaml/substs" "^0.0.1" - "@opam/base-bytes" "*" - "@opam/camomile" " >= 0.8.0" - "@opam/jbuilder" " >= 1.0.0-beta9" - "@opam/react" "*" - peerDependencies: - ocaml " >= 4.2.3000" - ocaml@~4.6.1: version "4.6.1" resolved "https://registry.yarnpkg.com/ocaml/-/ocaml-4.6.1.tgz#8babea2c41a9f734313b4fc1841ec0963c9d7a07" refmterr@^3.0.4: - version "3.0.7" - resolved "https://registry.yarnpkg.com/refmterr/-/refmterr-3.0.7.tgz#5573f34fb86fb0ead532553b871c5a7c7c5db7e3" + version "3.1.7" + resolved "https://registry.yarnpkg.com/refmterr/-/refmterr-3.1.7.tgz#fdd6a58e212b18c6a0685ff21f27a7df6621b3e8" dependencies: "@esy-ocaml/reason" "^3.0.0" "@opam/jbuilder" "*" diff --git a/lib/jbuild b/lib/jbuild index 52e3018..eb7c323 100644 --- a/lib/jbuild +++ b/lib/jbuild @@ -4,4 +4,4 @@ ((name lib) (flags (-w -40 -w +26)) (public_name bs-react-intl-extractor) - (libraries (ocaml-migrate-parsetree yojson unix)))) + (libraries (reason yojson unix)))) diff --git a/package.json b/package.json index 176e996..b3b791d 100644 --- a/package.json +++ b/package.json @@ -14,9 +14,8 @@ }, "dependencies": { "@esy-ocaml/esy-installer": "^0.0.0", + "@esy-ocaml/reason": "^3.2.0", "@opam/jbuilder": "^1.0.0-beta14", - "@opam/ocaml-migrate-parsetree": "^1.0.10", - "@opam/reason": "^3.0.0", "@opam/yojson": "^1.4.1", "refmterr": "^3.0.4" },