package binary

import (
	"cos.googlesource.com/cos/tools/src/cmd/cos_image_analyzer/internal/utilities"
	"fmt"
)

// Global variables
var (
	// Command-line path strings
	// /etc/os-release is the file describing COS versioning
	etcOSRelease = "/etc/os-release"
)

// BinaryDiff is a tool that finds all binary differneces of two COS images
// (COS version, rootfs, kernel command line, stateful parition, ...)
//
// Input:  (string) img1Path - The path to the root directory for COS image1
//		   (string) img2Path - The path to the root directory for COS image2
//
// Output: (stdout) terminal ouput - All differences printed to the terminal
func BinaryDiff(img1Path, img2Path string) error {
	fmt.Println("================== Binary Differences ==================")

	// COS Verison Difference
	fmt.Println("--------- COS Verison Difference ---------")
	verMap1, err := utilities.ReadFileToMap(img1Path+etcOSRelease, "=")
	if err != nil {
		return err
	}
	verMap2, err := utilities.ReadFileToMap(img2Path+etcOSRelease, "=")
	if err != nil {
		return err
	}

	// Compare Version (Major)
	_, err = utilities.CmpMapValues(verMap1, verMap2, "VERSION")
	if err != nil {
		return err
	}
	// Compare BUILD_ID (Minor)
	_, err = utilities.CmpMapValues(verMap1, verMap2, "BUILD_ID")
	if err != nil {
		return err
	}

	return nil
}
