// Copyright 2021 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // This executable is handy for transforming the structure of lottie-samples into // the one used by perf_puppeteer_skottie_frames.go. It is stored to the // skia/internal/lotties_with_assets CIPD package. If any lotties need assets, those should // be copied in to the subfolders and appropriately named. // A new version can be updated with // cipd create -name skia/internal/lotties_with_assets -in ./lotties/ -tag version:NN // where NN is the version number. package main import ( "flag" "fmt" "os" "path/filepath" "strings" ) func main() { inputDir := flag.String("input", "", "The input directory of lottie files") outputDir := flag.String("output", "", "The output directory which will have the correct structure") flag.Parse() xf, err := os.ReadDir(*inputDir) if err != nil { fmt.Printf("Could not get lotties from %s: %s\n", *inputDir, err) os.Exit(1) } for _, entry := range xf { inputJSON := entry.Name() if !strings.HasSuffix(inputJSON, ".json") { continue } newName := strings.TrimPrefix(inputJSON, "lottiefiles.com - ") newName = strings.TrimSuffix(newName, ".json") newName = strings.ReplaceAll(newName, " ", "_") subDir := filepath.Join(*outputDir, newName) if err := os.MkdirAll(subDir, 0755); err != nil { fmt.Printf("Could not make %s: %s\n", subDir, err) os.Exit(1) } outFile, err := os.Create(filepath.Join(subDir, "data.json")) if err != nil { fmt.Printf("Could not make output file in %s: %s\n", subDir, err) os.Exit(1) } inputBytes, err := os.ReadFile(filepath.Join(*inputDir, inputJSON)) if err != nil { fmt.Printf("Could not read input file %s: %s\n", inputJSON, err) os.Exit(1) } if _, err := outFile.Write(inputBytes); err != nil { fmt.Printf("Could not copy bytes to %s: %s\n", subDir, err) os.Exit(1) } } }