class Ki::ShowVersion

Shows information about a version

Public Instance Methods

execute(ctx, args) click to toggle source
# File lib/cmd/version_cmd.rb, line 341
def execute(ctx, args)
  finder = ctx.ki_home.finder
  versions = opts.parse(args).map { |v| finder.version(v) }
  if @file
    versions.unshift Version.create_version(@file, @input_dir)
  end
  versions.each do |ver|
    VersionIterator.new.finder(finder).version(ver).iterate_versions do |version|
      metadata = version.metadata
      puts "Version: #{metadata.version_id}"
      if metadata.source.size > 0
        puts "Source: #{map_to_csl(metadata.source)}"
      end
      if metadata.dependencies.size > 0
        puts "Dependencies(#{metadata.dependencies.size}):"
        metadata.dependencies.each do |dep|
          dep_data = dep.dup
          dep_ops = dep_data.delete("operations")
          puts "#{dep_data.delete("version_id")}: #{map_to_csl(dep_data)}"
          if dep_ops && dep_ops.size > 0
            puts "Depedency operations:"
            dep_ops.each do |op|
              puts op.join(" ")
            end
          end
        end
      end
      if metadata.files.size > 0
        puts "Files(#{metadata.files.size}):"
        metadata.files.each do |file|
          file_data = file.dup
          puts "#{file_data.delete("path")} - size: #{file_data.delete("size")}, #{map_to_csl(file_data)}"
        end
      end
      if metadata.operations.size > 0
        puts "Version operations(#{metadata.operations.size}):"
        metadata.operations.each do |op|
          puts op.join(" ")
        end
      end
      if @dirs
        puts "Version directories: #{version.versions.map { |v| v.path }.join(", ")}"
      end
      if !@recursive
        break
      end
    end
  end
end
help() click to toggle source
# File lib/cmd/version_cmd.rb, line 421
    def help
      <<EOF
"#{shell_command}" prints information about version or versions and their dependencies

### Examples

    #{shell_command} -r -d my/component/23 my/product/127
    #{shell_command} -f ki-version.json -i binary-dir

### Parameters
#{opts}
EOF
    end
map_to_csl(map) click to toggle source
# File lib/cmd/version_cmd.rb, line 391
def map_to_csl(map)
  map.sort.map { |k, v| "#{k}=#{Array(v).join(",")}" }.join(", ")
end
opts() click to toggle source
# File lib/cmd/version_cmd.rb, line 395
def opts
  OptionParser.new do |opts|
    opts.banner = ""
    opts.on("-r", "--recursive", "Shows version's dependencies.") do |v|
      @recursive = true
    end
    opts.on("-d", "--dirs", "Shows version's directories.") do |v|
      @dirs = true
    end
    opts.on("-f", "--file FILE", "Version source file. By default uses file's directory as source for binary files.") do |v|
      if @input_dir.nil?
        dir = File.dirname(v)
        @input_dir = dir != "." ? dir : Dir.pwd
      end
      @file = v
    end
    opts.on("-i", "--input-directory INPUT-DIR", "Binary file input directory") do |v|
      @input_dir = v
    end
  end
end
summary() click to toggle source
# File lib/cmd/version_cmd.rb, line 417
def summary
  "Prints information about version or versions"
end