Compare commits

...

2 Commits

Author SHA1 Message Date
d49dcda651
0.2.1 2022-03-15 01:56:01 +03:00
6fc0459d81
change pwd path 2022-03-15 01:42:17 +03:00
3 changed files with 31 additions and 15 deletions

View File

@ -6,7 +6,9 @@
- - Information - - Information
- ♻️ - Edited - ♻️ - Edited
## 0.2.1 - [13/03/2022] ## 0.2.1 - [14/03/2022]
- - prompt '>' set color green
- ♻️ - change default pwd path to '$HOME/.pwd.yml'
- ✔️ - fixed empty search field - ✔️ - fixed empty search field
- ✔️ - fixed password generate colors to russian flag - ✔️ - fixed password generate colors to russian flag

View File

@ -1,5 +1,5 @@
name: pmng name: pmng
version: 0.1.0 version: 0.2.1
authors: authors:
- Alexander Popov <iiiypuk@iiiypuk.me> - Alexander Popov <iiiypuk@iiiypuk.me>

View File

@ -2,6 +2,7 @@ require "option_parser"
require "yaml" require "yaml"
require "colorize" require "colorize"
# password serializer
class Password class Password
include YAML::Serializable include YAML::Serializable
@ -23,9 +24,10 @@ end
VERSION = "0.2.1" VERSION = "0.2.1"
# program options
begin begin
OptionParser.parse do |parser| OptionParser.parse do |parser|
parser.banner = "pmng -- ver.: #{VERSION}\nThe very simple password manager for humans\n" parser.banner = "The very simple password manager for humans\n"
parser.on "-v", "--version", "Show version" do parser.on "-v", "--version", "Show version" do
puts "Version #{VERSION}" puts "Version #{VERSION}"
@ -50,11 +52,15 @@ rescue ex
puts ex.message, "" puts ex.message, ""
end end
password_file_path = PROGRAM_NAME.split("/") # password_file_path = PROGRAM_NAME.split("/")
password_file_path.pop # password_file_path.pop
password_file_path.insert(-1, "pwd.yml") # password_file_path.insert(-1, "pwd.yml")
password_file_path = password_file_path.join("/") # password_file_path = password_file_path.join("/")
# TODO: Fix later
password_file_path = "#{ENV["HOME"]}/.pwd.yml"
# check password file exists
if File.exists?(password_file_path) if File.exists?(password_file_path)
yaml = File.open(password_file_path) do |file| yaml = File.open(password_file_path) do |file|
YAML.parse(file) YAML.parse(file)
@ -65,37 +71,44 @@ else
exit(1) exit(1)
end end
new_array = [] of Password # fill passwords array
passwords_array = [] of Password
count = 0 count = 0
while count < yaml.size while count < yaml.size
new_array << Password.from_yaml(yaml[count].to_yaml) passwords_array << Password.from_yaml(yaml[count].to_yaml)
count += 1 count += 1
end end
# main loop
loop = true loop = true
while loop while loop
print "Enter URL (or :q for exit)\n> " # shell prompt
print "Enter URL (or :q for exit)\n"
print "> ".colorize(:green)
password_string = gets password_string = gets
# if ':q' to close program
if password_string.to_s == ":q" if password_string.to_s == ":q"
puts "Bye! 👋🏻" puts "Bye! 👋🏻"
exit(0) exit(0)
# if puts empty, retry prompt
elsif password_string.to_s.size == 0 elsif password_string.to_s.size == 0
puts puts
# if ':h' to view help
elsif password_string.to_s == ":h" elsif password_string.to_s == ":h"
puts "Help:\n-----" puts "Help:\n-----"
puts ":s - Return stats" puts ":s - Return stats"
# if ':s' to view Statistics
elsif password_string.to_s == ":s" elsif password_string.to_s == ":s"
puts "Statictics:\n----------" puts "Statistics:\n----------"
print "Elements: ".colorize(:yellow) print "Elements: ".colorize(:yellow)
puts new_array.size puts passwords_array.size
print "Outdated: ".colorize(:red) print "Outdated: ".colorize(:red)
outdated_count = 0 outdated_count = 0
current_time = Time.local.to_unix current_time = Time.local.to_unix
a = [] of String a = [] of String
new_array.each do |item| passwords_array.each do |item|
if item.update + (2629743 * 2) < current_time # 2629743 * 2 -- 2 month if item.update + (2629743 * 2) < current_time # 2629743 * 2 -- 2 month
outdated_count += 1 outdated_count += 1
a << item.url a << item.url
@ -103,8 +116,9 @@ while loop
end end
puts outdated_count puts outdated_count
# list search password
else else
new_array.each do |item| passwords_array.each do |item|
if item.url.includes?(password_string.to_s) if item.url.includes?(password_string.to_s)
puts item.url.colorize(:magenta).mode(:blink) puts item.url.colorize(:magenta).mode(:blink)