Skip to content

Commit

Permalink
refactor: move release reading logic to a function
Browse files Browse the repository at this point in the history
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()``.
  • Loading branch information
rebornplusplus committed Oct 16, 2023
1 parent 1895d5a commit 944cd6c
Showing 1 changed file with 29 additions and 19 deletions.
48 changes: 29 additions & 19 deletions cmd/chisel/cmd_cut.go
Original file line number Diff line number Diff line change
Expand Up @@ -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
}
Expand Down Expand Up @@ -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
}

0 comments on commit 944cd6c

Please sign in to comment.