kuil09
06e4d16bf3
feat: add wiki CLI commands ( #998 )
...
## Summary
Add first-class `tea wiki` commands backed by the existing Gitea wiki API and SDK support.
## What this adds
- `tea wiki list`
- `tea wiki view <page>`
- `tea wiki revisions <page>`
- `tea wiki create`
- `tea wiki edit <page>`
- `tea wiki delete <page>`
## Implementation details
- registers a new top-level `wiki` entity command
- keeps command logic under `cmd/wiki/`
- adds wiki-specific renderers in `modules/print/wiki.go`
- adds wiki task helpers in `modules/task/wiki.go`
- reuses existing repo/login/output/pagination patterns used elsewhere in `tea`
- base64-encodes wiki content for create/edit API calls
- requires explicit `--confirm` for delete
- preserves the current page title during edit when `--title` is omitted
## Test coverage
The PR is intentionally split into two commits:
1. `feat: add wiki CLI commands`
2. `test: add wiki integration coverage`
Validation performed:
- focused command, task, and print tests for the new wiki functionality
- integration coverage for the wiki command lifecycle
- `make lint`
- `make fmt-check`
- `make docs-check`
- `make build`
- upstream PR CI passed:
- `check-and-test / Integration Test`
- `check-and-test / Lint Build And Unit Coverage`
## Motivation
This makes `tea` a better interface for both human and agent-driven workflows by exposing wiki operations as stable first-class CLI commands instead of requiring ad-hoc API calls or custom wrappers.
---
Generated by Hermes Agent with GPT-5.4
---------
Co-authored-by: nitro <nitro@nitroui-Macmini.local >
Reviewed-on: https://gitea.com/gitea/tea/pulls/998
Reviewed-by: Lunny Xiao <xiaolunwen@gmail.com >
Co-authored-by: kuil09 <202447+kuil09@noreply.gitea.com >
Co-committed-by: kuil09 <202447+kuil09@noreply.gitea.com >
2026-05-26 21:14:47 +00:00
ghainer
22ff601988
feat: add additional admin users subcommands ( #842 )
...
## Summary
Adds admin user management commands to the tea CLI, enabling admins to create, edit, and delete user accounts.
## Features Added
### Admin User Management Commands
- **Create users**: `tea admin users create` - Create new user accounts with configurable options
- **Edit users**: `tea admin users edit <username>` - Update user properties including password, permissions, and profile settings
- **Delete users**: `tea admin users delete <username>` - Remove user accounts with confirmation prompt
### Implementation Details
#### Create Command (`admin users create`)
- Required: username
- Optional: email, full name, password
- Flags: admin, restricted, prohibit-login, visibility
- Password input: command-line flag, file, stdin, or interactive prompt with confirmation
- Default: users must change password on first login (use `--no-must-change-password` to skip)
- Post-creation updates for admin/restricted/prohibit-login (not available during creation)
#### Edit Command (`admin users edit`)
- Updates only explicitly provided fields (partial updates)
- Password change support with the same input methods as create
- Editable fields:
- Profile: email, full name, description, website, location
- Permissions: admin/restricted/active status
- Settings: visibility, max repo creation limits
- Advanced: git hooks, local imports, organization creation
- Default: password changes require password change on next login (use `--no-must-change-password` to skip)
#### Delete Command (`admin users delete`)
- Confirmation prompt by default
- `--confirm` flag to skip confirmation
- Displays user details before deletion
### Security Features
- Secure password input via interactive prompts (hidden input)
- Multiple password input methods: flag, file, stdin, interactive
- Password confirmation for interactive mode
- Whitespace trimming for file/stdin inputs
### Password Input Methods
1. **Command-line flag**: `--password <value>`
2. **File input**: `--password-file <file>` - Read from file
3. **Stdin input**: `--password-stdin` - Read from stdin
4. **Interactive prompt**: Automatically prompts if password not provided (with confirmation)
For edit command: Use `--password=""` to trigger interactive prompt.
## Usage Examples
```bash
# Create a new user
tea admin users create --username john --email john@example.com --admin --no-must-change-password
# Create with interactive password prompt
tea admin users create jane --email jane@example.com
# Edit user properties
tea admin users edit john --email newemail@example.com --restricted
# Change user password (will prompt if not provided)
tea admin users edit john --password=""
tea admin users edit john --password-file /path/to/password.txt
# Delete a user (with confirmation)
tea admin users delete olduser
# Delete without confirmation
tea admin users delete olduser --confirm
```
## Related Issue
Resolves #161
## Testing
- Unit tests for all commands
- Flag validation and default value tests
- Password input method tests (file, stdin, interactive)
- Test coverage for all user option structures
- Confirmation logic tests for delete command
## Technical Details
- Uses Gitea SDK `AdminCreateUser`, `AdminEditUser`, and `AdminDeleteUser` APIs
- Follows existing tea CLI patterns and conventions
- Handles fields not available during creation via post-creation updates
- Partial update support for edit command (only updates explicitly set fields)
- Consistent with other tea commands (webhooks, secrets) in password handling and confirmation patterns
All tests pass and the implementation integrates with existing tea CLI infrastructure.
---------
Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com >
Reviewed-on: https://gitea.com/gitea/tea/pulls/842
Reviewed-by: Lunny Xiao <xiaolunwen@gmail.com >
Co-authored-by: ghainer <gehainer@gmail.com >
Co-committed-by: ghainer <gehainer@gmail.com >
2026-05-02 23:50:36 +00:00
Brandon Fryslie
9d6ae4bf02
feat(ssh-keys): add ssh-keys command to manage SSH public keys ( #940 )
...
## Summary
- Adds `tea ssh-keys` command group (aliases: `ssh-key`, `keys`) under the SETUP category
- Mirrors the interface of `gh ssh-key add/list/delete`
- Three subcommands: `add <keyfile>`, `list`, `delete <id>`
## Commands
\`\`\`sh
tea ssh-keys add ~/.ssh/id_ed25519.pub # title defaults to filename stem
tea ssh-keys add ~/.ssh/id_rsa.pub --title "work laptop"
tea ssh-keys add ~/.ssh/deploy.pub --read-only # authentication-only key
tea ssh-keys list
tea ssh-keys list --output json
tea ssh-keys delete 42 # prompts for confirmation
tea ssh-keys delete 42 --force # skip prompt
\`\`\`
## Test plan
- [x] `make lint` — 0 issues
- [x] `make fmt-check` — passes
- [x] `go test ./cmd/sshkeys/... -run TestKeyTitle` — unit tests pass (no server needed)
- [ ] Integration tests with live Gitea instance:
\`\`\`sh
GITEA_TEA_TEST_URL=https://your-gitea \
GITEA_TEA_TEST_TOKEN=<token> \
go test ./cmd/sshkeys/... -v -run TestSSHKey
\`\`\`
Exercises full add → SDK-verify → delete → 404-verify lifecycle.
---------
Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com >
Co-authored-by: Brandon Fryslie <530235+brandon-fryslie@users.noreply.github.com >
Reviewed-on: https://gitea.com/gitea/tea/pulls/940
Reviewed-by: Lunny Xiao <xiaolunwen@gmail.com >
Co-authored-by: Brandon Fryslie <186614+brandroid@noreply.gitea.com >
Co-committed-by: Brandon Fryslie <186614+brandroid@noreply.gitea.com >
2026-05-02 18:24:08 +00:00