{"id":47699817,"url":"https://github.com/craftamap/pluploader","last_synced_at":"2026-04-02T17:04:05.595Z","repository":{"id":45432766,"uuid":"254344276","full_name":"craftamap/pluploader","owner":"craftamap","description":"A simple plugin uploader for atlassian server tools written in python","archived":false,"fork":false,"pushed_at":"2024-07-09T18:59:27.000Z","size":2432,"stargazers_count":11,"open_issues_count":12,"forks_count":2,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-01-14T11:39:18.106Z","etag":null,"topics":["atlas","atlas-cli","atlassian","atlassian-server","confluence","confluenceserver","hacktoberfest","jira","linux","macos","pluploader","python","python3","windows"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/craftamap.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-04-09T10:46:35.000Z","updated_at":"2024-02-13T19:09:42.000Z","dependencies_parsed_at":"2023-01-25T13:15:33.682Z","dependency_job_id":null,"html_url":"https://github.com/craftamap/pluploader","commit_stats":null,"previous_names":["livelyapps/pluploader"],"tags_count":15,"template":false,"template_full_name":null,"purl":"pkg:github/craftamap/pluploader","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/craftamap%2Fpluploader","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/craftamap%2Fpluploader/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/craftamap%2Fpluploader/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/craftamap%2Fpluploader/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/craftamap","download_url":"https://codeload.github.com/craftamap/pluploader/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/craftamap%2Fpluploader/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31311047,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-02T12:59:32.332Z","status":"ssl_error","status_checked_at":"2026-04-02T12:54:48.875Z","response_time":89,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["atlas","atlas-cli","atlassian","atlassian-server","confluence","confluenceserver","hacktoberfest","jira","linux","macos","pluploader","python","python3","windows"],"created_at":"2026-04-02T17:04:05.096Z","updated_at":"2026-04-02T17:04:05.576Z","avatar_url":"https://github.com/craftamap.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003c!-- markdownlint-configure-file\n{\n  \"no-bare-urls\": false,\n  \"no-trailing-punctuation\": false,\n  \"line-length\": false\n}\n--\u003e\n\n# pluploader\n\n![PyPI version](https://img.shields.io/pypi/v/pluploader?style=flat-square) ![Upload Python Package](https://img.shields.io/github/workflow/status/craftamap/pluploader/Python%20package/master?style=flat-square)\n\n![pluploader](.github/images/pluploader-demo-1.gif)\n\nA advanced command-line plugin uploader/installer/manager for atlassian\nserver and cloud instances (Confluence/Jira) written in python(3).\n\n## Installation\n### pipx (recommended)\n\n```bash\npipx install pluploader\n```\n\n\n### pip\n\n```bash\npip3 install pluploader\n```\n\n### brew (MacOS)\n\n```bash\nbrew tap craftamap/tap \u0026\u0026 brew install pluploader\n```\n\n### Docker\n\nIf you do not want to install python3 or pip, you can also pull the latest\ndocker image from dockerhub or github:\n\n```bash\ndocker pull craftamap/pluploader:latest\n# OR\ndocker pull ghcr.io/craftamap/pluploader/pluploader:v0.8.3\n```\n\npluploader can then be run by executing\n\n```bash\ndocker run -v \"$(pwd)\":/workdir -it craftamap/pluploader:v0.8.3\n```\n\n## Usage\n\nFor a in-depth explanation, see `pluploader --help`\n\n\u003e ℹ This documentation describes the master branch, and not (necessarily) the latest release.\n\n### Global Options\n\nYou can specify various global options:\n\n- `--base-url \u003cbase-url\u003e`, default: `http://localhost:8090`  \n  For Confluence Cloud Instances, make sure to append the path, `/wiki`, to your base url.\n- `--user \u003cusername\u003e`, default: `admin`\n- `--password \u003cpassword\u003e`, default: `admin`  \n  It is recommended to use Access Tokens instead of your password.\n  Newer versions of the server / datacenter products support creating Access Tokens\n  called Personal Access Tokens -\n  [Read more about them here](https://confluence.atlassian.com/enterprise/using-personal-access-tokens-1026032365.html).  \n  For cloud instances, it is required to use Access Tokens. Those are called\n  [API Tokens and can be created here](https://id.atlassian.com/manage-profile/security/api-tokens).\n  If you do not want to put your password or access token in the command line\n  plaintext, you can also use...\n- `--ask-for-password`\n\nAll Global Options can be overwritten by using a configuration file or enviroment variables.\nSee more in [Configuration](#configuration) and [Environment variables](#environment-variables)\n\n### Configuration\n\nIf you don't want to write the username or password (or any other global\nparameter) each time, you can use a filed called `.pluprc`, either placed in\nyour current maven project or/and in your home directory. A example looks like\nthis:\n\n```bash\nbase_url: https://example.com:8090\nuser: admin\npassword: admin\n```\n\n### Environment variables\n\nYou can also specify username, password and base url by using `PLUP_USER`,\n`PLUP_PASSWORD` and `PLUP_BASEURL`.\n\n### Uploading plugins\n\nIf you are in a maven project, the basic usage is fairly simple. Just type:\n\n```bash\npluploader --user admin --password admin\n```\n\nThe pluploader then uploads and enables the current artifact specified in the\npom.xml\n\nIf you are not in a maven directory currently, but you want to upload a specific\nfile, you can also use the `-f plugin.jar` flag.\n\nIf you want to confirm your upload, you can also use the `-i` /\n`--interactive` flag.\n\nIt is recommended to use the pluploader with maven. The usage looks like:\n\n```bash\natlas-mvn clean package \u0026\u0026 pluploader\n```\n\n#### Installing apps from the marketplace\n\n![Uploading  gifs](.github/images/pluploader-demo-3.gif)\n\npluploader supports downloading apps from the atlassian marketplace to your local\nmachine and installing them afterwards. You need to supply either `--mpac-key`,\nwhich is the normal addon-key, or `--mpac-id` (experimental), which is the\nnumeric id of an marketplace id (72307 https://marketplace.atlassian.com/apps/72307)\n\n```bash\npluploader --mpac-key com.atlassian.confluence.extra.team-calendars\n```\n\n**NOTE**:\nIf you specify one of the global options, you need to add the `install`-command:\n\n```bash\npluploader --base-url https://your-confluence.com:8090 install\n```\n\nYou can work around this by using the configuration file or by using environment variables.\n\n### Installing a connect descriptor to a cloud instance.\n\n\n![Uploading to cloud](.github/images/pluploader-demo-4.gif)\n\npluploader also supports installing atlassian-connect plugins to cloud instances\nby enabling cloud support with `--cloud` and providing the descriptor url with `--plugin-uri`.\n\n```bash\npluploader install --cloud --plugin-uri https://your.ngrok.here\n```\n\n### Managing plugins\n\n![Managing plugins](.github/images/pluploader-demo-2.gif)\n\npluploader can also replace the usage of the universal plugin manager completely\nby using the subcommands `list`, `info`, `enable`, `disable`, and `uninstall`\n(`enable` and `disable` are not supported in the atlassian cloud).\n\nTo get a list of all installed plugins of the configured instance, just type:\n\n```bash\npluploader list\n```\n\nA green checkmark indicates that the plugin is enabled, while a exclamation mark\nindicates that the plugin is disabled.\n\nIn order to retrieve more information about a specific plugin, you can use the\ncommand `info`.\n\n```bash\npluploader info com.example.plugin.key\n```\n\nThe plugin key can be omitted in a maven directory, if the parameter\n`atlassian.plugin.key` is set in plaintext.\n\nThe commands `enable`, `disable` or `uninstall` follow the same syntax.\n\n### Safe Mode\n\npluploader also supports disabling or enabling all apps using Safe Mode (does not work in cloud).\n\nTo retrieve the status if safe-mode is enabled at the moment, use\n\n```bash\npluploader safe-mode status\n```\n\nYou can enable and disable safe mode by using\n\n```bash\npluploader safe-mode enable\n```\n\nAnd\n\n```bash\npluploader safe-mode disable\n# OR\npluploader safe-mode disable --keep-state\n```\n\n### Licenses\n\nYou can also use the pluploader to get and set licenses for your plugins.\n\nTo get the current license information:\n\n```bash\npluploader license info com.example.plugin.key\n```\n\nTo set a license, use the `update` functionality.\n\n```bash\npluploader license update com.example.plugin.key --license \"AAA...\"\n```\n\n\u003e ℹ Pro tip: Use `xargs` to read a license from a file by using\n\u003e\n\u003e ```bash\n\u003e cat license.txt | xargs pluploader license update --license\n\u003e ```\n\nYou can also apply [timebomb licenses](https://developer.atlassian.com/platform/marketplace/timebomb-licenses-for-testing-server-apps/)\n\nby using\n\n```bash\npluploader license timebomb com.example.plugin.key --timebomb threehours\n```\n\nYou can choose between 3 hours (threehours), 60 seconds (sixtyseconds) and\n10 seconds (tenseconds)\n\nTo remove an applied license, you can use:\n\n```bash\npluploader license delete com.example.plugin.key\n```\n\n#### Access Tokens (Cloud Development Licenses)\n\nYou can also use pluploader to list, get, update/set and delete access tokens of apps.\n\n```bash\npluploader license access-token list\npluploader license access-token info com.example.plugin.key\npluploader license access-token update com.example.plugin.key --token \"token\"\npluploader license access-token delete com.example.plugin.key\n```\n\n### API\n\nYou can interact with the HTTP/REST-API of your configured instance by using\n`pluploader api ENDPOINT [BODY]`. The arguments work a bit like the\nwell-known tool `curl`. You can use `-X METHOD` to choose the HTTP method and\n`-H \"HEADER-NAME: HEADER-VALUE\"` to add a HTTP header.\n\n```bash\npluploader api -X POST -H \"content-type: application/json\" rest/api/content/ '{ \"type\":\"page\", \"title\":\"My Test Page\", \"space\":{\"key\":\"TEST\"}, \"body\":{ \"storage\": { \"value\":\"\u003cp\u003eThis is a new page\u003c/p\u003e\", \"representation\":\"storage\" } } }'\n```\n\n### RPC\n\n`pluploader rpc` allows interaction with the (deprecated, but  still\nfunctional) confluence rpc api by providing the method name and it's\nrequired arguments. You do not need to care about the rpc-authentication,\nas this command takes care of it. Therefore, you can also obmit the first\nparameter (String token) required for many commands.\n\n\n```bash\npluploader rpc addUser '{\"name\":\"charlie\", \"fullname\": \"charlie\", \"email\":\"charlie@charlie\"}' charlie\n```\n\n### Scheduled Jobs (Confluence - Experimental)\n\n\u003e ℹ This feature is currently experimental and only works in specific version of\n\u003e Confluence (tested on Confluence 7.5).\n\nPluploader can also be used to retrieve information about confluence jobs and\nexecute them.\n\nYou can grab a list of all jobs by running\n\n```bash\npluploader job list\n```\n\nAvailable options are:\n\n- `--hide-default` - Hides confluence internal jobs\n- `--print-all-infos` - print more informations\n\nYou can also run jobs by running\n\n```bash\npluploader job run\n```\n\nGet more information about a job by running\n\n```bash\npluploader job info\n```\n\nAnd disable or enable jobs by running\n\n```bash\npluploader job enable\n# AND\npluploader job disable\n```\n\nA job can be specified by either using `--id \u003cjob id\u003e` or by using\n`--idx \u003cjob index in list\u003e`. If no job is specified, you will be asked\ninteractively.\n\n\n## Development\n\npluploader uses [poetry](https://python-poetry.org/) as it's package manager. As a command line argument parser, [Typer](https://typer.tiangolo.com/) is used.\n\n## FAQ\n\n### Why would I use the pluploader over X?\n\nOf course, you can use whatever tool you want to.\n\n### Why would I use the pluploader over the UPM?\n\nIt's a faster workflow.\n\n### Why would I use the pluploader over the Atlas-CLI?\n\natlas-cli is awesome, but sadly it's deprecated. Also since you can use your own\nmaven command with pluploader, you therefore can skip tests, make a mvn clean,\nand many more.\n\nIn general, pluploader is just a bit more flexiable.\n\n### Why would I use the pluploader over QuickReload?\n\nQuickReload is cool, but some of us prefer to use docker instances or atlas-standalone\nrather than atlas-run.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcraftamap%2Fpluploader","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcraftamap%2Fpluploader","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcraftamap%2Fpluploader/lists"}