Sets up Kotoba in a Phoenix application.
$ mix kotoba.install
$ mix kotoba.install --dry-run
The task edits three files:
assets/js/app.js- addsimport { Kotoba } from "kotoba"and putsKotobain thehooksof theLiveSocket. When it cannot find thenew LiveSocket(...)call, or its hooks are not an object or a variable, it changes nothing and prints the lines to add.assets/css/app.css- adds@import "../../deps/kotoba/priv/static/kotoba.css";, and the Sumi theme import as a comment. The imports follow the deps directory of the project (Mix.Project.deps_path/0) when it is notdeps/, as in an umbrella child or withMIX_DEPS_PATH. For a path dependency ({:kotoba, path: "../kotoba"}), which Mix does not copy intodeps/, the imports point at the dependency's directory instead.config/config.exs- addsconfig :kotoba, storage: Kotoba.Storage.Local, with a comment that shows the directory config forconfig/runtime.exs.
Then it prints the Kotoba.Storage.Local directory config for the
:prod block of config/runtime.exs and for config/dev.exs (the adapter needs a :root
before the first upload), the esbuild note (the app's esbuild must resolve kotoba
through NODE_PATH: from deps/, or, for a path dependency, from the
directory that holds it) and the router line for
Kotoba.Storage.Local.Plug.
The task is idempotent: it does not add what a file already has, and when there is nothing to add it says so.
Options
--dry-run- prints the changes as a diff and writes nothing.