Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(zkstack_cli): Use the same rust toolchain as main repo #3230

Merged
merged 5 commits into from
Nov 7, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .github/workflows/ci-core-lint-reusable.yml
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@ jobs:
ci_run zkstack dev lint -t ts --check
ci_run zkstack dev lint -t rs --check
ci_run zkstack dev lint -t autocompletion --check
ci_run zkstack dev lint -t rust-toolchain

- name: Check Database
run: |
Expand Down
3 changes: 2 additions & 1 deletion rust-toolchain
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
nightly-2024-08-01
[toolchain]
channel = "nightly-2024-08-01"
7 changes: 0 additions & 7 deletions zkstack_cli/Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 4 additions & 4 deletions zkstack_cli/crates/zkstack/completion/_zkstack.zsh
Original file line number Diff line number Diff line change
Expand Up @@ -1255,8 +1255,8 @@ esac
;;
(lint)
_arguments "${_arguments_options[@]}" : \
'*-t+[]:TARGETS:(md sol js ts rs contracts autocompletion)' \
'*--targets=[]:TARGETS:(md sol js ts rs contracts autocompletion)' \
'*-t+[]:TARGETS:(md sol js ts rs contracts autocompletion rust-toolchain)' \
'*--targets=[]:TARGETS:(md sol js ts rs contracts autocompletion rust-toolchain)' \
'--chain=[Chain to use]:CHAIN:_default' \
'-c[]' \
'--check[]' \
Expand Down Expand Up @@ -1309,8 +1309,8 @@ _arguments "${_arguments_options[@]}" : \
;;
(prettier)
_arguments "${_arguments_options[@]}" : \
'*-t+[]:TARGETS:(md sol js ts rs contracts autocompletion)' \
'*--targets=[]:TARGETS:(md sol js ts rs contracts autocompletion)' \
'*-t+[]:TARGETS:(md sol js ts rs contracts autocompletion rust-toolchain)' \
'*--targets=[]:TARGETS:(md sol js ts rs contracts autocompletion rust-toolchain)' \
'--chain=[Chain to use]:CHAIN:_default' \
'-v[Verbose mode]' \
'--verbose[Verbose mode]' \
Expand Down
2 changes: 1 addition & 1 deletion zkstack_cli/crates/zkstack/completion/zkstack.fish
Original file line number Diff line number Diff line change
Expand Up @@ -368,7 +368,7 @@ complete -c zkstack -n "__fish_zkstack_using_subcommand dev; and __fish_seen_sub
complete -c zkstack -n "__fish_zkstack_using_subcommand dev; and __fish_seen_subcommand_from snapshot" -s h -l help -d 'Print help'
complete -c zkstack -n "__fish_zkstack_using_subcommand dev; and __fish_seen_subcommand_from snapshot" -f -a "create"
complete -c zkstack -n "__fish_zkstack_using_subcommand dev; and __fish_seen_subcommand_from snapshot" -f -a "help" -d 'Print this message or the help of the given subcommand(s)'
complete -c zkstack -n "__fish_zkstack_using_subcommand dev; and __fish_seen_subcommand_from lint" -s t -l targets -r -f -a "{md\t'',sol\t'',js\t'',ts\t'',rs\t'',contracts\t'',autocompletion\t''}"
complete -c zkstack -n "__fish_zkstack_using_subcommand dev; and __fish_seen_subcommand_from lint" -s t -l targets -r -f -a "{md\t'',sol\t'',js\t'',ts\t'',rs\t'',contracts\t'',autocompletion\t'',rust-toolchain\t''}"
complete -c zkstack -n "__fish_zkstack_using_subcommand dev; and __fish_seen_subcommand_from lint" -l chain -d 'Chain to use' -r
complete -c zkstack -n "__fish_zkstack_using_subcommand dev; and __fish_seen_subcommand_from lint" -s c -l check
complete -c zkstack -n "__fish_zkstack_using_subcommand dev; and __fish_seen_subcommand_from lint" -s v -l verbose -d 'Verbose mode'
Expand Down
8 changes: 4 additions & 4 deletions zkstack_cli/crates/zkstack/completion/zkstack.sh
Original file line number Diff line number Diff line change
Expand Up @@ -3104,11 +3104,11 @@ _zkstack() {
fi
case "${prev}" in
--targets)
COMPREPLY=($(compgen -W "md sol js ts rs contracts autocompletion" -- "${cur}"))
COMPREPLY=($(compgen -W "md sol js ts rs contracts autocompletion rust-toolchain" -- "${cur}"))
return 0
;;
-t)
COMPREPLY=($(compgen -W "md sol js ts rs contracts autocompletion" -- "${cur}"))
COMPREPLY=($(compgen -W "md sol js ts rs contracts autocompletion rust-toolchain" -- "${cur}"))
return 0
;;
--chain)
Expand Down Expand Up @@ -3768,11 +3768,11 @@ _zkstack() {
fi
case "${prev}" in
--targets)
COMPREPLY=($(compgen -W "md sol js ts rs contracts autocompletion" -- "${cur}"))
COMPREPLY=($(compgen -W "md sol js ts rs contracts autocompletion rust-toolchain" -- "${cur}"))
return 0
;;
-t)
COMPREPLY=($(compgen -W "md sol js ts rs contracts autocompletion" -- "${cur}"))
COMPREPLY=($(compgen -W "md sol js ts rs contracts autocompletion rust-toolchain" -- "${cur}"))
return 0
;;
--chain)
Expand Down
42 changes: 39 additions & 3 deletions zkstack_cli/crates/zkstack/src/commands/dev/commands/lint.rs
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ pub fn run(shell: &Shell, args: LintArgs) -> anyhow::Result<()> {
Target::Ts,
Target::Contracts,
Target::Autocompletion,
Target::RustToolchain,
]
} else {
args.targets.clone()
Expand All @@ -55,6 +56,7 @@ pub fn run(shell: &Shell, args: LintArgs) -> anyhow::Result<()> {
Target::Rs => lint_rs(shell, &ecosystem, args.check)?,
Target::Contracts => lint_contracts(shell, &ecosystem, args.check)?,
Target::Autocompletion => lint_autocompletion_files(shell, args.check)?,
Target::RustToolchain => check_rust_toolchain(shell)?,
ext => lint(shell, &ecosystem, &ext, args.check)?,
}
}
Expand All @@ -70,13 +72,18 @@ fn lint_rs(shell: &Shell, ecosystem: &EcosystemConfig, check: bool) -> anyhow::R
let link_to_code = &ecosystem.link_to_code;
let lint_to_prover = &ecosystem.link_to_code.join("prover");
let link_to_zkstack = &ecosystem.link_to_code.join("zkstack_cli");
let paths = vec![link_to_code, lint_to_prover, link_to_zkstack];

