### List Installable Addons with Manifestoo Source: https://github.com/acsone/manifestoo/blob/main/docs/getting-started.md This command uses `manifestoo` to list all installable addons found within the specified directory `/tmp/myaddons`. This is useful for identifying all addons that can be installed together. ```bash $ manifestoo --select-addons-dir /tmp/myaddons list a b c ``` -------------------------------- ### List Installable Addons with Manifestoo Source: https://github.com/acsone/manifestoo/blob/main/README.md Lists all installable addons found within a specified directory using the `manifestoo list` command. This is useful for getting an overview of available addons. ```console manifestoo --select-addons-dir /tmp/myaddons list ``` -------------------------------- ### List Direct Dependencies with Manifestoo Source: https://github.com/acsone/manifestoo/blob/main/docs/getting-started.md The `list-depends` command from `manifestoo` displays the direct dependencies of addons within a given path. The `--separator=,` option formats the output as a comma-separated string, which is helpful for pre-installing modules before running tests. ```bash $ manifestoo -d /tmp/myaddons list-depends --separator=, crm,mail ``` -------------------------------- ### List Transitive Co-dependencies with Manifestoo Source: https://github.com/acsone/manifestoo/blob/main/docs/getting-started.md This command uses `manifestoo` to show the transitive co-dependencies of a selected addon ('a'). It considers addons located in `/tmp/myaddons`. This is useful for understanding which modules are affected by changes in the selected addon. ```bash $ manifestoo --addons-path /tmp/myaddons --select a list-codepends --separator=, b,c ``` -------------------------------- ### Install Manifestoo using pipx or pip Source: https://context7.com/acsone/manifestoo/llms.txt Instructions for installing the Manifestoo tool using either pipx (recommended) or pip. Includes a command to verify the installation by checking the version. ```bash # Using pipx (recommended) pipx install manifestoo # Using pip pip install --user manifestoo # Verify installation manifestoo --version ``` -------------------------------- ### List Addons from Directory Source: https://context7.com/acsone/manifestoo/llms.txt Demonstrates how to list all installable addons found within specified directories. Supports comma-separated output and topological sorting for migration order. ```bash # Create sample addons structure mkdir -p /tmp/myaddons/{addon_a,addon_b,addon_c} echo '{"name": "Addon A", "version": "14.0.1.0.0", "depends": ["addon_b", "addon_c"], "license": "GPL-3"}' > /tmp/myaddons/addon_a/__manifest__.py echo '{"name": "Addon B", "version": "14.0.1.0.0", "depends": ["crm"], "license": "LGPL-3"}' > /tmp/myaddons/addon_b/__manifest__.py echo '{"name": "Addon C", "version": "14.0.1.0.0", "depends": ["mail"], "license": "LGPL-3"}' > /tmp/myaddons/addon_c/__manifest__.py # List all addons in directory manifestoo --select-addons-dir /tmp/myaddons list # Output: # addon_a # addon_b # addon_c # List with comma separator (useful for shell scripts) manifestoo -d /tmp/myaddons list --separator=, # Output: addon_a,addon_b,addon_c # List with topological sorting (for migration order) manifestoo -d /tmp/myaddons list --sort=topological # Output: # addon_b # addon_c # addon_a ``` -------------------------------- ### Install Manifestoo using pip Source: https://github.com/acsone/manifestoo/blob/main/README.md Installs Manifestoo using pip, the standard Python package installer. The --user flag installs the package in the user's home directory. ```console pip install --user manifestoo ``` -------------------------------- ### Create Odoo Addons Directory Structure Source: https://github.com/acsone/manifestoo/blob/main/docs/getting-started.md This bash script creates a directory structure for Odoo addons 'a', 'b', and 'c' in `/tmp/myaddons`. It also defines their `__manifest__.py` files, specifying dependencies and licenses. Addon 'a' depends on 'b' and 'c', while 'b' and 'c' depend on Odoo core modules 'contacts' and 'mail' respectively. ```bash mkdir -p /tmp/myaddons/{a,b,c} echo '{"name": "A", "version": "14.0.1.0.0", "depends": ["b", "c"], "license": "GPL-3"}' > /tmp/myaddons/a/__manifest__.py echo '{"name": "B", "version": "14.0.1.0.0", "depends": ["crm"], "license": "Other Proprietary"}' > /tmp/myaddons/b/__manifest__.py echo '{"name": "C", "version": "14.0.1.0.0", "depends": ["mail"], "license": "LGPL-3"}' > /tmp/myaddons/c/__manifest__.py ``` -------------------------------- ### Visualize Addon Dependency Tree with Manifestoo Source: https://github.com/acsone/manifestoo/blob/main/docs/getting-started.md This command uses `manifestoo` to display the dependency tree for addon 'a', located within `/tmp/myaddons`. The output visually represents the hierarchical relationships between addons and their dependencies, including core Odoo modules. ```bash $ manifestoo --addons-path /tmp/myaddons --select a tree a (14.0.1.0.0) ├── b (14.0.1.0.0) │ └── contacts (14.0+c) │ └── mail (14.0+c) │ ├── base_setup (14.0+c) │ │ └── web (14.0+c) │ ├── bus (14.0+c) │ │ └── web ⬆ │ └── web_tour (14.0+c) │ └── web ⬆ └── c (14.0.1.0.0) └── mail ⬆ ``` -------------------------------- ### Check License Compatibility with Manifestoo Source: https://github.com/acsone/manifestoo/blob/main/docs/getting-started.md This command uses `moo` (likely an alias or part of Manifestoo) to check license compatibility among addons in `/tmp/myaddons`. It highlights potential conflicts, such as addon 'a' with a GPL-3 license depending on addon 'b' with an 'Other Proprietary' license. ```bash $ moo -d /tmp/myaddons check-licenses a (GPL-3) depends on b (Other Proprietary) ``` -------------------------------- ### CI/CD Integration: Generate Requirements and Migration Order with manifestoo Source: https://context7.com/acsone/manifestoo/llms.txt Examples for generating a `requirements.txt` file for Python dependencies and determining the topological sort order for database migrations using manifestoo. ```bash # Generate requirements.txt for Python dependencies manifestoo -d ./addons list-external-dependencies python > requirements.txt # Migration order for database updates manifestoo -d ./addons list --sort=topological ``` -------------------------------- ### Install Manifestoo using pipx Source: https://github.com/acsone/manifestoo/blob/main/README.md Installs Manifestoo using pipx, the recommended package installer for Python applications. This method ensures a clean environment for the tool. ```console pipx install manifestoo ``` -------------------------------- ### CI/CD Integration: Pre-install Dependencies with manifestoo Source: https://context7.com/acsone/manifestoo/llms.txt Example of using manifestoo in a CI/CD pipeline to pre-install necessary addon dependencies before running Odoo tests. It dynamically lists dependencies separated by commas. ```bash # Pre-install dependencies before running tests odoo-bin -d testdb -i $(manifestoo -d ./addons list-depends --separator=,) --stop-after-init # Install all addons for testing odoo-bin -d testdb -i $(manifestoo -d ./addons list --separator=,) --stop-after-init ``` -------------------------------- ### Check License Compatibility with Manifestoo Source: https://github.com/acsone/manifestoo/blob/main/README.md Checks for license compatibility issues among addons using `manifestoo check-licenses`. The example output shows a conflict between GPL-3 and Other Proprietary licenses. ```console moo -d /tmp/myaddons check-licenses ``` -------------------------------- ### List Direct and Transitive Dependencies Source: https://context7.com/acsone/manifestoo/llms.txt Shows how to list direct and transitive dependencies for selected addons. Useful for pre-installing databases. Supports comma-separated output, including selected addons, and ignoring missing dependencies. ```bash # List direct dependencies (excludes core Odoo addons already in the addons set) manifestoo -d /tmp/myaddons list-depends # Output: # crm # mail # List dependencies with comma separator manifestoo -d /tmp/myaddons list-depends --separator=, # Output: crm,mail # List all transitive dependencies manifestoo -d /tmp/myaddons list-depends --transitive # Output: (includes all nested dependencies) # Include selected addons in the output manifestoo -d /tmp/myaddons list-depends --include-selected # Ignore missing dependencies (useful when some deps are optional) manifestoo -d /tmp/myaddons list-depends --transitive --ignore-missing # List dependencies for specific addon only manifestoo --addons-path /tmp/myaddons --select addon_a list-depends # Output: # addon_b # addon_c ``` -------------------------------- ### List Direct Dependencies with Manifestoo Source: https://github.com/acsone/manifestoo/blob/main/README.md Displays the direct dependencies of addons using `manifestoo list-depends`. The `--separator=,` option formats the output with commas. ```console manifestoo -d /tmp/myaddons list-depends --separator=, ``` -------------------------------- ### Display Addon Dependency Tree with Manifestoo Source: https://github.com/acsone/manifestoo/blob/main/README.md Visualizes the dependency tree of a specified addon using `manifestoo tree`. This command helps understand the hierarchical relationships between addons. ```console manifestoo --addons-path /tmp/myaddons --select a tree ``` -------------------------------- ### List External Dependencies Source: https://context7.com/acsone/manifestoo/llms.txt Demonstrates how to list external dependencies (Python packages, Debian packages) required by addons. Supports filtering by type (python, deb), transitive dependencies, and comma-separated output. ```bash # Create addon with external dependencies mkdir -p /tmp/extaddons/mymodule cat > /tmp/extaddons/mymodule/__manifest__.py << 'EOF' { "name": "My Module", "version": "14.0.1.0.0", "depends": ["base"], "license": "LGPL-3", "external_dependencies": { "python": ["requests", "pandas"], "deb": ["libxml2-dev"] } } EOF # List Python dependencies manifestoo -d /tmp/extaddons list-external-dependencies python # Output: # requests # pandas # List Debian dependencies manifestoo -d /tmp/extaddons list-external-dependencies deb # Output: libxml2-dev # List with transitive dependencies manifestoo -d /tmp/extaddons list-external-dependencies python --transitive # Use comma separator for pip install manifestoo -d /tmp/extaddons list-external-dependencies python --separator=, # Output: requests,pandas ``` -------------------------------- ### List Co-Dependencies Source: https://context7.com/acsone/manifestoo/llms.txt Explains how to list addons that depend on selected addons, useful for impact analysis. Supports transitive and direct co-dependencies, comma-separated output, and excluding the selected addon. ```bash # List all addons that depend on addon_b (transitive by default) manifestoo --addons-path /tmp/myaddons --select addon_b list-codepends # Output: # addon_a # addon_b # List with comma separator manifestoo --addons-path /tmp/myaddons --select addon_b list-codepends --separator=, # Output: addon_a,addon_b # Exclude the selected addon from output manifestoo --addons-path /tmp/myaddons --select addon_b list-codepends --no-include-selected # Output: addon_a # Only direct co-dependencies (not transitive) manifestoo --addons-path /tmp/myaddons --select addon_b list-codepends --no-transitive ``` -------------------------------- ### Select Odoo Core Addons (Console) Source: https://github.com/acsone/manifestoo/blob/main/docs/addons_selection.md This command selects Odoo core addons for a specified Odoo version. It requires the `--select-core-addons` and `--odoo-series` options, followed by the `list` command. The Odoo version is detected from addon metadata or provided explicitly. ```console manifestoo --select-core-addons --odoo-series=13.0 list ``` -------------------------------- ### List Missing Dependencies Source: https://context7.com/acsone/manifestoo/llms.txt Provides functionality to list dependencies that cannot be found within the specified addons path. This helps in identifying and resolving missing addon requirements. ```bash # Print dependencies that cannot be found in the addons path. manifestoo -d /tmp/myaddons list-missing-dependencies ``` -------------------------------- ### CI/CD Integration: Validate Licenses and Development Status with manifestoo Source: https://context7.com/acsone/manifestoo/llms.txt Shows how to integrate manifestoo into CI/CD pipelines to automatically check addon licenses and development status, ensuring compliance and quality. ```bash # Validate licenses in CI manifestoo -d ./addons check-licenses --transitive || exit 1 # Check development status in CI manifestoo -d ./addons check-dev-status --transitive || exit 1 ``` -------------------------------- ### Configure Odoo Series for manifestoo Source: https://context7.com/acsone/manifestoo/llms.txt Shows how to specify the Odoo version for manifestoo's core addon lists, either explicitly, via environment variable, or through auto-detection from addon manifests. ```bash # Explicit Odoo series manifestoo --odoo-series=14.0 --select-core-addons list # Using environment variable export ODOO_VERSION=16.0 manifestoo --select-core-addons list # Auto-detection from addon manifests (default) manifestoo -d /tmp/myaddons tree # Odoo series is detected from addon version strings like "14.0.1.0.0" ``` -------------------------------- ### Visualize Addon Dependency Tree with manifestoo Source: https://context7.com/acsone/manifestoo/llms.txt Generates a visual representation of the dependency tree for selected addons. Supports static and interactive modes, and can fold core addons for a cleaner output. ```bash manifestoo --addons-path /tmp/myaddons --select addon_a tree manifestoo --addons-path /tmp/myaddons --select addon_a tree --fold-core-addons manifestoo --addons-path /tmp/myaddons --select addon_a tree --interactive ``` -------------------------------- ### Select Addons with manifestoo Source: https://context7.com/acsone/manifestoo/llms.txt Defines criteria for selecting which addons manifestoo should operate on. Options include selecting addons from a directory, by specific names, all found addons, or Odoo core addons for a given version. ```bash # Select all addons in a directory manifestoo --select-addons-dir /tmp/myaddons list # Select specific addons by name manifestoo --addons-path /tmp/myaddons --select addon_a,addon_b list-depends # Select all found addons in the addons path manifestoo --addons-path /tmp/myaddons --select-found list # Select Odoo core addons for a specific version manifestoo --select-core-addons --odoo-series=14.0 list ``` -------------------------------- ### Configure Addons Path for manifestoo Source: https://context7.com/acsone/manifestoo/llms.txt Specifies how manifestoo locates addon directories using various methods including directories, comma-separated paths, Odoo configuration files, environment variables, and Python import paths. It also allows disabling auto-detection. ```bash # From a directory (also adds to search path) manifestoo --select-addons-dir /path/to/addons list # From comma-separated paths manifestoo --addons-path /path/to/addons1,/path/to/addons2 --select addon_name list-depends # From Odoo configuration file manifestoo --addons-path-from-odoo-cfg /etc/odoo/odoo.conf --select addon_name list-depends # Using ODOO_RC environment variable export ODOO_RC=/etc/odoo/odoo.conf manifestoo --select addon_name list-depends # From Python environment (default behavior) manifestoo --addons-path-from-import-odoo --select addon_name list-depends # Disable auto-detection from odoo.addons manifestoo --no-addons-path-from-import-odoo -d /path/to/addons list # Use specific Python interpreter for odoo.addons detection manifestoo --addons-path-python /path/to/venv/bin/python --select addon_name list ``` -------------------------------- ### Check Addon License Compatibility with manifestoo Source: https://context7.com/acsone/manifestoo/llms.txt Verifies license compatibility between addons and their dependencies. It can detect incompatible licenses and report them, with an exit code indicating success (0) or failure (non-zero). Supports checking transitive dependencies. ```bash # Create addons with incompatible licenses mkdir -p /tmp/licaddons/{gpl_addon,proprietary_addon} echo '{"name": "GPL Addon", "version": "14.0.1.0.0", "depends": ["proprietary_addon"], "license": "GPL-3"}' > /tmp/licaddons/gpl_addon/__manifest__.py echo '{"name": "Proprietary", "version": "14.0.1.0.0", "depends": ["base"], "license": "Other proprietary"}' > /tmp/licaddons/proprietary_addon/__manifest__.py # Check license compatibility manifestoo -d /tmp/licaddons check-licenses # Check with transitive dependencies manifestoo -d /tmp/licaddons check-licenses --transitive # Example with compatible licenses (no output means success) mkdir -p /tmp/okaddons/{addon1,addon2} echo '{"name": "Addon 1", "version": "14.0.1.0.0", "depends": ["addon2"], "license": "LGPL-3"}' > /tmp/okaddons/addon1/__manifest__.py echo '{"name": "Addon 2", "version": "14.0.1.0.0", "depends": ["base"], "license": "LGPL-3"}' > /tmp/okaddons/addon2/__manifest__.py manifestoo -d /tmp/okaddons check-licenses ``` -------------------------------- ### List Missing Dependencies with manifestoo Source: https://context7.com/acsone/manifestoo/llms.txt Lists addons that are referenced as dependencies but are not found in the specified addon paths. Supports custom separators for output. ```bash manifestoo -d /tmp/myaddons list-missing manifestoo -d /tmp/myaddons list-missing --separator=, ``` -------------------------------- ### List Transitive Co-dependencies with Manifestoo Source: https://github.com/acsone/manifestoo/blob/main/README.md Shows the transitive co-dependencies of a selected addon using `manifestoo list-codepends`. This helps identify modules affected by changes. ```console manifestoo --addons-path /tmp/myaddons --select a list-codepends --separator=, ``` -------------------------------- ### Control Output Verbosity with manifestoo Source: https://context7.com/acsone/manifestoo/llms.txt Illustrates how to adjust the verbosity of manifestoo's output using the -v (verbose) and -q (quiet) flags. Multiple flags increase the level of verbosity or quietness. ```bash # Verbose mode (show info messages) manifestoo -v -d /tmp/myaddons list # Very verbose (multiple -v flags) manifestoo -vv -d /tmp/myaddons list # Quiet mode (suppress warnings) manifestoo -q -d /tmp/myaddons list # Very quiet (multiple -q flags) manifestoo -qq -d /tmp/myaddons list ``` -------------------------------- ### Exclude Specific and Core Addons with manifestoo Source: https://context7.com/acsone/manifestoo/llms.txt Demonstrates how to exclude specific addons or core addons from manifestoo's addon selection. This is useful for focusing on custom addons or excluding built-in modules. ```bash # Exclude specific addons manifestoo -d /tmp/myaddons --select-exclude addon_c list # Output: # addon_a # addon_b # Exclude core addons from selection manifestoo -d /tmp/myaddons --exclude-core-addons list-depends ``` -------------------------------- ### CI/CD Integration: Find Impacted Modules with manifestoo Source: https://context7.com/acsone/manifestoo/llms.txt Demonstrates how to identify modules impacted by code changes using manifestoo's co-dependency analysis. This helps in running targeted tests. ```bash # Find impacted modules after code changes CHANGED_ADDONS="addon_a,addon_b" IMPACTED=$(manifestoo --addons-path ./addons --select $CHANGED_ADDONS list-codepends --separator=,) echo "Modules to test: $IMPACTED" ``` -------------------------------- ### Check Addon Development Status with manifestoo Source: https://context7.com/acsone/manifestoo/llms.txt Ensures that addons do not depend on less mature addons (e.g., a production addon depending on a beta addon). It reports violations and supports checking transitive dependencies and specifying a default development status. ```bash # Create addons with different development statuses mkdir -p /tmp/devaddons/{stable_addon,beta_addon} cat > /tmp/devaddons/stable_addon/__manifest__.py << 'EOF' { "name": "Stable Addon", "version": "14.0.1.0.0", "depends": ["beta_addon"], "license": "LGPL-3", "development_status": "Production/Stable" } EOF cat > /tmp/devaddons/beta_addon/__manifest__.py << 'EOF' { "name": "Beta Addon", "version": "14.0.1.0.0", "depends": ["base"], "license": "LGPL-3", "development_status": "Beta" } EOF # Check development status compatibility manifestoo -d /tmp/devaddons check-dev-status # Check with transitive dependencies manifestoo -d /tmp/devaddons check-dev-status --transitive # Specify default development status for addons without explicit status manifestoo -d /tmp/devaddons check-dev-status --default-dev-status "Beta" ``` === COMPLETE CONTENT === This response contains all available snippets from this library. No additional content exists. Do not make further requests.