Skip to main content

nginx config file formatter/beautifier with no additional dependencies.

Project description

nginx config file formatter/beautifier

nginx config file formatter/beautifier written in Python with no additional dependencies. It can be used as library or standalone script. It formats nginx configuration files in consistent way, described below:

  • All lines are indented in uniform manner, with 4 spaces per level. Number of spaces is customizable.
  • Neighbouring empty lines are collapsed to at most two empty lines.
  • Curly braces placement follows Java convention.
  • Whitespaces are collapsed, except in comments and quotation marks.

Installation

Python 3.4 or later is needed to run this program. The easiest way is to download package from PyPI:

pip3 install nginxfmt

Manual installation

The simplest form of installation would be copying nginxfmt.py to your scripts' directory. It has no 3-rd party dependencies.

You can also clone the repository and symlink the executable:

cd
git clone https://github.com/slomkowski/nginx-config-formatter.git
ln -s ~/nginx-config-formatter/nginxfmt.py ~/bin/nginxfmt.py

Usage as standalone script

It can format one or several files. Result is by default saved to the original file, but can be redirected to stdout. It can also function in piping mode, with --pipe switch.

usage: nginxfmt.py [-h] [-v] [-] [-p | -b] [-i INDENT] [config_files ...]

Formats nginx configuration files in consistent way.

positional arguments:
  config_files          configuration files to format

optional arguments:
  -h, --help            show this help message and exit
  -v, --verbose         show formatted file names
  -, --pipe             reads content from standard input, prints result to stdout
  -p, --print-result    prints result to stdout, original file is not changed
  -b, --backup-original
                        backup original config file as filename.conf~

formatting options:
  -i INDENT, --indent INDENT
                        specify number of spaces for indentation

Using as library

Main logic is within Formatter class, which can be used in 3rd-party code.

import nginxfmt

# initializing with standard FormatterOptions
f = nginxfmt.Formatter()

# format from string
formatted_text = f.format_string(unformatted_text)

# format file and save result to the same file
f.format_file(unformatted_file_path)

# format file and save result to the same file, original unformatted content is backed up
f.format_file(unformatted_file_path, backup_path)

Customizing formatting options:

import nginxfmt

fo = nginxfmt.FormatterOptions()
fo.indentation = 2  # 2 spaces instead of default 4

# initializing with standard FormatterOptions
f = nginxfmt.Formatter(fo)

Reporting bugs

Please create issue under https://github.com/slomkowski/nginx-config-formatter/issues. Be sure to add config snippets to reproduce the issue, preferably:

  • snippet do be formatted
  • actual result with invalid formatting
  • desired result

Credits

Copyright 2021 Michał Słomkowski. License: Apache 2.0. Previously published under https://github.com/1connect/nginx-config-formatter.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

nginxfmt-1.2.3.tar.gz (9.7 kB view details)

Uploaded Source

Built Distribution

nginxfmt-1.2.3-py3-none-any.whl (10.7 kB view details)

Uploaded Python 3

File details

Details for the file nginxfmt-1.2.3.tar.gz.

File metadata

  • Download URL: nginxfmt-1.2.3.tar.gz
  • Upload date:
  • Size: 9.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.3 CPython/3.12.6 Linux/6.6.51-1-lts

File hashes

Hashes for nginxfmt-1.2.3.tar.gz
Algorithm Hash digest
SHA256 d7f13a6a6172a9267fe621a18102d014f099f2fe4702b0dc7a107f7d0cce0e0d
MD5 a940b6ad5692ffcc4b04fa06317940cc
BLAKE2b-256 e84eafb3f89bc6f2a71ffa9b9b15d26b6ed0fc85f700172f177ab7e76eaccbe8

See more details on using hashes here.

Provenance

File details

Details for the file nginxfmt-1.2.3-py3-none-any.whl.

File metadata

  • Download URL: nginxfmt-1.2.3-py3-none-any.whl
  • Upload date:
  • Size: 10.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.3 CPython/3.12.6 Linux/6.6.51-1-lts

File hashes

Hashes for nginxfmt-1.2.3-py3-none-any.whl
Algorithm Hash digest
SHA256 9276e7084d20d6613e7db3a2e900c62dcdcd07e2f5639aa5016e871c0029af4f
MD5 d26d1acc9ccfda85004918e8180822d5
BLAKE2b-256 7692f5227b197cf9122960f1a16824e8a2240d859a076f1ce8c8fdbfd460da72

See more details on using hashes here.

Provenance

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page