mirror of
https://github.com/ansible-collections/community.general.git
synced 2024-09-14 20:13:21 +02:00
b279694779
pnpm: version should not be latest when state is latest (#7339)
* (fix) don't set version at latest at state: latest
If version is forcefully set at latest when state is latest, the package
will always be changed, as there is no version "latest" will ever be
detected. It is better to keep it None.
* (fix) fixed tests to reflect recent changes
* Apply suggestions from code review
Co-authored-by: Felix Fontein <felix@fontein.de>
* (feat) added changelog fragment for pull #7339
* (fix) apply correct punctuation to changelog
Co-authored-by: Felix Fontein <felix@fontein.de>
---------
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 39895a6d38
)
Co-authored-by: Aritra Sen <125266845+aretrosen@users.noreply.github.com>
322 lines
9.8 KiB
YAML
322 lines
9.8 KiB
YAML
---
|
|
# Copyright (c) 2023 Aritra Sen <aretrosen@proton.me>
|
|
# Copyright (c) Ansible Project
|
|
# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
|
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
|
|
- name: Download nodejs
|
|
ansible.builtin.unarchive:
|
|
src: "https://nodejs.org/dist/v{{ nodejs_version }}/{{ nodejs_path }}.tar.gz"
|
|
dest: "{{ remote_tmp_dir }}"
|
|
remote_src: true
|
|
creates: "{{ remote_tmp_dir }}/{{ nodejs_path }}.tar.gz"
|
|
|
|
- name: Create a temporary directory for pnpm binary
|
|
ansible.builtin.tempfile:
|
|
state: directory
|
|
register: tmp_dir
|
|
|
|
- name: Download pnpm binary to the temporary directory
|
|
ansible.builtin.get_url:
|
|
url: "https://github.com/pnpm/pnpm/releases/download/v{{ pnpm_version }}/{{ pnpm_path }}"
|
|
dest: "{{ tmp_dir.path }}/pnpm"
|
|
mode: "755"
|
|
|
|
- name: Setting up pnpm via command
|
|
ansible.builtin.command: "{{ tmp_dir.path }}/pnpm setup --force"
|
|
environment:
|
|
PNPM_HOME: "{{ ansible_env.HOME }}/.local/share/pnpm"
|
|
SHELL: /bin/sh
|
|
ENV: "{{ ansible_env.HOME }}/.shrc"
|
|
|
|
- name: Remove the temporary directory
|
|
ansible.builtin.file:
|
|
path: "{{ tmp_dir.path }}"
|
|
state: absent
|
|
|
|
- name: Remove any previous Nodejs modules
|
|
ansible.builtin.file:
|
|
path: "{{ remote_tmp_dir }}/node_modules"
|
|
state: absent
|
|
|
|
- name: CI tests to run
|
|
vars:
|
|
node_bin_path: "{{ remote_tmp_dir }}/{{ nodejs_path }}/bin"
|
|
pnpm_bin_path: "{{ ansible_env.HOME }}/.local/share/pnpm"
|
|
package: "tailwindcss"
|
|
environment:
|
|
PATH: "{{ node_bin_path }}:{{ ansible_env.PATH }}"
|
|
|
|
block:
|
|
- name: Create dummy package.json
|
|
ansible.builtin.template:
|
|
src: package.j2
|
|
dest: "{{ remote_tmp_dir }}/package.json"
|
|
mode: "644"
|
|
|
|
- name: Install reading-time package via package.json
|
|
pnpm:
|
|
path: "{{ remote_tmp_dir }}"
|
|
executable: "{{ pnpm_bin_path }}/pnpm"
|
|
state: present
|
|
environment:
|
|
PATH: "{{ node_bin_path }}:{{ ansible_env.PATH }}"
|
|
|
|
- name: Install the same package from package.json again
|
|
pnpm:
|
|
path: "{{ remote_tmp_dir }}"
|
|
executable: "{{ pnpm_bin_path }}/pnpm"
|
|
name: "reading-time"
|
|
state: present
|
|
environment:
|
|
PATH: "{{ node_bin_path }}:{{ ansible_env.PATH }}"
|
|
register: pnpm_install
|
|
|
|
- name: Assert that result is not changed
|
|
ansible.builtin.assert:
|
|
that:
|
|
- not (pnpm_install is changed)
|
|
|
|
- name: Install all packages in check mode
|
|
pnpm:
|
|
path: "{{ remote_tmp_dir }}"
|
|
executable: "{{ pnpm_bin_path }}/pnpm"
|
|
state: present
|
|
environment:
|
|
PATH: "{{ node_bin_path }}:{{ ansible_env.PATH }}"
|
|
check_mode: true
|
|
register: pnpm_install_check
|
|
|
|
- name: Verify test pnpm global installation in check mode
|
|
ansible.builtin.assert:
|
|
that:
|
|
- pnpm_install_check.err is defined
|
|
- pnpm_install_check.out is defined
|
|
- pnpm_install_check.err is none
|
|
- pnpm_install_check.out is none
|
|
|
|
- name: Install package without dependency
|
|
pnpm:
|
|
path: "{{ remote_tmp_dir }}"
|
|
executable: "{{ pnpm_bin_path }}/pnpm"
|
|
state: present
|
|
name: "{{ package }}"
|
|
environment:
|
|
PATH: "{{ node_bin_path }}:{{ ansible_env.PATH }}"
|
|
register: pnpm_install
|
|
|
|
- name: Assert that result is changed and successful
|
|
ansible.builtin.assert:
|
|
that:
|
|
- pnpm_install is success
|
|
- pnpm_install is changed
|
|
|
|
- name: Reinstall package without dependency
|
|
pnpm:
|
|
path: "{{ remote_tmp_dir }}"
|
|
executable: "{{ pnpm_bin_path }}/pnpm"
|
|
state: present
|
|
name: "{{ package }}"
|
|
environment:
|
|
PATH: "{{ node_bin_path }}:{{ ansible_env.PATH }}"
|
|
register: pnpm_reinstall
|
|
|
|
- name: Assert that there is no change
|
|
ansible.builtin.assert:
|
|
that:
|
|
- pnpm_reinstall is success
|
|
- not (pnpm_reinstall is changed)
|
|
|
|
- name: Reinstall package
|
|
pnpm:
|
|
path: "{{ remote_tmp_dir }}"
|
|
executable: "{{ pnpm_bin_path }}/pnpm"
|
|
state: latest
|
|
name: "{{ package }}"
|
|
environment:
|
|
PATH: "{{ node_bin_path }}:{{ ansible_env.PATH }}"
|
|
register: pnpm_fix_install
|
|
|
|
- name: Assert that result is changed and successful
|
|
ansible.builtin.assert:
|
|
that:
|
|
- pnpm_fix_install is success
|
|
- pnpm_fix_install is not changed
|
|
|
|
- name: Install package with version, without executable path
|
|
pnpm:
|
|
name: "{{ package }}"
|
|
version: 0.1.3
|
|
path: "{{ remote_tmp_dir }}"
|
|
state: present
|
|
environment:
|
|
PATH: "{{ pnpm_bin_path }}:{{ node_bin_path }}:{{ ansible_env.PATH }}"
|
|
register: pnpm_install
|
|
|
|
- name: Assert that package with version is installed
|
|
ansible.builtin.assert:
|
|
that:
|
|
- pnpm_install is success
|
|
- pnpm_install is changed
|
|
|
|
- name: Reinstall package with version, without explicit executable path
|
|
pnpm:
|
|
name: "{{ package }}"
|
|
version: 0.1.3
|
|
path: "{{ remote_tmp_dir }}"
|
|
state: present
|
|
environment:
|
|
PATH: "{{ pnpm_bin_path }}:{{ node_bin_path }}:{{ ansible_env.PATH }}"
|
|
register: pnpm_reinstall
|
|
|
|
- name: Assert that there is no change
|
|
ansible.builtin.assert:
|
|
that:
|
|
- pnpm_reinstall is success
|
|
- not (pnpm_reinstall is changed)
|
|
|
|
- name: Update package, without executable path
|
|
pnpm:
|
|
name: "{{ package }}"
|
|
path: "{{ remote_tmp_dir }}"
|
|
state: latest
|
|
environment:
|
|
PATH: "{{ pnpm_bin_path }}:{{ node_bin_path }}:{{ ansible_env.PATH }}"
|
|
register: pnpm_update
|
|
|
|
- name: Assert that result is changed and successful
|
|
ansible.builtin.assert:
|
|
that:
|
|
- pnpm_update is success
|
|
- pnpm_update is changed
|
|
|
|
- name: Remove package, without executable path
|
|
pnpm:
|
|
name: "{{ package }}"
|
|
path: "{{ remote_tmp_dir }}"
|
|
state: absent
|
|
environment:
|
|
PATH: "{{ pnpm_bin_path }}:{{ node_bin_path }}:{{ ansible_env.PATH }}"
|
|
register: pnpm_absent
|
|
|
|
- name: Assert that result is changed and successful
|
|
ansible.builtin.assert:
|
|
that:
|
|
- pnpm_absent is success
|
|
- pnpm_absent is changed
|
|
|
|
- name: Install package with version and alias, without executable path
|
|
pnpm:
|
|
name: "{{ package }}"
|
|
alias: tailwind-1
|
|
version: 0.1.3
|
|
path: "{{ remote_tmp_dir }}"
|
|
state: present
|
|
environment:
|
|
PATH: "{{ pnpm_bin_path }}:{{ node_bin_path }}:{{ ansible_env.PATH }}"
|
|
register: pnpm_install
|
|
|
|
- name: Assert that package with version and alias is installed
|
|
ansible.builtin.assert:
|
|
that:
|
|
- pnpm_install is success
|
|
- pnpm_install is changed
|
|
|
|
- name: Reinstall package with version and alias, without explicit executable path
|
|
pnpm:
|
|
name: "{{ package }}"
|
|
alias: tailwind-1
|
|
version: 0.1.3
|
|
path: "{{ remote_tmp_dir }}"
|
|
state: present
|
|
environment:
|
|
PATH: "{{ pnpm_bin_path }}:{{ node_bin_path }}:{{ ansible_env.PATH }}"
|
|
register: pnpm_reinstall
|
|
|
|
- name: Assert that there is no change
|
|
ansible.builtin.assert:
|
|
that:
|
|
- pnpm_reinstall is success
|
|
- not (pnpm_reinstall is changed)
|
|
|
|
- name: Remove package with alias, without executable path
|
|
pnpm:
|
|
name: tailwindcss
|
|
alias: tailwind-1
|
|
path: "{{ remote_tmp_dir }}"
|
|
state: absent
|
|
environment:
|
|
PATH: "{{ pnpm_bin_path }}:{{ node_bin_path }}:{{ ansible_env.PATH }}"
|
|
register: pnpm_absent
|
|
|
|
- name: Assert that result is changed and successful
|
|
ansible.builtin.assert:
|
|
that:
|
|
- pnpm_absent is success
|
|
- pnpm_absent is changed
|
|
|
|
- name: Install package without dependency globally
|
|
pnpm:
|
|
name: "{{ package }}"
|
|
executable: "{{ pnpm_bin_path }}/pnpm"
|
|
state: present
|
|
global: true
|
|
environment:
|
|
PATH: "{{ pnpm_bin_path }}:{{ node_bin_path }}:{{ ansible_env.PATH }}"
|
|
PNPM_HOME: "{{ pnpm_bin_path }}"
|
|
register: pnpm_install
|
|
|
|
- name: Assert that result is changed and successful
|
|
ansible.builtin.assert:
|
|
that:
|
|
- pnpm_install is success
|
|
- pnpm_install is changed
|
|
|
|
- name: Reinstall package globally, without explicit executable path
|
|
pnpm:
|
|
name: "{{ package }}"
|
|
state: present
|
|
global: true
|
|
environment:
|
|
PATH: "{{ pnpm_bin_path }}:{{ node_bin_path }}:{{ ansible_env.PATH }}"
|
|
PNPM_HOME: "{{ pnpm_bin_path }}"
|
|
register: pnpm_reinstall
|
|
|
|
- name: Assert that there is no change
|
|
ansible.builtin.assert:
|
|
that:
|
|
- pnpm_reinstall is success
|
|
- not (pnpm_reinstall is changed)
|
|
|
|
- name: Updating package globally, without explicit executable path
|
|
pnpm:
|
|
name: "{{ package }}"
|
|
state: latest
|
|
global: true
|
|
environment:
|
|
PATH: "{{ pnpm_bin_path }}:{{ node_bin_path }}:{{ ansible_env.PATH }}"
|
|
PNPM_HOME: "{{ pnpm_bin_path }}"
|
|
register: pnpm_reinstall
|
|
|
|
- name: Assert that there is no change
|
|
ansible.builtin.assert:
|
|
that:
|
|
- pnpm_reinstall is success
|
|
- pnpm_reinstall is not changed
|
|
|
|
- name: Remove package without dependency globally
|
|
pnpm:
|
|
name: "{{ package }}"
|
|
executable: "{{ pnpm_bin_path }}/pnpm"
|
|
global: true
|
|
state: absent
|
|
environment:
|
|
PATH: "{{ pnpm_bin_path }}:{{ node_bin_path }}:{{ ansible_env.PATH }}"
|
|
PNPM_HOME: "{{ pnpm_bin_path }}"
|
|
register: pnpm_absent
|
|
|
|
- name: Assert that result is changed and successful
|
|
ansible.builtin.assert:
|
|
that:
|
|
- pnpm_absent is success
|
|
- pnpm_absent is changed
|