{"id":13593543,"url":"https://github.com/cytopia/awesome-ci","last_synced_at":"2025-04-04T12:07:33.508Z","repository":{"id":50475843,"uuid":"65735467","full_name":"cytopia/awesome-ci","owner":"cytopia","description":"Awesome Continuous Integration - Lot's of tools for git, file and static source code analysis.","archived":false,"fork":false,"pushed_at":"2022-11-05T18:23:09.000Z","size":326,"stargazers_count":333,"open_issues_count":8,"forks_count":19,"subscribers_count":18,"default_branch":"master","last_synced_at":"2024-10-30T04:48:58.423Z","etag":null,"topics":["analysis","awesome-ci","ci","coding-style","continuous-integration","crlf","docker","docker-image","perl","php","python","regex","regex-contributions","ruby","scripts-offer","syntax-checker","trailing-newline","trailing-spaces","utf8"],"latest_commit_sha":null,"homepage":"","language":"Shell","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/cytopia.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-08-15T13:47:12.000Z","updated_at":"2024-10-20T12:56:28.000Z","dependencies_parsed_at":"2022-09-07T11:21:24.402Z","dependency_job_id":null,"html_url":"https://github.com/cytopia/awesome-ci","commit_stats":null,"previous_names":[],"tags_count":12,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cytopia%2Fawesome-ci","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cytopia%2Fawesome-ci/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cytopia%2Fawesome-ci/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cytopia%2Fawesome-ci/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cytopia","download_url":"https://codeload.github.com/cytopia/awesome-ci/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246970295,"owners_count":20862508,"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":["analysis","awesome-ci","ci","coding-style","continuous-integration","crlf","docker","docker-image","perl","php","python","regex","regex-contributions","ruby","scripts-offer","syntax-checker","trailing-newline","trailing-spaces","utf8"],"created_at":"2024-08-01T16:01:21.393Z","updated_at":"2025-04-04T12:07:33.485Z","avatar_url":"https://github.com/cytopia.png","language":"Shell","funding_links":[],"categories":["Shell","Shell (473)"],"sub_categories":[],"readme":"# [awesome-ci](https://github.com/cytopia/awesome-ci)\n\n[![Build Status](https://travis-ci.org/cytopia/awesome-ci.svg?branch=master)](https://travis-ci.org/cytopia/awesome-ci)\n[![Latest Stable Version](https://poser.pugx.org/cytopia/awesome-ci/v/stable)](https://packagist.org/packages/cytopia/awesome-ci)\n[![Total Downloads](https://poser.pugx.org/cytopia/awesome-ci/downloads)](https://packagist.org/packages/cytopia/awesome-ci)\n[![Docker image](https://images.microbadger.com/badges/image/cytopia/awesome-ci.svg)](https://hub.docker.com/r/cytopia/awesome-ci)\n[![License](https://poser.pugx.org/cytopia/awesome-ci/license)](http://opensource.org/licenses/MIT)\n\n\n\u003e ## :warning: DEPRECATION WARNING\n\u003e\n\u003e This repository is deprecated. Please use the following docker images below instead:\n\u003e\n\u003e #### All [#awesome-ci](https://github.com/topics/awesome-ci) Docker images\n\u003e\n\u003e [ansible-lint][alint-git-lnk] **•**\n\u003e [ansible][ansible-git-lnk] **•**\n\u003e [awesome-ci][aci-git-lnk] **•**\n\u003e [bandit][bandit-git-lnk] **•**\n\u003e [black][black-git-lnk] **•**\n\u003e [checkmake][cm-git-lnk] **•**\n\u003e [eslint][elint-git-lnk] **•**\n\u003e [file-lint][flint-git-lnk] **•**\n\u003e [gofmt][gfmt-git-lnk] **•**\n\u003e [goimports][gimp-git-lnk] **•**\n\u003e [golint][glint-git-lnk] **•**\n\u003e [jsonlint][jlint-git-lnk] **•**\n\u003e [kubeval][kubeval-git-lnk] **•**\n\u003e [linkcheck][linkcheck-git-lnk] **•**\n\u003e [mypy][mypy-git-lnk] **•**\n\u003e [php-cs-fixer][pcsf-git-lnk] **•**\n\u003e [phpcbf][pcbf-git-lnk] **•**\n\u003e [phpcs][pcs-git-lnk] **•**\n\u003e [phplint][plint-git-lnk] **•**\n\u003e [pycodestyle][pycs-git-lnk] **•**\n\u003e [pydocstyle][pyds-git-lnk] **•**\n\u003e [pylint][pylint-git-lnk] **•**\n\u003e [terraform-docs][tfdocs-git-lnk] **•**\n\u003e [terragrunt-fmt][tgfmt-git-lnk] **•**\n\u003e [terragrunt][tg-git-lnk] **•**\n\u003e [yamlfmt][yfmt-git-lnk] **•**\n\u003e [yamllint][ylint-git-lnk]\n\u003e\n\u003e #### Docker images\n\u003e\n\u003e Save yourself from installing lot's of dependencies and pick a dockerized version of your favourite\n\u003e linter below for reproducible local or remote CI tests:\n\u003e\n\u003e | GitHub | DockerHub | Type | Description |\n\u003e |--------|-----------|------|-------------|\n\u003e | [awesome-ci][aci-git-lnk]        | [![aci-hub-img]][aci-hub-lnk]         | Basic      | Tools for git, file and static source code analysis |\n\u003e | [file-lint][flint-git-lnk]       | [![flint-hub-img]][flint-hub-lnk]     | Basic      | Baisc source code analysis |\n\u003e | [linkcheck][linkcheck-git-lnk]   | [![linkcheck-hub-img]][flint-hub-lnk] | Basic      | Search for URLs in files and validate their HTTP status code |\n\u003e | [ansible][ansible-git-lnk]       | [![ansible-hub-img]][ansible-hub-lnk] | Ansible    | Multiple versions and flavours of Ansible |\n\u003e | [ansible-lint][alint-git-lnk]    | [![alint-hub-img]][alint-hub-lnk]     | Ansible    | Lint Ansible |\n\u003e | [gofmt][gfmt-git-lnk]            | [![gfmt-hub-img]][gfmt-hub-lnk]       | Go         | Format Go source code **\u003csup\u003e[1]\u003c/sup\u003e** |\n\u003e | [goimports][gimp-git-lnk]        | [![gimp-hub-img]][gimp-hub-lnk]       | Go         | Format Go source code **\u003csup\u003e[1]\u003c/sup\u003e** |\n\u003e | [golint][glint-git-lnk]          | [![glint-hub-img]][glint-hub-lnk]     | Go         | Lint Go code |\n\u003e | [eslint][elint-git-lnk]          | [![elint-hub-img]][elint-hub-lnk]     | Javascript | Lint Javascript code |\n\u003e | [jsonlint][jlint-git-lnk]        | [![jlint-hub-img]][jlint-hub-lnk]     | JSON       | Lint JSON files **\u003csup\u003e[1]\u003c/sup\u003e** |\n\u003e | [kubeval][kubeval-git-lnk]       | [![kubeval-hub-img]][kubeval-hub-lnk] | K8s        | Lint Kubernetes files |\n\u003e | [checkmake][cm-git-lnk]          | [![cm-hub-img]][cm-hub-lnk]           | Make       | Lint Makefiles |\n\u003e | [phpcbf][pcbf-git-lnk]           | [![pcbf-hub-img]][pcbf-hub-lnk]       | PHP        | PHP Code Beautifier and Fixer |\n\u003e | [phpcs][pcs-git-lnk]             | [![pcs-hub-img]][pcs-hub-lnk]         | PHP        | PHP Code Sniffer |\n\u003e | [phplint][plint-git-lnk]         | [![plint-hub-img]][plint-hub-lnk]     | PHP        | PHP Code Linter **\u003csup\u003e[1]\u003c/sup\u003e** |\n\u003e | [php-cs-fixer][pcsf-git-lnk]     | [![pcsf-hub-img]][pcsf-hub-lnk]       | PHP        | PHP Coding Standards Fixer |\n\u003e | [bandit][bandit-git-lnk]         | [![bandit-hub-img]][bandit-hub-lnk]   | Python     | A security linter from PyCQA\n\u003e | [black][black-git-lnk]           | [![black-hub-img]][black-hub-lnk]     | Python     | The uncompromising Python code formatter |\n\u003e | [mypy][mypy-git-lnk]             | [![mypy-hub-img]][mypy-hub-lnk]       | Python     | Static source code analysis |\n\u003e | [pycodestyle][pycs-git-lnk]      | [![pycs-hub-img]][pycs-hub-lnk]       | Python     | Python style guide checker |\n\u003e | [pydocstyle][pyds-git-lnk]       | [![pyds-hub-img]][pyds-hub-lnk]       | Python     | Python docstyle checker |\n\u003e | [pylint][pylint-git-lnk]         | [![pylint-hub-img]][pylint-hub-lnk]   | Python     | Python source code, bug and quality checker |\n\u003e | [terraform-docs][tfdocs-git-lnk] | [![tfdocs-hub-img]][tfdocs-hub-lnk]   | Terraform  | Terraform doc generator (TF 0.12 ready) **\u003csup\u003e[1]\u003c/sup\u003e** |\n\u003e | [terragrunt][tg-git-lnk]         | [![tg-hub-img]][tg-hub-lnk]           | Terraform  | Terragrunt and Terraform |\n\u003e | [terragrunt-fmt][tgfmt-git-lnk]  | [![tgfmt-hub-img]][tgfmt-hub-lnk]     | Terraform  | `terraform fmt` for Terragrunt files **\u003csup\u003e[1]\u003c/sup\u003e** |\n\u003e | [yamlfmt][yfmt-git-lnk]          | [![yfmt-hub-img]][yfmt-hub-lnk]       | Yaml       | Format Yaml files **\u003csup\u003e[1]\u003c/sup\u003e** |\n\u003e | [yamllint][ylint-git-lnk]        | [![ylint-hub-img]][ylint-hub-lnk]     | Yaml       | Lint Yaml files |\n\n\u003e **\u003csup\u003e[1]\u003c/sup\u003e** Uses a shell wrapper to add **enhanced functionality** not available by original project.\n\n[aci-git-lnk]: https://github.com/cytopia/awesome-ci\n[aci-hub-img]: https://img.shields.io/docker/pulls/cytopia/awesome-ci.svg\n[aci-hub-lnk]: https://hub.docker.com/r/cytopia/awesome-ci\n\n[flint-git-lnk]: https://github.com/cytopia/docker-file-lint\n[flint-hub-img]: https://img.shields.io/docker/pulls/cytopia/file-lint.svg\n[flint-hub-lnk]: https://hub.docker.com/r/cytopia/file-lint\n\n[linkcheck-git-lnk]: https://github.com/cytopia/docker-linkcheck\n[linkcheck-hub-img]: https://img.shields.io/docker/pulls/cytopia/linkcheck.svg\n[linkcheck-hub-lnk]: https://hub.docker.com/r/cytopia/linkcheck\n\n[jlint-git-lnk]: https://github.com/cytopia/docker-jsonlint\n[jlint-hub-img]: https://img.shields.io/docker/pulls/cytopia/jsonlint.svg\n[jlint-hub-lnk]: https://hub.docker.com/r/cytopia/jsonlint\n\n[ansible-git-lnk]: https://github.com/cytopia/docker-ansible\n[ansible-hub-img]: https://img.shields.io/docker/pulls/cytopia/ansible.svg\n[ansible-hub-lnk]: https://hub.docker.com/r/cytopia/ansible\n\n[alint-git-lnk]: https://github.com/cytopia/docker-ansible-lint\n[alint-hub-img]: https://img.shields.io/docker/pulls/cytopia/ansible-lint.svg\n[alint-hub-lnk]: https://hub.docker.com/r/cytopia/ansible-lint\n\n[kubeval-git-lnk]: https://github.com/cytopia/docker-kubeval\n[kubeval-hub-img]: https://img.shields.io/docker/pulls/cytopia/kubeval.svg\n[kubeval-hub-lnk]: https://hub.docker.com/r/cytopia/kubeval\n\n[gfmt-git-lnk]: https://github.com/cytopia/docker-gofmt\n[gfmt-hub-img]: https://img.shields.io/docker/pulls/cytopia/gofmt.svg\n[gfmt-hub-lnk]: https://hub.docker.com/r/cytopia/gofmt\n\n[gimp-git-lnk]: https://github.com/cytopia/docker-goimports\n[gimp-hub-img]: https://img.shields.io/docker/pulls/cytopia/goimports.svg\n[gimp-hub-lnk]: https://hub.docker.com/r/cytopia/goimports\n\n[glint-git-lnk]: https://github.com/cytopia/docker-golint\n[glint-hub-img]: https://img.shields.io/docker/pulls/cytopia/golint.svg\n[glint-hub-lnk]: https://hub.docker.com/r/cytopia/golint\n\n[elint-git-lnk]: https://github.com/cytopia/docker-eslint\n[elint-hub-img]: https://img.shields.io/docker/pulls/cytopia/eslint.svg\n[elint-hub-lnk]: https://hub.docker.com/r/cytopia/eslint\n\n[cm-git-lnk]: https://github.com/cytopia/docker-checkmake\n[cm-hub-img]: https://img.shields.io/docker/pulls/cytopia/checkmake.svg\n[cm-hub-lnk]: https://hub.docker.com/r/cytopia/checkmake\n\n[pcbf-git-lnk]: https://github.com/cytopia/docker-phpcbf\n[pcbf-hub-img]: https://img.shields.io/docker/pulls/cytopia/phpcbf.svg\n[pcbf-hub-lnk]: https://hub.docker.com/r/cytopia/phpcbf\n\n[pcs-git-lnk]: https://github.com/cytopia/docker-phpcs\n[pcs-hub-img]: https://img.shields.io/docker/pulls/cytopia/phpcs.svg\n[pcs-hub-lnk]: https://hub.docker.com/r/cytopia/phpcs\n\n[plint-git-lnk]: https://github.com/cytopia/docker-phplint\n[plint-hub-img]: https://img.shields.io/docker/pulls/cytopia/phplint.svg\n[plint-hub-lnk]: https://hub.docker.com/r/cytopia/phplint\n\n[pcsf-git-lnk]: https://github.com/cytopia/docker-php-cs-fixer\n[pcsf-hub-img]: https://img.shields.io/docker/pulls/cytopia/php-cs-fixer.svg\n[pcsf-hub-lnk]: https://hub.docker.com/r/cytopia/php-cs-fixer\n\n[bandit-git-lnk]: https://github.com/cytopia/docker-bandit\n[bandit-hub-img]: https://img.shields.io/docker/pulls/cytopia/bandit.svg\n[bandit-hub-lnk]: https://hub.docker.com/r/cytopia/bandit\n\n[black-git-lnk]: https://github.com/cytopia/docker-black\n[black-hub-img]: https://img.shields.io/docker/pulls/cytopia/black.svg\n[black-hub-lnk]: https://hub.docker.com/r/cytopia/black\n\n[mypy-git-lnk]: https://github.com/cytopia/docker-mypy\n[mypy-hub-img]: https://img.shields.io/docker/pulls/cytopia/mypy.svg\n[mypy-hub-lnk]: https://hub.docker.com/r/cytopia/mypy\n\n[pycs-git-lnk]: https://github.com/cytopia/docker-pycodestyle\n[pycs-hub-img]: https://img.shields.io/docker/pulls/cytopia/pycodestyle.svg\n[pycs-hub-lnk]: https://hub.docker.com/r/cytopia/pycodestyle\n\n[pyds-git-lnk]: https://github.com/cytopia/docker-pydocstyle\n[pyds-hub-img]: https://img.shields.io/docker/pulls/cytopia/pydocstyle.svg\n[pyds-hub-lnk]: https://hub.docker.com/r/cytopia/pydocstyle\n\n[pylint-git-lnk]: https://github.com/cytopia/docker-pylint\n[pylint-hub-img]: https://img.shields.io/docker/pulls/cytopia/pylint.svg\n[pylint-hub-lnk]: https://hub.docker.com/r/cytopia/pylint\n\n[tfdocs-git-lnk]: https://github.com/cytopia/docker-terraform-docs\n[tfdocs-hub-img]: https://img.shields.io/docker/pulls/cytopia/terraform-docs.svg\n[tfdocs-hub-lnk]: https://hub.docker.com/r/cytopia/terraform-docs\n\n[tg-git-lnk]: https://github.com/cytopia/docker-terragrunt\n[tg-hub-img]: https://img.shields.io/docker/pulls/cytopia/terragrunt.svg\n[tg-hub-lnk]: https://hub.docker.com/r/cytopia/terragrunt\n\n[tgfmt-git-lnk]: https://github.com/cytopia/docker-terragrunt-fmt\n[tgfmt-hub-img]: https://img.shields.io/docker/pulls/cytopia/terragrunt-fmt.svg\n[tgfmt-hub-lnk]: https://hub.docker.com/r/cytopia/terragrunt-fmt\n\n[yfmt-git-lnk]: https://github.com/cytopia/docker-yamlfmt\n[yfmt-hub-img]: https://img.shields.io/docker/pulls/cytopia/yamlfmt.svg\n[yfmt-hub-lnk]: https://hub.docker.com/r/cytopia/yamlfmt\n\n[ylint-git-lnk]: https://github.com/cytopia/docker-yamllint\n[ylint-hub-img]: https://img.shields.io/docker/pulls/cytopia/yamllint.svg\n[ylint-hub-lnk]: https://hub.docker.com/r/cytopia/yamllint\n\n\n---\n\n\n[![Docker image](http://dockeri.co/image/cytopia/awesome-ci?\u0026kill_cache=1)](https://hub.docker.com/r/cytopia/awesome-ci)\n\n**Runs on**\n\n[![Linux](https://raw.githubusercontent.com/cytopia/icons/master/64x64/linux.png)](https://www.kernel.org/)\n[![FreeBSD](https://raw.githubusercontent.com/cytopia/icons/master/64x64/freebsd.png)](https://www.freebsd.org)\n[![OSX](https://raw.githubusercontent.com/cytopia/icons/master/64x64/osx.png)](https://www.apple.com/osx)\n\nContinuous Integration command line tools for git repositories, file characteristics, syntax errors\nand static source code analysis.\n\nAwesome-CI is capable of finding various problems in your code repository as well as fixing them\nautomatically.\n\n\n---\n\n**Table of Contents**\n\n1. [Tools](#tools)\n2. [Learn / Validate](#learn--validate)\n3. [Fix](#fix)\n4. [Custom regex contributions](#custom-regex-contributions)\n5. [General usage](#general-usage)\n6. [Installation](i#installation)\n    1. [Requirements](#requirements)\n    2. [Install OSX](#install-osx)\n    3. [Install Linux/BSD](#install-linuxbsd)\n7. [Awesome CI Docker image](#awesome-ci-docker-image)\n8. [Documentation](#documentation)\n9. [License](#license)\n\n\n## Tools\n\nAll checks have the option to only check by one or more file **extensions**, by **shebang** as well as to **exclude** one or more folders from the whole search.\n\n**Note:** Fixable options are currently in testing phase. Please report any bugs.\n\n\n| Type | Tool | Fixable | Description |\n|------|------|---------|-------------|\n| Git | [git-conflicts](bin/git-conflicts) | | Scan files and check if they contain git conflicts. |\n| Git | [git-ignored](bin/git-ignored) | | Scan git directory and see if ignored files are still in git cache. |\n| File | [file-cr](bin/file-cr) | ✓ | Scan files and check if they contain CR (Carriage Return only). |\n| File | [file-crlf](bin/file-crlf) | ✓ | Scan files and check if they contain CRLF (Windows Line Feeds). |\n| File | [file-empty](bin/file-empty) | | Scan files and check if they are empty (0 bytes). |\n| File | [file-nullbyte-char](bin/file-nullbyte-char) | ✓ | Scan files and check if they contain a null-byte character (\\x00). |\n| File | [file-trailing-newline](bin/file-trailing-newline) | ✓ | Scan files and check if they contain a trailing newline. |\n| File | [file-trailing-single-newline](bin/file-trailing-single-newline) | ✓ | Scan files and check if they contain exactly one trailing newline. |\n| File | [file-trailing-space](bin/file-trailing-space) | ✓ | Scan files and check if they contain trailing whitespaces. |\n| File | [file-utf8](bin/file-utf8) | ✓ | Scan files and check if they have a non UTF-8 encoding. |\n| File | [file-utf8-bom](bin/file-utf8-bom) | ✓ | Scan files and check if they contain BOM (Byte Order Mark): `\u003cU+FEFF\u003e`. |\n| Syntax | [syntax-bash](bin/syntax-bash) | | Scan shell files for bash syntax errors. |\n| Syntax | [syntax-css](bin/syntax-css) | | Scan CSS files for CSS syntax errors. |\n| Syntax | [syntax-js](bin/syntax-js) | | Scan JS files for JS syntax errors. |\n| Syntax | [syntax-json](bin/syntax-json) | | Scan files for JSON syntax errors. |\n| Syntax | [syntax-markdown](bin/syntax-markdown) | | Scan files for Markdown syntax errors. |\n| Syntax | [syntax-perl](bin/syntax-perl) | | Scan Perl files for Perl syntax errors. |\n| Syntax | [syntax-php](bin/syntax-php) | | Scan files for PHP syntax errors. |\n| Syntax | [syntax-python](bin/syntax-python) | | Scan Python files for Python syntax errors. |\n| Syntax | [syntax-ruby](bin/syntax-ruby) | | Scan Ruby files for Ruby syntax errors. |\n| Syntax | [syntax-scss](bin/syntax-scss) | | Scan SCSS files for SCSS syntax errors. |\n| Syntax | [syntax-sh](bin/syntax-sh) | | Scan shell files for /bin/sh syntax errors. |\n| Code Conventions | [inline-css](bin/inline-css) | | Scan files and check if they contain inline css code. |\n| Code Conventions | [inline-js](bin/inline-js) | | Scan files and check if they contain inline javascript code. |\n| Regex | [regex-grep](bin/regex-grep) | | `egrep` (`grep -E`) regex version to scan files for an occurance. |\n| Regex | [regex-perl](bin/regex-perl) | | `perl` regex version to scan files for an occurance. |\n\n\n## Learn / validate\n\nAll of the above scripts offer the `--dry` option which will only show you the built command without actually executing it:\n```bash\n$ regex-grep --path=. --ignore=\".git,.svn\" --shebang=sh --size --text \\\n--custom=\"if[[:space:]]*\\[\\[\" --dry\n\nfind . -type f -not \\( -path \"./.git*\" -o -path \"./.svn*\" \\) ! -size 0 -print0 | \\\n   xargs -0 -P 8 -n1 grep -Il '' | \\\n   tr '\\n' '\\0' | \\\n   xargs -0 -P 8 -n1 awk '/^#!.*(\\/sh|[[:space:]]+sh)/{print FILENAME}' | \\\n   tr '\\n' '\\0' | \\\n   xargs -0 -P 8 -n1  sh -c 'if [ -f \"${1}\" ]; then grep --color=always -inHE \"if[[:space:]]*\\[\\[\" \"$1\" || true; fi' --\n```\n\n\n## Fix\n\nSome of the above scripts offer the `--fix` option (see table above), with which you are actually able to fix the problem.\nYou can also combine it with `--dry` to see how the actual fix command looks like:\n```bash\n$ file-utf8 --path=dump.sql --fix --dry\n\nfind dump.sql -type f -print0 | \\\n   xargs -0 -P 8 -n1  sh -c 'if [ -f \"${1}\" ]; then isutf8 \"$1\" \u003e/dev/null || (TERM=vt100 vi -u NONE -n -es -c \"set fileencoding=utf8\" -c \"wq\" \"$1\" \u003e /dev/tty \u0026\u0026 echo \"Fixing: $1\" || echo \"FAILED: $1\"); fi' --\n```\n\n\n## Custom regex contributions\n\n`regex-grep` and `regex-perl` have a lot of potential for doing custom project validation.\n\nIn order to give you an idea, have a look at the compiled [Regex Contributions](REGEX_CONTRIBUTIONS.md).\n\nPlease use pull requests to add useful checks.\n\n\n## General Usage\n\n* All tools share the same pattern (except `git-ignored`) and can be used with the same command line arguments.\n* Some tools have an additional option `--custom=\"\"` to overwrite the command itself (this is explained and shown in detail in each command's `--help` option).\n\n**Options:**\n\n```bash\n# Required:\n  --path            # Specify the path where to scan\n\n# Optional pattern (each option is logically and-ed):\n  --fix             # Fix the problems for the specified files (not every check)\n\n  --text            # Only scan non-binary files\n  --size            # Only scan non-empty files (greater 0 bytes)\n  --shebang         # Only scan files (shell scripts) that match a certain shebang\n  --extension       # Only scan files with these file extensions\n  --ignore          # Ignore files/folders\n\n# Optional misc:\n  --config          # Specify configuration file\n  --confpre         # Alter configuration directive prefix for this check\n  --verbose         # Show files and commands as being processed\n  --debug           # Show additional debug messages\n  --list            # Only show files that would be processed (no processing)\n  --dry             # Show command that would be executed (no processing)\n\n# System\n  --help            # Show help\n  --info            # Show version of required binaries\n  --version         # Show tool version\n```\n\n## Installation\n\n### Requirements\n\nAwesome-ci requires the following tools to be installed:\n\n* `dos2unix`\n* `eslint`\n* `file`\n* `git`\n* `jsonlint`\n* `mdl`\n* `perl`\n* `php`\n* `python`\n* `ruby`\n* `scss_lint`\n* `shellcheck`\n\n### Install OSX\n\n```bash\nbrew tap cytopia/tap\nbrew install awesome-ci\n```\n\n### Install Linux/BSD\n\n```bash\n# Install to /usr/bin\n./configure\nmake install\n\n# Instal to /usr/local/bin\n./configure --prefix=/usr/local\nmake install\n\n# Install to /opt/bin\n./configure --prefix=/opt\nmake install\n```\n\n## Awesome CI Docker image\n\n[![Docker image](http://dockeri.co/image/cytopia/awesome-ci?\u0026kill_cache=1)](https://hub.docker.com/r/cytopia/awesome-ci)\n\nInstead of installing awesome-ci and all its required dependencies locally on your computer,\nyou can also use the bundled Docker image\n**[cytopia/awesome-ci](https://hub.docker.com/r/cytopia/awesome-ci/)** which has everything\npre-installed and is built nightly by travis-ci.\n\n```bash\ndocker run -v ${PWD}:/ac cytopia/awesome-ci file-crlf --path=/ac\n```\n\nThe above example is using `file-crlf` to scan the current directory for files containing\nWindows newlines:\n\n* `${PWD}` (the current host directory) is mounted into the container's `/ac` directoy\n* `file-crlf` path then points (inside the container) to `/ac` (which is the current host directory)\n* `/ac` can actually be named by whatever name you want\n\nIf you use an awesome-ci configuration which is not inside the directory you want to check, you\nwill also have to mount that into the container:\n```bash\ndocker run \\\n    -v /host/path/to/awesome-ci.conf:/etc/awesome-ci.conf \\\n    -v ${PWD}:/ac cytopia/awesome-ci file-crlf --path=/ac --config=/etc/awesome-ci.conf\n```\n\n## Documentation\n\nTo find out more about awesome-ci, have a look at the following links.\n\n* [Dependencies](dependencies/)\n* [Examples](EXAMPLES.md)\n* [Regex Contributions](REGEX_CONTRIBUTIONS.md)\n\n\n## License\n\n[MIT License](LICENSE.md)\n\nCopyright (c) 2018 [cytopia](https://github.com/cytopia)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcytopia%2Fawesome-ci","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcytopia%2Fawesome-ci","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcytopia%2Fawesome-ci/lists"}