enso/app/gui/Cargo.toml
Kaz Wesley 0e904b2256
Profiling batch mode (#3428)
Implement a command that launches the application, runs a series of steps (a "workflow"), writes a profile to a file, and exits.

See: [#181775808](https://www.pivotaltracker.com/story/show/181775808)

# Important Notes
- The command to capture run and profile is used like: `./run profile --workflow=new_project --save-profile=out.json`. Defining some more workflows (collapse nodes, create node and edit value) comes next; they are implemented with the same infrastructure as the integration-tests.
- The `--save-profile` option can also be used when profiling interactively; when the option is provided, capturing a profile with the hotkey will write a file instead of dumping the data to the devtools console.
- If the IDE panics, the error message is now printed to the console that invoked the process, as well as the devtools console. (If a batch workflow fails, this allows us to see why.)
- New functionality (writing profile files, quitting on command, logging to console) relies on Electron APIs. These APIs are implemented in `index.js`, bridged to the render process in `preload.js`, and wrapped for use in Rust in a `debug_api` crate.
2022-05-10 19:34:40 +00:00

82 lines
2.8 KiB
TOML

[package]
name = "enso-gui"
version = "0.1.0"
authors = ["Enso Team <contact@enso.org>"]
edition = "2021"
[lib]
crate-type = ["cdylib", "rlib"]
[dependencies]
analytics = { version = "0.1.0", path = "analytics" }
double-representation = { version = "0.1.0", path = "controller/double-representation" }
enso-config = { path = "config" }
enso-callback = { path = "../../lib/rust/callback" }
enso-data-structures = { path = "../../lib/rust/data-structures" }
enso-debug-api = { path = "../../lib/rust/debug-api" }
enso-debug-scene = { path = "view/debug_scene" }
enso-frp = { path = "../../lib/rust/frp" }
enso-logger = { path = "../../lib/rust/logger"}
enso-prelude = { path = "../../lib/rust/prelude"}
enso-profiler = { path = "../../lib/rust/profiler" }
enso-shapely = { path = "../../lib/rust/shapely"}
enso-text = { path = "../../lib/rust/text" }
enso-web = { path = "../../lib/rust/web" }
ensogl = { path = "../../lib/rust/ensogl" }
ensogl-examples = { path = "../../lib/rust/ensogl/example" }
ensogl-component = { path = "../../lib/rust/ensogl/component" }
ensogl-text-msdf-sys = { path = "../../lib/rust/ensogl/component/text/msdf-sys" }
ensogl-hardcoded-theme = { path = "../../lib/rust/ensogl/app/theme/hardcoded" }
ensogl-drop-manager = { path = "../../lib/rust/ensogl/component/drop-manager" }
fuzzly = { path = "../../lib/rust/fuzzly" }
ast = { path = "language/ast/impl" }
ide-view = { path = "view" }
engine-protocol = { path = "controller/engine-protocol" }
json-rpc = { path = "../../lib/rust/json-rpc" }
parser = { path = "language/parser" }
span-tree = { path = "language/span-tree" }
bimap = { version = "0.4.0" }
console_error_panic_hook = { version = "0.1.6" }
failure = { version = "0.1.6" }
flo_stream = { version = "0.4.0" }
futures = { version = "0.3.1" }
itertools = { version = "0.10.0" }
js-sys = { version = "0.3.28" }
mockall = { version = "0.7.1", features = ["nightly"] }
nalgebra = { version = "0.26.1", features = ["serde-serialize"] }
semver = { version = "1.0.0", features = ["serde"] }
serde = { version = "1.0", features = ["derive"] }
serde_json = { version = "1.0" }
sha3 = { version = "0.8.2" }
uuid = { version = "0.8", features = ["serde", "v4", "wasm-bindgen"] }
# wasm-bindgen version 0.2.79 is causing issues with clippy.
# See for more information. https://github.com/rustwasm/wasm-bindgen/issues/2774
# Should be removed once 0.2.80 is available.
wasm-bindgen = { version = "=0.2.78" }
wasm-bindgen-futures = "0.4"
[target.'cfg(not(target_arch = "wasm32"))'.dependencies]
websocket = "0.23.0"
[dev-dependencies]
regex = { version = "1.3.6" }
wasm-bindgen-test = { version = "0.3.8" }
[dependencies.web-sys]
version = "0.3.22"
features = [
'BinaryType',
'Blob',
'console',
'CloseEvent',
'Document',
'Element',
'ErrorEvent',
'EventTarget',
'MessageEvent',
'HtmlElement',
'Node',
'WebSocket',
'Window',
]