diff options
| author | DanConwayDev <DanConwayDev@protonmail.com> | 2026-02-10 13:10:18 +0000 |
|---|---|---|
| committer | DanConwayDev <DanConwayDev@protonmail.com> | 2026-02-10 13:10:18 +0000 |
| commit | 1e7aeb4d7972d29c6586df18128a8a4f7667845a (patch) | |
| tree | 0f7e5fcaa5a005aeec7ae2d9f35b2c473ef8f785 /src/lib/client.rs | |
| parent | d2412565334f48bd31e57d29d7959c24258ccd98 (diff) | |
| parent | aae452697d152694a8f163219f707356e84b420b (diff) | |
Make ngit non-interactive by default
Implements non-interactive mode as the default behavior for ngit.
Users must now use -i flag for interactive prompts, or provide
all required arguments explicitly. Adds -d flag for sensible
defaults and -f flag for force operations.
Changes:
- CLI interactor infrastructure supports non-interactive mode
- Global flags: -i (interactive), --defaults (use defaults), -f (force)
- ngit init: requires --name or --identifier, supports --defaults
- ngit account: new signup command, login supports non-interactive
- ngit send: validates required fields, supports --defaults
- git-remote-nostr: fixed to prevent interactive prompts during push
- Comprehensive test coverage: 234 unit tests + integration tests
Diffstat (limited to 'src/lib/client.rs')
| -rw-r--r-- | src/lib/client.rs | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/lib/client.rs b/src/lib/client.rs index 4643392..fcb7a40 100644 --- a/src/lib/client.rs +++ b/src/lib/client.rs | |||
| @@ -1300,6 +1300,11 @@ pub async fn get_repo_ref_from_cache( | |||
| 1300 | Some(repo_coordinate.public_key), | 1300 | Some(repo_coordinate.public_key), |
| 1301 | ))?; | 1301 | ))?; |
| 1302 | 1302 | ||
| 1303 | // Use name/description/web from the latest event across all maintainers | ||
| 1304 | let latest_metadata = repo_events | ||
| 1305 | .last() | ||
| 1306 | .and_then(|e| RepoRef::try_from((e.clone(), None)).ok()); | ||
| 1307 | |||
| 1303 | let mut events: HashMap<Nip19Coordinate, nostr::Event> = HashMap::new(); | 1308 | let mut events: HashMap<Nip19Coordinate, nostr::Event> = HashMap::new(); |
| 1304 | for m in &maintainers { | 1309 | for m in &maintainers { |
| 1305 | if let Some(e) = repo_events.iter().find(|e| e.pubkey.eq(m)) { | 1310 | if let Some(e) = repo_events.iter().find(|e| e.pubkey.eq(m)) { |
| @@ -1364,6 +1369,15 @@ pub async fn get_repo_ref_from_cache( | |||
| 1364 | git_server, | 1369 | git_server, |
| 1365 | events, | 1370 | events, |
| 1366 | maintainers_without_annoucnement: Some(maintainers_without_annoucnement), | 1371 | maintainers_without_annoucnement: Some(maintainers_without_annoucnement), |
| 1372 | name: latest_metadata | ||
| 1373 | .as_ref() | ||
| 1374 | .map_or_else(|| repo_ref.name.clone(), |r| r.name.clone()), | ||
| 1375 | description: latest_metadata | ||
| 1376 | .as_ref() | ||
| 1377 | .map_or_else(|| repo_ref.description.clone(), |r| r.description.clone()), | ||
| 1378 | web: latest_metadata | ||
| 1379 | .as_ref() | ||
| 1380 | .map_or_else(|| repo_ref.web.clone(), |r| r.web.clone()), | ||
| 1367 | ..repo_ref | 1381 | ..repo_ref |
| 1368 | }) | 1382 | }) |
| 1369 | } | 1383 | } |