require "yaml" require "colorize" class Password include YAML::Serializable @[YAML::Field(key: "url")] property url : String @[YAML::Field(key: "email")] property email : String @[YAML::Field(key: "login")] property login : String @[YAML::Field(key: "password")] property password : String @[YAML::Field(key: "desc")] property desc : String @[YAML::Field(key: "profile_url")] property profile_url : String @[YAML::Field(key: "update")] property update : Int32 end VERSION = "0.1.0" if !File.exists?("pwd.yml") puts "No password.yml file exists." exit(1) end yaml = File.open("pwd.yml") do |file| YAML.parse(file) end new_array = [] of Password count = 0 while count < yaml.size new_array << Password.from_yaml(yaml[count].to_yaml) count += 1 end while true print "Enter URL (or :q for exit)\n> " password_string = gets if password_string.to_s == ":q" puts "Bye! 👋🏻" exit(0) elsif password_string.to_s == ":h" puts "Help:\n-----" puts ":s - return stats" puts elsif password_string.to_s == ":s" print "Elements: " puts new_array.size puts end new_array.each do |item| if item.url.includes?(password_string.to_s) puts item.url.colorize(:magenta).mode(:blink) if !item.email.blank? puts item.email.colorize(:red) end if !item.login.blank? puts item.login.colorize(:yellow) end if !item.password.blank? puts item.password.colorize(:red).back(:red) end if !item.desc.blank? puts item.desc.colorize(:cyan) end if !item.profile_url.blank? puts item.profile_url.colorize(:green) end puts "---".colorize(:dark_gray) end end puts end