Commit graph

321 commits

Author SHA1 Message Date
Félix Saparelli
5ef8abda3a Actually implement --dry-run 2022-02-16 17:16:29 +13:00
Félix Saparelli
6dcb1dd1b4
Split {format} and allow use of {binary-ext} in pkg-url (#95)
This from feedback in #19:

> wrt. bin-dir and bin-path, this appears to be a typo / should all be called bin-dir

This is only a readme fix afaict, I changed all occurences of `bin-path` in there to `bin-dir`.

> wrt. format, those are actually two (unfortunately named) different concepts, the first
refers to the archive format (eg. .tgz), the second to the binary format (which needs a .exe
appended for windows).

This introduces two new substitutions:
- `binary-ext` is the old "`format` in `bin-dir`"
- `archive-format` is the old "`format` in `pkg-url`"

Contents are unchanged: `binary-ext` includes the dot, `archive-format` doesn't. That
makes it easy to upgrade and also personally I slightly prefer it that way.

The old contextual `format` is still available, "soft deprecated": it will be accepted silently
so everything will work, but all documentation will use the new syntax. In the future we
could move to a "hard deprecated" model where installing a package that uses `format`
will warn the user / tell them to report that to the maintainer. I don't think we'll ever really
be able to remove it but that should be good enough.

A cool new feature is that `binary-ext` is now usable in `pkg-url`, which will be useful for raw binary downloads:

```toml
pkg_url = "{ repo }/releases/download/v{ version }/{ name }-v{ version }-{ target }{ binary-ext }"
```

I've also added a bunch of tests to GhCrateMeta around the templating for `pkg-url`.
2022-02-16 16:18:35 +13:00
Félix Saparelli
370ae05620
QuickInstall support (#94)
See this issue: https://github.com/alsuren/cargo-quickinstall/issues/27

Quick Install is a hosted repo of built crates, essentially. The approach I've taken here is
a list of strategies:

1. First, we check the crate meta or default and build the URL to the repo. Once we have
   that, we perform a `HEAD` request to the URL to see if it's available.
2. If it's not, we build the URL to the quickinstall repo, and perform a `HEAD` to there.

As soon as we've got a hit, we use that. I've built it so it's extensible with more strategies.
This could be useful for #4.

This also adds a prompt before downloading from third-party sources, and logs a short
name for a source, which is easier to glance than a full URL, and includes a quick refactor
of the install/link machinery.
2022-02-16 14:49:07 +13:00
Félix Saparelli
cdb2f8ccdd Fix test 2021-11-17 21:57:09 +13:00
Félix Saparelli
0f9b4de449 Update deps 2021-11-17 21:53:20 +13:00
pinage404
6f05d630f0 fix: binary need to have the right to be executed 2021-10-17 12:35:15 +02:00
pinage404
90edbba221 fix: binary is not in a extracted folder 2021-10-17 12:34:36 +02:00
ryan kurte
7aaba5e1ee improve debug logging on extraction 2021-10-08 12:16:14 +13:00
ryan
76a7fb00c9 add pkg-url and pkg-fmt overrides 2021-04-08 21:26:44 +12:00
ryan
fcc88a673e remove incorrect default doc line 2021-04-08 18:44:19 +12:00
ryan
1c25b1346f added zip support, pkg-fmt override
swapped CI to build zips for windows
2021-04-08 18:39:54 +12:00
Félix Saparelli
9c06ca94cb
Add support for Txz archives 2021-03-06 22:35:05 +13:00
ryan
501022144b fix test 2020-12-31 17:36:53 +13:00
ryan
dfb80803fa revert default pkg url to use format template 2020-12-31 15:33:43 +13:00
ryan
ef6a3d0ef7 fix version matching, now works with semver 2020-12-31 15:32:58 +13:00
ryan
a6c70b41e2 the big refactor 2020-12-31 14:41:52 +13:00
ryan
5fd78341c8 cleaning up binary logic, using standard [[bin]] definitions now 2020-12-31 13:19:58 +13:00
ryan
223c6ef43a playing with version matching
Can't use semver because crates.io hides alpha versions? not sure how this works in cargo
2020-12-30 18:13:38 +13:00
ryan
8777c355c5 swapped to symlink-based installation 2020-12-30 17:34:07 +13:00
ryan
8f7f7f5530 refactoring to library 2020-12-30 15:27:39 +13:00
ryan
d31364f5da Rough first attempt 2020-12-14 20:43:51 +13:00