# Endcap SL Software RI Generator [![pipeline status](https://gitlab.cern.ch/wotsubo/endcap-sl-software-ri-generator/badges/main/pipeline.svg)](https://gitlab.cern.ch/wotsubo/endcap-sl-software-ri-generator/-/commits/main) [![Latest Release](https://gitlab.cern.ch/wotsubo/endcap-sl-software-ri-generator/-/badges/release.svg)](https://gitlab.cern.ch/wotsubo/endcap-sl-software-ri-generator/-/releases) これはXMLのレジスタマップからMPSoCソフトで使う用のコードを生成するソフトです。 XMLおよびそのスキーマは[L0 Muon Endcap/Endcap Sl CSR XML](https://gitlab.cern.ch/l0muon-endcap/endcap-sl-csr-xml)にあります。 生成されたコードは[MPSoC Software](https://gitlab.cern.ch/wotsubo/mpsoc-software)で使うことが想定されています。 そこに`RegisterSpec`などのレジスタ向けのトレイトが定義されてます。 ## 使い方 このプロジェクトでは、バイナリとライブラリの両方のクレートを提供しています。 バイナリクレートはシェルから使うことができ、ライブラリクレートは他のプログラムから使うためのものです。 ### ビルド環境の構築 このコードは[Rust](https://www.rust-lang.org/ja/)で書かれているので、[rustup](https://www.rust-lang.org/ja/tools/install)をインストールする必要があります。 rustupのインストールには公式サイトにある`curl`スクリプトを使うか、あるいはシステムのパッケージマネージャを使うことができます。 `cargo`を実行してみることでインストールのチェックができます。 `cargo`はlxplusにインストールされているみたいなので、それも使えるかもしれません(ただし、バージョンは最新ではありません)。 ### バイナリクレートの使い方 ```bash cargo build --bins --release ``` を実行します。 `--release`はオプションです。 `target/release`に入ってるバイナリファイルを実行するか、`cargo run -- `で実行できます。 詳しくは`--help`を見てください。 ### ライブラリクレートの使い方 ```bash cargo doc --open ``` で閲覧できるドキュメントを見てください。 ## 開発 ```bash cargo doc --document-private-items --open ``` でみれるプライベートアイテムを含んだドキュメントを見てください。 テストなどは以下のコマンドで実行できます ```bash $ cargo test # テスト $ cargo fmt # フォーマット $ cargo clippy # リント (`rustup component add clippy`でインストールできます) ``` ### rust-analyzer 開発には[rust-analyzer](https://rust-analyzer.github.io)を使用することを __強く推奨__ します。 推論された型の表示や補完に関して必要不可欠な上、フォーマットやclippyを実行することができます。 ### CIについて ビルドとフォーマットとclippyのテストが走ります。 フォーマットやclippyのチェックをしてpushしてください。 ### Rustについて 以下のウェブサイトでRustを良く学べます。 - [The Book](https://doc.rust-jp.rs/book-ja/) もしくはターミナルで ```bash rustup doc ``` を実行してみてください。 様々な有益なドキュメントへのリンクが載っています(自分はThe Bookとstandard libraryのドキュメントとRust By Exampleが役に立ちました)。