Skip to content

Commit fe8d6af

Browse files
committed
image: extract image format options into separate structs
Reorganize `ImageConvertOptions` by extracting format-specific options into dedicated structs (EstargzOptions, ZstdOptions, ZstdChunkedOptions, NydusOptions, OverlaybdOptions) and embedding them for better code organization and maintainability. Signed-off-by: ChengyuZhu6 <[email protected]>
1 parent 62477fb commit fe8d6af

File tree

2 files changed

+54
-42
lines changed

2 files changed

+54
-42
lines changed

cmd/nerdctl/image/image_convert.go

Lines changed: 32 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -237,37 +237,6 @@ func convertOptions(cmd *cobra.Command) (types.ImageConvertOptions, error) {
237237
return types.ImageConvertOptions{
238238
GOptions: globalOptions,
239239
Format: format,
240-
// #region estargz flags
241-
Estargz: estargz,
242-
EstargzRecordIn: estargzRecordIn,
243-
EstargzCompressionLevel: estargzCompressionLevel,
244-
EstargzChunkSize: estargzChunkSize,
245-
EstargzMinChunkSize: estargzMinChunkSize,
246-
EstargzExternalToc: estargzExternalTOC,
247-
EstargzKeepDiffID: estargzKeepDiffID,
248-
// #endregion
249-
// #region zstd flags
250-
Zstd: zstd,
251-
ZstdCompressionLevel: zstdCompressionLevel,
252-
// #endregion
253-
// #region zstd:chunked flags
254-
ZstdChunked: zstdchunked,
255-
ZstdChunkedCompressionLevel: zstdChunkedCompressionLevel,
256-
ZstdChunkedChunkSize: zstdChunkedChunkSize,
257-
ZstdChunkedRecordIn: zstdChunkedRecordIn,
258-
// #endregion
259-
// #region nydus flags
260-
Nydus: nydus,
261-
NydusBuilderPath: nydusBuilderPath,
262-
NydusWorkDir: nydusWorkDir,
263-
NydusPrefetchPatterns: nydusPrefetchPatterns,
264-
NydusCompressor: nydusCompressor,
265-
// #endregion
266-
// #region overlaybd flags
267-
Overlaybd: overlaybd,
268-
OverlayFsType: overlaybdFsType,
269-
OverlaydbDBStr: overlaybdDbstr,
270-
// #endregion
271240
// #region generic flags
272241
Uncompress: uncompress,
273242
Oci: oci,
@@ -276,6 +245,38 @@ func convertOptions(cmd *cobra.Command) (types.ImageConvertOptions, error) {
276245
Platforms: platforms,
277246
AllPlatforms: allPlatforms,
278247
// #endregion
248+
// Embed image format options
249+
EstargzOptions: types.EstargzOptions{
250+
Estargz: estargz,
251+
EstargzRecordIn: estargzRecordIn,
252+
EstargzCompressionLevel: estargzCompressionLevel,
253+
EstargzChunkSize: estargzChunkSize,
254+
EstargzMinChunkSize: estargzMinChunkSize,
255+
EstargzExternalToc: estargzExternalTOC,
256+
EstargzKeepDiffID: estargzKeepDiffID,
257+
},
258+
ZstdOptions: types.ZstdOptions{
259+
Zstd: zstd,
260+
ZstdCompressionLevel: zstdCompressionLevel,
261+
},
262+
ZstdChunkedOptions: types.ZstdChunkedOptions{
263+
ZstdChunked: zstdchunked,
264+
ZstdChunkedCompressionLevel: zstdChunkedCompressionLevel,
265+
ZstdChunkedChunkSize: zstdChunkedChunkSize,
266+
ZstdChunkedRecordIn: zstdChunkedRecordIn,
267+
},
268+
NydusOptions: types.NydusOptions{
269+
Nydus: nydus,
270+
NydusBuilderPath: nydusBuilderPath,
271+
NydusWorkDir: nydusWorkDir,
272+
NydusPrefetchPatterns: nydusPrefetchPatterns,
273+
NydusCompressor: nydusCompressor,
274+
},
275+
OverlaybdOptions: types.OverlaybdOptions{
276+
Overlaybd: overlaybd,
277+
OverlayFsType: overlaybdFsType,
278+
OverlaydbDBStr: overlaybdDbstr,
279+
},
279280
Stdout: cmd.OutOrStdout(),
280281
}, nil
281282
}

pkg/api/types/image_types.go

Lines changed: 22 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,16 @@ type ImageConvertOptions struct {
6767
// Format the output using the given Go template, e.g, 'json'
6868
Format string
6969

70-
// #region estargz flags
70+
// Embed image format options
71+
EstargzOptions
72+
ZstdOptions
73+
ZstdChunkedOptions
74+
NydusOptions
75+
OverlaybdOptions
76+
}
77+
78+
// EstargzOptions contains eStargz conversion options
79+
type EstargzOptions struct {
7180
// Estargz convert legacy tar(.gz) layers to eStargz for lazy pulling. Should be used in conjunction with '--oci'
7281
Estargz bool
7382
// EstargzRecordIn read 'ctr-remote optimize --record-out=<FILE>' record file (EXPERIMENTAL)
@@ -82,16 +91,18 @@ type ImageConvertOptions struct {
8291
EstargzExternalToc bool
8392
// EstargzKeepDiffID convert to esgz without changing diffID (cannot be used in conjunction with '--estargz-record-in'. must be specified with '--estargz-external-toc')
8493
EstargzKeepDiffID bool
85-
// #endregion
94+
}
8695

87-
// #region zstd flags
96+
// ZstdOptions contains zstd conversion options
97+
type ZstdOptions struct {
8898
// Zstd convert legacy tar(.gz) layers to zstd. Should be used in conjunction with '--oci'
8999
Zstd bool
90100
// ZstdCompressionLevel zstd compression level
91101
ZstdCompressionLevel int
92-
// #endregion
102+
}
93103

94-
// #region zstd:chunked flags
104+
// ZstdChunkedOptions contains zstd:chunked conversion options
105+
type ZstdChunkedOptions struct {
95106
// ZstdChunked convert legacy tar(.gz) layers to zstd:chunked for lazy pulling. Should be used in conjunction with '--oci'
96107
ZstdChunked bool
97108
// ZstdChunkedCompressionLevel zstd compression level
@@ -100,9 +111,10 @@ type ImageConvertOptions struct {
100111
ZstdChunkedChunkSize int
101112
// ZstdChunkedRecordIn read 'ctr-remote optimize --record-out=<FILE>' record file (EXPERIMENTAL)
102113
ZstdChunkedRecordIn string
103-
// #endregion
114+
}
104115

105-
// #region nydus flags
116+
// NydusOptions contains nydus conversion options
117+
type NydusOptions struct {
106118
// Nydus convert legacy tar(.gz) layers to nydus for lazy pulling. Should be used in conjunction with '--oci'
107119
Nydus bool
108120
// NydusBuilderPath the nydus-image binary path, if unset, search in PATH environment
@@ -113,17 +125,16 @@ type ImageConvertOptions struct {
113125
NydusPrefetchPatterns string
114126
// NydusCompressor nydus blob compression algorithm, possible values: `none`, `lz4_block`, `zstd`, default is `lz4_block`
115127
NydusCompressor string
116-
// #endregion
128+
}
117129

118-
// #region overlaybd flags
130+
// OverlaybdOptions contains overlaybd conversion options
131+
type OverlaybdOptions struct {
119132
// Overlaybd convert tar.gz layers to overlaybd layers
120133
Overlaybd bool
121134
// OverlayFsType filesystem type for overlaybd
122135
OverlayFsType string
123136
// OverlaydbDBStr database config string for overlaybd
124137
OverlaydbDBStr string
125-
// #endregion
126-
127138
}
128139

129140
// ImageCryptOptions specifies options for `nerdctl image encrypt` and `nerdctl image decrypt`.

0 commit comments

Comments
 (0)