{"id":16567436,"url":"https://github.com/badgerati/parcel","last_synced_at":"2025-06-25T13:33:52.350Z","repository":{"id":146595571,"uuid":"211694045","full_name":"Badgerati/Parcel","owner":"Badgerati","description":"Cross-platform PowerShell package manager and provisioner","archived":false,"fork":false,"pushed_at":"2019-10-14T18:52:35.000Z","size":447,"stargazers_count":28,"open_issues_count":3,"forks_count":3,"subscribers_count":3,"default_branch":"develop","last_synced_at":"2025-04-09T02:11:08.340Z","etag":null,"topics":["cross-platform","package-manager","powershell","provisioner","provisioning"],"latest_commit_sha":null,"homepage":"","language":"PowerShell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Badgerati.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-09-29T16:44:10.000Z","updated_at":"2025-03-30T11:02:18.000Z","dependencies_parsed_at":"2023-05-31T20:45:47.718Z","dependency_job_id":null,"html_url":"https://github.com/Badgerati/Parcel","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/Badgerati/Parcel","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Badgerati%2FParcel","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Badgerati%2FParcel/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Badgerati%2FParcel/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Badgerati%2FParcel/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Badgerati","download_url":"https://codeload.github.com/Badgerati/Parcel/tar.gz/refs/heads/develop","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Badgerati%2FParcel/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261883227,"owners_count":23224457,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cross-platform","package-manager","powershell","provisioner","provisioning"],"created_at":"2024-10-11T21:06:35.785Z","updated_at":"2025-06-25T13:33:52.338Z","avatar_url":"https://github.com/Badgerati.png","language":"PowerShell","readme":"# Parcel\n\n[![MIT licensed](https://img.shields.io/badge/license-MIT-blue.svg)](https://raw.githubusercontent.com/Badgerati/Parcel/master/LICENSE.txt)\n[![PowerShell](https://img.shields.io/powershellgallery/dt/parcel.svg?label=PowerShell\u0026colorB=085298)](https://www.powershellgallery.com/packages/Parcel)\n\n\u003e This is still a work in progress!\n\nParcel is a cross-platform PowerShell package manager and provisioner for a number of different package managers.\n\nYou define a package file using YAML, and Parcel will install/uninstall the packages using the relevant provider.\n\n## Support Providers\n\nThese are the currently support package providers (more to come!):\n\n* Chocolatey\n* PowerShell Gallery\n* Scoop\n* Homebrew\n* Docker\n* Windows Features\n* Apt-get\n* Yum\n\n## Install\n\n```powershell\nInstall-Module -Name Parcel\n```\n\n## Usage\n\nYou define the packages using a YAML file - the default is `parcel.yml`, but can be anything. Then, you can run one of the following:\n\n```powershell\nInstall-ParcelPackages [-Path \u003cstring\u003e] [-Environment \u003cstring\u003e] [-IgnoreEnsures] [-WhatIf] [-Verbose]\nUninstall-ParcelPackages [-Path \u003cstring\u003e] [-Environment \u003cstring\u003e] [-IgnoreEnsures] [-WhatIf] [-Verbose]\n```\n\n## Examples\n\nTo install 7zip using Chocolatey, the following could be used. For each `name`/`names` and `provider` are mandatory, and the name *must* match precisely on all providers:\n\n```yaml\n---\npackages:\n- name: 7zip.install\n  provider: choco\n  version: 19.0\n```\n\nor to install Pester from the PowerShell Gallery:\n\n```yaml\n---\npackages:\n- name: pester\n  provider: psgallery\n  version: 4.8.1\n```\n\n### Properties\n\nThe properties that are currently supported are in packages are:\n\n* name\n* provider\n* version (can be a specific version, or empty/latest)\n* source (can be a url, or a repository name, or any other source)\n* args (extra arguments to run, can also be split into `install:` and `uninstall:`)\n* ensure (can be empty, or present/absent)\n* os (can be windows, linux, or macos - package will only run if running on that OS)\n* environment (can be anything, default is 'all'. packages will run based on `-Environment`)\n* when (powershell script that returns a boolean value, if true then package will run)\n* pre/post scritps (allows you to define powershell scripts to run pre/post install/uninstall)\n\nThere is also a scripts block that allows for defining pre/post scripts that run before or after all packages. They will run once at the beginning, and then once at the end.\n\n```yaml\n---\npackages:\n- name: \u003cpackage-name\u003e\n  names: \u003can array of package names\u003e\n  provider: provider-name\u003e\n  version: \u003cversion|empty|latest\u003e\n  source: \u003csource\u003e\n  args:\n    install: \u003ccustom-install-arguments\u003e\n    uninstall: \u003ccustom-uninstall-arguments\u003e\n  ensure: \u003cpresent|absent|neutral (default)\u003e\n  os: \u003clinux|macos|windows|all (default)\u003e\n  environment: \u003cenvironment(s)\u003e\n  when: \u003cpowershell-query\u003e\n  pre:\n    install: \u003cpowershell-script\u003e\n    uninstall: \u003cpowershell-script\u003e\n  post:\n    install: \u003cpowershell-script\u003e\n    uninstall: \u003cpowershell-script\u003e\n\nscripts:\n  pre:\n    install: \u003cpowershell-script\u003e\n    uninstall: \u003cpowershell-script\u003e\n  post:\n    install: \u003cpowershell-script\u003e\n    uninstall: \u003cpowershell-script\u003e\n\nproviders:\n  \u003cname\u003e:\n    source:\n    - name: \u003csource-name\u003e\n      url: \u003csource-url\u003e\n      default: \u003ctrue|false\u003e\n    args:\n      install: \u003ccustom-install-arguments\u003e\n      uninstall: \u003ccustom-uninstall-arguments\u003e\n```\n\nFor `when`, there is a `$parcel` object available that has the following structure:\n\n```powershell\n$parcel = @{\n    os = @{\n        type = # \u003clinux|windows|macos\u003e\n        name = # name of the OS, like Windows, Darwin, Ubuntu\n        version = # only on Windows, the version of the OS\n    }\n    environment = # set from \"-Environment\"\n    package = @{\n        provider = # current provider being used for current package\n    }\n}\n```\n\n## Providers\n\n### Chocolatey\n\n```yaml\npackages:\n- name: 7zip.install\n  provider: \u003cchoco|chocolatey\u003e\n  version: 19.0\n```\n\n### Scoop\n\n```yaml\npackages:\n- name: 7zip\n  provider: scoop\n  version: 19.00\n```\n\n### PowerShell Gallery\n\n```yaml\npackages:\n- name: Pester\n  provider: \u003cpsgallery|ps-gallery\u003e\n  version: 4.8.0\n```\n\n### Homebrew\n\n* Self-installation is not supported due to some quirks with PowerShell\n* Sources are not supported, due to Homebrew not having them\n* Latest does work, but Parcel cannot retrieve the latest version as Homebrew doesn't display it\n  * Since Parcel can't get the latest version, using it will always \"Change\"\n\n```yaml\npackages:\n- name: p7zip\n  provider: \u003cbrew|homebrew\u003e\n```\n\n\u003e If you face issues installing casks, try running: `sudo chown -R $USER:admin /usr/local/Caskroom`\n\n### Docker\n\n* Self-installation is not supported - it's best to include this as another package to be installed\n* Sources are not supported, due to Docker not having them (unless you pre-login to your own registry first)\n\n```yaml\npackages:\n- name: badgerati/pode\n  provider: docker\n  version: 1.1.0\n```\n\n### Windows Features\n\n* Only supported in Windows (Desktop PowerShell only)\n* Version is always latest (as features have no version)\n\n```yaml\npackages:\n- name: Microsoft-Hyper-V\n  provider: \u003cwinfeature|windows-feature|win-feature\u003e\n```\n\n### DISM\n\n* Only supported in Windows (Desktop/Core PowerShell)\n* Version is always latest\n\n```yaml\n- name: ActiveDirectory-PowerShell\n  provider: \u003cdism\u003e\n```\n\n### Apt-Get\n\n* Self-installation is not supported - if `apt-get` is not there, Parcel will fail\n* Sources are not supported\n\n```yaml\npackages:\n- name: vim\n  provider: \u003captget|apt-get\u003e\n  version: latest\n```\n\nor:\n\n```yaml\npackages:\n- name: vim\n  provider: \u003captget|apt-get\u003e\n  version: 2:7.4.1689-3ubuntu1.3\n```\n\n### Yum\n\n* Self-installation is not supported - if `yum` is not there, Parcel will fail\n* Sources are not supported\n\n```yaml\npackages:\n- name: ansible\n  provider: yum\n```\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbadgerati%2Fparcel","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbadgerati%2Fparcel","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbadgerati%2Fparcel/lists"}