class Farmstead::Project
Attributes
config[RW]
database[RW]
deploy_method[RW]
name[RW]
Public Class Methods
deploy()
click to toggle source
# File lib/farmstead/project.rb, line 20 def self.deploy # Dir.chdir @name self.read_yml_into_env File.chmod(0755, "exec.sh") system ("bash exec.sh") end
read_yml_into_env()
click to toggle source
Takes the project.yml file and generates an .env file for docker
# File lib/farmstead/project.rb, line 34 def self.read_yml_into_env cnf = YAML::load(File.open('project.yml')) File.open('.env', 'w') do |file| cnf.each do |key, value| if value.kind_of?(Array) value.each do |element| element.each do |ykey, yvalue| if yvalue.kind_of?(Array) element.each do |zkey, zvalue| zvalue = zvalue.join(' ') if zvalue.kind_of?(Array) file.puts "#{zkey}=#{zvalue}" end else file.puts "#{ykey}=#{yvalue}" end end end else file.puts "#{key}=#{value}" end end end end
Public Instance Methods
copy_to_directory(str, file_name)
click to toggle source
Copies an ERB Template as a file to the destination directory
# File lib/farmstead/project.rb, line 124 def copy_to_directory(str, file_name) open(file_name, "a") do |f| f.puts str end end
create()
click to toggle source
# File lib/farmstead/project.rb, line 15 def create create_directory generate_files end
create_directory()
click to toggle source
Creates OR RE-Creates the Project
Directory
# File lib/farmstead/project.rb, line 28 def create_directory remove_dir(@name) if Dir.exist?(@name) Dir.mkdir(@name) end
create_recursive(path)
click to toggle source
Recursive Create
# File lib/farmstead/project.rb, line 100 def create_recursive(path) recursive = path.split("/") directory = "" recursive.each do |sub_directory| directory += sub_directory + "/" Dir.mkdir("#{directory}") unless (File.directory? directory) end end
generate_files()
click to toggle source
Generate from templates in scaffold
# File lib/farmstead/project.rb, line 59 def generate_files ip = local_ip version = Farmstead::VERSION scaffold_path = "#{File.dirname __FILE__}/scaffold" scaffold = Dir.glob("#{scaffold_path}/**/*.erb", File::FNM_DOTMATCH) scaffold.each do |file| basename = File.basename(file) folderstruct = file.match("#{scaffold_path}/(.*)")[1] if basename != folderstruct foldername = File.dirname(folderstruct) create_recursive("#{@name}/#{foldername}") end projectpath = "#{@name}/#{folderstruct}".chomp(".erb") template = File.read(file) results = ERB.new(template).result(binding) copy_to_directory(results, projectpath) end end
interface_from_arch()
click to toggle source
# File lib/farmstead/project.rb, line 87 def interface_from_arch return "Ethernet" if OS.windows? return "en0" if OS.mac? return "eth0" if OS.linux? end
local_ip()
click to toggle source
# File lib/farmstead/project.rb, line 78 def local_ip addr_infos = Socket.getifaddrs addr_infos.each do |addr_info| if addr_info.addr && addr_info.addr.ipv4? && addr_info.name == interface_from_arch return addr_info.addr.ip_address end end end
public_ip()
click to toggle source
# File lib/farmstead/project.rb, line 93 def public_ip response = Net::HTTP.get(URI("http://v4.ifconfig.co/json")) json = eval(response) json[:ip] end
remove_dir(path)
click to toggle source
Recursive Remove
# File lib/farmstead/project.rb, line 110 def remove_dir(path) if File.directory?(path) Dir.foreach(path) do |file| if ((file.to_s != ".") && (file.to_s != "..")) remove_dir("#{path}/#{file}") end end Dir.delete(path) else File.delete(path) end end