diff --git a/src/tools/kata-ctl/Cargo.toml b/src/tools/kata-ctl/Cargo.toml index c3ec304ac0..582ae631b7 100644 --- a/src/tools/kata-ctl/Cargo.toml +++ b/src/tools/kata-ctl/Cargo.toml @@ -5,7 +5,7 @@ [package] name = "kata-ctl" -version = "0.0.0" +version = "0.0.1" authors = ["The Kata Containers community "] edition = "2021" diff --git a/src/tools/kata-ctl/Makefile b/src/tools/kata-ctl/Makefile index c050d6d477..899c891a6a 100644 --- a/src/tools/kata-ctl/Makefile +++ b/src/tools/kata-ctl/Makefile @@ -5,14 +5,44 @@ include ../../../utils.mk +PROJECT_NAME = Kata Containers +PROJECT_URL = https://github.com/kata-containers +PROJECT_COMPONENT = kata-ctl + +TARGET = $(PROJECT_COMPONENT) + +VERSION_FILE := ./VERSION +VERSION := $(shell grep -v ^\# $(VERSION_FILE)) +COMMIT_NO := $(shell git rev-parse HEAD 2>/dev/null || true) +COMMIT_NO_SHORT := $(shell git rev-parse --short HEAD 2>/dev/null || true) +COMMIT := $(if $(shell git status --porcelain --untracked-files=no 2>/dev/null || true),${COMMIT_NO}-dirty,${COMMIT_NO}) + +# Exported to allow cargo to see it +export KATA_CTL_VERSION := $(if $(COMMIT),$(VERSION)-$(COMMIT),$(VERSION)) + +GENERATED_CODE = src/version.rs + +GENERATED_REPLACEMENTS= \ + KATA_CTL_VERSION + +GENERATED_FILES := $(GENERATED_CODE) + .DEFAULT_GOAL := default -default: build + +default: $(TARGET) build + +$(TARGET): $(GENERATED_CODE) build: - @RUSTFLAGS="$(EXTRA_RUSTFLAGS) --deny warnings" cargo build --target $(TRIPLE) --$(BUILD_TYPE) + @RUSTFLAGS="$(EXTRA_RUSTFLAGS) --deny warnings" cargo build --target $(TRIPLE) $(if $(findstring release,$(BUILD_TYPE)),--release) $(EXTRA_RUSTFEATURES) + +$(GENERATED_FILES): %: %.in + @sed $(foreach r,$(GENERATED_REPLACEMENTS),-e 's|@$r@|$($r)|g') "$<" > "$@" + clean: - cargo clean + @cargo clean + @rm -f $(GENERATED_FILES) vendor: cargo vendor diff --git a/src/tools/kata-ctl/VERSION b/src/tools/kata-ctl/VERSION new file mode 120000 index 0000000000..d62dc733ef --- /dev/null +++ b/src/tools/kata-ctl/VERSION @@ -0,0 +1 @@ +../../../VERSION \ No newline at end of file diff --git a/src/tools/kata-ctl/src/main.rs b/src/tools/kata-ctl/src/main.rs index 9b3c0bf2e7..7368c667e5 100644 --- a/src/tools/kata-ctl/src/main.rs +++ b/src/tools/kata-ctl/src/main.rs @@ -4,21 +4,25 @@ // use anyhow::{anyhow, Result}; -use clap::{crate_name, crate_version, App, Arg, SubCommand}; +use clap::{crate_name, App, Arg, SubCommand}; use std::process::exit; mod utils; +mod version; const DESCRIPTION_TEXT: &str = r#"DESCRIPTION: kata-ctl description placeholder."#; const ABOUT_TEXT: &str = "Kata Containers control tool"; +const NAME: &str = "kata-ctl"; + fn real_main() -> Result<()> { let name = crate_name!(); + let version = version::get(); let app = App::new(name) - .version(crate_version!()) + .version(&*version) .about(ABOUT_TEXT) .long_about(DESCRIPTION_TEXT) .subcommand( @@ -113,7 +117,7 @@ fn real_main() -> Result<()> { Ok(()) } "version" => { - println!("Not implemented"); + println!("{} version {} (type: rust)", NAME, version); Ok(()) } _ => return Err(anyhow!(format!("invalid sub-command: {:?}", subcmd))), diff --git a/src/tools/kata-ctl/src/version.rs.in b/src/tools/kata-ctl/src/version.rs.in new file mode 100644 index 0000000000..77b79d035f --- /dev/null +++ b/src/tools/kata-ctl/src/version.rs.in @@ -0,0 +1,16 @@ +// Copyright (c) 2020 Intel Corporation +// +// SPDX-License-Identifier: Apache-2.0 +// + +// +// WARNING: This file is auto-generated - DO NOT EDIT! +// + +use clap::crate_version; + +const KATA_CTL_VERSION: &str = "@KATA_CTL_VERSION@"; + +pub fn get() -> String { + format!("{}-{}", KATA_CTL_VERSION, crate_version!()) +}