#!/usr/bin/env python3
# Copyright (c) 2017 Arista Networks, Inc.  All rights reserved.
# Arista Networks, Inc. Confidential and Proprietary.

import argparse
import os
import sys
import Tac

if __name__ == '__main__':
   parser = argparse.ArgumentParser( description='Sync files' )
   parser.add_argument( 'files', metavar='FILE', type=str, nargs='+',
                        help='a file or directory' )
   parser.add_argument( '-v', '--verbose', action="store_true",
                        help='print one line for each file' )
   args = parser.parse_args()

   exitCode = 0

   # open the file, call fsync and close it
   try:
      for filename in args.files:
         if os.path.isdir( filename ):
            flags = os.O_DIRECTORY
         else:
            flags = os.O_RDONLY
         try:
            fd = os.open( filename, flags )
            os.fsync( fd )
            os.close( fd )
            if args.verbose:
               # pylint: disable-next=consider-using-f-string
               print( "%s: synchronized" % filename )
         except OSError as e:
            print( f"{filename}: {os.strerror( e.errno )}", file=sys.stderr )
            exitCode = 1
   except KeyboardInterrupt:
      exitCode = 130

   sys.exit( exitCode )
