class MakePackage

This is MakePackage, our automatic package building tool.

Public Class Methods

new(spec) click to toggle source

This gets some information from the user we need.

# File bin/scribe, line 26
def initialize(spec)
    @file = open(spec, 'r')
    @spec = YAML::load(@file)
    puts("Package:      #{@spec['name']}")
    puts("Version:      #{@spec['version']}")
    puts("Description:  #{@spec['description']}")
    print("Are you SURE you want to continue? [y/n] ")
    if gets.include?("y")
        mkdir_p("#{@spec['name']}-build/data")
        cp("packageData", "#{@spec['name']}-build/data/.packageData")
        cp("install", "#{@spec['name']}-build/data/.install")
        cp("remove", "#{@spec['name']}-build/data/.remove")
        @pwd = pwd()
        cd("#{@spec['name']}-build")
        get()
        compile()
        buildpkg()
    else
        puts("#{@spec['name']} not built.")
    end
end

Public Instance Methods

buildpkg() click to toggle source

Makes the package.

# File bin/scribe, line 80
def buildpkg()
    puts("Making Package...")
    packageName = "#{@spec['name']}-#{@spec['version']}-#{RbConfig::CONFIG["build_cpu"]}.pst"
    system("tar cf #{packageName} * .packageData .install .remove")
    system("xz #{packageName}")
    cp(packageName + ".xz", "#{@pwd}/#{packageName}")
    rm("#{packageName}.xz")
end
compile() click to toggle source

Compiles the package.

# File bin/scribe, line 67
def compile()
    puts("Building Software...")
    build = File.read("../build")
    eval(build)
    cd("#{@pwd}/#{@spec['name']}-build/data")
    packageFiles = Dir["**/*"].reject {|file| File.directory?(file) }
    for file in packageFiles
        if file.include?("/bin/") or file.include?("/lib/")
            system("strip #{file}")
        end
    end
end
get() click to toggle source

Downloads source code.

# File bin/scribe, line 48
def get()
    puts("Getting Source Code...")
    for source in @spec['source']
        if source.include?("http://") or source.include?("ftp://")
            action = system("wget -c #{source}")
            if action == false
                puts("Could not download #{source}.")
                exit(1)
            end
        elsif source.include?("git://")
            action = system("git clone #{source}")
            if action == false
                puts("Could not download #{source}.")
                exit(1)
            end
        end
    end
end