Ignore MPEG transport stream ".ts" files.
PiperOrigin-RevId: 225438754
diff --git a/ts_auto_deps/platform/file.go b/ts_auto_deps/platform/file.go
index 493b35e..7df93d0 100644
--- a/ts_auto_deps/platform/file.go
+++ b/ts_auto_deps/platform/file.go
@@ -19,6 +19,19 @@
return ioutil.ReadFile(name)
}
+// ReadBytesFromFile reads bytes into the buffer provided, stopping when the
+// buffer is full.
+func ReadBytesFromFile(ctx context.Context, name string, buffer []byte) (int, error) {
+ f, err := os.Open(name)
+ if err != nil {
+ return 0, err
+ }
+ defer f.Close()
+
+ n, err := f.Read(buffer)
+ return n, err
+}
+
// WriteFile writes data to filename.
func WriteFile(ctx context.Context, filename string, data []byte) error {
return ioutil.WriteFile(filename, data, filePerms)
diff --git a/ts_auto_deps/updater/updater.go b/ts_auto_deps/updater/updater.go
index c559236..cb80b50 100644
--- a/ts_auto_deps/updater/updater.go
+++ b/ts_auto_deps/updater/updater.go
@@ -7,6 +7,7 @@
"bytes"
"context"
"fmt"
+ "io"
"os"
"path/filepath"
"regexp"
@@ -249,6 +250,13 @@
if err != nil {
return nil, fmt.Errorf("cannot stat platform.Glob result %q: %v", p, err)
}
+ isMpeg, err := isMpegTS(ctx, p)
+ if err != nil {
+ return nil, err
+ }
+ if isMpeg {
+ continue
+ }
p, err := filepath.Rel(path, p)
if err != nil {
return nil, fmt.Errorf("filepath.Rel(%s, %s): %v", path, p, err)
@@ -258,6 +266,20 @@
return srcs, nil
}
+// isMpegTS checks if a ".ts" file is an MPEG transport stream. Taze shouldn't
+// treat them as TypeScript files.
+func isMpegTS(ctx context.Context, path string) (bool, error) {
+ var content [200]byte
+ n, err := platform.ReadBytesFromFile(ctx, path, content[:])
+ if err != nil && err != io.EOF {
+ return false, err
+ }
+
+ // MPEG TS' frame format starts with 0x47 every 189 bytes - detect that and return.
+ isMpeg := n > 188 && content[0] == 0x47 && content[188] == 0x47
+ return isMpeg, nil
+}
+
func isTempFile(fileName string) bool {
return strings.HasPrefix(fileName, ".") || strings.HasSuffix(fileName, ".swp") ||
strings.HasSuffix(fileName, "~")