Skip to content

Latest commit

 

History

History
75 lines (53 loc) · 3.25 KB

File metadata and controls

75 lines (53 loc) · 3.25 KB

Repository Instructions

Important

Read README.md for project overview and SECURITY.md for security guidelines.

Tech Stack

  • Go 1.25+ (see go.mod)
  • Clean Architecture (cmd/cli/internal/pkg/)
  • Minimal dependencies (prefer standard library)

Repository Structure

  • cmd/ - Entry point (main.go)
  • cli/ - CLI flags and root command (urfave/cli/v3)
  • internal/application/ - Use cases per exec-platform
  • internal/domain/ - Domain entities and rules
  • internal/infrastructure/ - Repositories that drive telnet/ssh sessions
  • internal/framework/ - Cross-cutting framework code
  • internal/config/ - Runtime configuration
  • pkg/{telnet,ssh,errors}/ - Reusable transport and error packages

Setup and Commands

Install required tools (one-time):

Make targets (Makefile):

  • make build - Build binary into tmp/telee
  • make lint - golangci-lint run + go mod tidy
  • make test-unit - run unit tests via gotestsum with coverage
  • make test-unit-coverage - generate HTML coverage report at coverage/report.html
  • make clean - remove build artifacts

Code Style

Testing Instructions

Commits and PRs

  • Use Conventional Commits (feat:, fix:, chore(deps):, etc.).
  • Sign off commits with Signed-off-by: (DCO).
  • Open PRs against main. CI runs lint, tests, and CodeQL.

Domain Knowledge

Network devices have unique prompt patterns and privilege modes.

Reference internal/application/usecases/ and internal/infrastructure/repositories/:

  • Cisco IOS/IOS-XE: Enable mode password required, prompt >#
  • Cisco NX-OS: Similar to IOS, different paging commands
  • Cisco ASA: No paging support in user mode
  • Cisco AireOS: No enable mode, WLC-specific prompts
  • Juniper SRX/SSG: CLI vs config mode, prompts > / #
  • YAMAHA RT: Japanese vendor, unique syntax

References