class EditWish

Public Class Methods

new() click to toggle source
# File lib/zoom/wish/edit_wish.rb, line 64
def initialize
    @classes = Hash.new
    [Zoom::Profile].concat(Zoom::Profile.subclasses).each do |c|
        @classes[c.to_s] = c.new(c.to_s).to_s.split("\n")[1].strip
    end
    @fields = {
        "after" => "Append any follow up commands",
        "before" => "Prepend any ENV vars",
        "class" => "Modify the class",
        "flags" => "Specify any additional flags",
        "tool" => "Specify an alternative tool"
    }
end

Public Instance Methods

aliases() click to toggle source
# File lib/zoom/wish/edit_wish.rb, line 4
def aliases
    return ["config", "edit", "set"]
end
description() click to toggle source
# File lib/zoom/wish/edit_wish.rb, line 8
def description
    return "Configure profile"
end
execute(args, djinni_env = {}) click to toggle source
# File lib/zoom/wish/edit_wish.rb, line 12
def execute(args, djinni_env = {})
    n, args = args.split(" ", 2)

    if (args.nil?)
        usage
        return
    end

    config = djinni_env["config"]
    if (!config.has_profile?(n))
        puts("Profile does not exist: #{n}")
        return
    end

    f, found, v = args.partition(" ")

    case f
    when "class", "tool"
        if (found.empty?)
            usage
            return
        end
    end

    profiles = config.parse_profiles
    profile = profiles[n]

    case f
    when "after"
        profile.after(v)
    when "before"
        profile.before(v)
    when "class"
        if (!@classes.has_key?(v))
            puts("Class does not exist: #{v}")
            return
        end

        profile = Zoom::Profile.profile_by_name(v).new(n)
        profiles[n] = profile
    when "flags"
        profile.flags(v)
    when "tool"
        profile.tool(v)
    else
        usage
        return
    end

    config.set_profiles(profiles)
end
tab_complete(input, djinni_env = {}) click to toggle source
# File lib/zoom/wish/edit_wish.rb, line 78
def tab_complete(input, djinni_env = {})
    n, input = input.split(" ", 2)
    n ||= ""

    if (input.nil?)
        profiles = djinni_env["config"].parse_profiles
        completions = Hash.new

        profiles.keys.sort do |a, b|
            a.downcase <=> b.downcase
        end.each do |name|
            profile = profiles[name]
            completions[name] = profile.to_s.split("\n")[1].strip
        end

        completions.keep_if do |name, desc|
            name.downcase.start_with?(n.downcase)
        end

        return [completions, n, " "]
    end

    f, found, v = input.rpartition(" ")

    if (found.empty?)
        f = v
        completions = @fields.select do |field, desc|
            field.downcase.start_with?(f.downcase)
        end
        return [completions, f, " "]
    end

    case f
    when "class"
        completions = @classes.select do |clas, desc|
            clas.downcase.start_with?(v.downcase)
        end
        return [completions, v, ""]
    else
        return [{}, "", ""]
    end
end
usage() click to toggle source
# File lib/zoom/wish/edit_wish.rb, line 121
def usage
    puts("#{aliases.join(", ")} <name> <field> <value>")
    puts("    #{description}.")
    puts
    puts("FIELDS")
    @fields.each do |field, desc|
        puts("    #{field}")
    end
end