fix linux, macos and windows release builds

This commit is contained in:
Clément DOUIN 2024-01-01 00:27:45 +01:00
parent 131acd6230
commit be877f0b3e
No known key found for this signature in database
GPG key ID: 353E4A18EE0FAB72
5 changed files with 65 additions and 38 deletions

View file

@ -42,9 +42,9 @@ jobs:
- name: Checkout code - name: Checkout code
uses: actions/checkout@v2 uses: actions/checkout@v2
- name: Install Nix - name: Install Nix
uses: cachix/install-nix-action@v22 uses: cachix/install-nix-action@v24
with: with:
nix_path: nixpkgs=channel:nixos-22.11 nix_path: nixpkgs=channel:nixos-23.05
extra_nix_config: | extra_nix_config: |
experimental-features = nix-command flakes experimental-features = nix-command flakes
- uses: cachix/cachix-action@v12 - uses: cachix/cachix-action@v12
@ -52,15 +52,17 @@ jobs:
name: soywod name: soywod
authToken: '${{ secrets.CACHIX_AUTH_TOKEN }}' authToken: '${{ secrets.CACHIX_AUTH_TOKEN }}'
- name: Build release - name: Build release
run: nix build .#${{ matrix.target }} run: nix build -L .#${{ matrix.target }}
- name: Fix interpreter path on Linux - name: Copy executable and prepare folders
if: ${{ matrix.target == 'linux' }}
run: |
nix-shell -p patchelf --command "patchelf --set-interpreter /lib64/ld-linux-x86-64.so.2 target/release/himalaya"
- name: Compress executable
run: | run: |
mkdir -p {man,completions} mkdir -p {man,completions}
cp result/bin/himalaya* . cp result/bin/himalaya* .
- name: Patch interpreter
if: ${{ matrix.target == 'linux' }}
run: |
nix-shell -p patchelf --command "sudo patchelf --set-interpreter /lib64/ld-linux-x86-64.so.2 himalaya"
- name: Build release archive
run: |
nix run .#${{ matrix.target }} man ./man nix run .#${{ matrix.target }} man ./man
nix run .#${{ matrix.target }} completion bash > ./completions/himalaya.bash nix run .#${{ matrix.target }} completion bash > ./completions/himalaya.bash
nix run .#${{ matrix.target }} completion elvish > ./completions/himalaya.elvish nix run .#${{ matrix.target }} completion elvish > ./completions/himalaya.elvish
@ -143,12 +145,13 @@ jobs:
- name: Checkout code - name: Checkout code
uses: actions/checkout@v2 uses: actions/checkout@v2
- name: Install Nix - name: Install Nix
uses: cachix/install-nix-action@v22 uses: cachix/install-nix-action@v24
with: with:
nix_path: nixpkgs=channel:nixos-22.11 nix_path: nixpkgs=channel:nixos-23.05
extra_nix_config: | extra_nix_config: |
experimental-features = nix-command flakes experimental-features = nix-command flakes
- name: Publish library to crates.io - name: Publish library to crates.io
env: env:
CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }} CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}
run: nix develop -c cargo publish --no-verify --token ${CARGO_REGISTRY_TOKEN} run: |
nix develop -c cargo publish --no-verify --token ${CARGO_REGISTRY_TOKEN}

17
Cargo.lock generated
View file

