MCPcopy Create free account
hub / github.com/dagger/dagger / parseEntry

Function parseEntry

util/lockfile/lockfile.go:223–272  ·  view source on GitHub ↗
(line []byte)

Source from the content-addressed store, hash-verified

221}
222
223func parseEntry(line []byte) (lockEntry, error) {
224 var tuple []json.RawMessage
225 if err := decodeJSON(line, &tuple); err != nil {
226 return lockEntry{}, fmt.Errorf("invalid tuple JSON: %w", err)
227 }
228 if len(tuple) != 5 {
229 return lockEntry{}, fmt.Errorf("invalid tuple length %d: expected 5", len(tuple))
230 }
231
232 var namespace string
233 if err := decodeJSON(tuple[0], &namespace); err != nil {
234 return lockEntry{}, fmt.Errorf("invalid namespace: %w", err)
235 }
236
237 var operation string
238 if err := decodeJSON(tuple[1], &operation); err != nil {
239 return lockEntry{}, fmt.Errorf("invalid operation: %w", err)
240 }
241
242 var inputs []any
243 if err := decodeJSON(tuple[2], &inputs); err != nil {
244 return lockEntry{}, fmt.Errorf("invalid inputs: %w", err)
245 }
246 canonicalInputs, inputsJSON, err := canonicalizeInputs(inputs)
247 if err != nil {
248 return lockEntry{}, fmt.Errorf("canonicalizing inputs: %w", err)
249 }
250
251 var value any
252 if err := decodeJSON(tuple[3], &value); err != nil {
253 return lockEntry{}, fmt.Errorf("invalid value: %w", err)
254 }
255 canonicalValue, err := canonicalizeValue(value)
256 if err != nil {
257 return lockEntry{}, fmt.Errorf("canonicalizing value: %w", err)
258 }
259 var policy string
260 if err := decodeJSON(tuple[4], &policy); err != nil {
261 return lockEntry{}, fmt.Errorf("invalid policy: %w", err)
262 }
263
264 return lockEntry{
265 namespace: namespace,
266 operation: operation,
267 inputs: canonicalInputs,
268 inputsJSON: inputsJSON,
269 value: canonicalValue,
270 policy: policy,
271 }, nil
272}
273
274func canonicalizeInputs(inputs []any) ([]any, string, error) {
275 if inputs == nil {

Callers 1

ParseFunction · 0.85

Calls 3

decodeJSONFunction · 0.85
canonicalizeInputsFunction · 0.85
canonicalizeValueFunction · 0.85

Tested by

no test coverage detected