From 944cd6c8ac7b605160e846533201e79f9fa30477 Mon Sep 17 00:00:00 2001 From: Rafid Bin Mostofa Date: Mon, 16 Oct 2023 17:54:12 +0600 Subject: [PATCH] refactor: move release reading logic to a function Previously, release info (setup.Release) parsing/reading logic was written in cmd/chisel/cmd_cut.go file. Being the only operation command before, it made sense to have it there. But, since there are incoming new commands, it is likely that this logic will be re-used. Thus, move it to a function, ``getRelease()``. --- cmd/chisel/cmd_cut.go | 48 ++++++++++++++++++++++++++----------------- 1 file changed, 29 insertions(+), 19 deletions(-) diff --git a/cmd/chisel/cmd_cut.go b/cmd/chisel/cmd_cut.go index fd680b6f..fc42eaab 100644 --- a/cmd/chisel/cmd_cut.go +++ b/cmd/chisel/cmd_cut.go @@ -54,25 +54,7 @@ func (cmd *cmdCut) Execute(args []string) error { sliceKeys[i] = sliceKey } - var release *setup.Release - var err error - if strings.Contains(cmd.Release, "/") { - release, err = setup.ReadRelease(cmd.Release) - } else { - var label, version string - if cmd.Release == "" { - label, version, err = readReleaseInfo() - } else { - label, version, err = parseReleaseInfo(cmd.Release) - } - if err != nil { - return err - } - release, err = setup.FetchRelease(&setup.FetchOptions{ - Label: label, - Version: version, - }) - } + release, _, err := getRelease(cmd.Release) if err != nil { return err } @@ -136,3 +118,31 @@ func readReleaseInfo() (label, version string, err error) { } return "", "", fmt.Errorf("cannot infer release via /etc/lsb-release, see the --release option") } + +// getRelease returns the release and release label (e.g. ubuntu-22.04 or +// /path/to/release/dir/ if a directory was passed as input). +func getRelease(releaseStr string) (release *setup.Release, releaseLabel string, err error) { + if strings.Contains(releaseStr, "/") { + release, err = setup.ReadRelease(releaseStr) + releaseLabel = releaseStr + } else { + var label, version string + if releaseStr == "" { + label, version, err = readReleaseInfo() + } else { + label, version, err = parseReleaseInfo(releaseStr) + } + if err != nil { + return nil, "", err + } + release, err = setup.FetchRelease(&setup.FetchOptions{ + Label: label, + Version: version, + }) + releaseLabel = label + "-" + version + } + if err != nil { + return nil, "", err + } + return release, releaseLabel, nil +}