embed rust sdk version after compiling (#80)

This commit is contained in:
vms 2021-04-27 16:39:16 +03:00 committed by GitHub
parent a9494fb780
commit 37c0497914
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 23 additions and 8 deletions

4
Cargo.lock generated
View File

@ -1487,9 +1487,9 @@ dependencies = [
[[package]] [[package]]
name = "libc" name = "libc"
version = "0.2.93" version = "0.2.94"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9385f66bf6105b241aa65a61cb923ef20efc665cb9f9bb50ac2f0c4b7f378d41" checksum = "18794a8ad5b29321f790b55d93dfba91e125cb1a9edbd4f8e3150acc771c1a5e"
[[package]] [[package]]
name = "local_storage" name = "local_storage"

View File

@ -41,7 +41,7 @@ impl CustomSection for VersionCustomSection {
/// Embed provided WIT to a Wasm module. /// Embed provided WIT to a Wasm module.
pub fn embed_from_module( pub fn embed_from_module(
mut wasm_module: walrus::Module, mut wasm_module: walrus::Module,
version: semver::Version, version: &semver::Version,
) -> walrus::Module { ) -> walrus::Module {
delete_version_sections(&mut wasm_module); delete_version_sections(&mut wasm_module);
@ -54,7 +54,7 @@ pub fn embed_from_module(
pub fn embed_from_path<I, O>( pub fn embed_from_path<I, O>(
in_wasm_module_path: I, in_wasm_module_path: I,
out_wasm_module_path: O, out_wasm_module_path: O,
version: semver::Version, version: &semver::Version,
) -> ModuleInfoResult<()> ) -> ModuleInfoResult<()>
where where
I: AsRef<Path>, I: AsRef<Path>,

View File

@ -26,7 +26,12 @@ use wasmer_wit::IRecordType;
use wasmer_wit::IType; use wasmer_wit::IType;
/// Parse generated by rust-sdk AST types, generate instructions and embed them to Wasm file. /// Parse generated by rust-sdk AST types, generate instructions and embed them to Wasm file.
pub fn embed_wit(path: std::path::PathBuf) -> Result<()> { pub fn embed_wit<P>(path: P) -> Result<()>
where
P: Into<std::path::PathBuf>,
{
let path = path.into();
let wasm_module = walrus::ModuleConfig::new() let wasm_module = walrus::ModuleConfig::new()
.parse_file(path.clone()) .parse_file(path.clone())
.map_err(|e| WITGeneratorError::IOError(format!("{:?} can't be parsed: {:?}", path, e)))?; .map_err(|e| WITGeneratorError::IOError(format!("{:?} can't be parsed: {:?}", path, e)))?;

View File

@ -19,6 +19,8 @@ use crate::errors::CLIError;
use std::process::Command; use std::process::Command;
const RUST_SDK_VERSION: &str = "0.6.0";
#[derive(serde::Deserialize)] #[derive(serde::Deserialize)]
#[serde(tag = "reason", rename_all = "kebab-case")] #[serde(tag = "reason", rename_all = "kebab-case")]
enum DiagnosticMessage { enum DiagnosticMessage {
@ -30,6 +32,7 @@ enum DiagnosticMessage {
pub(crate) fn build(trailing_args: Vec<&str>) -> CLIResult<()> { pub(crate) fn build(trailing_args: Vec<&str>) -> CLIResult<()> {
use std::io::Read; use std::io::Read;
use std::str::FromStr;
let mut cargo = Command::new("cargo"); let mut cargo = Command::new("cargo");
cargo.arg("build").arg("--target").arg("wasm32-wasi"); cargo.arg("build").arg("--target").arg("wasm32-wasi");
@ -70,9 +73,11 @@ pub(crate) fn build(trailing_args: Vec<&str>) -> CLIResult<()> {
return Ok(()); return Ok(());
} }
let version = semver::Version::from_str(RUST_SDK_VERSION).unwrap();
for wasm in wasms { for wasm in wasms {
let wasm_path = std::path::PathBuf::from(wasm); let wasm_path = std::path::PathBuf::from(wasm);
fce_wit_generator::embed_wit(wasm_path)?; fce_wit_generator::embed_wit(&wasm_path)?;
fce_module_info_parser::sdk_version::embed_from_path(&wasm_path, &wasm_path, &version)?;
} }
Ok(()) Ok(())

View File

@ -14,6 +14,7 @@
* limitations under the License. * limitations under the License.
*/ */
use fce_module_info_parser::ModuleInfoError;
use fce_wit_generator::WITGeneratorError; use fce_wit_generator::WITGeneratorError;
use fce_wit_parser::WITParserError; use fce_wit_parser::WITParserError;
@ -22,9 +23,13 @@ use thiserror::Error as ThisError;
#[derive(Debug, ThisError)] #[derive(Debug, ThisError)]
pub enum CLIError { pub enum CLIError {
/// Unknown command was entered by user. /// Unknown command was entered by user.
#[error("{0} is unknown command")] #[error("{0} is an unknown command")]
NoSuchCommand(String), NoSuchCommand(String),
/// A error occurred while embedding rust sdk version.
#[error("{0}")]
VersionEmbeddingError(#[from] ModuleInfoError),
/// An error occurred while generating interface types. /// An error occurred while generating interface types.
#[error("{0}")] #[error("{0}")]
WITGeneratorError(#[from] WITGeneratorError), WITGeneratorError(#[from] WITGeneratorError),

View File

@ -121,7 +121,7 @@ fn set_version(args: &clap::ArgMatches<'_>) -> Result<(), anyhow::Error> {
}; };
let version = semver::Version::from_str(version)?; let version = semver::Version::from_str(version)?;
sdk_version::embed_from_path(in_wasm_path, out_wasm_path, version)?; sdk_version::embed_from_path(in_wasm_path, out_wasm_path, &version)?;
println!("the version was successfully embedded"); println!("the version was successfully embedded");