#!/usr/bin/env ruby

require 'pathname'
require 'json'

INFO = 'Generate JSON index of files in a directory'

if ARGV[0] == '--info'
  puts INFO
  exit 0
end

if ARGV.empty? || ARGV[0] == '-h' || ARGV[0] == '--help'
  puts "Usage: fez index <directory>"
  puts ""
  puts INFO
  puts ""
  puts "Examples:"
  puts "  fez index demo/fez"
  puts "  fez index assets/*"
  exit 0
end

dir = ARGV[0]

# If no * in argument, append /*
pattern = dir.include?('*') ? dir : File.join(dir, '*')

# Check if base directory exists (for error message)
base_dir = dir.split('*').first.chomp('/')
if !base_dir.empty? && !File.directory?(base_dir)
  puts "Error: Directory '#{base_dir}' does not exist"
  exit 1
end

# Get files using glob
files = Dir.glob(pattern).select { |f| File.file?(f) }

# Create index for each file
file_index = []
files.each do |path|
  stat = File.stat(path)

  file_info = {
    base: File.basename(path, File.extname(path)),
    path: path,
    size: stat.size.to_i,
    modified: stat.mtime.to_i,
    created: stat.birthtime.to_i
  }

  file_index << {file: file_info}
end

# Output as JSON to screen
puts JSON.pretty_generate(file_index)
