Skip to content

Commit

Permalink
fix: nuget package discoverage (#18)
Browse files Browse the repository at this point in the history
  • Loading branch information
renancaraujo authored Feb 16, 2024
1 parent 420d5fb commit 42552ce
Show file tree
Hide file tree
Showing 19 changed files with 114 additions and 26 deletions.
12 changes: 8 additions & 4 deletions lib/src/dependabot_yaml/spec.dart
Original file line number Diff line number Diff line change
Expand Up @@ -383,10 +383,14 @@ class _AllowedEntryConverter

@override
Map<dynamic, dynamic> toJson(AllowEntry object) {
return switch (object) {
final AllowDependency dep => _$AllowDependencyToJson(dep),
final AllowDependencyType depType => _$AllowDependencyTypeToJson(depType),
};
// Not using switch expressions because https://github.com/dart-lang/sdk/issues/54941
if (object is AllowDependency) {
return _$AllowDependencyToJson(object);
}

object as AllowDependencyType;

return _$AllowDependencyTypeToJson(object);
}
}

Expand Down
38 changes: 17 additions & 21 deletions lib/src/package_ecosystem/package_ecosystem.dart
Original file line number Diff line number Diff line change
Expand Up @@ -84,10 +84,8 @@ enum PackageEcosystem {
gradle(
_ManifestPackageEcosystemFinder(
indexFiles: {
'build.gradle',
'build.gradle.kts',
r'__build\.(gradle|gradle\.kts)$',
},
endsWith: true,
),
),

Expand Down Expand Up @@ -123,8 +121,10 @@ enum PackageEcosystem {
nuget(
_ManifestPackageEcosystemFinder(
indexFiles: {
'.nuspec',
'.csproj',
'packages.config',
r'__\.proj$',
r'__\.(cs|vb|fs)proj$',
r'__\.sln$',
},
),
),
Expand Down Expand Up @@ -162,10 +162,9 @@ enum PackageEcosystem {
terraform(
_ManifestPackageEcosystemFinder(
indexFiles: {
'.tf',
'.hcl',
r'__\.tf$',
r'__\.hcl$',
},
endsWith: true,
),
),
;
Expand Down Expand Up @@ -270,14 +269,11 @@ class _ManifestPackageEcosystemFinder implements _PackageEcosystemFinder {
/// {@macro manifest_package_ecosystem_finder}
const _ManifestPackageEcosystemFinder({
required this.indexFiles,
this.endsWith = false,
});

/// The index files used to find the package manifests.
final Set<String> indexFiles;

final bool endsWith;

@override
Iterable<UpdateEntryInfo> findUpdateEntries({
required Directory repoRoot,
Expand All @@ -286,8 +282,7 @@ class _ManifestPackageEcosystemFinder implements _PackageEcosystemFinder {
}) sync* {
final paths = _findFilesRecursivelyOn(
directory: repoRoot,
withNames: indexFiles,
endsWith: endsWith,
thatMatches: indexFiles,
).where((e) => e.isNotIgnored()).map((e) => e.path);

outer:
Expand Down Expand Up @@ -323,8 +318,7 @@ class _ManifestPackageEcosystemFinder implements _PackageEcosystemFinder {

List<File> _findFilesRecursivelyOn({
required Directory directory,
required Set<String> withNames,
required bool endsWith,
required Set<String> thatMatches,
}) {
final result = <File>[];
final dirList = directory.absolute
Expand All @@ -334,14 +328,16 @@ List<File> _findFilesRecursivelyOn({
..sort((l, r) => l.path.compareTo(r.path));
for (final entity in dirList) {
final filename = p.basename(entity.path);
if (withNames.contains(filename)) {
result.add(entity);
} else if (endsWith) {
for (final indexName in withNames) {
if (filename.endsWith(indexName)) {

for (final pattern in thatMatches) {
final isRegex = pattern.startsWith('__');
if (isRegex) {
final regex = RegExp(pattern.substring(2));
if (regex.hasMatch(filename)) {
result.add(entity);
break;
}
} else if (filename == pattern) {
result.add(entity);
}
}
}
Expand Down
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
69 changes: 68 additions & 1 deletion test/src/commands/create_command_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -135,17 +135,34 @@ void main() {
verify(
() => logger.success('Added gradle entry for /packages/gradle/p2'),
).called(1);
verify(
() => logger.success('Added gradle entry for /packages/gradle/p3'),
).called(1);

verify(() => logger.success('Added mix entry for /packages/hex'))
.called(1);
verify(() => logger.success('Added maven entry for /packages/maven'))
.called(1);
verify(() => logger.success('Added npm entry for /packages/npm'))
.called(1);

verify(
() => logger.success('Added nuget entry for /packages/nuget/p1'),
).called(1);
verify(
() => logger.success('Added nuget entry for /packages/nuget/p2'),
).called(1);
verify(
() => logger.success('Added nuget entry for /packages/nuget/p1'),
() => logger.success('Added nuget entry for /packages/nuget/p3'),
).called(1);
verify(
() => logger.success('Added nuget entry for /packages/nuget/p4'),
).called(1);
verify(
() => logger.success('Added nuget entry for /packages/nuget/p5'),
).called(1);
verify(
() => logger.success('Added nuget entry for /packages/nuget/p6'),
).called(1);
verify(() => logger.success('Added pip entry for /packages/pip/p3'))
.called(1);
Expand Down Expand Up @@ -282,6 +299,16 @@ updates:
- dependabot
milestone: 4
target-branch: master
- package-ecosystem: gradle
directory: /packages/gradle/p3
schedule:
interval: daily
labels:
- dependencies
- deps
- dependabot
milestone: 4
target-branch: master
- package-ecosystem: mix
directory: /packages/hex
schedule:
Expand Down Expand Up @@ -332,6 +359,46 @@ updates:
- dependabot
milestone: 4
target-branch: master
- package-ecosystem: nuget
directory: /packages/nuget/p3
schedule:
interval: daily
labels:
- dependencies
- deps
- dependabot
milestone: 4
target-branch: master
- package-ecosystem: nuget
directory: /packages/nuget/p4
schedule:
interval: daily
labels:
- dependencies
- deps
- dependabot
milestone: 4
target-branch: master
- package-ecosystem: nuget
directory: /packages/nuget/p5
schedule:
interval: daily
labels:
- dependencies
- deps
- dependabot
milestone: 4
target-branch: master
- package-ecosystem: nuget
directory: /packages/nuget/p6
schedule:
interval: daily
labels:
- dependencies
- deps
- dependabot
milestone: 4
target-branch: master
- package-ecosystem: pip
directory: /packages/pip/p1
schedule:
Expand Down
5 changes: 5 additions & 0 deletions test/src/commands/diagnose_command_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -109,11 +109,16 @@ Some issues were found in your dependabot setup:
- gomod:/packages/gomod
- gradle:/packages/gradle/p1
- gradle:/packages/gradle/p2
- gradle:/packages/gradle/p3
- mix:/packages/hex
- maven:/packages/maven
- npm:/packages/npm
- nuget:/packages/nuget/p1
- nuget:/packages/nuget/p2
- nuget:/packages/nuget/p3
- nuget:/packages/nuget/p4
- nuget:/packages/nuget/p5
- nuget:/packages/nuget/p6
- pip:/packages/pip/p1
- pip:/packages/pip/p2
- pip:/packages/pip/p3
Expand Down
16 changes: 16 additions & 0 deletions test/src/package_ecosystem/package_ecosystem_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,18 @@ void main() {
),
);

expect(
PackageEcosystem.gradle,
findsEntries(
[
entryWith(directory: '/packages/gradle/p1', ecosystem: 'gradle'),
entryWith(directory: '/packages/gradle/p2', ecosystem: 'gradle'),
entryWith(directory: '/packages/gradle/p3', ecosystem: 'gradle'),
],
on: repoRoot,
),
);

expect(
PackageEcosystem.hex,
findsEntries(
Expand Down Expand Up @@ -124,6 +136,10 @@ void main() {
[
entryWith(directory: '/packages/nuget/p1', ecosystem: 'nuget'),
entryWith(directory: '/packages/nuget/p2', ecosystem: 'nuget'),
entryWith(directory: '/packages/nuget/p3', ecosystem: 'nuget'),
entryWith(directory: '/packages/nuget/p4', ecosystem: 'nuget'),
entryWith(directory: '/packages/nuget/p5', ecosystem: 'nuget'),
entryWith(directory: '/packages/nuget/p6', ecosystem: 'nuget'),
],
on: repoRoot,
),
Expand Down

0 comments on commit 42552ce

Please sign in to comment.