feat: add small program to check for missing type definitions
This commit is contained in:
parent
eb09d2ae56
commit
fd3d10af89
6 changed files with 273 additions and 17 deletions
30
Cargo.lock
generated
30
Cargo.lock
generated
|
@ -138,7 +138,7 @@ dependencies = [
|
|||
"heck",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.27",
|
||||
"syn 2.0.29",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -487,7 +487,7 @@ checksum = "3c02bfa6b3ba8af5434fa0531bf5701f750d983d4260acd6867faca51cdc4484"
|
|||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.27",
|
||||
"syn 2.0.29",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -526,7 +526,7 @@ dependencies = [
|
|||
"phf_shared",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.27",
|
||||
"syn 2.0.29",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -603,18 +603,18 @@ checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741"
|
|||
|
||||
[[package]]
|
||||
name = "serde"
|
||||
version = "1.0.175"
|
||||
version = "1.0.186"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5d25439cd7397d044e2748a6fe2432b5e85db703d6d097bd014b3c0ad1ebff0b"
|
||||
checksum = "9f5db24220c009de9bd45e69fb2938f4b6d2df856aa9304ce377b3180f83b7c1"
|
||||
dependencies = [
|
||||
"serde_derive",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "serde-email"
|
||||
version = "2.1.0"
|
||||
version = "3.0.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d888a6d080f7abd2527a60468943a4ca4bf719ffaca33d5d689728896a740db5"
|
||||
checksum = "b8f07d6907a91e7d43c1a2f2698a81a1cf025d89daed97fe211b3d25e8cef109"
|
||||
dependencies = [
|
||||
"email_address",
|
||||
"serde",
|
||||
|
@ -622,13 +622,13 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "serde_derive"
|
||||
version = "1.0.175"
|
||||
version = "1.0.186"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b23f7ade6f110613c0d63858ddb8b94c1041f550eab58a16b371bdf2c9c80ab4"
|
||||
checksum = "5ad697f7e0b65af4983a4ce8f56ed5b357e8d3c36651bf6a7e13639c17b8e670"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.27",
|
||||
"syn 2.0.29",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -676,7 +676,7 @@ dependencies = [
|
|||
"proc-macro2",
|
||||
"quote",
|
||||
"rustversion",
|
||||
"syn 2.0.27",
|
||||
"syn 2.0.29",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -692,9 +692,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "syn"
|
||||
version = "2.0.27"
|
||||
version = "2.0.29"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b60f673f44a8255b9c8c657daf66a596d435f2da81a555b06dc644d080ba45e0"
|
||||
checksum = "c324c494eba9d92503e6f1ef2e6df781e78f6a7705a0202d9801b198807d518a"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
|
@ -877,7 +877,7 @@ dependencies = [
|
|||
"once_cell",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.27",
|
||||
"syn 2.0.29",
|
||||
"wasm-bindgen-shared",
|
||||
]
|
||||
|
||||
|
@ -899,7 +899,7 @@ checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b"
|
|||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.27",
|
||||
"syn 2.0.29",
|
||||
"wasm-bindgen-backend",
|
||||
"wasm-bindgen-shared",
|
||||
]
|
||||
|
|
|
@ -14,6 +14,6 @@ derive-new = "0.5"
|
|||
hyper = "0.14.27"
|
||||
palette = { version = "0.7.2", features = ["serializing"] }
|
||||
serde = { version = "1.0", features = ["derive"] }
|
||||
serde-email = "2.1"
|
||||
serde-email = "3.0"
|
||||
strum = { version = "0.25", features = ["derive"] }
|
||||
url = { version = "2.4", features = ["serde"] }
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
![Progress](./progress.png)
|
||||
|
||||
docs: https://codeberg.org/api/swagger#/organization/orgCreateHook
|
||||
docs: https://codeberg.org/api/swagger
|
||||
|
|
181
src/bin/all_models.txt
Normal file
181
src/bin/all_models.txt
Normal file
|
@ -0,0 +1,181 @@
|
|||
Don't delete this line! Copy all names under "models" from https://codeberg.org/api/swagger below this line
|
||||
APIError
|
||||
AccessToken represents an API access token.
|
||||
Activity
|
||||
ActivityPub
|
||||
AddCollaboratorOption
|
||||
AddTimeOption
|
||||
AnnotatedTag
|
||||
AnnotatedTagObject
|
||||
Attachment
|
||||
BlockedUser represents a blocked user.
|
||||
Branch
|
||||
BranchProtection
|
||||
ChangeFileOperation
|
||||
ChangeFilesOptions
|
||||
ChangedFile
|
||||
CombinedStatus
|
||||
Comment
|
||||
Commit contains information generated from a Git commit.
|
||||
CommitAffectedFiles
|
||||
CommitDateOptions
|
||||
CommitMeta contains meta information of a commit in terms of API.
|
||||
CommitStats
|
||||
CommitStatus
|
||||
CommitStatusState
|
||||
CommitUser contains information of a user in the context of a commit.
|
||||
ContentsResponse
|
||||
CreateAccessTokenOption
|
||||
CreateBranchProtectionOption
|
||||
CreateBranchRepoOption
|
||||
CreateEmailOption
|
||||
CreateFileOptions
|
||||
CreateForkOption
|
||||
CreateGPGKeyOption
|
||||
CreateHookOption
|
||||
CreateHookOptionConfig
|
||||
CreateIssueCommentOption
|
||||
CreateIssueOption
|
||||
CreateKeyOption
|
||||
CreateLabelOption
|
||||
CreateMilestoneOption
|
||||
CreateOAuth2ApplicationOptions
|
||||
CreateOrgOption
|
||||
CreatePullRequestOption
|
||||
CreatePullReviewComment
|
||||
CreatePullReviewOptions
|
||||
CreatePushMirrorOption represents need information to create a push mirror of a repository.
|
||||
CreateReleaseOption
|
||||
CreateRepoOption
|
||||
CreateStatusOption
|
||||
CreateTagOption
|
||||
CreateTeamOption
|
||||
CreateUserOption
|
||||
CreateWikiPageOptions
|
||||
Cron
|
||||
DeleteEmailOption
|
||||
DeleteFileOptions
|
||||
DeployKey
|
||||
DismissPullReviewOptions
|
||||
EditAttachmentOptions
|
||||
EditBranchProtectionOption
|
||||
EditDeadlineOption
|
||||
EditGitHookOption
|
||||
EditHookOption
|
||||
EditIssueCommentOption
|
||||
EditIssueOption
|
||||
EditLabelOption
|
||||
EditMilestoneOption
|
||||
EditOrgOption
|
||||
EditPullRequestOption
|
||||
EditReactionOption
|
||||
EditReleaseOption
|
||||
EditRepoOption
|
||||
EditTeamOption
|
||||
EditUserOption
|
||||
Email
|
||||
ExternalTracker
|
||||
ExternalWiki
|
||||
FileCommitResponse contains information generated from a Git commit for a repo's file.
|
||||
FileDeleteResponse
|
||||
FileLinksResponse
|
||||
FileResponse
|
||||
FilesResponse
|
||||
GPGKey
|
||||
GPGKeyEmail
|
||||
GeneralAPISettings
|
||||
GeneralAttachmentSettings
|
||||
GeneralRepoSettings
|
||||
GeneralUISettings
|
||||
GenerateRepoOption
|
||||
GitBlobResponse
|
||||
GitEntry
|
||||
GitHook
|
||||
GitObject represents a Git object.
|
||||
GitTreeResponse
|
||||
GitignoreTemplateInfo
|
||||
Hook
|
||||
Identity
|
||||
InternalTracker
|
||||
Issue
|
||||
IssueConfig
|
||||
IssueConfigContactLink
|
||||
IssueConfigValidation
|
||||
IssueDeadline
|
||||
IssueFormField
|
||||
IssueFormFieldType defines issue form field type, can be "markdown", "textarea", "input", "dropdown" or "checkboxes"
|
||||
IssueLabelsOption
|
||||
IssueMeta
|
||||
IssueTemplate
|
||||
IssueTemplateLabels
|
||||
Label
|
||||
LabelTemplate
|
||||
LicenseTemplateInfo
|
||||
LicensesTemplateListEntry
|
||||
MarkdownOption
|
||||
MarkupOption
|
||||
MergePullRequestOption
|
||||
MigrateRepoOptions
|
||||
Milestone
|
||||
NewIssuePinsAllowed
|
||||
NodeInfo
|
||||
NodeInfoServices
|
||||
NodeInfoSoftware
|
||||
NodeInfoUsage
|
||||
NodeInfoUsageUsers
|
||||
Note
|
||||
NotificationCount
|
||||
NotificationSubject
|
||||
NotificationThread
|
||||
NotifySubjectType
|
||||
OAuth2Application represents an OAuth2 application.
|
||||
Organization
|
||||
OrganizationPermissions
|
||||
PRBranchInfo
|
||||
Package
|
||||
PackageFile
|
||||
PayloadCommit
|
||||
PayloadCommitVerification
|
||||
PayloadUser
|
||||
Permission
|
||||
PublicKey
|
||||
PullRequest
|
||||
PullRequestMeta
|
||||
PullReview
|
||||
PullReviewComment
|
||||
PullReviewRequestOptions
|
||||
PushMirror
|
||||
Reaction
|
||||
Reference represents a Git reference.
|
||||
Release
|
||||
RenameUserOption
|
||||
RepoCollaboratorPermission
|
||||
RepoCommit contains information of a commit in the context of a repository.
|
||||
RepoTopicOptions
|
||||
RepoTransfer
|
||||
Repository
|
||||
RepositoryMeta
|
||||
ReviewStateType
|
||||
SearchResults
|
||||
ServerVersion
|
||||
StateType
|
||||
StopWatch
|
||||
SubmitPullReviewOptions
|
||||
Tag
|
||||
Team
|
||||
TimeStamp
|
||||
TimelineComment
|
||||
TopicName
|
||||
TopicResponse
|
||||
TrackedTime
|
||||
TransferRepoOption
|
||||
UpdateFileOptions
|
||||
User
|
||||
UserHeatmapData
|
||||
UserSettings
|
||||
UserSettingsOptions
|
||||
WatchInfo
|
||||
WikiCommit
|
||||
WikiCommitList
|
||||
WikiPage
|
||||
WikiPageMetaData
|
48
src/bin/checker.rs
Normal file
48
src/bin/checker.rs
Normal file
|
@ -0,0 +1,48 @@
|
|||
use std::process::Command;
|
||||
|
||||
fn main() -> Result<(), impl std::error::Error> {
|
||||
println!("
|
||||
This program checks wether there are type definitions missing in the crate.
|
||||
|
||||
Please:
|
||||
|
||||
- provide a list of all model names in the all_models.txt file. You can find all models here:
|
||||
https://codeberg.org/api/swagger
|
||||
- make sure to run the program in the repo root directory
|
||||
|
||||
The results should be located in a file src/bin/missing_models.txt after the program exited successfully.
|
||||
");
|
||||
|
||||
let file = std::fs::read_to_string("src/bin/all_models.txt")?;
|
||||
|
||||
_ = std::fs::remove_file("src/bin/missing_models.txt");
|
||||
|
||||
let not_found = file
|
||||
.lines()
|
||||
.skip(1)
|
||||
.filter(|l| {
|
||||
// checks if todo for this type was added
|
||||
let output1 = exec_rg(&[format!("//.*{l}").as_str(), "-n"]).unwrap_or_default();
|
||||
// checks if actual rust type exists already
|
||||
let output2 = exec_rg(&[format!("struct {l}").as_str(), "-n"]).unwrap_or_default();
|
||||
|
||||
!(output1.lines().any(|cmd1out| cmd1out.contains(":1:"))
|
||||
|| output2.lines().any(|cmd2out| cmd2out.contains(l)))
|
||||
})
|
||||
.map(String::from)
|
||||
.reduce(|a, b| a + "\n" + &b)
|
||||
.unwrap_or_default();
|
||||
|
||||
std::fs::write("src/bin/missing_models.txt", not_found)?;
|
||||
|
||||
Ok::<(), std::io::Error>(())
|
||||
}
|
||||
|
||||
fn exec_rg(args: &[&str]) -> Option<String> {
|
||||
Command::new("rg")
|
||||
.args(args)
|
||||
.output()
|
||||
.ok()
|
||||
.filter(|o| o.status.success())
|
||||
.map(|o| String::from_utf8_lossy(&o.stdout).to_string())
|
||||
}
|
27
src/bin/missing_models.txt
Normal file
27
src/bin/missing_models.txt
Normal file
|
@ -0,0 +1,27 @@
|
|||
FilesResponse
|
||||
GitignoreTemplateInfo
|
||||
IssueConfig
|
||||
IssueConfigContactLink
|
||||
IssueConfigValidation
|
||||
IssueDeadline
|
||||
IssueMeta
|
||||
LabelTemplate
|
||||
LicenseTemplateInfo
|
||||
LicensesTemplateListEntry
|
||||
MarkdownOption
|
||||
MarkupOption
|
||||
NewIssuePinsAllowed
|
||||
NodeInfo
|
||||
NodeInfoServices
|
||||
NodeInfoSoftware
|
||||
NodeInfoUsage
|
||||
NodeInfoUsageUsers
|
||||
NotificationCount
|
||||
NotificationSubject
|
||||
NotificationThread
|
||||
NotifySubjectType
|
||||
RenameUserOption
|
||||
ServerVersion
|
||||
TimeStamp
|
||||
TopicResponse
|
||||
WikiPageMetaData
|
Loading…
Reference in a new issue