Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .dockerignore
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ docs/
target/

# Local configs and data
config.yaml
repos.yaml
cloned_repos/
logs/

Expand Down
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ cloned_repos*/
coverage/
*.profraw
logs/
config.yaml
repos.yaml
tarpaulin-report.html
test-*/
tests/test-recipes.yaml
Expand Down
8 changes: 4 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ engineers working with complex microservice architectures.
## Features

- **Centralized Repository Management**: Define all your repositories in a
single, easy-to-manage `config.yaml` file.
single, easy-to-manage `repos.yaml` file.
- **Tag-Based Filtering**: Assign tags to your repositories and use them to run
commands on specific subsets of your projects (e.g., `backend`, `frontend`,
`java`, `rust`).
Expand Down Expand Up @@ -113,7 +113,7 @@ for you.

2. **Generate the config file**:
Run `repos init` in the `my-projects` directory. It will scan for Git
repositories and create a `config.yaml` file.
repositories and create a `repos.yaml` file.

```bash
repos init
Expand All @@ -139,7 +139,7 @@ overview. Click on a command to see its detailed documentation.
| [**`run`**](./docs/commands/run.md) | Runs a shell command or a pre-defined recipe in each repository. |
| [**`pr`**](./docs/commands/pr.md) | Creates pull requests for repositories with changes. |
| [**`rm`**](./docs/commands/rm.md) | Removes cloned repositories from your local disk. |
| [**`init`**](./docs/commands/init.md) | Generates a `config.yaml` file from local Git repositories. |
| [**`init`**](./docs/commands/init.md) | Generates a `repos.yaml` file from local Git repositories. |
| [**`validate`**](./plugins/repos-validate/README.md) | Validates config file, repository connectivity, and synchronizes topics (via plugin). |
| [**`review`**](./plugins/repos-review/README.md) | Uses UI to review changes (via plugin). |
| [**`fix`**](./plugins/repos-fix/README.md) | Automatically fixes bugs based on JIRA tickets using Cursor AI (via plugin). |
Expand All @@ -148,7 +148,7 @@ For a full list of options for any command, run `repos <COMMAND> --help`.

## Configuration

The `config.yaml` file is the heart of `repos`. It defines your repositories and
The `repos.yaml` file is the heart of `repos`. It defines your repositories and
their metadata.

```yaml
Expand Down
4 changes: 2 additions & 2 deletions docs/commands/clone.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# repos clone

The `clone` command clones repositories specified in your `config.yaml` file
The `clone` command clones repositories specified in your `repos.yaml` file
into your local workspace.

## Usage
Expand All @@ -24,7 +24,7 @@ repositories defined in the config.
## Options

- `-c, --config <CONFIG>`: Specifies the path to the configuration file.
Defaults to `config.yaml`.
Defaults to `repos.yaml`.
- `-t, --tag <TAG>`: Filters repositories to clone only those that have the
specified tag. This option can be used multiple times to include repositories
with *any* of the specified tags (OR logic).
Expand Down
12 changes: 6 additions & 6 deletions docs/commands/init.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# repos init

The `init` command scans your local filesystem for Git repositories and
generates a `config.yaml` file from them.
generates a `repos.yaml` file from them.

## Usage

Expand All @@ -12,14 +12,14 @@ repos init [OPTIONS]
## Description

This command is the easiest way to get started with `repos`. Instead of writing
a `config.yaml` file by hand, you can clone your repositories into a directory
a `repos.yaml` file by hand, you can clone your repositories into a directory
and then run `repos init` to automatically generate the configuration. It will
discover all Git repositories in the current directory and its subdirectories.

## Options

