Skip to content

Commit

Permalink
[fix] compiler: Update JavaScriptServer generation using JsPackage
Browse files Browse the repository at this point in the history
  • Loading branch information
BourgerieQuentin committed Oct 17, 2012
1 parent cbcea46 commit 61fe5c1
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 33 deletions.
2 changes: 1 addition & 1 deletion compiler/opa/pass_ServerJavascriptOptimization.ml
Expand Up @@ -111,7 +111,7 @@ let process_code extrajs env_bsl is_exported code =
let opp_requires =
List.filter_map
(fun plugin ->
if List.is_empty plugin.BslPluginInterface.nodejs_code then None
if JsPackage.is_empty plugin.BslPluginInterface.nodejs_pack then None
else plugin.BslPluginInterface.basename
) env_bsl.BslLib.direct_external_plugins
in
Expand Down
53 changes: 21 additions & 32 deletions compiler/qml2js/qml2js.ml
Expand Up @@ -88,7 +88,7 @@ let plugin_main_file plugin =

type loaded_bsl = {
regular : loaded_file list;
bundled : string option;
bundled : JsPackage.t option;
generated_ast: JA.code
}

Expand Down Expand Up @@ -119,7 +119,7 @@ struct

(* Write shell script incantation to check dependencies,
set load path, etc *)
let launcher_header env_bsl fmt () =
let launcher_header env_bsl =
let node_path =
ObjectFiles.fold_dir ~packages:true ~deep:true
(fun node_path filename ->
Expand All @@ -135,7 +135,7 @@ struct
| Some path -> StringSet.add (Filename.dirname path) node_path
) node_path env_bsl.BslLib.all_plugins
in
Format.fprintf fmt
Format.sprintf
"#!/usr/bin/env sh
/*usr/bin/env true
export NODE_PATH=\"%a\"
Expand All @@ -155,13 +155,11 @@ var opa_dependencies = ['opa-js-runtime-cps'];
| "" -> []
| package -> [
"README.md",
(fun fmt () ->
Format.fprintf fmt "\
(Format.sprintf "\
# %s.opx
This is a module generated by Opa compiler (%s)
" package BuildInfos.opa_version_name
)
" package BuildInfos.opa_version_name)
]

(* JS statement to require library [lib] *)
Expand Down Expand Up @@ -218,11 +216,11 @@ This is a module generated by Opa compiler (%s)
let loaded_files =
let plugins = env_bsl.BslLib.all_external_plugins in
let fold acc loader =
if not (List.is_empty loader.BslPluginInterface.nodejs_code) then
if not (JsPackage.is_empty loader.BslPluginInterface.nodejs_pack) then
match plugin_main_file loader with
| Some filename ->
let content = File.content filename in
(Plugin filename, content) :: acc
let content = File.content filename in
(Plugin filename, content) :: acc
| None -> acc
else
acc
Expand All @@ -246,20 +244,11 @@ This is a module generated by Opa compiler (%s)

(* Correct reverse order produced by fold *)
let loaded_files = List.rev loaded_files in

let bundled, ast = match env_bsl.BslLib.bundled_plugin with
| Some plugin ->
let content = String.concat_map "" (fun (filename, content, _) ->
Printf.sprintf "// From file %s\n%s\n" filename content
) plugin.BPI.nodejs_code in
let code =
try
JsParse.String.code ~throw_exn:true content
with JsParse.Exception error -> (
OManager.error "JavaScript parser error on bundled plugin\n%a\n"
JsParse.pp error;
) in
Some content, code @ ast
let pack = plugin.BPI.nodejs_pack in
let code = JsPackage.get_code pack in
Some pack, code @ ast
| None -> None, ast in
{ regular = loaded_files; bundled; generated_ast = ast; }

Expand All @@ -280,28 +269,28 @@ This is a module generated by Opa compiler (%s)
match package with
| None ->
let package =
JsPackage.default ~name:(ObjectFiles.get_current_package_name ()) in
JsPackage.default
~name:(Printf.sprintf "%s.opx" (ObjectFiles.get_current_package_name ())) in
JsPackage.set_build_dir package env_opt.compilation_directory
| Some package -> package
in
let package = JsPackage.add_header package
(fun fmt () ->
Format.pp_print_string fmt (Option.default "" bundled_plugin)
)
let package = match bundled_plugin with
| None -> package
| Some p -> JsPackage.merge p package
in
let package = List.fold_left JsPackage.add_file package (extrafiles ()) in
let package =
Format.eprintf "depends:%a \n" (Format.pp_list ", " Format.pp_print_string) depends;
let depends = List.map (fun d -> d, BuildInfos.opa_version_name) depends in
JsPackage.add_dependencies package depends
in
JsPackage.write package js_code
let package = JsPackage.add_code package js_code in
JsPackage.write package

let linking_generation ?depends env_opt env_bsl loaded_bsl env_js_input =
let package = JsPackage.default ~name:"link" in
let package = JsPackage.set_build_dir package (Filename.dirname env_opt.target) in
let package = JsPackage.set_main package (Filename.basename env_opt.target) in
let package = JsPackage.add_header package (launcher_header env_bsl) in
let package = JsPackage.add_verbatim package (launcher_header env_bsl) in
let package = JsPackage.set_perm package 0o755 in
compilation_generation ?depends ~package env_opt loaded_bsl.bundled env_js_input

Expand Down Expand Up @@ -341,8 +330,8 @@ This is a module generated by Opa compiler (%s)
);
(* Opa plugins *)
List.iter
(fun {BPI. has_server_code; path; basename; nodejs_code; _} ->
if not has_server_code || nodejs_code = [] then ()
(fun {BPI. has_server_code; path; basename; _} ->
if not has_server_code then ()
else match path, basename with
| Some path, Some name ->
let copy file =
Expand Down

0 comments on commit 61fe5c1

Please sign in to comment.