Artem Goncharov e0f1e9c0b2 Format generated Rust code
Change-Id: I75d43d3280d2353d5038b6bce714a186bd9cf956
2025-03-25 15:40:36 +00:00

87 lines
2.9 KiB
YAML

---
- hosts: all
roles:
- "ensure-rust"
tasks:
- name: "Generate Rust code"
ansible.builtin.include_role:
name: "codegenerator"
vars:
codegenerator_target: "{{ zj_item.1 }}"
codegenerator_metadata: "{{ zj_item.0.metadata }}"
codegenerator_service_type: "{{ zj_item.0.service }}"
loop: "{{ codegenerator_service_metadata_target_map | subelements('targets') }}"
loop_control:
loop_var: zj_item
- name: "Checkout target repository"
ansible.builtin.git:
repo: "{{ rust_sdk_git_repo }}"
dest: "{{ rust_project_dir }}"
- name: "Pre-Compile current code to ensure it builds"
ansible.builtin.command:
cmd: "cargo build -p openstack_sdk -p openstack_cli -p openstack_tui"
chdir: "{{ rust_project_dir }}"
- name: "Overwrite generated files"
ansible.builtin.copy:
src: "{{ codegenerator_base_dir }}/wrk/rust/"
dest: "{{ rust_project_dir }}"
remote_src: True
- name: "Optimize generated code with clippy"
ansible.builtin.command:
cmd: "cargo clippy --fix --lib --tests --bins --allow-dirty"
chdir: "{{ rust_project_dir }}"
- name: "Format generated code"
ansible.builtin.command:
cmd: "cargo fmt"
chdir: "{{ rust_project_dir }}"
- name: "Compile new code (only generated crates)"
ansible.builtin.command:
cmd: "cargo build -p openstack_sdk -p openstack_cli -p openstack_tui"
chdir: "{{ rust_project_dir }}"
- name: "Checkout new branch"
ansible.builtin.command:
cmd: "git checkout -b codegenerator_{{ zuul.change }}"
chdir: "{{ rust_project_dir }}"
- name: "Configure git username"
ansible.builtin.command: "git config --global user.name 'OpenStack codegenerator'"
- name: "Configure git email"
ansible.builtin.command: "git config --global user.email 16461884+gtema@users.noreply.github.com"
- name: "Stage files for commit"
ansible.builtin.command:
cmd: "git add ."
chdir: "{{ rust_project_dir }}"
- name: "Check staged files"
ansible.builtin.command:
cmd: "git diff --staged"
chdir: "{{ rust_project_dir }}"
register: "staged_changes"
- name: "Commit changes"
ansible.builtin.command:
cmd: "git commit -m 'feat: New generated content' -m {{ zuul.change_message | quote }} -m 'Changes are triggered by {{ zuul.change_url }}'"
chdir: "{{ rust_project_dir }}"
register: "commit"
when:
# Only commit when there is anything to commit
- "staged_changes.stdout | length > 0"
- name: "Format patch"
ansible.builtin.command:
cmd: "git format-patch -1 --output {{ patch_path }}"
chdir: "{{ rust_project_dir }}"
when:
# Only prepare when there is anything to commit
- "commit is defined"
- "commit.changed"