Skip to content

Commit

Permalink
Merge pull request #36 from software-mansion/tomek/35-publish-crate
Browse files Browse the repository at this point in the history
Update before publishing to crates.io
  • Loading branch information
tomek0123456789 committed Mar 18, 2024
2 parents 08498d6 + ea075a3 commit 581402f
Show file tree
Hide file tree
Showing 8 changed files with 28 additions and 14 deletions.
4 changes: 0 additions & 4 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,3 @@ fs_extra = "1.3.0"
test-case = "3.3.1"
num-bigint = "0.4.4"
cairo-lang-casm = { version = "2.6.0", features = ["serde"] }

[[bin]]
name = "universal-sierra-compiler"
path = "src/main.rs"
11 changes: 11 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ curl -L https://raw.githubusercontent.com/software-mansion/universal-sierra-comp
## Usage

### Command line tool
Tool consist of two subcommands:

- `compile-contract`
Expand Down Expand Up @@ -91,3 +92,13 @@ $ universal-sierra-compiler \
--sierra-path ./path/to/sierra.json
--output-path ./path/to/casm.json
```

### Library

Library crate exports two functions:

- `compile_contract(serde_json::Value) -> Result<serde_json::Value>`
- `compile_raw(serde_json::Value) -> Result<serde_json::Value>`

They do the same as their CLI counterparts. However, they accept the whole program in json format as a parameter, precisely a `json_serde::Value`.
Return value is the compiled program inside `Result<serde_json::Value>`.
1 change: 1 addition & 0 deletions src/commands/compile_contract.rs
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ pub struct CompileContract {
pub output_path: Option<PathBuf>,
}

/// Compiles Sierra of the Starknet contract.
pub fn compile(mut sierra_json: Value) -> Result<Value> {
sierra_json["abi"] = Value::Null;
sierra_json["sierra_program_debug_info"] = Value::Null;
Expand Down
1 change: 1 addition & 0 deletions src/commands/compile_raw.rs
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ pub struct CompileRaw {
pub output_path: Option<PathBuf>,
}

/// Compiles Sierra of the plain Cairo code.
pub fn compile(sierra_program: Value) -> Result<Value> {
let sierra_program: Program = serde_json::from_value(sierra_program)
.context("Unable to deserialize Sierra program. Make sure it is in a correct format")?;
Expand Down
5 changes: 4 additions & 1 deletion src/lib.rs
Original file line number Diff line number Diff line change
@@ -1 +1,4 @@
pub mod commands;
mod commands;

pub use commands::compile_contract::compile as compile_contract;
pub use commands::compile_raw::compile as compile_raw;
8 changes: 5 additions & 3 deletions src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,11 @@ use console::style;
use serde_json::{to_writer, Value};
use std::fs::File;
use std::path::PathBuf;
use universal_sierra_compiler::commands;
use universal_sierra_compiler::commands::compile_contract::CompileContract;
use universal_sierra_compiler::commands::compile_raw::CompileRaw;

mod commands;

use commands::compile_contract::CompileContract;
use commands::compile_raw::CompileRaw;

#[derive(Parser)]
#[command(version)]
Expand Down
6 changes: 3 additions & 3 deletions tests/integration/compile_contract.rs
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
use std::fs::File;
use test_case::test_case;
use universal_sierra_compiler::commands;
use universal_sierra_compiler::compile_contract;

#[test]
fn wrong_json() {
let sierra_json = serde_json::json!({
"wrong": "data"
});

let casm_class = commands::compile_contract::compile(sierra_json);
let casm_class = compile_contract(sierra_json);
assert!(casm_class.is_err());
}

Expand All @@ -25,6 +25,6 @@ fn compile_sierra(sierra_version: &str) {
.unwrap();
let sierra_json = serde_json::from_reader(file).unwrap();

let casm_class = commands::compile_contract::compile(sierra_json);
let casm_class = compile_contract(sierra_json);
assert!(casm_class.is_ok());
}
6 changes: 3 additions & 3 deletions tests/integration/compile_raw.rs
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
use std::fs::File;
use test_case::test_case;
use universal_sierra_compiler::commands;
use universal_sierra_compiler::compile_raw;

#[test]
fn wrong_json() {
let sierra_json = serde_json::json!({
"wrong": "data"
});

let cairo_program = commands::compile_raw::compile(sierra_json);
let cairo_program = compile_raw(sierra_json);
assert!(cairo_program.is_err());
}

Expand All @@ -18,7 +18,7 @@ fn compile_raw_sierra(sierra_version: &str) {
let file =
File::open("tests/data/sierra_raw/sierra_".to_string() + sierra_version + ".json").unwrap();
let artifact = serde_json::from_reader(file).unwrap();
let compiled = commands::compile_raw::compile(artifact);
let compiled = compile_raw(artifact);

assert!(compiled.is_ok());
}

0 comments on commit 581402f

Please sign in to comment.