Skip to content

Commit 2276157

Browse files
committed
handleReleaseInit function in languagecontainer
1 parent 75337ca commit 2276157

File tree

1 file changed

+45
-40
lines changed

1 file changed

+45
-40
lines changed

internal/librariangen/languagecontainer/languagecontainer.go

Lines changed: 45 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -59,46 +59,7 @@ func Run(args []string, container LanguageContainer) int {
5959
slog.Warn("librariangen: configure command is not yet implemented")
6060
return 1
6161
case "release-init":
62-
cfg := &release.Context{}
63-
releaseInitFlags := flag.NewFlagSet("release-init", flag.ContinueOnError)
64-
releaseInitFlags.StringVar(&cfg.LibrarianDir, "librarian", "/librarian", "Path to the librarian-tool input directory. Contains release-init-request.json.")
65-
releaseInitFlags.StringVar(&cfg.RepoDir, "repo", "/repo", "Path to the language repo.")
66-
releaseInitFlags.StringVar(&cfg.OutputDir, "output", "/output", "Path to the output directory.")
67-
if err := releaseInitFlags.Parse(flags); err != nil {
68-
slog.Error("failed to parse flags", "error", err)
69-
return 1
70-
}
71-
requestPath := filepath.Join(cfg.LibrarianDir, "release-init-request.json")
72-
bytes, err := os.ReadFile(requestPath)
73-
if err != nil {
74-
slog.Error("failed to read request file", "path", requestPath, "error", err)
75-
return 1
76-
}
77-
request := &message.ReleaseInitRequest{}
78-
if err := json.Unmarshal(bytes, request); err != nil {
79-
slog.Error("failed to parse request JSON", "error", err)
80-
return 1
81-
}
82-
config := &release.Config{
83-
Context: cfg,
84-
Request: request,
85-
}
86-
response, err := container.ReleaseInit(context.Background(), config)
87-
if err != nil {
88-
slog.Error("release-init failed", "error", err)
89-
return 1
90-
}
91-
bytes, err = json.MarshalIndent(response, "", " ")
92-
if err != nil {
93-
slog.Error("failed to marshal response JSON", "error", err)
94-
return 1
95-
}
96-
responsePath := filepath.Join(cfg.LibrarianDir, "release-init-response.json")
97-
if err := os.WriteFile(responsePath, bytes, 0644); err != nil {
98-
slog.Error("failed to write response file", "path", responsePath, "error", err)
99-
return 1
100-
}
101-
slog.Info("librariangen: release-init command executed successfully")
62+
return handleReleaseInit(flags, container)
10263
case "build":
10364
slog.Warn("librariangen: build command is not yet implemented")
10465
return 1
@@ -108,3 +69,47 @@ func Run(args []string, container LanguageContainer) int {
10869
}
10970
return 0
11071
}
72+
73+
func handleReleaseInit(flags []string, container LanguageContainer) int {
74+
cfg := &release.Context{}
75+
releaseInitFlags := flag.NewFlagSet("release-init", flag.ContinueOnError)
76+
releaseInitFlags.StringVar(&cfg.LibrarianDir, "librarian", "/librarian", "Path to the librarian-tool input directory. Contains release-init-request.json.")
77+
releaseInitFlags.StringVar(&cfg.RepoDir, "repo", "/repo", "Path to the language repo.")
78+
releaseInitFlags.StringVar(&cfg.OutputDir, "output", "/output", "Path to the output directory.")
79+
if err := releaseInitFlags.Parse(flags); err != nil {
80+
slog.Error("failed to parse flags", "error", err)
81+
return 1
82+
}
83+
requestPath := filepath.Join(cfg.LibrarianDir, "release-init-request.json")
84+
bytes, err := os.ReadFile(requestPath)
85+
if err != nil {
86+
slog.Error("failed to read request file", "path", requestPath, "error", err)
87+
return 1
88+
}
89+
request := &message.ReleaseInitRequest{}
90+
if err := json.Unmarshal(bytes, request); err != nil {
91+
slog.Error("failed to parse request JSON", "error", err)
92+
return 1
93+
}
94+
config := &release.Config{
95+
Context: cfg,
96+
Request: request,
97+
}
98+
response, err := container.ReleaseInit(context.Background(), config)
99+
if err != nil {
100+
slog.Error("release-init failed", "error", err)
101+
return 1
102+
}
103+
bytes, err = json.MarshalIndent(response, "", " ")
104+
if err != nil {
105+
slog.Error("failed to marshal response JSON", "error", err)
106+
return 1
107+
}
108+
responsePath := filepath.Join(cfg.LibrarianDir, "release-init-response.json")
109+
if err := os.WriteFile(responsePath, bytes, 0644); err != nil {
110+
slog.Error("failed to write response file", "path", responsePath, "error", err)
111+
return 1
112+
}
113+
slog.Info("librariangen: release-init command executed successfully")
114+
return 0
115+
}

0 commit comments

Comments
 (0)