Skip to content

Commit 60f051b

Browse files
authored
Merge branch 'main' into emmercm/20260614-gha-concurrency
2 parents 5e4b896 + 1375928 commit 60f051b

17 files changed

Lines changed: 434 additions & 248 deletions

.git-blame-ignore-revs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,3 +7,7 @@ f7865f77090c8fb2b9e5868a0b415af63983118d
77
# Refactor: sort modules into groups
88
# https://github.com/emmercm/igir/pull/1332
99
6746d8a7b07c285649247d31edf0480058c722cc
10+
11+
# Refactor: major source file reorganization
12+
# https://github.com/emmercm/igir/pull/2230
13+
21d19c47131aa50feb6913d6076033bff3305e21

docs/advanced/internals.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@ Igir runs these steps in the following order:
1515
- Parent/clone information is inferred if the DAT has none (see [DATs docs](../dats/processing.md#parentclone-inference))
1616
- Parent/clone ROMs sets are merged or split (`--merge-roms <type>`) (see [arcade docs](../usage/arcade.md))
1717
- Multi-disc games are merged (`--merge-discs`) (see [ROM set docs](../roms/sets.md))
18-
- ROMs in the DAT are filtered to only those desired (`--filter-*` options) (see [filtering & preference docs](../roms/filtering-preferences.md))
19-
- ROMs in the DAT are filtered to the preferred clone (`--single`, see [filtering & preference docs](../roms/filtering-preferences.md#preferences-for-1g1r))
18+
- ROMs in the DAT are filtered to only those desired (`--filter-*` options) (see [filtering docs](../roms/filtering.md))
19+
- ROMs in the DAT are filtered to the preferred clone (`--single`, see [1G1R docs](../roms/1g1r.md))
2020
- Input files are matched to ROMs in the DAT (see [matching docs](../roms/matching.md))
2121
- Patch files are matched to ROMs found (see [patching docs](../roms/patching.md))
2222
- ROMs without a potentially bad extension have their extension corrected using its file signature

docs/cli.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,8 @@ ASCII symbols are used to indicate what processing is happening. Here is a table
2323
|-----------------------------------------------------------------|-----------------------------------------------------------------------------------------------|
2424
| <span style="color:#00AAAA"><b>∩</b></span> (intersection) | DATs are having parent/clone information [inferred](dats/processing.md#parentclone-inference) |
2525
| <span style="color:#00AAAA"><b>↔</b></span> (left/right arrows) | DATs are having [merge/split rules](usage/arcade.md#rom-set-merge-types) applied |
26-
| <span style="color:#00AAAA"><b>∆</b></span> (delta) | DAT is being [filtered](roms/filtering-preferences.md#filters) |
27-
| <span style="color:#00AAAA"><b>⇅</b></span> (up/down arrows) | ROM [1G1R rules](roms/filtering-preferences.md#preferences-for-1g1r) are being applied |
26+
| <span style="color:#00AAAA"><b>∆</b></span> (delta) | DAT is being [filtered](roms/filtering.md) |
27+
| <span style="color:#00AAAA"><b>⇅</b></span> (up/down arrows) | ROM [1G1R rules](roms/1g1r.md) are being applied |
2828
| <span style="color:#00AAAA"><b>Σ</b></span> (sigma) | ROMs are being [matched](roms/matching.md) to the DAT |
2929
| <span style="color:#00AAAA"><b>.</b></span> (period) | ROM matches are having their [extension corrected](output/options.md#fixing-rom-extensions) |
3030
| <span style="color:#00AAAA"><b>≟</b></span> (question equal) | ROM matches are being checked for issues |

docs/dats/dir2dat.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -82,13 +82,13 @@ Once DATs have been generated from input files, they are processed the same as a
8282

8383
- **Parent/clone information may be [inferred](processing.md#parentclone-inference) from game names.**
8484

85-
If your input files are in some kind of standard naming convention (e.g. [No-Intro](https://wiki.no-intro.org/index.php?title=Naming_Convention), [Redump](https://datomatic.no-intro.org/stuff/The%20Official%20No-Intro%20Convention%20(20071030).pdf), [TOSEC](https://www.tosecdev.org/tosec-naming-convention), or [GoodTools](https://emulation.gametechwiki.com/index.php/GoodTools)), then parent/clone information can be inferred for [1G1R preferences](../roms/filtering-preferences.md).
85+
If your input files are in some kind of standard naming convention (e.g. [No-Intro](https://wiki.no-intro.org/index.php?title=Naming_Convention), [Redump](https://datomatic.no-intro.org/stuff/The%20Official%20No-Intro%20Convention%20(20071030).pdf), [TOSEC](https://www.tosecdev.org/tosec-naming-convention), or [GoodTools](https://emulation.gametechwiki.com/index.php/GoodTools)), then parent/clone information can be inferred for [1G1R preferences](../roms/1g1r.md).
8686

8787
Parent/clone information also allows for [merging & splitting](../usage/arcade.md) of ROM sets.
8888

89-
- **[ROM filter & preference options](../roms/filtering-preferences.md) can be applied.**
89+
- **[ROM filter](../roms/filtering.md) & [1G1R preference](../roms/1g1r.md) options can be applied.**
9090

91-
If your input files are in some kind of standard naming convention (e.g. [No-Intro](https://wiki.no-intro.org/index.php?title=Naming_Convention), [Redump](https://datomatic.no-intro.org/stuff/The%20Official%20No-Intro%20Convention%20(20071030).pdf), [TOSEC](https://www.tosecdev.org/tosec-naming-convention), or [GoodTools](https://emulation.gametechwiki.com/index.php/GoodTools)) that contains region, language, or other tags, then [ROM filter & preference options](../roms/filtering-preferences.md) can be applied.
91+
If your input files are in some kind of standard naming convention (e.g. [No-Intro](https://wiki.no-intro.org/index.php?title=Naming_Convention), [Redump](https://datomatic.no-intro.org/stuff/The%20Official%20No-Intro%20Convention%20(20071030).pdf), [TOSEC](https://www.tosecdev.org/tosec-naming-convention), or [GoodTools](https://emulation.gametechwiki.com/index.php/GoodTools)) that contains region, language, or other tags, then [ROM filter](../roms/filtering.md) & [1G1R preference](../roms/1g1r.md) options can be applied.
9292

9393
- **Filename extensions will be corrected by default.**
9494

docs/dats/fixdats.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,4 +57,4 @@ ROMs-Sorted/
5757

5858
!!! info
5959

60-
Fixdats are affected by [filter & preference (1G1R) options](../roms/filtering-preferences.md). This is because those options are applied to all DATs _before_ [ROM matching](../roms/matching.md) happens.
60+
Fixdats are affected by [filter](../roms/filtering.md) & [1G1R](../roms/1g1r.md) options. This is because those options are applied to all DATs _before_ [ROM matching](../roms/matching.md) happens.

docs/dats/introduction.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ And some less popular release groups are:
3737

3838
DATs that include "parent" and "clone" information help Igir understand what game releases are actually the same game (are "clones" of each other). Frequently, a game will be released in many regions or with different revisions, usually with only localization differences and minor bug fixes. For example, No-Intro has 6+ "clones" of Pokémon Blue cataloged.
3939

40-
Being able to know that many releases are actually the same game gives Igir the ability to produce "one game, one ROM" (1G1R) sets with the [`--single` option](../roms/filtering-preferences.md#preferences-for-1g1r). 1G1R sets include only one of these "clone" releases, usually filtered to a language and region of your choosing, because many people don't care about ROMs they can't understand.
40+
Being able to know that many releases are actually the same game gives Igir the ability to produce ["one game, one ROM" (1G1R)](../roms/1g1r.md) sets with the `--single` option. 1G1R sets include only one of these "clone" releases, usually filtered to a language and region of your choosing, because many people don't care about ROMs they can't understand.
4141

4242
!!! note
4343

docs/dats/processing.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -57,9 +57,9 @@ This may be desirable when creating a [dir2dat](dir2dat.md), a [fixdat](fixdats.
5757

5858
## Parent/clone inference
5959

60-
One feature that sets Igir apart from other ROM managers is its ability to infer parent/clone information when DATs don't provide it. For example, Redump DATs don't provide parent/clone information, which makes it much more difficult to create 1G1R sets.
60+
One feature that sets Igir apart from other ROM managers is its ability to infer parent/clone information when DATs don't provide it. For example, Redump DATs don't provide parent/clone information, which makes it much more difficult to create [1G1R](../roms/1g1r.md) sets.
6161

62-
For example, all of these Super Smash Bros. Melee releases should be considered the same game, even if a DAT doesn't provide proper information. If the releases are all considered the same game, then the `--single` option can be used in combination with [ROM preferences](../roms/filtering-preferences.md) to make a 1G1R set. Igir is smart enough to understand that the only differences between these releases are the regions, languages, and revisions.
62+
For example, all of these Super Smash Bros. Melee releases should be considered the same game, even if a DAT doesn't provide proper information. If the releases are all considered the same game, then the `--single` option can be used in combination with [1G1R preferences](../roms/1g1r.md) to make a 1G1R set. Igir is smart enough to understand that the only differences between these releases are the regions, languages, and revisions.
6363

6464
```text
6565
Super Smash Bros. Melee (Europe) (En,Fr,De,Es,It)
@@ -81,4 +81,4 @@ Super Smash Bros. Melee (USA) (En,Ja) (Rev 2)
8181

8282
[Retool](https://github.com/unexpectedpanda/retool) (no longer maintained) is a DAT manipulation tool that has a set of hand-maintained [parent/clone lists](https://github.com/unexpectedpanda/retool-clonelists-metadata) to supplement common DAT groups such as No-Intro and Redump. This helps cover situations such as release titles in different languages that would be hard to group together automatically.
8383

84-
1G1R DATs made by Retool can be used seamlessly with Igir. You won't need to supply the `--single` option or any [ROM preferences](../roms/filtering-preferences.md) for Igir, as you would have already applied these preferences in Retool, but you can still supply [ROM filtering](../roms/filtering-preferences.md) options if desired.
84+
1G1R DATs made by Retool can be used seamlessly with Igir. You won't need to supply the `--single` option or any [ROM 1G1R preferences](../roms/1g1r.md) for Igir, as you would have already applied these preferences in Retool, but you can still supply [ROM filtering](../roms/filtering.md) options if desired.

docs/installation.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ npx igir@latest copy extract --dat *.dat --input ROMs --output ROMs-Sorted --dir
7474
[Homebrew](https://brew.sh/) is a third-party package manager for macOS. You can install Igir with this command:
7575

7676
```shell
77+
brew trust emmercm/igir
7778
brew install emmercm/igir/igir
7879
```
7980

docs/misc/alternatives.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,8 @@ There are a few different popular ROM managers that have similar features:
3838
| Archives: creation formats |`.zip` (TorrentZip, RVZSTD) only by design ([writing archives docs](../output/writing-archives.md)) |`.zip` (TorrentZip, RVZSTD, Total DOS), `.7z` (LZMA, zstd) | ⚠️ `.zip` (TorrentZip), `.7z`, `.rar` | ⚠️ `.zip`, `.7z` |
3939
| Archives: contents checksums | ✅ when needed ([reading archives docs](../input/reading-archives.md)) | ⚠️ requires "files only" mode or directory | ⚠️ if DAT has forcepacking=unzip ||
4040
| Archives: automatic extension correction |||||
41-
| Filtering: region, language, type, etc. |[many options](../roms/filtering-preferences.md#filters) || ❌ only 1G1R options | ⚠️ only at DB setup |
42-
| Filtering: 1G1R support |[many options](../roms/filtering-preferences.md#preferences-for-1g1r) || ⚠️ region & language only | ⚠️ only at DB setup |
41+
| Filtering: region, language, type, etc. |[many options](../roms/filtering.md) || ❌ only 1G1R options | ⚠️ only at DB setup |
42+
| Filtering: 1G1R support |[many options](../roms/1g1r.md) || ⚠️ region & language only | ⚠️ only at DB setup |
4343
| Playlists: creation support |[playlists docs](../output/playlists.md) ||||
4444
| Reports: report-only mode |||||
4545
| Reports: machine parseable | ✅ CSV | ⚠️ newline-separated "full" & "fix" reports | ⚠️ newline-separated "have" & "miss" lists | ⚠️ newline-separated "have" & "miss" lists |

docs/output/cleaning.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ When using [DATs](../dats/scanning.md), these files will be deleted from the out
66

77
- Files that do not match any ROM in any DAT.
88
- Files that match a ROM in a DAT, but do not have the correct directory & filename.
9-
- Files that match a ROM in a DAT, but were excluded due to [filtering](../roms/filtering-preferences.md#filters) or [1G1R](../roms/filtering-preferences.md#preferences-for-1g1r) options.
9+
- Files that match a ROM in a DAT, but were excluded due to [filtering](../roms/filtering.md) or [1G1R](../roms/1g1r.md) options.
1010

1111
!!! note
1212

0 commit comments

Comments
 (0)