module FalkorLib::Bootstrap::Link
Hold [sim]link fonction creations
Public Instance Methods
makefile(dir = Dir.pwd, options = { :no_interaction => false })
click to toggle source
makefile ######
Create a symlink to the one of Falkor’s Makefile, typically bring as a Git
submodule Supported options:
* :force [boolean] force action * :latex [boolean] Makefile to compile LaTeX documents * :gnuplot [boolean] Makefile to compile GnuPlot scripts * :markdown [boolean] Makefile to convert Markdown files to HTML * :servers [boolean] Makefile to fetch key files from remote servers * :refdir [string] Path to Falkor's Makefile repository * :src [boolean] Path to latex_src * :no_interaction [boolean] do not interact
# File lib/falkorlib/bootstrap/link.rb, line 35 def makefile(dir = Dir.pwd, options = { :no_interaction => false }) raise FalkorLib::ExecError "Not used in a Git repository" unless FalkorLib::Git.init? exit_status = 0 path = normalized_path(dir) rootdir = FalkorLib::Git.rootdir(path) info "Create a symlink to one of Falkor's Makefile" # Add Falkor's Makefiles submodules = FalkorLib.config[:git][:submodules] if submodules['Makefiles'].nil? submodules['Makefiles'] = { :url => 'https://github.com/Falkor/Makefiles.git', :branch => 'devel' } end FalkorLib::Git.submodule_init(rootdir, submodules) FalkorLib::Bootstrap::Link.root(dir) refdir = File.join(FalkorLib.config[:git][:submodulesdir], 'Makefiles') refdir = options[:refdir] unless options[:refdir].nil? dst = File.join('.root', refdir) makefile_d = '.makefile.d' unless File.exist?(File.join(path, makefile_d)) Dir.chdir( path ) do run %( ln -s #{dst} #{makefile_d} ) FalkorLib::Git.add(makefile_d, "Add symlink '#{makefile_d}' to Falkor's Makefile directory") end end #ap options makefile = 'Makefile' type = 'latex' # recall to place the default option (--latex) at the last position [ :gnuplot, :images, :generic, :markdown, :repo, :servers] .each do |e| if options[e.to_sym] type = e.to_s break end end type = 'latex_src' if options[:src] makefile = 'Makefile.insubdir' if options[:generic] makefile = 'Makefile.to_html' if options[:markdown] dst = File.join(makefile_d, type, makefile) if File.exist?( File.join(path, 'Makefile')) puts " ... Makefile already setup" exit_status = 1 else info "Bootstrapping #{type.capitalize} Makefile (as symlink to Falkor's Makefile)" really_continue? unless options[:no_interaction] Dir.chdir( path ) do exit_status = run %( ln -s #{dst} Makefile ) exit_status = FalkorLib::Git.add('Makefile', "Add symlink to the #{type.capitalize} Makefile") end end exit_status.to_i end
root(dir = Dir.pwd, options = {})
click to toggle source
rootlink ######
Create a symlink ‘.root’ targeting the relative path to the git root directory Supported options:
* :name [string] name of the symlink ('.root' by default)
# File lib/falkorlib/bootstrap/link.rb, line 97 def root(dir = Dir.pwd, options = {}) raise FalkorLib::ExecError "Not used in a Git repository" unless FalkorLib::Git.init? exit_status = 0 path = normalized_path(dir) relative_path_to_root = (Pathname.new( FalkorLib::Git.rootdir(dir) ).relative_path_from Pathname.new( File.realpath(path))) if relative_path_to_root.to_s == "." FalkorLib::Common.warning "Already at the root directory of the Git repository" FalkorLib::Common.really_continue? unless options[:no_interaction] end target = (options[:name]) ? options[:name] : '.root' puts "Entering '#{relative_path_to_root}'" if File.exist?( File.join(path, target)) puts " ... the symbolic link '#{target}' already exists" exit_status = 1 else warning "creating the symboling link '#{target}' which points to '#{relative_path_to_root}'" if options[:verbose] # Format: ln_s(old, new, options = {}) -- Creates a symbolic link new which points to old. #FileUtils.ln_s "#{relative_path_to_root}", "#{target}" Dir.chdir( path ) do exit_status = run %( ln -s #{relative_path_to_root} #{target} ) end exit_status = FalkorLib::Git.add(File.join(path, target), "Add symlink to the root directory as .root") end exit_status.to_i end