Files
codegenerator/playbooks/rust/all.yaml
Artem Goncharov 7ee260c7df Add keystone-ng idp and mapping resources metadata
Also ensure new features are activated when running clippy.

Change-Id: I95d5814ff0691ac859eff8435a8c155acf0559ed
Signed-off-by: Artem Goncharov <artem.goncharov@gmail.com>
2025-09-17 15:08:09 +02:00

98 lines
3.3 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: "Create openstack_types/data dir"
ansible.builtin.file:
path: "{{ rust_project_dir }}/openstack_types/data"
state: "directory"
- name: "Copy OpenAPI specs"
ansible.builtin.copy:
src: "{{ codegenerator_base_dir }}/wrk/openapi_specs/"
dest: "{{ rust_project_dir }}/openstack_types/data"
remote_src: True
- name: "Optimize generated code with clippy"
ansible.builtin.command:
cmd: "cargo clippy --fix --lib --tests --bins --allow-dirty --all-features"
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"