Skip to content

Commit 01996e1

Browse files
committed
feat: add self_upgrade feature
1 parent 748c9d7 commit 01996e1

File tree

6 files changed

+33
-17
lines changed

6 files changed

+33
-17
lines changed

.github/workflows/release.yml

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -51,25 +51,30 @@ jobs:
5151
include:
5252
- target: x86_64-unknown-linux-gnu
5353
os: ubuntu-latest
54+
- target: aarch64-unknown-linux-gnu
55+
os: ubuntu-latest
56+
- target: x86_64-unknown-linux-musl
57+
os: ubuntu-latest
58+
- target: aarch64-unknown-linux-musl
59+
os: ubuntu-latest
60+
- target: i686-unknown-freebsd
61+
os: ubuntu-latest
62+
- target: x86_64-unknown-freebsd
63+
os: ubuntu-latest
64+
- target: x86_64-unknown-illumos
65+
os: ubuntu-latest
66+
5467
- target: x86_64-pc-windows-msvc
5568
os: windows-latest
5669
- target: i686-pc-windows-msvc
5770
os: windows-latest
71+
5872
- target: aarch64-apple-darwin
5973
os: macos-latest
6074
- target: x86_64-apple-darwin
6175
os: macos-latest
6276
# - target: universal-apple-darwin
6377
# os: macos-latest
64-
65-
- target: aarch64-unknown-linux-gnu
66-
os: ubuntu-latest
67-
- target: x86_64-unknown-linux-musl
68-
os: ubuntu-latest
69-
- target: x86_64-unknown-freebsd
70-
os: ubuntu-latest
71-
- target: x86_64-unknown-illumos
72-
os: ubuntu-latest
7378
runs-on: ${{ matrix.os }}
7479
steps:
7580
- uses: actions/checkout@v3
@@ -79,7 +84,7 @@ jobs:
7984
uses: taiki-e/setup-cross-toolchain-action@v1
8085
with:
8186
target: ${{ matrix.target }}
82-
if: startsWith(matrix.os, 'ubuntu') && !contains(fromJSON('["x86_64-unknown-illumos", "x86_64-unknown-linux-musl"]'), matrix.target)
87+
if: startsWith(matrix.os, 'ubuntu') && !contains(matrix.target, '-musl') && !contains(fromJSON('["x86_64-unknown-illumos"]'), matrix.target)
8388
- name: Get tag
8489
id: tag
8590
uses: dawidd6/[email protected]

Cargo.toml

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,10 @@ repository = "https://github.com/Binbiubiubiu/git-semver-tags"
1414

1515
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
1616

17+
[features]
18+
default = ["self_upgrade"]
19+
self_upgrade = ["dep:self_update"]
20+
1721
[dependencies]
1822
clap = { version = "4.0.29", features = ["derive", "cargo"] }
1923
lazy_static = "1.4.0"
@@ -24,7 +28,7 @@ self_update = { version = "0.34.0", features = [
2428
"compression-flate2",
2529
"compression-zip-deflate",
2630
"rustls",
27-
], default-features = false }
31+
], default-features = false, optional = true }
2832
semver = "1.0.14"
2933

3034
[dev-dependencies]
@@ -47,4 +51,3 @@ pkg-fmt = "tgz"
4751

4852
# [package.metadata.binstall.overrides.aarch64-apple-darwin]
4953
# pkg-url = "{ repo }/releases/download/v{ version }/{ name }-{ version }-universal-apple-darwin.tar.gz"
50-

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ $ cargo binstall git-semver-tags
6464
Usage: git-semver-tags [OPTIONS] [COMMAND]
6565

6666
Commands:
67-
upgrade upgrade version
67+
upgrade upgrade self version
6868
help Print this message or the help of the given subcommand(s)
6969

7070
Options:

src/cli.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,9 @@ pub struct Args {
3232
/// subcommand
3333
#[derive(Subcommand, Debug)]
3434
pub enum Commands {
35-
/// upgrade version
35+
/// upgrade self version
36+
#[cfg(feature = "self_upgrade")]
37+
#[cfg_attr(docsrs, doc(cfg(feature = "self_upgrade")))]
3638
Upgrade,
3739
}
3840

src/lib.rs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
use lazy_static::lazy_static;
77
use regex::Regex;
8+
#[cfg(feature = "self_upgrade")]
89
use self_update::cargo_crate_version;
910
use std::{io::Write, process::Command};
1011

@@ -34,9 +35,11 @@ fn semver_valid(version: &str) -> bool {
3435
}
3536

3637
/// upgrade self version
38+
#[cfg(feature = "self_upgrade")]
39+
#[cfg_attr(docsrs, doc(cfg(feature = "self_upgrade")))]
3740
pub fn self_upgrade(is_test: bool) -> Result<(), Box<dyn std::error::Error>> {
38-
let binding = clap::crate_authors!().split("<").collect::<Vec<_>>();
39-
let authors = *binding.get(0).expect("get author name");
41+
let binding = clap::crate_authors!().split('<').collect::<Vec<_>>();
42+
let authors = binding.first().expect("get author name");
4043
let status = self_update::backends::github::Update::configure()
4144
.repo_owner(authors)
4245
.repo_name(clap::crate_name!())

src/main.rs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
11
use clap::Parser;
2-
use git_semver_tags::{captures, self_upgrade, Args, Commands};
2+
use git_semver_tags::{captures, Args};
3+
#[cfg(feature = "self_upgrade")]
4+
use git_semver_tags::{self_upgrade, Commands};
35

46
fn main() {
57
let args = Args::parse();
68
match &args.command {
9+
#[cfg(feature = "self_upgrade")]
710
Some(Commands::Upgrade) => self_upgrade(false).expect("upgrade success"),
811
_ => {
912
for tag in captures(&args).iter() {

0 commit comments

Comments
 (0)