Last active
August 29, 2015 14:10
-
-
Save ziadoz/63efdb096123ec88271f to your computer and use it in GitHub Desktop.
Update Sites-Available / Sites-Enabled Symlinks (Ubuntu 14.04 + Apache)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#! /usr/bin/env ruby | |
$VEBOSE = nil | |
class String | |
def colourise(color_code) | |
"\e[#{color_code}m#{self}\e[0m" | |
end | |
def red | |
colourise(31) | |
end | |
def green | |
colourise(32) | |
end | |
def yellow | |
colourise(33) | |
end | |
end | |
require 'pathname' | |
def get_project_name(path) | |
bits = Pathname(path).each_filename.to_a | |
bits[3] | |
end | |
def get_conf_name(path) | |
get_project_name(path).gsub('.', '_') + '.conf' | |
end | |
# args = {} | |
# args[:test] = ARGV.any? { |word| ["-t", "--test"].include?(word) } | |
# args[:debug] = ARGV.any? { |word| ["-d", "--debug"].include?(word) } | |
projects_dir = ENV["WEB_DIR"] ||= "/var/www/vhosts" | |
apache_dir = "/etc/apache2" | |
is_default = Proc.new do |conf| | |
conf = File.basename(conf) | |
conf.start_with?("000") || conf.start_with?("default") | |
end | |
sites_available = Dir.glob(File.join(apache_dir, "sites-available", "**")).reject(&is_default) | |
sites_enabled = Dir.glob(File.join(apache_dir, "sites-enabled", "**")).reject(&is_default) | |
projects = Dir.glob(File.join(projects_dir, "**", "dev.conf")) | |
require "shellwords" | |
puts "Cleaning Up Sites Enabled".yellow | |
sites_enabled.each do |conf| | |
system "sudo a2dissite " + Shellwords.escape(File.basename(conf)) + " > /dev/null" | |
end | |
puts "Cleaning Up Sites Available".yellow | |
sites_available.each do |conf| | |
system "sudo rm " + Shellwords.escape(conf) | |
end | |
puts ("Enabling " + projects.length.to_s + " Sites: ").yellow | |
projects.each do |conf| | |
name = get_conf_name(conf) | |
link = File.join(apache_dir, 'sites-available', name) | |
system "sudo ln -s " + Shellwords.escape(conf) + " " + Shellwords.escape(link) | |
system "sudo a2ensite " + Shellwords.escape(name) + " > /dev/null" | |
puts " - " + get_project_name(conf) | |
end | |
puts "Restarting Apache: ".yellow | |
system "sudo service apache2 restart" | |
puts "Completed".green |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment