Fixes two issues with getting the aliases. The
first was that direct dependency aliases weren't
collected. The second is that these aliases would
be handled in a case-insensitive matter which is
incorrect.
This will help prevent user confusion with
targets. Instead of a cryptic "no matching
versions available" error, it'll now list the
available targets (if the source decides to output
them, so if the specifier has a target option)
Previously, binary linkers were handled by a Luau
script. This was not cross-runtime portable, and
forced us to do many "hacks" in order to be able
to implement them. To solve these issues, they are
now handled with Rust, which allows us to use our
existing infrastructure.
Adds quite a lot of Clippy lints which fit with my
personal taste for how pesde's codebase should
look like. Stylistic lints are mostly warns, and
behavioural lints are mostly denied.
Previously, if a package failed to publish the
whole publishing process would halt. Then, if
a re-ran publishing got to an already published
package it'd error, which would require users to
manually publish the missing packages. This commit
fixes that by printing errors, but allowing other
members to still get published.
This commit changes the error construction in
multiple places from the `*_or` to the `*_or_else`
variants. This is done to avoid the heap
allocation (for example, `to_string`) when there
is no need to.
Adds some colour to the outdated command which
fits in with other places such as the CLI's update
checker. Also, switches `->` to `→` which also
fits in with the CLI's update checker.
Previously, the update available message was
printed to stdout, which is not the correct
place for such messages. This commit changes
the message to be printed to stderr instead,
which will prevent potential issues with
piping the output of the command to another
command.
Instead, we use the `default` serde attribute
to deserialize the index as `DEFAULT_INDEX_NAME`
if it is not present. This removes a lot of
redundancy around the codebase about getting
the index name.
Patches now work much better with incremental
installs. They use a Git repository to reset
the patch to the original state before applying
it. They are now also properly cleaned up after
being removed. Also, to allow more flexability
the patching process is now done before type
extracting, so that types can be patched. Lastly,
the patch-commit command now doesn't delete the
patch directory until it has done everything else
to prevent data loss.
Previously, if a package was modified in a way
that the index hasn't been cloned (for example,
through a remote Git change) pesde would be unable
to read the package's metadata, whether it be
because the index was outdated or because it
wasn't cloned at all. These are now refreshed
as needed like everywhere else.
Fixes zbus on Linux panicking due to the crate
spawning a runtime inside of our own runtime. This
is avoided by using the sync mode of the crate
instead of async. Additionally, keyring operations
have been wrapped in spawn_blocking to avoid
blocking the async runtime.
Switches the background color of the publish
command's package announcement to a better
looking color. Will possibly change the design
of the command's UI in the future.
Replaces chrono with jiff (already used due to
gix). Switches from the async-io to the tokio
feature in keyring. Removes dependency on
serde-with. Optimizes release mode executable
size by using aborting panics.
Squashed commit of the following:
commit 82b4b858e5
Author: daimond113 <contact@daimond113.com>
Date: Sat Feb 1 00:46:31 2025 +0100
feat: remove unused directories when purging cas
Now purging the CAS will also clean up unused
folders. Additionally, since concurrent removal
of directories seems to throw a PermissionDenied
error on Windows those are ignored. Needs
investigation on why that happens.
commit 75d6aa5443
Author: daimond113 <contact@daimond113.com>
Date: Fri Jan 31 23:24:11 2025 +0100
feat: finish prune command implementation
The prune command now discovers packages in the
CAS, removes individual unused files and then
packages which use those files, since that means
they're unused.
commit 333eb3bdd9
Author: daimond113 <contact@daimond113.com>
Date: Sun Jan 26 23:30:52 2025 +0100
chore: fix clippy lint
commit a38da43670
Author: daimond113 <contact@daimond113.com>
Date: Sun Jan 26 23:02:52 2025 +0100
feat: add cas pruning command
Removes unused files from the CAS. Still needs to
remove individual package index entries to be
complete.
Switches the `colored` crate to the `console`
crate. Additionally, to optimize the compiled
program's size switches the `inquire` crate's
backend from `crossterm` to `console`. Console was
picked out because we depend on `indicatif` which
only supports `console`.
Also switches from `winreg` to `windows-registry`,
which `reqwest` depends on to optimize size even
further. Currently has to duplicate dependencies,
as `reqwest` depends on an older version but will
become optimized once `reqwest` updates to the
latest version of the crate.
Signed-off-by: daimond113 <contact@daimond113.com>
Instead of recreating the packages folders, we now
update the existing ones. Additionally switches
a few APIs from accepting `&TargetKind` to `TargetKind`.
Squashed commit of the following:
commit 5767042964
Author: daimond113 <72147841+daimond113@users.noreply.github.com>
Date: Thu Jan 16 18:28:52 2025 +0100
fix(engines): correct engine detection on unix
The `current_exe` function doesn't return the
symlinked path on Unix, so the engine detection
was failing there. This commit fixes that by
using the 0th argument of the program to get
the path of the executable on Unix.
commit b51c9d9571
Author: daimond113 <72147841+daimond113@users.noreply.github.com>
Date: Wed Jan 15 22:43:50 2025 +0100
refactor: print deprecated warning on CLI side
Prints the deprecated warning on the CLI side
which means it'll have a more consistent look
with the rest of the CLI output.
commit 5ace844035
Author: daimond113 <72147841+daimond113@users.noreply.github.com>
Date: Wed Jan 15 22:21:36 2025 +0100
feat: add alias validation
Ensures aliases don't contain characters which could
cause issues. They are now also forbidden from being
the same as an engine name to avoid issues.
commit a33302aff9
Author: daimond113 <72147841+daimond113@users.noreply.github.com>
Date: Wed Jan 15 21:23:40 2025 +0100
refactor: apply clippy lints
commit 2d534a534d
Author: daimond113 <72147841+daimond113@users.noreply.github.com>
Date: Wed Jan 15 21:22:14 2025 +0100
feat(engines): print incompatibility warning for dependencies
Adds a warning message when a dependency depends
on an incompatible engine.
commit 4946a19f8b
Author: daimond113 <72147841+daimond113@users.noreply.github.com>
Date: Wed Jan 15 18:33:38 2025 +0100
feat(engines): create linkers at install time
Additionally fixes engines being executed as scripts,
and fixes downloading pesde from GitHub.
commit e3177eeb75
Author: daimond113 <72147841+daimond113@users.noreply.github.com>
Date: Tue Jan 14 14:33:26 2025 +0100
fix(engines): store & link engines correctly
Fixes issues with how engines were stored
which resulted in errors. Also makes outdated
linkers get updated.
commit 037ead66bb
Author: daimond113 <72147841+daimond113@users.noreply.github.com>
Date: Mon Jan 13 12:26:19 2025 +0100
docs: remove prerequisites
commit ddb496ff7d
Author: daimond113 <72147841+daimond113@users.noreply.github.com>
Date: Mon Jan 13 12:25:53 2025 +0100
ci: remove tar builds
commit e9f0c25554
Author: daimond113 <72147841+daimond113@users.noreply.github.com>
Date: Mon Jan 13 12:25:11 2025 +0100
chore(docs): update astro and starlight
commit fc349e6f21
Author: daimond113 <72147841+daimond113@users.noreply.github.com>
Date: Sun Jan 12 23:12:27 2025 +0100
feat: add engines
Adds the initial implementation of the engines feature.
Not tested yet. Requires documentation and
more work for non-pesde engines to be usable.