From b5bdf944c1c09c3904ce817c38ab4edb93c4487b Mon Sep 17 00:00:00 2001 From: Jordan Ribbink Date: Tue, 4 Nov 2025 08:28:19 -0800 Subject: [PATCH 1/2] Fix flowkit initialization in doc --- docs/build/tools/clients/flow-go-sdk/flowkit.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/build/tools/clients/flow-go-sdk/flowkit.md b/docs/build/tools/clients/flow-go-sdk/flowkit.md index 27128ff9b1..3960a68f8f 100644 --- a/docs/build/tools/clients/flow-go-sdk/flowkit.md +++ b/docs/build/tools/clients/flow-go-sdk/flowkit.md @@ -71,7 +71,7 @@ import ( func main() { // Load flow.json from the current directory - state, err := flowkit.Load([]string{"flow.json"}, afero.NewOsFs()) + state, err := flowkit.Load([]string{"flow.json"}, afero.Afero{Fs: afero.NewOsFs()}) if err != nil { log.Fatalf("Failed to load project state: %v", err) } @@ -87,7 +87,7 @@ If you need to create a new project from scratch: ```go // Initialize an empty state -state, err := flowkit.Init(afero.NewOsFs()) +state, err := flowkit.Init(afero.Afero{Fs: afero.NewOsFs()}) if err != nil { log.Fatalf("Failed to initialize state: %v", err) } @@ -276,7 +276,7 @@ The most common pattern is to use network-specific aliases from your project sta ```go // Load project state and get network-specific contracts and aliases -state, err := flowkit.Load([]string{"flow.json"}, afero.NewOsFs()) +state, err := flowkit.Load([]string{"flow.json"}, afero.Afero{Fs: afero.NewOsFs()}) if err != nil { log.Fatal(err) } @@ -396,7 +396,7 @@ import ( func main() { // 1. Load project state - state, err := flowkit.Load([]string{"flow.json"}, afero.NewOsFs()) + state, err := flowkit.Load([]string{"flow.json"}, afero.Afero{Fs: afero.NewOsFs()}) if err != nil { log.Fatalf("Failed to load state: %v", err) } From 2ee44a55a8398bd4cd17ecb7cd2072f830b61078 Mon Sep 17 00:00:00 2001 From: Jordan Ribbink Date: Tue, 4 Nov 2025 09:10:36 -0800 Subject: [PATCH 2/2] misc edits --- .../tools/clients/flow-go-sdk/flowkit.md | 31 ++++++++++++++----- 1 file changed, 24 insertions(+), 7 deletions(-) diff --git a/docs/build/tools/clients/flow-go-sdk/flowkit.md b/docs/build/tools/clients/flow-go-sdk/flowkit.md index 3960a68f8f..06e37de775 100644 --- a/docs/build/tools/clients/flow-go-sdk/flowkit.md +++ b/docs/build/tools/clients/flow-go-sdk/flowkit.md @@ -131,9 +131,8 @@ log.Printf("Contract: %s\n", contract.Name) log.Printf("Location: %s\n", contract.Location) // Get all contract names -names := state.Contracts().Names() -for _, name := range names { - log.Printf("Available contract: %s\n", name) +for _, c := range *state.Contracts() { + log.Printf("Available contract: %s\n", c.Name) } ``` @@ -198,6 +197,8 @@ log.Printf("Host: %s\n", testnet.Host) ### Adding or Updating Networks ```go +import "github.com/onflow/flowkit/v2/config" + // Add a custom network networks := state.Networks() networks.AddOrUpdate(config.Network{ @@ -217,6 +218,8 @@ if err != nil { Network aliases map contract names/locations to their deployed addresses on specific networks: ```go +import "github.com/onflow/flowkit/v2/config" + // Get aliases for testnet aliases := state.AliasesForNetwork(config.TestnetNetwork) @@ -236,6 +239,7 @@ When you have a Cadence program with imports like `import "Kibble"`, you need to ```go import "github.com/onflow/flowkit/v2/project" +import "github.com/onflow/flowkit/v2/config" // Get contracts for your target network contracts, err := state.DeploymentContractsByNetwork(config.TestnetNetwork) @@ -258,7 +262,10 @@ transaction { } `) -program := project.NewProgram(code, []string{}, "") +program, err := project.NewProgram(code, nil, "") +if err != nil { + log.Fatalf("Failed to parse program: %v", err) +} // Replace imports with deployed addresses resolvedProgram, err := importReplacer.Replace(program) @@ -297,7 +304,10 @@ importReplacer := project.NewImportReplacer( ) // Parse and resolve your program -program := project.NewProgram(scriptCode, []string{}, "script.cdc") +program, err := project.NewProgram(scriptCode, nil, "script.cdc") +if err != nil { + log.Fatalf("Failed to parse program: %v", err) +} resolvedProgram, err := importReplacer.Replace(program) if err != nil { log.Fatalf("Failed to resolve imports: %v", err) @@ -314,6 +324,8 @@ Accounts represent Flow blockchain accounts used for signing transactions and de ### Getting Account Information ```go +import "github.com/onflow/flow-go-sdk" + accounts := state.Accounts() // Get account by name @@ -334,6 +346,9 @@ for _, name := range names { // Get account by address addr := flow.HexToAddress("0xf8d6e0586b0a20c7") account, err = accounts.ByAddress(addr) +if err != nil { + log.Fatalf("Account not found by address: %v", err) +} ``` ### Getting the Emulator Service Account @@ -385,7 +400,6 @@ Here's a complete example that ties everything together: package main import ( - "context" "log" "github.com/onflow/flowkit/v2" @@ -433,7 +447,10 @@ func main() { } `) - program := project.NewProgram(scriptCode, []string{}, "script.cdc") + program, err := project.NewProgram(scriptCode, nil, "script.cdc") + if err != nil { + log.Fatalf("Failed to parse program: %v", err) + } resolvedProgram, err := importReplacer.Replace(program) if err != nil { log.Fatalf("Failed to resolve imports: %v", err)