spinner.freeze();
for path in paths {
for path in [link_to_code, lint_to_prover, link_to_zkstack] {
let _dir_guard = shell.push_dir(path);
let mut cmd = cmd!(shell, "cargo clippy");
let common_args = &["--locked", "--", "-D", "warnings"];
let mut common_args = vec!["--locked", "--", "-D", "warnings"];

if !path.ends_with("prover") {
common_args.push("-D");
common_args.push("unstable-features");
}

if !check {
cmd = cmd.args(&["--fix", "--allow-dirty"]);
}
Expand All @@ -87,6 +94,34 @@ fn lint_rs(shell: &Shell, ecosystem: &EcosystemConfig, check: bool) -> anyhow::R
Ok(())
}

fn check_rust_toolchain(shell: &Shell) -> anyhow::Result<()> {
// deserialize /zkstack_cli/rust-toolchain as TOML
let path = Path::new("zkstack_cli/rust-toolchain");
if !path.exists() {
logger::info("WARNING: Please run this command from the project's root folder");
return Ok(());
}
let contents = shell.read_file(path)?;
let zkstack_cli_toolchain: toml::Value = toml::from_str(&contents)?;

// deserialize /rust-toolchain as TOML
let path = Path::new("rust-toolchain");
let contents = shell.read_file(path)?;
let zksync_era_toolchain: toml::Value = toml::from_str(&contents)?;

// check if the toolchains are the same
if zksync_era_toolchain["toolchain"]["channel"] != zkstack_cli_toolchain["toolchain"]["channel"]
{
bail!(
"The Rust toolchains are not the same: ZKsync Era: {} - ZK Stack CLI: {}",
zksync_era_toolchain["toolchain"]["channel"],
zkstack_cli_toolchain["toolchain"]["channel"]
);
}

Ok(())
}

fn get_linter(target: &Target) -> Vec<String> {
match target {
Target::Rs => vec!["cargo".to_string(), "clippy".to_string()],
Expand All @@ -96,6 +131,7 @@ fn get_linter(target: &Target) -> Vec<String> {
Target::Ts => vec!["eslint".to_string(), "--ext".to_string(), "ts".to_string()],
Target::Contracts => vec![],
Target::Autocompletion => vec![],
Target::RustToolchain => vec![],
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ pub enum Target {
Rs,
Contracts,
Autocompletion,
RustToolchain,
}

#[derive(Deserialize, Serialize, Debug)]
Expand Down
3 changes: 2 additions & 1 deletion zkstack_cli/rust-toolchain
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
nightly-2024-08-01
[toolchain]
channel = "nightly-2024-08-01"
Loading