Documentation
¶
Index ¶
- type BinaryCmd
- type BinaryComposeCmd
- type BinaryDecomposeCmd
- type BinaryListCmd
- type BusinessAddCmd
- type BusinessCmd
- type BusinessListCmd
- type BusinessSetCmd
- type CiAddCmd
- type CiCmd
- type CiListCmd
- type CiRemoveCmd
- type ClientAddCmd
- type ClientCmd
- type ClientGenerateCmd
- type ClientListCmd
- type ClientRemoveCmd
- type ClientSetCmd
- type Cmd
- type DeployAddCmd
- type DeployCmd
- type DeployListCmd
- type DeployRemoveCmd
- type GrpcClientAddCmd
- type GrpcClientCmd
- type GrpcClientListCmd
- type LayoutCmd
- type LayoutSetCmd
- type PbStubsCmd
- type PbStubsSetCmd
- type ScaleCmd
- type ScaleListCmd
- type ScaleSetCmd
- type ScaleUnsetCmd
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type BinaryCmd ¶
type BinaryCmd struct {
Compose BinaryComposeCmd `` /* 173-byte string literal not displayed */
List BinaryListCmd `cmd:"" help:"List the composed binaries declared in the lock."`
Decompose BinaryDecomposeCmd `cmd:"" help:"Remove a domain's composed-binary declaration (revert to standalone per-component binaries). Re-signs on save."`
}
BinaryCmd is the parent of `w17ctl target binary <leaf>` — compose / list / decompose. It manages the lock's `binaries[]` surface (binary-composition feature): folding several of a domain's generated components into ONE binary instead of the default one-binary-per-component layout.
The console owns the lock. compose / decompose go through the console's EditLock (which validates the combo + re-signs); list reads through DescribeLock. The component-combo rules + the derived binary name live server-side.
type BinaryComposeCmd ¶
type BinaryComposeCmd struct {
Domain string `arg:"" help:"Domain whose components to compose (matches proto/domains/<DOMAIN>/)."`
Components string `` /* 283-byte string literal not displayed */
LockPath string `name:"lock" placeholder:"PATH" default:"w17/lock.yaml" help:"Path to the lock file."`
Console string `` /* 176-byte string literal not displayed */
}
BinaryComposeCmd implements `w17ctl target binary compose <domain> --components gateway,admin`. It sets (or replaces) the domain's `binaries[]` entry. The binary name is DERIVED from the component set server-side: a storage-bearing set → `<domain>-server` (full tier stack), else a gateway set → `<domain>-gateway`.
func (*BinaryComposeCmd) Run ¶
func (c *BinaryComposeCmd) Run() error
type BinaryDecomposeCmd ¶
type BinaryDecomposeCmd struct {
Domain string `arg:"" help:"Domain whose composed-binary declaration to remove (revert to standalone)."`
LockPath string `name:"lock" placeholder:"PATH" default:"w17/lock.yaml" help:"Path to the lock file."`
Console string `` /* 176-byte string literal not displayed */
}
BinaryDecomposeCmd implements `w17ctl target binary decompose <domain>`.
func (*BinaryDecomposeCmd) Run ¶
func (c *BinaryDecomposeCmd) Run() error
type BinaryListCmd ¶
type BinaryListCmd struct {
LockPath string `name:"lock" placeholder:"PATH" default:"w17/lock.yaml" help:"Path to the lock file."`
Console string `` /* 176-byte string literal not displayed */
}
BinaryListCmd implements `w17ctl target binary list`.
func (*BinaryListCmd) Run ¶
func (c *BinaryListCmd) Run() error
type BusinessAddCmd ¶
type BusinessAddCmd struct {
LockPath string `name:"lock" placeholder:"PATH" default:"w17/lock.yaml" help:"Path to the lock file."`
Console string `` /* 176-byte string literal not displayed */
Domain string `` /* 141-byte string literal not displayed */
Register string `` /* 197-byte string literal not displayed */
Env []string `` /* 331-byte string literal not displayed */
}
BusinessAddCmd implements `w17ctl target business add`. Domain + register are required; env is an optional repeatable declaration of the bundle's env-var surface (parsed + validated server-side).
func (*BusinessAddCmd) Run ¶
func (c *BusinessAddCmd) Run() error
type BusinessCmd ¶
type BusinessCmd struct {
Add BusinessAddCmd `` /* 181-byte string literal not displayed */
Set BusinessSetCmd `` /* 153-byte string literal not displayed */
List BusinessListCmd `cmd:"" help:"List the business_bundles[] entries declared in the lock."`
}
BusinessCmd is the parent of `w17ctl target business <leaf>` — add / list. It closes the same lock-edit ergonomic gap that `grpc-client add` closed for grpc_clients[], but for the `generated_code.business_bundles[]` declarations codegen reads to emit a `<domain>-business` bundle: the generated runtime + the plugin-parallel gen package (EnvConfig / HandlerRegistry / ClientSet) the project's hand-written RegisterBusiness consumes.
The console owns the lock. add goes through the console's EditLock (which parses + validates the env specs, rejects a duplicate domain, and re-signs); list reads through DescribeLock.
type BusinessListCmd ¶
type BusinessListCmd struct {
LockPath string `name:"lock" placeholder:"PATH" default:"w17/lock.yaml" help:"Path to the lock file."`
Console string `` /* 176-byte string literal not displayed */
}
BusinessListCmd implements `w17ctl target business list`.
func (*BusinessListCmd) Run ¶
func (c *BusinessListCmd) Run() error
type BusinessSetCmd ¶
type BusinessSetCmd struct {
LockPath string `name:"lock" placeholder:"PATH" default:"w17/lock.yaml" help:"Path to the lock file."`
Console string `` /* 191-byte string literal not displayed */
Domain string `name:"domain" required:"" help:"Domain whose entry to rewrite. Must already exist — 'target business add' creates one."`
Register string `` /* 150-byte string literal not displayed */
Env []string `` /* 183-byte string literal not displayed */
ClearEnv bool `` /* 231-byte string literal not displayed */
}
BusinessSetCmd implements `w17ctl target business set` — the missing half of `add`.
`add` allows one entry per domain and nothing could edit it, so the first `register` a project typed was final: a consumer who passed a full import path where a module-relative one belongs had no way back short of reinitialising the project. They named it as one of a family — decisions taken at `init` that `init` gives no way to revise — of which `pb_stubs` was the previous one.
func (*BusinessSetCmd) Run ¶
func (c *BusinessSetCmd) Run() error
type CiAddCmd ¶
type CiAddCmd struct {
Provider string `arg:"" help:"CI provider to generate e2e CI for: github|gitlab|circleci|azure|bitbucket|jenkins|generic."`
LockPath string `name:"lock" placeholder:"PATH" default:"w17/lock.yaml" help:"Path to the lock file."`
Console string `` /* 176-byte string literal not displayed */
}
CiAddCmd implements `w17ctl target ci add <provider>`. It appends (or no-ops on) the provider's `ci_configs[]` entry. The output path (`w17/ci/<provider>/`) is derived, so there's nothing else to name.
type CiCmd ¶
type CiCmd struct {
Add CiAddCmd `` /* 129-byte string literal not displayed */
List CiListCmd `cmd:"" help:"List the CI providers declared in the lock."`
Remove CiRemoveCmd `cmd:"" help:"Remove a CI provider's declaration (stop generating its config). Re-signs on save."`
}
CiCmd is the parent of `w17ctl target ci <leaf>` — add / list / remove. It manages the lock's `ci_configs[]` surface (the opt-in for generated e2e CI). Each entry names one CI provider; codegen renders a self-contained, w17ctl-driven CI config under `w17/ci/<provider>/` that the consumer copies into its CI's canonical location (the compiler never touches the repo root — Zero-Code Isolation).
The console owns the lock. add / remove go through the console's EditLock (which validates the provider name + re-signs); list reads through DescribeLock.
type CiListCmd ¶
type CiListCmd struct {
LockPath string `name:"lock" placeholder:"PATH" default:"w17/lock.yaml" help:"Path to the lock file."`
Console string `` /* 176-byte string literal not displayed */
}
CiListCmd implements `w17ctl target ci list`.
type CiRemoveCmd ¶
type CiRemoveCmd struct {
Provider string `arg:"" help:"CI provider whose declaration to remove (stop generating its config)."`
LockPath string `name:"lock" placeholder:"PATH" default:"w17/lock.yaml" help:"Path to the lock file."`
Console string `` /* 176-byte string literal not displayed */
}
CiRemoveCmd implements `w17ctl target ci remove <provider>`.
func (*CiRemoveCmd) Run ¶
func (c *CiRemoveCmd) Run() error
type ClientAddCmd ¶
type ClientAddCmd struct {
LockPath string `name:"lock" placeholder:"PATH" default:"w17/lock.yaml" help:"Path to the lock file."`
Console string `` /* 176-byte string literal not displayed */
// Non-interactive overrides — when every flag is set the
// wizard skips prompting + runs straight to validation +
// save. Useful for CI / scripts that already know the answers.
Framework string `name:"framework" placeholder:"NAME" help:"Skip prompt for framework. One of: core, react, react-native, vue."`
Language string `name:"language" placeholder:"NAME" help:"Skip prompt for language. One of: typescript, javascript."`
OutputRoot string `name:"output-root" placeholder:"PATH" help:"Skip prompt for output root."`
Wire string `name:"wire" placeholder:"NAME" help:"Skip prompt for wire format. One of: json, protobuf, unspecified."`
// RestSurface scopes the client to one `(w17.rest_api)` surface by
// name. Empty keeps the whole-project shape, where every method must
// be REST-addressable — right for a project whose entire API is its
// REST API, and impossible for one that keeps most of itself on gRPC.
RestSurface string `` /* 200-byte string literal not displayed */
}
ClientAddCmd implements `w17ctl target client add`. Wizard prompts:
- Framework — pick from CORE / REACT / REACT_NATIVE / VUE.
- Language — pick from TYPESCRIPT / JAVASCRIPT.
- Output root — project-relative path the w17client binary writes generated files under (convention: `ui/w17/web-client` for web, `ui/w17/mobile-client` for RN).
- Wire format — pick from JSON / PROTOBUF / UNSPECIFIED (UNSPECIFIED defaults to JSON at codegen time, ack'd historical default).
Refuses if the output_root is already claimed by another clients[] entry (the validator on lock save enforces uniqueness; wizard surfaces the diag earlier with a clearer message).
func (*ClientAddCmd) Run ¶
func (c *ClientAddCmd) Run() error
type ClientCmd ¶
type ClientCmd struct {
Add ClientAddCmd `` /* 146-byte string literal not displayed */
Set ClientSetCmd `` /* 138-byte string literal not displayed */
Remove ClientRemoveCmd `cmd:"" help:"Drop the generated-client entry at an output root. The tree already on disk is yours to delete."`
List ClientListCmd `cmd:"" help:"List the generated-client entries declared in the lock."`
Generate ClientGenerateCmd `cmd:"" help:"Generate the FE client tree(s) declared in generated_code.clients[] (formerly the standalone w17client binary)."`
}
ClientCmd is the parent of `w17ctl target client <leaf>` commands — add / list / generate.
The console owns the lock. The add wizard appends one entry to `generated_code.clients[]` (the FE client codegen output declarations) via the console's EditLock (which maps the framework/language/wire tokens to the lock enums + re-signs); list reads through DescribeLock. (generate is codegen orchestration — it still loads the lock for the console address + proto dir, migrated with the rest of the codegen path.)
type ClientGenerateCmd ¶
type ClientGenerateCmd struct {
Lock string `name:"lock" placeholder:"PATH" default:"w17/lock.yaml" help:"Path to the lock file (relative paths resolve from cwd)."`
ProtoRoot string `` /* 139-byte string literal not displayed */
ProjectRoot string `name:"project-root" placeholder:"DIR" help:"Project root for resolving output_root in lock.clients[] (default cwd)."`
Console string `` /* 211-byte string literal not displayed */
}
ClientGenerateCmd implements `w17ctl target client generate` — the FE client codegen formerly shipped as the standalone `w17client` binary. As a thin client it uploads the proto set + the signed lock to the console's GenerateClient RPC, which runs the generator server-side, and writes the returned trees under each client's output_root.
func (*ClientGenerateCmd) Run ¶
func (c *ClientGenerateCmd) Run() error
type ClientListCmd ¶
type ClientListCmd struct {
LockPath string `name:"lock" placeholder:"PATH" default:"w17/lock.yaml" help:"Path to the lock file."`
Console string `` /* 176-byte string literal not displayed */
}
ClientListCmd implements `w17ctl target client list`. One client per line, framework + language + output root + wire format surfaced in the friendly shape.
func (*ClientListCmd) Run ¶
func (c *ClientListCmd) Run() error
type ClientRemoveCmd ¶
type ClientRemoveCmd struct {
OutputRoot string `arg:"" name:"output-root" help:"The entry's output root, as 'target client list' prints it."`
LockPath string `name:"lock" placeholder:"PATH" default:"w17/lock.yaml" help:"Path to the lock file."`
Console string `` /* 176-byte string literal not displayed */
}
ClientRemoveCmd implements `w17ctl target client remove <output-root>`.
func (*ClientRemoveCmd) Run ¶
func (c *ClientRemoveCmd) Run() error
type ClientSetCmd ¶
type ClientSetCmd struct {
OutputRoot string `arg:"" name:"output-root" help:"The entry's output root, as 'target client list' prints it."`
RestSurface *string `` /* 129-byte string literal not displayed */
Framework *string `name:"framework" placeholder:"NAME" help:"One of: core, react, react-native, vue."`
Language *string `name:"language" placeholder:"NAME" help:"One of: typescript, javascript."`
Wire *string `name:"wire" placeholder:"NAME" help:"One of: json, protobuf, unspecified."`
LockPath string `name:"lock" placeholder:"PATH" default:"w17/lock.yaml" help:"Path to the lock file."`
Console string `` /* 176-byte string literal not displayed */
}
ClientSetCmd implements `w17ctl target client set <output-root>` — the edit `add` could not make. Switching an entry to another rest_surface used to mean editing the signed lock by hand. Only the flags GIVEN change; `--rest-surface ""` clears the scoping.
func (*ClientSetCmd) Run ¶
func (c *ClientSetCmd) Run() error
type Cmd ¶
type Cmd struct {
Client ClientCmd `` /* 145-byte string literal not displayed */
GrpcClient GrpcClientCmd `` /* 207-byte string literal not displayed */
Business BusinessCmd `` /* 223-byte string literal not displayed */
Binary BinaryCmd `` /* 191-byte string literal not displayed */
Deploy DeployCmd `` /* 179-byte string literal not displayed */
Ci CiCmd `` /* 191-byte string literal not displayed */
Scale ScaleCmd `` /* 232-byte string literal not displayed */
Layout LayoutCmd `` /* 161-byte string literal not displayed */
PbStubs PbStubsCmd `` /* 243-byte string literal not displayed */
}
Cmd is the `w17ctl target <kind> …` parent — the editors for the lock's `generated_code` declarations. Every subcommand mutates a `generated_code.*` slot of the SIGNED lock (re-signing on save), so they share one section: client (clients[]), grpc-client (grpc_clients[]), business (business_bundles[]), binary (binaries[]), ci (ci_configs[]), scale (replicas[]).
These are code-AGNOSTIC project settings — WHAT codegen emits + HOW it deploys — not API surface (that's proto). They live in the lock because the lock is signed for codegen reproducibility (every dev shares the same one); the signature is why they need a command rather than a hand-edit.
type DeployAddCmd ¶
type DeployAddCmd struct {
Target string `arg:"" help:"Deploy target to generate artefacts for. Today: kubernetes (renders deploy/prod/k8s.yaml in each bundle)."`
LockPath string `name:"lock" placeholder:"PATH" default:"w17/lock.yaml" help:"Path to the lock file."`
Console string `` /* 176-byte string literal not displayed */
}
DeployAddCmd implements `w17ctl target deploy add <target>`.
func (*DeployAddCmd) Run ¶
func (c *DeployAddCmd) Run() error
type DeployCmd ¶
type DeployCmd struct {
Add DeployAddCmd `cmd:"" help:"Opt a deploy target into generated artefacts (today: kubernetes). Re-signs on save."`
List DeployListCmd `cmd:"" help:"List the optional deploy targets declared in the lock. Docker is always emitted and is never listed."`
Remove DeployRemoveCmd `` /* 129-byte string literal not displayed */
}
DeployCmd is the parent of `w17ctl target deploy <leaf>` — add / list / remove. It manages the lock's `deploy_targets[]` surface: the OPTIONAL deploy artefacts a project wants generated.
Docker is not on this surface and cannot be: dev runs on it, e2e cannot run without it, and the generated Compose files are what every project actually uses. That is a known, accepted dependency rather than an accident.
Kubernetes was the opposite — emitted into every bundle of every project until 2026-09-22, for a platform most of them will never deploy to. It is opt-in now, and the next codegen SWEEPS the manifests of a target that is not declared, so a project does not keep a file nothing regenerates.
The console owns the lock. add / remove go through the console's EditLock (which validates the target name + re-signs); list reads through DescribeLock.
type DeployListCmd ¶
type DeployListCmd struct {
LockPath string `name:"lock" placeholder:"PATH" default:"w17/lock.yaml" help:"Path to the lock file."`
Console string `` /* 176-byte string literal not displayed */
}
DeployListCmd implements `w17ctl target deploy list`.
func (*DeployListCmd) Run ¶
func (c *DeployListCmd) Run() error
type DeployRemoveCmd ¶
type DeployRemoveCmd struct {
Target string `arg:"" help:"Deploy target whose declaration to remove (stop generating its artefacts)."`
LockPath string `name:"lock" placeholder:"PATH" default:"w17/lock.yaml" help:"Path to the lock file."`
Console string `` /* 176-byte string literal not displayed */
}
DeployRemoveCmd implements `w17ctl target deploy remove <target>`.
func (*DeployRemoveCmd) Run ¶
func (c *DeployRemoveCmd) Run() error
type GrpcClientAddCmd ¶
type GrpcClientAddCmd struct {
LockPath string `name:"lock" placeholder:"PATH" default:"w17/lock.yaml" help:"Path to the lock file."`
Console string `` /* 176-byte string literal not displayed */
// Non-interactive overrides — when --language is set the
// wizard skips prompting + runs straight to validation + save.
Language string `name:"language" placeholder:"NAME" help:"Skip prompt for language. One of: go. Empty = ask (default go)."`
OutputRoot string `` /* 143-byte string literal not displayed */
}
GrpcClientAddCmd implements `w17ctl target grpc-client add`. The GrpcClient lock message carries only language + output_root; for Go leave output_root empty so it derives from the lock's `stubs` (<stubs>/clients). Set it only to override that default.
func (*GrpcClientAddCmd) Run ¶
func (c *GrpcClientAddCmd) Run() error
type GrpcClientCmd ¶
type GrpcClientCmd struct {
Add GrpcClientAddCmd `` /* 131-byte string literal not displayed */
List GrpcClientListCmd `cmd:"" help:"List the grpc_clients[] entries declared in the lock."`
}
GrpcClientCmd is the parent of `w17ctl target grpc-client <leaf>` — add / list. Manages the `generated_code.grpc_clients[]` declarations codegen reads to render the project's Go gRPC `clients` package (the dependency-inversion seam a hand-written business binary builds its downstream clients from — see srcgo/gen/clients/<domain>/<tier>).
The console owns the lock. The add goes through the console's EditLock (which re-signs); the list + the wizard's duplicate-output_root check read through DescribeLock.
type GrpcClientListCmd ¶
type GrpcClientListCmd struct {
LockPath string `name:"lock" placeholder:"PATH" default:"w17/lock.yaml" help:"Path to the lock file."`
Console string `` /* 176-byte string literal not displayed */
}
GrpcClientListCmd implements `w17ctl target grpc-client list`.
func (*GrpcClientListCmd) Run ¶
func (c *GrpcClientListCmd) Run() error
type LayoutCmd ¶
type LayoutCmd struct {
Set LayoutSetCmd `cmd:"" help:"Re-point proto/stubs/languages directories in the lock. Moves no files. Re-signs on success."`
}
LayoutCmd is the parent of `w17ctl target layout <leaf>` — today just `set`. It re-points the project's DIRECTORY fields: where proto lives, where stubs are written, where the language catalogues sit.
Those answers used to be given once, in the `init` wizard, and never again. The case is migration onto w17: you want a provisional proto dir while an existing tree is still being converted, then the real one when the conversion lands. Changing your mind cost a re-init — which is the normal first week for anyone adopting w17 on an existing codebase, not an edge case.
The console owns the lock. This treats w17/lock.yaml as opaque bytes; the edit goes through EditLock, which validates and re-signs.
type LayoutSetCmd ¶
type LayoutSetCmd struct {
ProtoDir string `name:"proto-dir" placeholder:"DIR" help:"Project-relative dir holding the project's .proto tree."`
Stubs string `name:"stubs" placeholder:"DIR" help:"Project-relative root the generated stub tree is written under."`
LanguagesDir string `name:"languages-dir" placeholder:"DIR" help:"Project-relative dir holding the language catalogues."`
LockPath string `name:"lock" placeholder:"PATH" default:"w17/lock.yaml" help:"Path to the lock file."`
Console string `name:"console" placeholder:"HOST:PORT" env:"W17_CONSOLE_ADDR" help:"gRPC endpoint of the console that owns this lock."`
}
LayoutSetCmd implements `w17ctl target layout set`.
Three fields, not the six that are write-once. `pb_language`, `languages` and `e2e` are deliberately absent: each has a different second half — what happens to stubs already generated in the old language is not the same question as what happens to a directory — and answering one in a command that silently leaves the others open would make the unanswered ones look settled.
func (*LayoutSetCmd) Run ¶
func (c *LayoutSetCmd) Run() error
type PbStubsCmd ¶
type PbStubsCmd struct {
Set PbStubsSetCmd `cmd:"" help:"Set the on-disk root and/or import prefix for a language's pb stubs. Re-signs on save."`
}
PbStubsCmd is the parent of `w17ctl target pb-stubs <leaf>` — set / list. It manages the lock's `pb_stubs[]` surface: where the generated protobuf stubs land on disk, and what import prefix they carry.
Those two answers used to have no writer at all. `init` does not ask for them and no lock edit reached them, so every project held them empty with no way to change that. That is survivable while a project keeps the conventional layout — the on-disk root derives from `stubs` and the import prefix is recovered from the gen dir's go.mod — and it is NOT survivable once the stubs root moves, because the recovered module then belongs to whatever directory happened to sit at the conventional path.
The console owns the lock. This treats w17/lock.yaml as opaque bytes; the edit goes through EditLock (which validates + re-signs).
type PbStubsSetCmd ¶
type PbStubsSetCmd struct {
Language string `name:"language" default:"go" help:"Which pb_stubs entry to set."`
OutputRoot string `` /* 144-byte string literal not displayed */
Package string `` /* 204-byte string literal not displayed */
LockPath string `name:"lock" placeholder:"PATH" default:"w17/lock.yaml" help:"Path to the lock file."`
Console string `name:"console" placeholder:"HOST:PORT" env:"W17_CONSOLE_ADDR" help:"gRPC endpoint of the console (owns the lock). Optional."`
}
PbStubsSetCmd implements `w17ctl target pb-stubs set`.
func (*PbStubsSetCmd) Run ¶
func (c *PbStubsSetCmd) Run() error
type ScaleCmd ¶
type ScaleCmd struct {
Set ScaleSetCmd `` /* 137-byte string literal not displayed */
List ScaleListCmd `cmd:"" help:"List the per-service replica counts declared in the lock."`
Unset ScaleUnsetCmd `cmd:"" help:"Remove a service's replica-count entry (revert to the single-replica default). Re-signs on save."`
}
ScaleCmd is the parent of `w17ctl target scale <leaf>` — set / list / unset. It manages the lock's `replicas[]` surface (storage gRPC proxy feature): the per-service PROD replica counts the generated Compose / k8s render.
The console owns the lock. These commands treat w17/lock.yaml as opaque bytes — the replica edit goes through the console's EditLock (which re-signs + runs the pre-sign Validate: count >= 1, no folded tier scaled past 1), the list read through DescribeLock.
The one load-bearing effect: a `<domain>-storage` bundle set past 1 materializes the storage gRPC proxy in the prod artifacts. Single-replica tiers and composed single binaries never do.
type ScaleListCmd ¶
type ScaleListCmd struct {
LockPath string `name:"lock" placeholder:"PATH" default:"w17/lock.yaml" help:"Path to the lock file."`
Console string `` /* 176-byte string literal not displayed */
}
ScaleListCmd implements `w17ctl target scale list`.
func (*ScaleListCmd) Run ¶
func (c *ScaleListCmd) Run() error
type ScaleSetCmd ¶
type ScaleSetCmd struct {
Service string `arg:"" help:"Deployable bundle/service name (<domain>-storage, <domain>-gateway, <domain>-server, …)."`
Count int32 `arg:"" help:"Desired PROD replica count (>= 1). A <domain>-storage bundle > 1 materializes the storage gRPC proxy."`
LockPath string `name:"lock" placeholder:"PATH" default:"w17/lock.yaml" help:"Path to the lock file."`
Console string `` /* 176-byte string literal not displayed */
}
ScaleSetCmd implements `w17ctl target scale set <service> <count>`. It sets (or replaces) the service's `replicas[]` entry. The service name is the deployable bundle name as it appears in the generated artifacts (`<domain>-storage`, `<domain>-gateway`, `<domain>-server`, …).
func (*ScaleSetCmd) Run ¶
func (c *ScaleSetCmd) Run() error
type ScaleUnsetCmd ¶
type ScaleUnsetCmd struct {
Service string `arg:"" help:"Service whose replica-count entry to remove (revert to single replica)."`
LockPath string `name:"lock" placeholder:"PATH" default:"w17/lock.yaml" help:"Path to the lock file."`
Console string `` /* 176-byte string literal not displayed */
}
ScaleUnsetCmd implements `w17ctl target scale unset <service>`.
func (*ScaleUnsetCmd) Run ¶
func (c *ScaleUnsetCmd) Run() error