* fix false notification/rebuild for dx hot-reload
* Make sure we have permissions and the changed file exists before reading the metadata
---------
Co-authored-by: ealmloff <evanalmloff@gmail.com>
* Related to #1547: use `dioxus-cli` within a workspace
Although the `dx` CLI allows to specify a package name to chose from workspace members,
it does not support workspace members specified as glob-wildcards.
Neither it respects the effective package name, specified in the crate's `Cargo.toml`.
This PR addresses that issue:
- upon `dx build ...`, if the `--bin` CLI-argument is provided, treat the current dir as a workspace;
- search through the workspace's `members`: resolve each of them with `glob`;
- assume that any workspace member has a `Cargo.toml` in it (cargo does it, so it's okay);
- read said manifest, and check the package name in it;
- if found — there we have our sought package.
* Use cargo-metadata to find out the workspace structure
* glob is unused
* cli: Log connection errors during `dx serve` in desktop apps
* add a note about the dioxus CLI
---------
Co-authored-by: Evan Almloff <evanalmloff@gmail.com>
* Improve CLI docs
* Fixed all the typos (hopefully).
* Improved the bad English. This encompasses grammar, vocabulary, generally awkward phrases, etc. The result is easier to read and understand, and in some cases shorter.
* Made some formatting improvements. This includes making formatting more consistent, but I changed some of it to be better, at least in my opinion.
* Removed certain unnecessities, the biggest one being the commands documentation. I think this is unnecessary because of the `dx --help` command. It also needs to be updated every time a command gets added/updated/removed. It doesn't really provide much extra insight than `dx --help`.
* Improved plugin documentation. I added a warning to ignore all of it, which is ironic, but the fact is that plugins are probably going to change. But by the time I learned that, I already made some changes to the plugin docs. This includes a better guide on how to get started (although still bad since the plugin system is too messy), and some general changes like the aforementioned English or formatting.
* And more. I can't list it all, but I didn't use any destructive changes. The content might be reformatted (to be shorter or easier to understand), but the meaning isn't lost.
* Fix grammar in packages/cli/docs/src/creating.md
Co-authored-by: Evan Simkowitz <esimkowitz@users.noreply.github.com>
* Update README.md
* Change config example
---------
Co-authored-by: Evan Simkowitz <esimkowitz@users.noreply.github.com>
Some zip files do not list directories separately from files. For example, a zip might contain `dir/file.txt` without a corresponding entry for just `dir/`. This should be okay, so we just create the leading paths for the files we extract as necessary.
Also adds tests for the expected and dangerous path cases of `extract_zip`.
I believe that technically this function is part of the public API via `dioxus_cli::cli::cfg::parse_public_url`. However, I don't see any evidence that this function is actually used inside or outside this crate. The last use within the crate was removed in January 2022 (9bb10c65a3).
* fix(serve): provide a clear error with pathless proxy URLs
Without this, `dx serve` panics with this message:
```
Paths must start with a `/`. Use "/" for
root routes
```
That's not very clear. Instead, we can detect this situation and provide a better error message:
```
Error: 🚫 Serving project failed: Failed to establish proxy: Proxy backend URL must have a non-empty path, e.g. http://localhost:8080/api instead of http://localhost:8080
```
* docs(config): correct format for `web.proxy`