@@ -40,7 +40,11 @@ func NewRootCmd(cfg *env.Env, tel *telemetry.Client, logger log.Logger) *cobra.C
4040 if err != nil {
4141 return err
4242 }
43- return startEmulator (cmd .Context (), rt , cfg , tel , logger )
43+ persist , err := cmd .Flags ().GetBool ("persist" )
44+ if err != nil {
45+ return err
46+ }
47+ return startEmulator (cmd .Context (), rt , cfg , tel , logger , persist )
4448 },
4549 }
4650
@@ -50,6 +54,7 @@ func NewRootCmd(cfg *env.Env, tel *telemetry.Client, logger log.Logger) *cobra.C
5054
5155 root .PersistentFlags ().String ("config" , "" , "Path to config file" )
5256 root .PersistentFlags ().BoolVar (& cfg .NonInteractive , "non-interactive" , false , "Disable interactive mode" )
57+ root .Flags ().Bool ("persist" , false , "Enable local persistence (sets LOCALSTACK_PERSISTENCE=1)" )
5358
5459 configureHelp (root )
5560
@@ -132,7 +137,7 @@ func Execute(ctx context.Context) error {
132137 return nil
133138}
134139
135- func buildStartOptions (cfg * env.Env , appConfig * config.Config , logger log.Logger , tel * telemetry.Client ) container.StartOptions {
140+ func buildStartOptions (cfg * env.Env , appConfig * config.Config , logger log.Logger , tel * telemetry.Client , persist bool ) container.StartOptions {
136141 return container.StartOptions {
137142 PlatformClient : api .NewPlatformClient (cfg .APIEndpoint , logger ),
138143 AuthToken : cfg .AuthToken ,
@@ -141,19 +146,20 @@ func buildStartOptions(cfg *env.Env, appConfig *config.Config, logger log.Logger
141146 LocalStackHost : cfg .LocalStackHost ,
142147 Containers : appConfig .Containers ,
143148 Env : appConfig .Env ,
149+ Persist : persist ,
144150 Logger : logger ,
145151 Telemetry : tel ,
146152 }
147153}
148154
149- func startEmulator (ctx context.Context , rt runtime.Runtime , cfg * env.Env , tel * telemetry.Client , logger log.Logger ) error {
155+ func startEmulator (ctx context.Context , rt runtime.Runtime , cfg * env.Env , tel * telemetry.Client , logger log.Logger , persist bool ) error {
150156
151157 appConfig , err := config .Get ()
152158 if err != nil {
153159 return fmt .Errorf ("failed to get config: %w" , err )
154160 }
155161
156- opts := buildStartOptions (cfg , appConfig , logger , tel )
162+ opts := buildStartOptions (cfg , appConfig , logger , tel , persist )
157163
158164 notifyOpts := update.NotifyOptions {
159165 GitHubToken : cfg .GitHubToken ,
@@ -259,7 +265,6 @@ func isInteractiveMode(cfg *env.Env) bool {
259265 return ! cfg .NonInteractive && ui .IsInteractive ()
260266}
261267
262-
263268const maxLogSize = 1 << 20 // 1 MB
264269
265270func newLogger () (log.Logger , func (), error ) {
0 commit comments