82 lines
1.6 KiB
Plaintext
82 lines
1.6 KiB
Plaintext
|
#!/usr/bin/env ruby
|
||
|
|
||
|
require 'fileutils'
|
||
|
require 'open3'
|
||
|
require 'erb'
|
||
|
|
||
|
source = File.read('src/BSDSocket.s')
|
||
|
|
||
|
aminet_template = ERB.new(File.read("aminet.readme.erb"))
|
||
|
|
||
|
capture_version = false
|
||
|
version = nil
|
||
|
|
||
|
source.lines.each do |line|
|
||
|
if capture_version
|
||
|
version = line[/dc\.b "([^"]+)"/,1]
|
||
|
|
||
|
break
|
||
|
end
|
||
|
|
||
|
if line[/^Version.*MACRO/]
|
||
|
# the version is on the next line
|
||
|
capture_version = true
|
||
|
end
|
||
|
end
|
||
|
|
||
|
FileUtils.mkdir_p 'dist'
|
||
|
|
||
|
build_base = 'build'
|
||
|
project_name = 'BSDSocket-Extension'
|
||
|
|
||
|
build_dir = File.join(build_base, project_name)
|
||
|
FileUtils.rm_rf build_dir
|
||
|
FileUtils.mkdir_p build_dir
|
||
|
FileUtils.mkdir_p 'aminet'
|
||
|
|
||
|
hackerbun_target = File.expand_path("dist/AMOSPro_BSDSocket_#{version}.lha")
|
||
|
|
||
|
[
|
||
|
"AMOSPro_BSDSocket.Lib",
|
||
|
"README.md",
|
||
|
"API.md",
|
||
|
"LICENSE",
|
||
|
].each do |file|
|
||
|
target = "#{build_dir}/#{file}"
|
||
|
FileUtils.mkdir_p File.dirname(target)
|
||
|
FileUtils.cp file, target
|
||
|
end
|
||
|
|
||
|
[
|
||
|
"src",
|
||
|
"examples"
|
||
|
].each do |dir|
|
||
|
FileUtils.cp_r dir, "#{build_dir}/#{dir}"
|
||
|
end
|
||
|
|
||
|
Dir["icons/**/*.info"].each do |info|
|
||
|
target = info.gsub("icons/", build_base + "/")
|
||
|
FileUtils.mkdir_p File.dirname(target)
|
||
|
FileUtils.cp info, target
|
||
|
end
|
||
|
|
||
|
Dir.chdir build_base do
|
||
|
Open3.popen2e(
|
||
|
"jlha", "c", hackerbun_target,
|
||
|
*(Dir["*"])) do |stdin, stdout_and_stderr, wait_thr|
|
||
|
|
||
|
Thread.new do
|
||
|
stdout_and_stderr.each { |l| puts l }
|
||
|
end
|
||
|
|
||
|
stdin.close
|
||
|
|
||
|
wait_thr.value
|
||
|
end
|
||
|
end
|
||
|
|
||
|
FileUtils.cp hackerbun_target, "aminet/BSDSocket-Extension.lha"
|
||
|
File.open("aminet/BSDSocket-Extension.readme", "w") do |fh|
|
||
|
fh.puts aminet_template.result(binding)
|
||
|
end
|