Sprint B.5: add-LICENSE action (MIT/Apache-2.0) in [m] menu + vulp repo license

- src/license/: embedded templates, holder resolution (config > git user.name
  > account username), write path shared by TUI and CLI
- TUI: bulk-aware [m] entry over action_targets(), kind select + confirm,
  point-updates has_license/is_dirty, logs to activity (new License kind)
- CLI: vulp repo license <repo>...|--all [--kind] [--holder] [--json],
  skips already-licensed repos, exit 2/4 contract kept
- config: license_holder + default_license fields (TUI-editable)
- never overwrites an existing license, never auto-commits
This commit is contained in:
dualfroz committed 2026-07-06 15:37:25 +02:00
1 parent 0468c032c6
commit f1432d1cd3
15 files changed
+506 -7

No files matched your search

+11
View File
@@ -208,6 +208,17 @@ pub enum RepoCmd {
/// pull | push | admin
#[arg(long, default_value = "push")] role: String,
},
/// Write a LICENSE file into repos that lack one (never overwrites, never commits)
License {
/// Repo names (omit with --all)
repos: Vec<String>,
/// Every workspace repo missing a license
#[arg(long)] all: bool,
/// mit | apache-2.0 (default: config `default_license`)
#[arg(long)] kind: Option<String>,
/// Copyright holder (default: config `license_holder`, then git user.name)
#[arg(long)] holder: Option<String>,
},
}
#[derive(Args)]