{"id":29016259,"url":"https://github.com/otechdo/zuu","last_synced_at":"2026-01-20T17:35:20.712Z","repository":{"id":225652503,"uuid":"766319549","full_name":"otechdo/zuu","owner":"otechdo","description":"A program to check your code quality before all commit","archived":false,"fork":false,"pushed_at":"2024-10-29T11:24:49.000Z","size":25683,"stargazers_count":0,"open_issues_count":6,"forks_count":2,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-06-03T15:12:01.826Z","etag":null,"topics":["check","code","commit","commitlint","developer-tools","quality-control"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/otechdo.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-03-02T23:34:14.000Z","updated_at":"2024-10-29T11:24:54.000Z","dependencies_parsed_at":"2024-04-17T10:51:09.181Z","dependency_job_id":"4d6906ea-1c95-4410-bfc2-0a4a40a167c1","html_url":"https://github.com/otechdo/zuu","commit_stats":null,"previous_names":["otechdo/zuu"],"tags_count":9,"template":false,"template_full_name":null,"purl":"pkg:github/otechdo/zuu","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/otechdo%2Fzuu","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/otechdo%2Fzuu/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/otechdo%2Fzuu/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/otechdo%2Fzuu/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/otechdo","download_url":"https://codeload.github.com/otechdo/zuu/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/otechdo%2Fzuu/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261960464,"owners_count":23236575,"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":["check","code","commit","commitlint","developer-tools","quality-control"],"created_at":"2025-06-25T22:07:52.355Z","updated_at":"2026-01-20T17:35:20.679Z","avatar_url":"https://github.com/otechdo.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n![zuu](https://raw.githubusercontent.com/otechdo/zuu/refs/heads/main/zuu.png)\n\n\u003c/div\u003e\n\n# Zuu Project\n\nZuu is a continuous verification tool for multiple programming languages. \n\nIt allows you to run tests, check code formatting, perform security audits, and more, based on the configured programming language.\n\n## Table of Contents\n- [Zuu Project](#zuu-project)\n  - [Table of Contents](#table-of-contents)\n  - [Features](#features)\n  - [Requirements](#requirements)\n  - [Installation](#installation)\n  - [Zuu Configuration Options](#zuu-configuration-options)\n    - [Available Options](#available-options)\n    - [Usage](#usage)\n      - [Running Locally:](#running-locally)\n      - [Using Docker Compose](#using-docker-compose)\n    - [Customizing Options in Docker](#customizing-options-in-docker)\n  - [Customisation](#customisation)\n  - [Continuous Integration](#continuous-integration)\n    - [GitHub Actions](#github-actions)\n    - [Travis CI](#travis-ci)\n  - [Contributing](#contributing)\n  - [License](#license)\n\n## Features\n\n- **Multi-language support**:\n  - Clojure\n  - Cobol\n  - Erlang\n  - Fortran\n  - Groovy\n  - Julia\n  - Matlab\n  - Vlang\n- Customizable testing options using environment variables for test control.\n- Isolation of development and test environments via Docker and Docker Compose.\n- Flexible configuration using Cargo `features`.\n- Execute tests, format checks, security audits, and more for each supported language.\n\n## Requirements\n\n- [Docker](https://www.docker.com/get-started) (version \u003e= 20.10)\n- [Docker Compose](https://docs.docker.com/compose/install/) (version \u003e= 1.29)\n- [Rust](https://www.rust-lang.org/tools/install) and Cargo (for local development)\n\n## Installation\n\n1. Clone the repository to your machine:\n    ```bash\n    git clone https://github.com/otechdo/zuu.git\n    cd zuu\n    ```\n\n2. Running with Docker Compose\n\nTo run the project in an isolated Docker environment, use Docker Compose.\n\nYou can run tests for each supported language.\n\nTo start a test container for a specific language, use the following command:\n\n```bash\ndocker-compose up --build --abort-on-container-exit \u003cservice-name\u003e\n```\n\nFor example, to run the tests for **Rust**:\n\n```bash\ndocker-compose up --build --abort-on-container-exit rust-tests\n```\n\n1. Running Tests for All Languages\n\n\nYou can also run all the tests sequentially for every supported language:\n\n```bash\ndocker-compose up --build --abort-on-container-exit\n```\n\n1. Using Cargo\n\nIf you're working locally with **Rust** and want to compile the project with a specific language feature, use Cargo `features`. For example, to activate the feature for **Rust**:\n\n```bash\ncargo build --no-default-features --features \"rust\"\n```\n\n## Zuu Configuration Options\n\nZuu provides several options that you can control via environment variables to customize the checks it performs. The configuration options allow you to enable or disable specific tasks such as testing, linting, formatting checks, security audits, and license validation.\n\n### Available Options\n\n| Environment Variable | Description                                      | Default |\n|----------------------|--------------------------------------------------|---------|\n| `TESTS`              | Enable or disable the execution of tests.        | `false` |\n| `FORMAT`             | Check if the code is properly formatted.         | `false` |\n| `LINT`               | Run a linting process to catch potential issues. | `false` |\n| `AUDIT`              | Perform a security audit of the dependencies.    | `false` |\n| `LICENSE`            | Check the license compatibility of dependencies. | `false` |\n\n### Usage\n\nThese options are controlled using environment variables, which you can set when running the project in either your development or Docker environment. By default, all options are disabled (`false`), but you can enable them as needed by setting them to `true`.\n\n#### Running Locally:\n\nWhen running locally, you can set these environment variables in your shell before executing the Zuu tool:\n\n```bash\nexport TESTS=true       # Enable test execution\nexport FORMAT=true      # Enable code formatting checks\nexport LINT=true        # Enable linting\nexport AUDIT=true       # Enable security audit\nexport LICENSE=true     # Enable license checks\n\n# Run the tool after setting the environment variables\ncargo run\n```\n\n#### Using Docker Compose\n\nIn the `docker-compose.yml` file, you can define these options under the `environment` section for your service. For example:\n\n```yaml\nservices:\n  zuu:\n    image: otechdo/zuu:latest\n    environment:\n      - TESTS=true\n      - FORMAT=true\n      - LINT=true\n      - AUDIT=true\n      - LICENSE=true\n      - EDITOR=vim\n    volumes:\n      - .:/app # Copy source code in the container\n    command:\n      - rust-audit # Check rust code\n```\n\nThis will run Zuu with all the options enabled.\n\n### Customizing Options in Docker\n\nYou can adjust these options in Docker by modifying the environment variables in your `docker-compose.yml` or when running the Docker container.\n\nFor example:\n\n```bash\ndocker run -e TESTS=true -e FORMAT=true -e LINT=false -e AUDIT=true -e LICENSE=true your-docker-image\n```\n\n## Customisation\n\nFollow these steps to customise the project, edit the Dockerfiles, and push the images to your own Docker repository:\n\n1. **Clone the repository** to your machine:\n    ```bash\n    git clone https://github.com/otechdo/zuu.git\n    cd zuu/dockers\n    ```\n\n2. **Ensure Docker and Docker Compose** are installed on your system:\n    - Docker: [Install Docker](https://docs.docker.com/get-docker/)\n    - Docker Compose: [Install Docker Compose](https://docs.docker.com/compose/install/)\n\n3. **Edit the Dockerfiles** according to your needs:\n    - Navigate to the appropriate directories for each language (e.g., `rust/Dockerfile`, `python/Dockerfile`).\n    - Make the necessary changes to each Dockerfile.\n\n4. **Login to Docker Hub**:\n    - If you are not logged in already, log in to Docker Hub:\n      ```bash\n      docker login\n      ```\n\n5. **Build and push your images**:\n    - Use the following command to build and push all Docker images to your own repository:\n      ```bash\n      make -j 4 USERNAME=\"your_docker_username\" REPO=\"your_repository_name\"\n      ```\n\n6. **Verify your images on Docker Hub**:\n    - Once pushed, you can verify the images by logging into Docker Hub and navigating to your repository.\n\n## Continuous Integration\n\nYou can use both **GitHub Actions** and **Travis CI** for continuous integration (CI) to automate the build and testing process for the project.\n\n### GitHub Actions\n\n1. **Create a `.github/workflows/ci.yml` file** in your repository with the following configuration:\n\n```yaml\nname: zuu\non:\n  push:\n    branches:\n        - main\n        - develop\n  pull_request:\n    branches:\n      - main\n      - develop\nenv:\n  CARGO_TERM_COLOR: always\n  TERM: xterm-256color\njobs:\n  zuu:\n    strategy:\n      matrix:\n        os: [ ubuntu-latest, ubuntu-22.04, ubuntu-20.04, macos-latest, macos-13, macos-12 ]\n    runs-on: ${{ matrix.os }}\n    steps:\n      - uses: actions/checkout@v4\n      - uses: actions/setup-node@v4\n        with:\n          node-version: '20'\n      - name: deps\n        run:  cargo install cargo-audit cargo-auditable cargo-deny cargo-outdated\n      - name: installation\n        run:  cargo install zuu --no-default-features --features rust\n      - name: zuu\n        run:  git checkout \"${GITHUB_REF##*/}\" \u0026\u0026 zuu\n\n```\n\n1. **Set up Docker credentials** in GitHub Secrets:\n    - Go to your repository’s **Settings \u003e Secrets**.\n    - Add `DOCKER_USERNAME` and `DOCKER_PASSWORD` with your Docker Hub credentials.\n\nWith this configuration, GitHub Actions will build and test your Docker images on every push or pull request to the `main` branch.\n\n### Travis CI\n\n1. **Create a `.travis.yml` file** in your repository:\n\n```yaml\nlanguage: minimal\n\nservices:\n  - docker\n\nbefore_script:\n  - docker-compose --version\n  - docker-compose up --build --abort-on-container-exit\n\nscript:\n  - docker-compose run \u003cyour_test_service\u003e\n\ndeploy:\n  provider: script\n  script: docker-compose push\n  on:\n    branch: main\n\nenv:\n  global:\n    - DOCKER_USERNAME=$DOCKER_USERNAME\n    - DOCKER_PASSWORD=$DOCKER_PASSWORD\n```\n\n1. **Set up Docker credentials** in Travis CI:\n    - Go to your Travis CI project’s **Settings**.\n    - Add `DOCKER_USERNAME` and `DOCKER_PASSWORD` as environment variables.\n\nThis Travis CI configuration will build and test the Docker images, and push them to Docker Hub when the `main` branch is updated.\n\n## Contributing\n\nContributions are welcome! To contribute to the project, follow these steps:\n\n1. Fork the project.\n2. Create a branch for your feature (git checkout -b feature/amazing-feature`).\n3. Commit your changes (`git commit -m 'Add some amazing feature'`).\n4. Push to the branch (`git push origin feature/amazing-feature`).\n5. Open a Pull Request.\n\n## License\n\nThis project is licensed under the AGPL-3.0 License. See the [LICENSE](https://raw.githubusercontent.com/otechdo/zuu/refs/heads/main/LICENSE) file for more details.\n\n\n```json\n{\n  \"scripts\": {\n    \"check-structure\": \"echo 'Check project structure'\",  // Vous pouvez personnaliser cette commande\n    \"test\": \"jest\",                                        // Ou \"mocha\" ou tout autre framework de test\n    \"format:check\": \"prettier --check .\",                  // Utilisation de Prettier pour le formatage\n    \"generate-docs\": \"jsdoc -c jsdoc.conf.json\",           // Génération de documentation avec JSDoc\n    \"lint\": \"eslint .\",                                    // Utilisation d'ESLint pour la vérification du style\n    \"audit\": \"npm audit\"                                   // Vérification des vulnérabilités\n  }\n}\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fotechdo%2Fzuu","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fotechdo%2Fzuu","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fotechdo%2Fzuu/lists"}