@ -1216,9 +1216,9 @@ dependencies = [
[[package]] [[package]]
name = "email-lib" name = "email-lib"
version = "0.19.0" version = "0.19.5"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "aedb0b8ce6dd6120160c07f00df2501d200b790d65b03657a7df34f645ccf8ea" checksum = "9e4c31e26febefc822561fe388677cec106bbf0a7fe16608e7638daa3d1da9d9"
dependencies = [ dependencies = [
"advisory-lock", "advisory-lock",
"anyhow", "anyhow",
@ -2203,14 +2203,13 @@ dependencies = [
[[package]] [[package]]
name = "keyring-lib" name = "keyring-lib"
version = "0.3.0" version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2d5fa6d6a6a7d27d09c3e5e6c0371d97dd4cc3b0208eaba9f26dae728f1ae072" checksum = "3278575ee927d4155314ccd89982bc37face05d9db076f5e40342cba4dd6e4ab"
dependencies = [ dependencies = [
"keyring", "keyring",
"log", "log",
"once_cell", "once_cell",
"secret-service",
"serde", "serde",
"thiserror", "thiserror",
"tokio", "tokio",
@ -2516,9 +2515,9 @@ dependencies = [
[[package]] [[package]]
name = "mml-lib" name = "mml-lib"
version = "1.0.4" version = "1.0.6"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6f33cd06aa9255baedbc7df36ae12b22e544c38426d879109a1597267d4b7c08" checksum = "3767365c25258656f689a63f645fff963c94716caba0dc079bf19c2119ea1df7"
dependencies = [ dependencies = [
"async-recursion", "async-recursion",
"chumsky", "chumsky",
@ -3709,9 +3708,9 @@ dependencies = [
[[package]] [[package]]
name = "secret-lib" name = "secret-lib"
version = "0.3.0" version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b06c6eda723fc17a853234defb5784ec2b3377d9bce8a6577c89788f1b6dc117" checksum = "545285fca1cf00676621557d25814d589264d5635e8a767c603b3ff89364370e"
dependencies = [ dependencies = [
"keyring-lib", "keyring-lib",
"process-lib", "process-lib",

View file

@ -50,20 +50,20 @@ clap_mangen = "0.2"
console = "0.15.2" console = "0.15.2"
dialoguer = "0.10.2" dialoguer = "0.10.2"
dirs = "4.0" dirs = "4.0"
email-lib = { version = "=0.19.0", default-features = false } email-lib = { version = "=0.19.5", default-features = false }
email_address = "0.2.4" email_address = "0.2.4"
env_logger = "0.8" env_logger = "0.8"
erased-serde = "0.3" erased-serde = "0.3"
indicatif = "0.17" indicatif = "0.17"
keyring-lib = "=0.3.0" keyring-lib = "=0.3.2"
log = "0.4" log = "0.4"
mail-builder = "0.3" mail-builder = "0.3"
md5 = "0.7.0" md5 = "0.7.0"
mml-lib = { version = "=1.0.4", default-features = false } mml-lib = { version = "=1.0.6", default-features = false }
oauth-lib = "=0.1.0" oauth-lib = "=0.1.0"
once_cell = "1.16" once_cell = "1.16"
process-lib = "=0.3.0" process-lib = "=0.3.0"
secret-lib = "=0.3.0" secret-lib = "=0.3.2"
serde = { version = "1.0", features = ["derive"] } serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0" serde_json = "1.0"
shellexpand-utils = "=0.2.0" shellexpand-utils = "=0.2.0"

View file

@ -31,9 +31,9 @@ pub struct Cli {
/// applicable). If the path does not point to a valid file, the /// applicable). If the path does not point to a valid file, the
/// wizard will propose to assist you in the creation of the /// wizard will propose to assist you in the creation of the
/// configuration file. /// configuration file.
#[arg(long, short, global = true)] #[arg(short, long = "config", global = true)]
#[arg(value_name = "PATH", value_parser = config::path_parser)] #[arg(value_name = "PATH", value_parser = config::path_parser)]
pub config: Option<PathBuf>, pub config_path: Option<PathBuf>,
/// Customize the output format /// Customize the output format
/// ///
@ -116,15 +116,40 @@ pub enum HimalayaCommand {
} }
impl HimalayaCommand { impl HimalayaCommand {
pub async fn execute(self, printer: &mut impl Printer, config: &TomlConfig) -> Result<()> { pub async fn execute(
self,
printer: &mut impl Printer,
config_path: Option<&PathBuf>,
) -> Result<()> {
match self { match self {
Self::Account(cmd) => cmd.execute(printer, config).await, Self::Account(cmd) => {
Self::Folder(cmd) => cmd.execute(printer, config).await, let config = TomlConfig::from_some_path_or_default(config_path).await?;
Self::Envelope(cmd) => cmd.execute(printer, config).await, cmd.execute(printer, &config).await
Self::Flag(cmd) => cmd.execute(printer, config).await, }
Self::Message(cmd) => cmd.execute(printer, config).await, Self::Folder(cmd) => {
Self::Attachment(cmd) => cmd.execute(printer, config).await, let config = TomlConfig::from_some_path_or_default(config_path).await?;
Self::Template(cmd) => cmd.execute(printer, config).await, cmd.execute(printer, &config).await
}
Self::Envelope(cmd) => {
let config = TomlConfig::from_some_path_or_default(config_path).await?;
cmd.execute(printer, &config).await
}
Self::Flag(cmd) => {
let config = TomlConfig::from_some_path_or_default(config_path).await?;
cmd.execute(printer, &config).await
}
Self::Message(cmd) => {
let config = TomlConfig::from_some_path_or_default(config_path).await?;
cmd.execute(printer, &config).await
}
Self::Attachment(cmd) => {
let config = TomlConfig::from_some_path_or_default(config_path).await?;
cmd.execute(printer, &config).await
}
Self::Template(cmd) => {
let config = TomlConfig::from_some_path_or_default(config_path).await?;
cmd.execute(printer, &config).await
}
Self::Manual(cmd) => cmd.execute(printer).await, Self::Manual(cmd) => cmd.execute(printer).await,
Self::Completion(cmd) => cmd.execute(printer).await, Self::Completion(cmd) => cmd.execute(printer).await,
} }

View file

@ -33,9 +33,9 @@ async fn main() -> Result<()> {
} }
let cli = Cli::parse(); let cli = Cli::parse();
let mut printer = StdoutPrinter::new(cli.output, cli.color); let mut printer = StdoutPrinter::new(cli.output, cli.color);
let config = TomlConfig::from_some_path_or_default(cli.config.as_ref()).await?;
cli.command.execute(&mut printer, &config).await cli.command
.execute(&mut printer, cli.config_path.as_ref())
.await
} }