From afee0a47c9ff662203ea0f12725706b2372b3bcc Mon Sep 17 00:00:00 2001 From: Denys Vitali Date: Mon, 30 Jan 2017 15:38:05 +0100 Subject: [PATCH 1/6] Add support for nginx --- .../nginx/expected/nginx.conf | 203 ++++++++++++++++++ .../nginx/original/nginx.conf | 194 +++++++++++++++++ package.json | 3 +- script/build-options.js | 2 +- src/beautifiers/index.coffee | 1 + src/beautifiers/nginx-beautify.coffee | 22 ++ src/languages/index.coffee | 1 + src/languages/nginx.coffee | 38 ++++ 8 files changed, 462 insertions(+), 2 deletions(-) create mode 100644 examples/nested-jsbeautifyrc/nginx/expected/nginx.conf create mode 100644 examples/nested-jsbeautifyrc/nginx/original/nginx.conf create mode 100644 src/beautifiers/nginx-beautify.coffee create mode 100644 src/languages/nginx.coffee diff --git a/examples/nested-jsbeautifyrc/nginx/expected/nginx.conf b/examples/nested-jsbeautifyrc/nginx/expected/nginx.conf new file mode 100644 index 0000000..866efd8 --- /dev/null +++ b/examples/nested-jsbeautifyrc/nginx/expected/nginx.conf @@ -0,0 +1,203 @@ + +#user html; +worker_processes 1; + +#error_log logs/error.log; +#error_log logs/error.log notice; +error_log logs/error.log info; + +#pid logs/nginx.pid; + +events +{ + worker_connections 1024; +} + + +http +{ + include mime.types; + default_type application/octet-stream; + + #log_format main '$remote_addr - $remote_user [$time_local] "$request" ' + # '$status $body_bytes_sent "$http_referer" ' + # '"$http_user_agent" "$http_x_forwarded_for"'; + + #access_log logs/access.log main; + sendfile on; + #tcp_nopush on; + + #keepalive_timeout 0; + keepalive_timeout 65; + + #gzip on; + + server + { + listen 80; + server_name localhost; + + #charset koi8-r; + + #access_log logs/host.access.log main; + location / + { + root /usr/share/nginx/html; + index index.html index.htm; + } + + #error_page 404 /404.html; + + # redirect server error pages to the static page /50x.html + # + error_page 500 502 503 504 /50x.html; + location = /50x.html + { + root /usr/share/nginx/html; + } + + # proxy the PHP scripts to Apache listening on 127.0.0.1:80 + # + #location ~ \.php$ { + # proxy_pass http://127.0.0.1; + #} + + # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 + # + #location ~ \.php$ { + # root html; + # fastcgi_pass 127.0.0.1:9000; + # fastcgi_index index.php; + # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; + # include fastcgi_params; + #} + # deny access to .htaccess files, if Apache's document root + # concurs with nginx's one + # + #location ~ /\.ht { + # deny all; + #} + } + + + server + { + listen 80; + include mime.types; + server_name dv; + location /nginxstatic/ + { + alias /srv/http/dv/; + limit_rate 250k; + } + + location / + { + #root /srv/http/dv/; + #index index.html; + limit_rate 1M; + #limit_conn addr 1; + proxy_pass http://localhost:3000/; + } + } + + server + { + listen 80; + server_name ip.dv; + root /home/http/ip/; + include mime.types; + location / + { + try_files $uri $uri/ /index.php; + } + location ~ .php$ + { + try_files $uri =404; + fastcgi_pass unix:/var/run/php5-fpm/socket_name.socket; + fastcgi_split_path_info ^(.+\.php)(/.+)$; + fastcgi_index index.php; + fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; + include fastcgi_params; + } + } + + server + { + listen 80; + server_name pma.dv; + location / + { + root /home/http/pma/; + index index.php; + } + + location ~ \.php$ + { + fastcgi_pass unix:/run/php-fpm/php-fpm.sock; + fastcgi_index index.php; + fastcgi_param SCRIPT_FILENAME /home/http/pma/$fastcgi_script_name; + include fastcgi_params; + } + } + server + { + listen 80; + server_name swissecurity.coelis; + location / + { + root /srv/http/swissecurity-fm/; + index index.html; + } + } + + server + { + listen 80; + server_name p1.dv; + location / + { + proxy_pass http://127.0.0.1:1337/; + } + } + + + server + { + listen 80; + server_name s.dev; + location / + { + proxy_pass http://127.0.0.1:1337/; + } + } + + + # another virtual host using mix of IP-, name-, and port-based configuration + # + #server { + # listen 8000; + # listen somename:8080; + # server_name somename alias another.alias; + # location / { + # root html; + # index index.html index.htm; + # } + #} + # HTTPS server + # + #server { + # listen 443 ssl; + # server_name localhost; + # ssl_certificate cert.pem; + # ssl_certificate_key cert.key; + # ssl_session_cache shared:SSL:1m; + # ssl_session_timeout 5m; + # ssl_ciphers HIGH:!aNULL:!MD5; + # ssl_prefer_server_ciphers on; + # location / { + # root html; + # index index.html index.htm; + # } + #} +} diff --git a/examples/nested-jsbeautifyrc/nginx/original/nginx.conf b/examples/nested-jsbeautifyrc/nginx/original/nginx.conf new file mode 100644 index 0000000..42475dc --- /dev/null +++ b/examples/nested-jsbeautifyrc/nginx/original/nginx.conf @@ -0,0 +1,194 @@ + +#user html; +worker_processes 1; + +#error_log logs/error.log; +#error_log logs/error.log notice; +error_log logs/error.log info; + +#pid logs/nginx.pid; + + +events { + worker_connections 1024; +} + + +http { + include mime.types; + default_type application/octet-stream; + + #log_format main '$remote_addr - $remote_user [$time_local] "$request" ' + # '$status $body_bytes_sent "$http_referer" ' + # '"$http_user_agent" "$http_x_forwarded_for"'; + + #access_log logs/access.log main; + + sendfile on; + #tcp_nopush on; + + #keepalive_timeout 0; + keepalive_timeout 65; + + #gzip on; + + server { + listen 80; + server_name localhost; + + #charset koi8-r; + + #access_log logs/host.access.log main; + + location / { + root /usr/share/nginx/html; + index index.html index.htm; + } + + #error_page 404 /404.html; + + # redirect server error pages to the static page /50x.html + # + error_page 500 502 503 504 /50x.html; + location = /50x.html { + root /usr/share/nginx/html; + } + + # proxy the PHP scripts to Apache listening on 127.0.0.1:80 + # + #location ~ \.php$ { + # proxy_pass http://127.0.0.1; + #} + + # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 + # + #location ~ \.php$ { + # root html; + # fastcgi_pass 127.0.0.1:9000; + # fastcgi_index index.php; + # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; + # include fastcgi_params; + #} + + # deny access to .htaccess files, if Apache's document root + # concurs with nginx's one + # + #location ~ /\.ht { + # deny all; + #} + } + + + server { + listen 80; + include mime.types; + server_name dv; + location /nginxstatic/ { + alias /srv/http/dv/; + limit_rate 250k; + } + + location / { + #root /srv/http/dv/; + #index index.html; + limit_rate 1M; + #limit_conn addr 1; + proxy_pass http://localhost:3000/; + } + } + + server { + listen 80; + server_name ip.dv; + root /home/http/ip/; + include mime.types; + location / { + try_files $uri $uri/ /index.php; + } + location ~ .php$ { + try_files $uri =404; + fastcgi_pass unix:/var/run/php5-fpm/socket_name.socket; + fastcgi_split_path_info ^(.+\.php)(/.+)$; + fastcgi_index index.php; + fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; + include fastcgi_params; + } + } + + server { + listen 80; + server_name pma.dv; + location / { + root /home/http/pma/; + index index.php; + } + + location ~ \.php$ { + fastcgi_pass unix:/run/php-fpm/php-fpm.sock; + fastcgi_index index.php; + fastcgi_param SCRIPT_FILENAME /home/http/pma/$fastcgi_script_name; + include fastcgi_params; + } + } + server { + listen 80; + server_name swissecurity.coelis; + location / { + root /srv/http/swissecurity-fm/; + index index.html; + } + } + + server { + listen 80; + server_name p1.dv; + location / { + proxy_pass http://127.0.0.1:1337/; + } + } + + + server { listen 80; + server_name s.dev; + location / { + proxy_pass http://127.0.0.1:1337/; + } + } + + + # another virtual host using mix of IP-, name-, and port-based configuration + # + #server { + # listen 8000; + # listen somename:8080; + # server_name somename alias another.alias; + + # location / { + # root html; + # index index.html index.htm; + # } + #} + + + # HTTPS server + # + #server { + # listen 443 ssl; + # server_name localhost; + + # ssl_certificate cert.pem; + # ssl_certificate_key cert.key; + + # ssl_session_cache shared:SSL:1m; + # ssl_session_timeout 5m; + + # ssl_ciphers HIGH:!aNULL:!MD5; + # ssl_prefer_server_ciphers on; + + # location / { + # root html; + # index index.html index.htm; + # } + #} + +} diff --git a/package.json b/package.json index a91d8a9..3101e28 100644 --- a/package.json +++ b/package.json @@ -140,6 +140,7 @@ "lodash": "^4.14.2", "loophole": "^1.0.0", "marko-prettyprint": "^1.2.0", + "nginxbeautify": "^2.0.0", "node-dir": "^0.1.16", "node-cljfmt": "^0.5.3-1", "node-uuid": "^1.4.3", @@ -305,4 +306,4 @@ "lint": "coffeelint src/ spec/", "code-docs": "codo && open docs/code/index.html" } -} +} \ No newline at end of file diff --git a/script/build-options.js b/script/build-options.js index a0d3d6c..526e0d8 100644 --- a/script/build-options.js +++ b/script/build-options.js @@ -215,7 +215,7 @@ buildOptionsForBeautifiers = function(beautifiers, allLanguages) { if (_.isArray(objValue)) { return _.uniq(objValue.concat(srcValue)); } - } + } for (j = 0, len1 = allLanguages.length; j < len1; j++) { lang = allLanguages[j]; namespaceDest = lang.namespace; diff --git a/src/beautifiers/index.coffee b/src/beautifiers/index.coffee index 077190e..bf8a550 100644 --- a/src/beautifiers/index.coffee +++ b/src/beautifiers/index.coffee @@ -53,6 +53,7 @@ module.exports = class Beautifiers extends EventEmitter 'js-beautify' 'jscs' 'lua-beautifier' + 'nginx-beautify' 'ocp-indent' 'perltidy' 'php-cs-fixer' diff --git a/src/beautifiers/nginx-beautify.coffee b/src/beautifiers/nginx-beautify.coffee new file mode 100644 index 0000000..9c4985f --- /dev/null +++ b/src/beautifiers/nginx-beautify.coffee @@ -0,0 +1,22 @@ +"use strict" +Beautifier = require('./beautifier') + +module.exports = class NginxBeautify extends Beautifier + name: "Nginx Beautify" + link: "https://github.com/denysvitali/nginxbeautify" + + options: { + Nginx: true + } + + beautify: (text, language, options) -> + + return new @Promise((resolve, reject) -> + Beautify = require("nginxbeautify") + instance = new Beautify(options); + try + resolve(instance.parse(text)) + catch error + # Error occurred + reject(error) + ) diff --git a/src/languages/index.coffee b/src/languages/index.coffee index d41c759..9214e89 100644 --- a/src/languages/index.coffee +++ b/src/languages/index.coffee @@ -47,6 +47,7 @@ module.exports = class Languages "markdown" 'marko' "mustache" + "nginx" "nunjucks" "objective-c" "ocaml" diff --git a/src/languages/nginx.coffee b/src/languages/nginx.coffee new file mode 100644 index 0000000..f9a9833 --- /dev/null +++ b/src/languages/nginx.coffee @@ -0,0 +1,38 @@ +module.exports = { + + name: "Nginx" + namespace: "nginx" + + ### + Supported Grammars + ### + grammars: [ + "nginx" + ] + + ### + Supported extensions + ### + extensions: [ + "conf" + ] + + defaultBeautifier: "Nginx Beautify" + + options: + spaces: + title: "Spaces" + type: "number" + default: 0 + description: "Indent with spaces" + tabs: + title: "Tabs" + type: "number" + default: 1 + description: "Indent with tabs" + dontJoinCurlyBracet: + title: "Don't join curly brackets" + type: "boolean" + default: true + descriotion: "" +} From 1a687b8327f009d8750073986c2afdfa27b8f130 Mon Sep 17 00:00:00 2001 From: Denys Vitali Date: Mon, 30 Jan 2017 15:39:06 +0100 Subject: [PATCH 2/6] Add contributor --- package.json | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 3101e28..8372835 100644 --- a/package.json +++ b/package.json @@ -114,6 +114,10 @@ { "name": "Victor Uriarte", "url": "https://github.com/vmuriart" + }, + { + "name": "Denys Vitali", + "url": "https://github.com/denysvitali" } ], "engines": { @@ -306,4 +310,4 @@ "lint": "coffeelint src/ spec/", "code-docs": "codo && open docs/code/index.html" } -} \ No newline at end of file +} From 0dd50d6bc6f623d04b57133ec645029debd5fe45 Mon Sep 17 00:00:00 2001 From: Denys Vitali Date: Mon, 30 Jan 2017 15:41:20 +0100 Subject: [PATCH 3/6] Add nginx to README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index da87ff0..724fd77 100644 --- a/README.md +++ b/README.md @@ -96,6 +96,7 @@ See [all supported options in the documentation at `docs/options.md`](docs/opti | Markdown | `GitHub Markdown` |`.markdown`, `.md` | [`Remark`](https://github.com/wooorm/remark), [`Tidy Markdown`](https://github.com/slang800/tidy-markdown) (Default) | | Marko | `Marko` |`.marko` | [`Marko Beautifier`](https://github.com/marko-js/marko-prettyprint) (Default) | | Mustache | `HTML (Mustache)` |`.mustache` | [`JS Beautify`](https://github.com/beautify-web/js-beautify) (Default) | +| Nginx | `nginx` |`.conf` | [`Nginx Beautify`](https://github.com/denysvitali/nginxbeautify) (Default) | | Nunjucks | `Nunjucks`, `Nunjucks Templates`, `HTML (Nunjucks Templates)` |`.njk`, `.nunjucks` | [`Pretty Diff`](https://github.com/prettydiff/prettydiff) (Default) | | Objective-C | `Objective-C`, `Objective-C++` |`.m`, `.mm`, `.h` | [`Uncrustify`](https://github.com/uncrustify/uncrustify) (Default), [`clang-format`](https://clang.llvm.org/docs/ClangFormat.html) | | OCaml | `OCaml` |`.ml` | [`ocp-indent`](https://www.typerex.org/ocp-indent.html) (Default) | From ed45ccec8725f7ca01e18d91255107f8bbb6c750 Mon Sep 17 00:00:00 2001 From: Denys Vitali Date: Mon, 30 Jan 2017 15:46:48 +0100 Subject: [PATCH 4/6] Add nginx to docs --- docs/options.md | 227 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 227 insertions(+) diff --git a/docs/options.md b/docs/options.md index 6bb63b3..e3e4729 100644 --- a/docs/options.md +++ b/docs/options.md @@ -8511,6 +8511,154 @@ Maximum characters per line (0 disables) (Supported by JS Beautify) } ``` +#### [Nginx](#nginx) + +**Supported Beautifiers**: [`Nginx Beautify`](#nginx-beautify) + +| Option | Nginx Beautify | +| --- | --- | +| `disabled` | :white_check_mark: | +| `default_beautifier` | :white_check_mark: | +| `beautify_on_save` | :white_check_mark: | +| `dontJoinCurlyBracet` | :white_check_mark: | +| `spaces` | :white_check_mark: | +| `tabs` | :white_check_mark: | + +**Description**: + +Options for language Nginx + +##### [Disable Beautifying Language](#disable-beautifying-language) + +**Important**: This option is only configurable from within Atom Beautify's setting panel. + +**Type**: `boolean` + +**Description**: + +Disable Nginx Beautification + +**How to Configure** + +1. You can open the [Settings View](https://github.com/atom/settings-view) by navigating to +*Edit > Preferences (Linux)*, *Atom > Preferences (OS X)*, or *File > Preferences (Windows)*. +2. Go into *Packages* and search for "*Atom Beautify*" package. +3. Find the option "*Disable Beautifying Language*" and change it to your desired configuration. + +##### [Default Beautifier](#default-beautifier) + +**Important**: This option is only configurable from within Atom Beautify's setting panel. + +**Default**: `Nginx Beautify` + +**Type**: `string` + +**Enum**: `Nginx Beautify` + +**Description**: + +Default Beautifier to be used for Nginx + +**How to Configure** + +1. You can open the [Settings View](https://github.com/atom/settings-view) by navigating to +*Edit > Preferences (Linux)*, *Atom > Preferences (OS X)*, or *File > Preferences (Windows)*. +2. Go into *Packages* and search for "*Atom Beautify*" package. +3. Find the option "*Default Beautifier*" and change it to your desired configuration. + +##### [Beautify On Save](#beautify-on-save) + +**Important**: This option is only configurable from within Atom Beautify's setting panel. + +**Type**: `boolean` + +**Description**: + +Automatically beautify Nginx files on save + +**How to Configure** + +1. You can open the [Settings View](https://github.com/atom/settings-view) by navigating to +*Edit > Preferences (Linux)*, *Atom > Preferences (OS X)*, or *File > Preferences (Windows)*. +2. Go into *Packages* and search for "*Atom Beautify*" package. +3. Find the option "*Beautify On Save*" and change it to your desired configuration. + +##### [Don't join curly brackets](#don't-join-curly-brackets) + +**Namespace**: `nginx` + +**Key**: `dontJoinCurlyBracet` + +**Default**: `true` + +**Type**: `boolean` + +**Supported Beautifiers**: [`Nginx Beautify`](#nginx-beautify) + +**Description**: + +undefined (Supported by Nginx Beautify) + +**Example `.jsbeautifyrc` Configuration** + +```json +{ + "nginx": { + "dontJoinCurlyBracet": true + } +} +``` + +##### [Spaces](#spaces) + +**Namespace**: `nginx` + +**Key**: `spaces` + +**Type**: `number` + +**Supported Beautifiers**: [`Nginx Beautify`](#nginx-beautify) + +**Description**: + +Indent with spaces (Supported by Nginx Beautify) + +**Example `.jsbeautifyrc` Configuration** + +```json +{ + "nginx": { + "spaces": 0 + } +} +``` + +##### [Tabs](#tabs) + +**Namespace**: `nginx` + +**Key**: `tabs` + +**Default**: `1` + +**Type**: `number` + +**Supported Beautifiers**: [`Nginx Beautify`](#nginx-beautify) + +**Description**: + +Indent with tabs (Supported by Nginx Beautify) + +**Example `.jsbeautifyrc` Configuration** + +```json +{ + "nginx": { + "tabs": 1 + } +} +``` + #### [Nunjucks](#nunjucks) **Supported Beautifiers**: [`Pretty Diff`](#pretty-diff) @@ -16297,6 +16445,85 @@ List of tags (defaults to [head,body,/html] that should have an extra newline be ``` +### Nginx Beautify + +##### [Spaces](#spaces) + +**Namespace**: `nginx` + +**Key**: `spaces` + +**Type**: `number` + +**Supported Beautifiers**: [`Nginx Beautify`](#nginx-beautify) + +**Description**: + +Indent with spaces (Supported by Nginx Beautify) + +**Example `.jsbeautifyrc` Configuration** + +```json +{ + "nginx": { + "spaces": 0 + } +} +``` + +##### [Tabs](#tabs) + +**Namespace**: `nginx` + +**Key**: `tabs` + +**Default**: `1` + +**Type**: `number` + +**Supported Beautifiers**: [`Nginx Beautify`](#nginx-beautify) + +**Description**: + +Indent with tabs (Supported by Nginx Beautify) + +**Example `.jsbeautifyrc` Configuration** + +```json +{ + "nginx": { + "tabs": 1 + } +} +``` + +##### [Don't join curly brackets](#don't-join-curly-brackets) + +**Namespace**: `nginx` + +**Key**: `dontJoinCurlyBracet` + +**Default**: `true` + +**Type**: `boolean` + +**Supported Beautifiers**: [`Nginx Beautify`](#nginx-beautify) + +**Description**: + +undefined (Supported by Nginx Beautify) + +**Example `.jsbeautifyrc` Configuration** + +```json +{ + "nginx": { + "dontJoinCurlyBracet": true + } +} +``` + + ### PHP-CS-Fixer ##### [PHP-CS-Fixer Path](#php-cs-fixer-path) From 5a4349d486c1b901cbc486a50c5860a9964defd0 Mon Sep 17 00:00:00 2001 From: Denys Vitali Date: Mon, 30 Jan 2017 16:36:46 +0100 Subject: [PATCH 5/6] Fix trailing semicolon --- src/beautifiers/nginx-beautify.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/beautifiers/nginx-beautify.coffee b/src/beautifiers/nginx-beautify.coffee index 9c4985f..12fbed2 100644 --- a/src/beautifiers/nginx-beautify.coffee +++ b/src/beautifiers/nginx-beautify.coffee @@ -13,7 +13,7 @@ module.exports = class NginxBeautify extends Beautifier return new @Promise((resolve, reject) -> Beautify = require("nginxbeautify") - instance = new Beautify(options); + instance = new Beautify(options) try resolve(instance.parse(text)) catch error From d9f81e84eb9428d95f210655a38dbbe54ae7c2f9 Mon Sep 17 00:00:00 2001 From: Denys Vitali Date: Mon, 30 Jan 2017 16:38:35 +0100 Subject: [PATCH 6/6] Add nginx keywords --- package.json | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 8372835..6f17459 100644 --- a/package.json +++ b/package.json @@ -296,7 +296,9 @@ "bash", "beautysh", "glsl", - "hh_format" + "hh_format", + "nginx", + "nginx beautify" ], "devDependencies": { "coffeelint": "^1.10.1", @@ -310,4 +312,4 @@ "lint": "coffeelint src/ spec/", "code-docs": "codo && open docs/code/index.html" } -} +} \ No newline at end of file