|
1 | 1 | Operations Index |
2 | 2 | ================ |
3 | 3 |
|
4 | | -Operations are used to describe changes to make to systems in the inventory. Use them to define state and pyinfra will make any necessary changes to reach that state. All operations accept a set of :doc:`global arguments <arguments>` and are grouped as Python modules. |
5 | | - |
6 | | -**Want a new operation?** Check out :doc:`the writing operations guide <./api/operations>`. |
7 | | - |
8 | 4 | .. raw:: html |
9 | 5 |
|
10 | | - <h3>Popular operations by category</h3> |
11 | | - |
12 | | -.. admonition:: Basics |
13 | | - :class: note inline |
14 | | - |
15 | | - :doc:`operations/files`, :doc:`operations/server`, :doc:`operations/git`, :doc:`operations/systemd` |
16 | | - |
17 | | -.. admonition:: System Packages |
18 | | - :class: note inline |
19 | | - |
20 | | - :doc:`operations/apt`, :doc:`operations/apk`, :doc:`operations/brew`, :doc:`operations/dnf`, :doc:`operations/yum` |
| 6 | + <nav class="under-title-tabs"> |
| 7 | + See also: |
| 8 | + <a href="facts.html">Facts Index</a> |
| 9 | + <a href="connectors.html">Connectors Index</a> |
| 10 | + </nav> |
21 | 11 |
|
22 | | -.. admonition:: Language Packages |
23 | | - :class: note inline |
24 | | - |
25 | | - :doc:`operations/gem`, :doc:`operations/npm`, :doc:`operations/pip` |
26 | | - |
27 | | -.. admonition:: Databases |
28 | | - :class: note inline |
29 | | - |
30 | | - :doc:`operations/postgresql`, :doc:`operations/mysql` |
31 | | - |
32 | | -.. raw:: html |
| 12 | +Operations are used to describe changes to make to systems in the inventory. Use them to define state and pyinfra will make any necessary changes to reach that state. All operations accept a set of :doc:`global arguments <arguments>` and are grouped as Python modules. |
33 | 13 |
|
34 | | - <h3>All operations alphabetically</h3> |
| 14 | +**Want a new operation?** Check out :doc:`the writing operations guide <./api/operations>`. |
35 | 15 |
|
36 | 16 | .. raw:: html |
37 | 17 |
|
38 | | - <style type="text/css"> |
39 | | - #operations-index .toctree-wrapper > ul { |
40 | | - padding: 0; |
41 | | - } |
42 | | - #operations-index .toctree-wrapper > ul > li { |
43 | | - padding: 0; |
44 | | - list-style: none; |
45 | | - margin: 20px 0; |
46 | | - } |
47 | | - #operations-index .toctree-wrapper > ul > li > ul > li { |
48 | | - display: inline-block; |
49 | | - } |
50 | | - </style> |
| 18 | + <div class="container my-4"> |
| 19 | + <!-- Dropdown Filter --> |
| 20 | + <div class="mb-4"> |
| 21 | + <label for="tag-dropdown" class="form-label">Filter by Tag:</label> |
| 22 | + <select class="form-select" id="tag-dropdown"> |
| 23 | + <option value="All">All</option> |
| 24 | +{% for tag in tags %} |
| 25 | + <option value="{{ tag.title_case }}">{{ tag.title_case }}</option> |
| 26 | +{% endfor %} |
| 27 | + </select> |
| 28 | + </div> |
| 29 | + |
| 30 | + <!-- Cards Grid --> |
| 31 | + <div class="row" id="card-container"> |
| 32 | +{% for plugin in operation_plugins %} |
| 33 | + <div class="col-md-4 mb-4 card-item"> |
| 34 | + <div class="card h-100"> |
| 35 | + <div class="card-body"> |
| 36 | + <h5 class="card-title"> |
| 37 | + <a href="./operations/{{ plugin.name }}.html"> |
| 38 | + {{ plugin.name }} |
| 39 | + </a> |
| 40 | + </h5> |
| 41 | + <p class="card-text">{{ plugin.description }}</p> |
| 42 | +{% for tag in plugin.tags %} |
| 43 | + <span class="badge bg-secondary">{{ tag.title_case }}</span> |
| 44 | +{% endfor %} |
| 45 | + </div> |
| 46 | + </div> |
| 47 | + </div> |
| 48 | +{% endfor %} |
| 49 | + </div> |
| 50 | + </div> |
| 51 | + <script> |
| 52 | + document.getElementById('tag-dropdown').addEventListener('change', function () { |
| 53 | + const selectedTag = this.value; |
| 54 | + const cards = document.querySelectorAll('.card-item'); |
| 55 | + |
| 56 | + cards.forEach(card => { |
| 57 | + const tags = Array.from(card.querySelectorAll('.badge')).map(badge => badge.textContent.trim()); |
| 58 | + |
| 59 | + if (selectedTag === 'All' || tags.includes(selectedTag)) { |
| 60 | + card.style.display = 'block'; |
| 61 | + } else { |
| 62 | + card.style.display = 'none'; |
| 63 | + } |
| 64 | + }); |
| 65 | + }); |
| 66 | + </script> |
51 | 67 |
|
52 | 68 | .. toctree:: |
53 | 69 | :maxdepth: 2 |
54 | 70 | :glob: |
| 71 | + :hidden: |
55 | 72 |
|
56 | 73 | operations/* |
0 commit comments