- `-o, --output <OUTPUT>`: Specifies the name of the output configuration file.
Defaults to `config.yaml`.
Defaults to `repos.yaml`.
- `--overwrite`: If a configuration file already exists at the output path, this
flag allows `repos` to overwrite it.
- `--supplement`: If a configuration file already exists, this flag will add
Expand All @@ -42,7 +42,7 @@ git clone https://github.com/owner/project-two.git
repos init
```

This will create a `config.yaml` file in the `my-projects` directory.
This will create a `repos.yaml` file in the `my-projects` directory.

### Generate a config with a custom name

Expand All @@ -58,12 +58,12 @@ repos init --overwrite

### Add new repositories to an existing config

If you have an existing `config.yaml` and have cloned new repositories, you can
If you have an existing `repos.yaml` and have cloned new repositories, you can
add them without losing your existing configuration (including tags, custom
paths, etc.).

```bash
# config.yaml already exists
# repos.yaml already exists
git clone https://github.com/owner/new-project.git
repos init --supplement
```
6 changes: 3 additions & 3 deletions docs/commands/ls.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# repos ls

The `ls` command lists repositories specified in your `config.yaml` file with
The `ls` command lists repositories specified in your `repos.yaml` file with
optional filtering capabilities.

## Usage
Expand Down Expand Up @@ -28,7 +28,7 @@ repositories defined in the config.
## Options

- `-c, --config <CONFIG>`: Specifies the path to the configuration file.
Defaults to `config.yaml`.
Defaults to `repos.yaml`.
- `-t, --tag <TAG>`: Filters repositories to list only those that have the
specified tag. This option can be used multiple times to include repositories
with *any* of the specified tags (OR logic).
Expand Down Expand Up @@ -114,7 +114,7 @@ repos clone --tag flow
### Use with custom config

```bash
repos ls --config path/to/custom-config.yaml
repos ls --config path/to/custom-repos.yaml
```

## Use Cases
Expand Down
2 changes: 1 addition & 1 deletion docs/commands/pr.md
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ the `GITHUB_TOKEN` environment variable.
- `--create-only`: A "dry-run" mode. It prepares the PR but does not create it
on GitHub.
- `-c, --config <CONFIG>`: Path to the configuration file. Defaults to
`config.yaml`.
`repos.yaml`.
- `-t, --tag <TAG>`: Filter repositories by tag. Can be specified multiple
times.
- `-e, --exclude-tag <EXCLUDE_TAG>`: Exclude repositories with a specific tag.
Expand Down
2 changes: 1 addition & 1 deletion docs/commands/rm.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ If not provided, filtering will be based on tags.
## Options

- `-c, --config <CONFIG>`: Path to the configuration file. Defaults to
`config.yaml`.
`repos.yaml`.
- `-t, --tag <TAG>`: Filter repositories to remove only those with the specified
tag. Can be used multiple times.
- `-e, --exclude-tag <EXCLUDE_TAG>`: Exclude repositories with a specific tag
Expand Down
8 changes: 4 additions & 4 deletions docs/commands/run.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ tasks across hundreds or thousands of repositories at once. You can run any
shell command, from simple `ls` to complex `docker build` scripts.

Additionally, you can define **recipes**—multi-step scripts—in your
`config.yaml` and execute them by name using the `--recipe` option. This is
`repos.yaml` and execute them by name using the `--recipe` option. This is
perfect for standardizing complex workflows like dependency updates, code
generation, or release preparation.

Expand All @@ -41,7 +41,7 @@ command in. If not provided, filtering will be based on tags.
## Options

- `-c, --config <CONFIG>`: Path to the configuration file. Defaults to
`config.yaml`.
`repos.yaml`.
- `-r, --recipe <RECIPE_NAME>`: The name of the recipe to run. This option is
mutually exclusive with the `COMMAND` argument.
- `-t, --tag <TAG>`: Filter repositories by tag. Can be specified multiple times
Expand All @@ -57,12 +57,12 @@ instead of the default `output/runs`.

## Recipes

Recipes are named, multi-step scripts defined in your `config.yaml`. They allow
Recipes are named, multi-step scripts defined in your `repos.yaml`. They allow
you to codify and reuse common workflows.

### Defining a Recipe

Add a `recipes` section to your `config.yaml`:
Add a `recipes` section to your `repos.yaml`:

```yaml
recipes:
Expand Down
16 changes: 8 additions & 8 deletions docs/plugins.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ The core CLI:
- `REPOS_DEBUG=1` (if --debug flag was passed)
- `REPOS_TOTAL_REPOS=28` (total repos in config)
- `REPOS_FILTERED_COUNT=5` (repos after filtering)
- `REPOS_CONFIG_FILE=/path/to/your/config.yaml` (path to config file)
- `REPOS_CONFIG_FILE=/path/to/your/repos.yaml` (path to config file)
6. Executes `repos-health prs` with only plugin-specific args

### Using Context Injection in Your Plugin
Expand Down Expand Up @@ -174,7 +174,7 @@ Here's a simple example of a health check plugin written in bash:
echo "=== Repository Health Check ==="

# Parse arguments
CONFIG_FILE="config.yaml"
CONFIG_FILE="repos.yaml"
VERBOSE=false

while [[ $# -gt 0 ]]; do
Expand Down Expand Up @@ -222,7 +222,7 @@ import sys

def main():
parser = argparse.ArgumentParser(description='Security audit for repositories')
parser.add_argument('-c', '--config', default='config.yaml', help='Config file path')
parser.add_argument('-c', '--config', default='repos.yaml', help='Config file path')
parser.add_argument('--fix', action='store_true', help='Attempt to fix issues automatically')
args = parser.parse_args()

Expand Down Expand Up @@ -291,7 +291,7 @@ Examples:
repos health

# Run health check with custom config and verbose output
repos health -c my-config.yaml -v
repos health -c my-repos.yaml -v

# Run security audit
repos security --config production.yaml
Expand Down Expand Up @@ -324,7 +324,7 @@ repos security --fix

### Integration

- Plugins should work with the standard `config.yaml` format
- Plugins should work with the standard `repos.yaml` format
- Parse the YAML configuration to access repository information
- Consider the repository structure (name, path, tags, etc.)

Expand All @@ -338,14 +338,14 @@ Most plugins will need to read the repos configuration file. Here's how to parse

```bash
# Install yq: brew install yq (macOS) or similar
repos=$(yq eval '.repositories[].name' config.yaml)
repos=$(yq eval '.repositories[].name' repos.yaml)
```

**Python:**

```python
import yaml
with open('config.yaml', 'r') as f:
with open('repos.yaml', 'r') as f:
config = yaml.safe_load(f)
repositories = config.get('repositories', [])
```
Expand All @@ -356,7 +356,7 @@ with open('config.yaml', 'r') as f:
use serde_yaml;
use std::fs;

let content = fs::read_to_string("config.yaml")?;
let content = fs::read_to_string("repos.yaml")?;
let config: serde_yaml::Value = serde_yaml::from_str(&content)?;
```

Expand Down
4 changes: 2 additions & 2 deletions docs/test-inventory.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@ inventory complements existing automated tests and surfaces gaps.
### 1.1 Load valid config file with repositories and recipes

- Description: Verify a well-formed YAML with repositories + recipes parses into internal model.
- Preconditions: `config.yaml` exists, contains at least one repository and one recipe.
- Steps: Run any command requiring config load (e.g. `repos clone --config config.yaml`).
- Preconditions: `repos.yaml` exists, contains at least one repository and one recipe.
- Steps: Run any command requiring config load (e.g. `repos clone --config repos.yaml`).
- Expected:
- Happy: Config loads; repositories & recipes accessible; no warnings.
- Negative: N/A (covered in malformed / missing cases below).
Expand Down
Loading