mirror of
https://github.com/soywod/himalaya.git
synced 2024-11-21 18:40:19 +00:00
fix linux, macos and windows release builds
This commit is contained in:
parent
131acd6230
commit
be877f0b3e
5 changed files with 65 additions and 38 deletions
27
.github/workflows/release.yml
vendored
27
.github/workflows/release.yml
vendored
|
@ -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
|
||||||
|
@ -141,14 +143,15 @@ jobs:
|
||||||
needs: create_release
|
needs: create_release
|
||||||
steps:
|
steps:
|
||||||
- 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
17
Cargo.lock
generated
|
@ -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",
|
||||||
|
|
|
@ -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"
|
||||||
|
|
45
src/cli.rs
45
src/cli.rs
|
@ -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,
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue