namespace :provision do

desc "Setup the shared directory content"
task :shared do
    invoke 'sozo:upload:dirs'
    invoke 'sozo:upload:files'
end

desc "Setup permissions on the account"
task :permissions do
    on release_roles :all do
        within release_path do
            execute :sudo, 'chown', "#{fetch(:username)}:#{fetch(:group)}", "#{release_path}/"
            execute :sudo, "find", "#{deploy_to}/shared", '-not \(', "-name '#{fetch(:username)}' -or -group '#{fetch(:group)}'", '\) -print0 | sudo xargs --no-run-if-empty --null --max-procs=0 chown', "#{fetch(:username)}:#{fetch(:group)}"
            execute :sudo, "chmod", "770 #{release_path}/"
            execute :sudo, "find", "#{release_path}/magento", '-type d -print0 | sudo xargs --no-run-if-empty --null --max-procs=0 chmod 770'
            execute :sudo, "find", "#{release_path}/magento", '-type f -print0 | sudo xargs --no-run-if-empty --null --max-procs=0 chmod 660'

            if test("[ -f #{release_path}/magento/bin/magento ]")
                execute :sudo, "chmod", "+x", "#{release_path}/magento/bin/magento"
            end

            execute :sudo, "find", "#{release_path}/magento", '-print0 | sudo xargs --no-run-if-empty --null --max-procs=0 chown', "#{fetch(:username)}:#{fetch(:group)}"

            # Update symlinks permission
            execute :sudo, "find", "#{release_path}/magento", '-type l', '-not \(', "-name '#{fetch(:username)}' -or -group '#{fetch(:group)}'", '\) -print0 | sudo xargs --no-run-if-empty --null --max-procs=0 chown', '-h', "#{fetch(:username)}:#{fetch(:group)}"
        end
    end
end

desc "Missing setup directory fix"
task :setup_dir do
    on roles :app do
        info ("Checking for setup directory - #{release_path}/magento/setup")

        if test("[ -d #{release_path}/magento/setup/ ]")
        else
            upload! "#{fetch(:magento_dir)}/setup", "#{release_path}/magento/", recursive: true
            invoke 'provision:permissions'
        end
    end
end

end