google-api-ruby-client/rakelib/devsite/repo_metadata.rb

57 lines
1.0 KiB
Ruby

require "json"
class RepoMetadata
attr_accessor :data
def initialize data
@data = data
normalize_data!
end
def allowed_fields
[
"name", "version", "language", "distribution-name",
"product-page", "github-repository", "issue-tracker"
]
end
def build output_directory
fields = @data.to_a.map { |kv| "--#{kv[0]} #{kv[1]}" }
Dir.chdir output_directory do
cmd "python3 -m docuploader create-metadata #{fields.join ' '}"
end
end
def normalize_data!
@data.delete_if { |k, _| !allowed_fields.include?(k) }
end
def [] key
data[key]
end
def []= key, value
@data[key] = value
end
def cmd line
puts line
output = `#{line}`
puts output
output
end
def self.from_source source
if source.is_a? RepoMetadata
data = source.data
elsif source.is_a? Hash
data = source
elsif File.file? source
data = JSON.parse File.read(source)
else
raise "Source must be a path, hash, or RepoMetadata instance"
end
RepoMetadata.new data
end
end