#!/usr/bin/env ruby
require 'fileutils'

# path to your application root.
APP_ROOT = File.expand_path('..', __dir__)

def system!(*args)
  system(*args) || abort("\n== Command #{args} failed ==")
end

FileUtils.chdir APP_ROOT do
  # This script is a way to update your development environment automatically.
  # Add necessary update steps to this file.

  puts '== Installing dependencies =='
  system! 'gem install bundler --conservative'
  system('bundle check') || system!('bundle install')
  system! 'bun --version'
  system! 'bun install'
  system! 'bunx playwright install chromium'

  if ENV["UPDATE_WEBDRIVER"]
    puts "\n== Updating webdrivers =="
    puts "\nyou must add ~/.local/bin to your path"
    system! 'bunx @puppeteer/browsers clear --path ~/.local/bin/headless_browsers'

    system! 'bunx @puppeteer/browsers install chromedriver --path ~/.local/bin/headless_browsers'
    system! 'bunx @puppeteer/browsers install chrome --path ~/.local/bin/headless_browsers'
    puts "\n if chrome and chromedriver versions are not compatible, add the version you want in the above lines. ex : chrome@121"

    system! 'rm -f ~/.local/bin/chromedriver && ln -s $(find ~/.local/bin/headless_browsers -type f -name chromedriver) ~/.local/bin/chromedriver'
    system! 'rm -f ~/.local/bin/chrome && ln -s $(find ~/.local/bin/headless_browsers -type f -name chrome) ~/.local/bin/chrome'
  end

  puts "\n== Updating database =="
  system! 'bin/rails db:migrate'

  puts "\n== Running after_party tasks =="
  system! 'bin/rails after_party:run'

  puts "\n== Running on deploy maintenance tasks =="
  system! 'bin/rails deploy:maintenance_tasks'

  puts "\n== Removing old logs =="
  system! 'bin/rails log:clear'

  puts "\n== Restarting application server =="
  system! 'bin/rails restart'
end