# frozen_string_literal: true
require 'open-uri'
# Fronde::Config
is required by Fronde::Utils
require 'fronde/utils'
require 'rake/clean'
CLOBBER.push(
'var/tmp/org.tar.gz', 'var/tmp/last_org_version', 'var/lib/org-config.el', '.dir-locals.el', 'lib/htmlize.el'
)
namespace :org do
directory 'var/tmp' desc 'Download last version of Org' file 'var/tmp/org.tar.gz' => 'var/tmp' do verbose = Rake::FileUtilsExt.verbose_flag download = Thread.new do Thread.current[:org_version] = Fronde::Config.org_last_version Fronde::Utils.download_org end if verbose download.join warn "Org version #{download[:org_version]} has been downloaded" else Fronde::Utils.throbber(download, 'Downloading Org:') end end desc 'Compile Org' task compile: 'var/tmp/org.tar.gz' do |task| verbose = Rake::FileUtilsExt.verbose_flag org_version = Fronde::Config.org_last_version org_dir = "lib/org-#{org_version}" next if Dir.exist?("#{org_dir}/lisp") make = ['make', '-C', org_dir] unless verbose make << '-s' make << 'EMACSQ="emacs -Q --eval \'(setq inhibit-message t)\'"' end build = Thread.new do sh "tar -C lib -xzf #{task.prerequisites[0]}" sh((make + ['compile']).join(' ')) sh((make + ['autoloads']).join(' ')) Dir.glob('lib/org-[0-9.]*').each do |ov| next if ov == org_dir rm_r ov end end if verbose build.join warn "#{org_version} has been locally installed" else Fronde::Utils.throbber(build, 'Installing Org:') end end directory 'lib' file 'lib/htmlize.el' => 'lib' do htmlize = URI( 'https://raw.githubusercontent.com/hniksic/emacs-htmlize/master/htmlize.el' ).open.read IO.write 'lib/htmlize.el', htmlize end file 'lib/ox-gmi.el' => 'lib' do ox_gmi = URI( 'https://git.umaneti.net/ox-gmi.el/plain/ox-gmi.el' ).open.read IO.write 'lib/ox-gmi.el', ox_gmi end file 'var/lib/org-config.el' => ['lib/htmlize.el', 'lib/ox-gmi.el'] do Fronde::Config.write_org_lisp_config end file '.dir-locals.el' => 'var/lib/org-config.el' do Fronde::Config.write_dir_locals end desc 'Install Org' multitask install: ['org:compile', '.dir-locals.el'] do mkdir_p "#{Fronde::Config.settings['public_folder']}/assets" Fronde::Config.sources.each do |s| mkdir_p s['path'] unless Dir.exist? s['path'] end end # The following task only run the clobber task (not provided by us) # and the org:install one, which is already tested. Thus, we can # safely remove it from coverage. # :nocov: desc 'Upgrade Org' task :upgrade do Rake::Task['clobber'].execute Rake::Task['org:install'].invoke end # :nocov:
end