{"id":13652276,"url":"https://github.com/decryptus/json-dotenv","last_synced_at":"2025-09-03T14:32:57.164Z","repository":{"id":34244754,"uuid":"173406489","full_name":"decryptus/json-dotenv","owner":"decryptus","description":"Manipulate and extract envfiles in json format.","archived":false,"fork":false,"pushed_at":"2023-04-26T18:33:20.000Z","size":62,"stargazers_count":8,"open_issues_count":0,"forks_count":3,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-10-29T23:43:06.287Z","etag":null,"topics":["cli","dotenv","envfile","environment-variables","json","python"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/decryptus.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2019-03-02T05:16:06.000Z","updated_at":"2023-04-05T13:46:14.000Z","dependencies_parsed_at":"2024-01-03T05:42:11.304Z","dependency_job_id":"fe3f43fb-1582-4f92-bf18-a9b05a2cffda","html_url":"https://github.com/decryptus/json-dotenv","commit_stats":{"total_commits":26,"total_committers":2,"mean_commits":13.0,"dds":"0.038461538461538436","last_synced_commit":"0d71ecdee9995297b324a3e365383a8b67e2b723"},"previous_names":[],"tags_count":22,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/decryptus%2Fjson-dotenv","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/decryptus%2Fjson-dotenv/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/decryptus%2Fjson-dotenv/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/decryptus%2Fjson-dotenv/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/decryptus","download_url":"https://codeload.github.com/decryptus/json-dotenv/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":231827966,"owners_count":18432678,"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":["cli","dotenv","envfile","environment-variables","json","python"],"created_at":"2024-08-02T02:00:57.876Z","updated_at":"2024-12-30T18:01:09.682Z","avatar_url":"https://github.com/decryptus.png","language":"Python","readme":"# json-dotenv project\n\n[![PyPI pyversions](https://img.shields.io/pypi/pyversions/json-dotenv.svg)](https://pypi.org/project/json-dotenv/)\n[![PyPI version shields.io](https://img.shields.io/pypi/v/json-dotenv.svg)](https://pypi.org/project/json-dotenv/)\n[![Documentation Status](https://readthedocs.org/projects/json-dotenv/badge/?version=latest)](https://json-dotenv.readthedocs.io/)\n\njson-dotenv is a free and open-source, we develop it to manipulate and extract envfiles in json format.\n\n## Table of contents\n1. [Installation](#installation)\n2. [Usage](#usage)\n3. [Commands](#commands)\n\n## \u003ca name=\"installation\"\u003e\u003c/a\u003eInstallation\n\n`pip install json-dotenv`\n\n## \u003ca name=\"usage\"\u003e\u003c/a\u003eUsage\n\n```\nusage: json-dotenv [-h] [--allow-envvar] [-c {list,keys,get,set,unset}]\n                   [-k KEY] [-v VALUE] [-f FILE] [--force]\n                   [-l {critical,error,warning,info,debug}]\n                   [--logfile LOGFILE] [-o OUTPUT] [-q {always,never,auto}]\n                   [--format {env,json}]\n                   [{list,keys,get,set,unset}]\n\npositional arguments:\n  {list,keys,get,set,unset}\n                        Commands: list, keys, get, set, unset\n\noptional arguments:\n  -h, --help            show this help message and exit\n  --allow-envvar        Allow environment variables expansion, instead of\n                        False\n  -c {list,keys,get,set,unset}\n                        Commands: list, keys, get, set, unset, instead of list\n                        (deprecated)\n  -k KEY, --key KEY     variable name to set or unset\n  -v VALUE, --value VALUE\n                        variable value to set\n  -f FILE               Location of the environment file or from stdin (-),\n                        instead of .env\n  --force               Force the output even if there is an error\n  -l {critical,error,warning,info,debug}, --loglevel {critical,error,warning,info,debug}\n                        Emit traces with LOGLEVEL details, must be one of:\n                        critical, error, warning, info, debug\n  --logfile LOGFILE     Use log file \u003clogfile\u003e instead of /var/log/json-dotenv\n                        /json-dotenv.log\n  -o OUTPUT             Output result in file or to stdout\n  -q {always,never,auto}\n                        Whether to quote or not the variable values, instead\n                        of always. This does not affect parsing\n  --format {env,json}   Output format env or json, instead of json\n\n```\n\n## \u003ca name=\"commands\"\u003e\u003c/a\u003eCommands\n\nList all environment variables in file foo.env:\n\n`json-dotenv list -f foo.env`\n\n```json\n{\n  \"LANG\": \"en_US.utf8\",\n  \"PATH\": \"/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games\",\n  \"MONIT_DOCKER_CONFIG\": \"vars:\\n  base_url_unix: unix:///var/run/docker.sock\\n  base_url_https: https://127.0.0.1:2376/\\n  tls_verify: true\\nclients:\\n  '@import_client':\\n    - clients.yml.example\\n  local_https:\\n    config:\\n      base_url: ${vars['base_url_https']}\\n      tls:\\n        verify: ${vars['tls_verify']}\\n  foo_https:\\n    '@import_vars': foo_https.vars.yml.example\\n    config:\\n      base_url: ${vars['base_url_https']}\\nctn-groups:\\n  php:\\n    match:\\n      - 'name:foo-php*'\\n      - 'image:*/php-fpm/*'\\n      - 'label:*php-fpm*'\\n  nodejs:\\n    match:\\n      - 'id:4c01db0b339c'\\n      - 'name:node*'\\nconditions:\\n  mem_gt_10pct_and_cpu_gt_60pct:\\n    expr:\\n      - mem_percent \u003e 10\\n      - cpu_percent \u003e 60\\n  mem_usage_100MiB:\\n    expr:\\n      - mem_usage \u003e 100 MiB\\n  status_not_running:\\n    expr:\\n      - status not in (pause,running)\\ncommands:\\n  start_pause:\\n    exec:\\n      - start\\n      - (echo 'foo' \u003e /tmp/bar)\\n      - pause\\n  pause_restart:\\n    exec:\\n      - pause\\n      - restart\\n  remove_force:\\n    exec:\\n      - remove:\\n          kwargs:\\n            force: true\",\n  \"SHELL\": \"/bin/bash\",\n  \"AUTON_CONFIG\": \"general:\\n  listen_addr:   0.0.0.0\\n  listen_port:   8666\\n  max_workers:   5\\n  max_requests:  5000\\n  max_life_time: 3600\\n  lock_timeout:  60\\n  charset:       utf-8\\n  content_type:  'application/json; charset=utf-8'\\n  #auth_basic:      'Restricted'\\n  #auth_basic_file: '/etc/auton/auton.passwd'\\nendpoints:\\n  si.corp-ansible:\\n    plugin: subproc\\n    config:\\n      prog: ansible-playbook\\n      timeout: 3600\\n  si.corp-terraform:\\n    plugin: subproc\\n    config:\\n      prog: terraform\\n      timeout: 3600\\n  curl:\\n    plugin: subproc\\n    config:\\n      prog: curl\\n      timeout: 3600\\nmodules:\\n  job:\\n    routes:\\n      run:\\n        handler:   'job_run'\\n        regexp:    '^run/(?P\u003cendpoint\u003e[^\\\\/]+)/(?P\u003cid\u003e[a-z0-9][a-z0-9\\\\-]{7,63})$'\\n        safe_init: true\\n        auth:      false\\n        op:        'POST'\\n      status:\\n        handler:   'job_status'\\n        regexp:    '^status/(?P\u003cendpoint\u003e[^\\\\/]+)/(?P\u003cid\u003e[a-z0-9][a-z0-9\\\\-]{7,63})$'\\n        auth:      false\\n        op:        'GET'\"\n}\n```\n\nList all environment variables name in file foo.env:\n\n`json-dotenv keys -f foo.env`\n\n```json\n[\n  \"LANG\",\n  \"PATH\",\n  \"MONIT_DOCKER_CONFIG\",\n  \"SHELL\",\n  \"AUTON_CONFIG\"\n]\n```\n\nGet foo.env contents from stdin and set variables AUTON\\_CONFIG=bar and toto=titi:\n\n`cat foo.env | json-dotenv set -f - -k AUTON_CONFIG -v bar -k toto -v titi`\n\n```json\n{\n  \"LANG\": \"en_US.utf8\",\n  \"PATH\": \"/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games\",\n  \"MONIT_DOCKER_CONFIG\": \"vars:\\n  base_url_unix: unix:///var/run/docker.sock\\n  base_url_https: https://127.0.0.1:2376/\\n  tls_verify: true\\nclients:\\n  '@import_client':\\n    - clients.yml.example\\n  local_https:\\n    config:\\n      base_url: ${vars['base_url_https']}\\n      tls:\\n        verify: ${vars['tls_verify']}\\n  foo_https:\\n    '@import_vars': foo_https.vars.yml.example\\n    config:\\n      base_url: ${vars['base_url_https']}\\nctn-groups:\\n  php:\\n    match:\\n      - 'name:foo-php*'\\n      - 'image:*/php-fpm/*'\\n      - 'label:*php-fpm*'\\n  nodejs:\\n    match:\\n      - 'id:4c01db0b339c'\\n      - 'name:node*'\\nconditions:\\n  mem_gt_10pct_and_cpu_gt_60pct:\\n    expr:\\n      - mem_percent \u003e 10\\n      - cpu_percent \u003e 60\\n  mem_usage_100MiB:\\n    expr:\\n      - mem_usage \u003e 100 MiB\\n  status_not_running:\\n    expr:\\n      - status not in (pause,running)\\ncommands:\\n  start_pause:\\n    exec:\\n      - start\\n      - (echo 'foo' \u003e /tmp/bar)\\n      - pause\\n  pause_restart:\\n    exec:\\n      - pause\\n      - restart\\n  remove_force:\\n    exec:\\n      - remove:\\n          kwargs:\\n            force: true\",\n  \"SHELL\": \"/bin/bash\",\n  \"AUTON_CONFIG\": \"bar\",\n  \"toto\": \"titi\"\n}\n```\n\nGet variables LANG and PATH from foo.env:\n\n`json-dotenv get -f foo.env -k LANG -k PATH`\n\n```json\n{\n  \"LANG\": \"en_US.utf8\",\n  \"PATH\": \"/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games\"\n}\n```\n\nUnset variables MONIT\\_DOCKER\\_CONFIG and AUTON\\_CONFIG from file foo.env (file not modified):\n\n`json-dotenv unset -f foo.env -k MONIT_DOCKER_CONFIG -k AUTON_CONFIG`\n\n```json\n{\n  \"LANG\": \"en_US.utf8\",\n  \"PATH\": \"/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games\",\n  \"SHELL\": \"/bin/bash\"\n}\n```\n\nSet variables TOTO and BAR and output result in file bar.json:\n\n`json-dotenv set -f '' -k TOTO -v tutu -k BAR -v foo -o bar.json`\n\nSet variables TOTO and BAR and output result in file bar.env (environment variables format):\n\n`json-dotenv set -f '' -k TOTO -v tutu -k BAR -v foo --format env -o bar.env`\n","funding_links":[],"categories":["Command-line tools"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdecryptus%2Fjson-dotenv","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdecryptus%2Fjson-dotenv","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdecryptus%2Fjson-dotenv/lists"}