separate source file

This commit is contained in:
Alexander Popov 2022-07-31 01:40:30 +03:00
parent 5152598804
commit 626e7cbe0b
Signed by: iiiypuk
GPG Key ID: D8C9B59A9F04A70C
6 changed files with 69 additions and 70 deletions

View File

@ -8,6 +8,7 @@
## 0.2.5b - [31/07/2022]
- - Added input timeout
- ♻️ - Separate one source file
## 0.2.4 - [26/07/2022]
- - Added hint for fix file permissions error.

View File

@ -2,73 +2,7 @@ require "option_parser"
require "yaml"
require "colorize"
# password serializer
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.2.5b"
PASSWORD_FILE_PATH = "#{ENV["HOME"]}/.pwd.yml"
ASCII_LOGO = "
"
# program options
begin
OptionParser.parse do |parser|
parser.banner = "The very simple password manager for humans\n"
parser.on "-v", "--version", "Show version" do
puts ASCII_LOGO.colorize(:yellow)
puts "The very simple password manager for humans.".colorize(:yellow)
print "Version ".colorize(:yellow)
puts VERSION.colorize(:red).mode(:bold)
print "\nURL to full change log: ".colorize(:yellow)
puts "https://git.a2s.su/iiiypuk/pmng/raw/branch/master/HISTORY.md".colorize(:green).mode(:bold)
exit(0)
end
parser.on "-h", "--help", "Show help" do
puts parser
exit(0)
end
parser.on "-g", "--generate-password", "Generate password" do
puts Random::Secure.urlsafe_base64(16, padding: false).colorize(:black).back(:white)
puts Random::Secure.urlsafe_base64(16, padding: false).colorize(:white).back(:blue)
puts Random::Secure.urlsafe_base64(16, padding: false).colorize(:white).back(:red)
exit(0)
end
parser.on "-t", "--unixtime", "Return local timestamp" do
puts Time.local.to_unix.colorize(:yellow).mode(:bold)
exit(0)
end
end
rescue ex
puts ex.message, ""
end
require "./pmng/*"
# check password file exists
if File.exists?(PASSWORD_FILE_PATH)
@ -119,10 +53,10 @@ while loop
print " for exit)\n".colorize(:white).mode(:bold)
print "> ".colorize(:green).mode(:bold)
begin # IO::TimeoutError
STDIN.read_timeout = 60 # 1 minute
begin
STDIN.read_timeout = USER_INPUT_TIMEOUT
password_string = STDIN.gets
rescue
rescue IO::TimeoutError
loop = false
end

35
src/pmng/agrv_options.cr Normal file
View File

@ -0,0 +1,35 @@
begin
OptionParser.parse do |parser|
parser.banner = "The very simple password manager for humans\n"
parser.on "-v", "--version", "Show version" do
puts ASCII_LOGO.colorize(:yellow)
puts "The very simple password manager for humans.".colorize(:yellow)
print "Version ".colorize(:yellow)
puts VERSION.colorize(:red).mode(:bold)
puts "\nURL to full changes log: ".colorize(:yellow)
puts "https://git.a2s.su/iiiypuk/pmng/raw/branch/master/HISTORY.md".colorize(:green).mode(:bold)
exit(0)
end
parser.on "-h", "--help", "Show help" do
puts parser
exit(0)
end
parser.on "-g", "--generate-password", "Generate password" do
puts Random::Secure.urlsafe_base64(16, padding: false).colorize(:black).back(:white)
puts Random::Secure.urlsafe_base64(16, padding: false).colorize(:white).back(:blue)
puts Random::Secure.urlsafe_base64(16, padding: false).colorize(:white).back(:red)
exit(0)
end
parser.on "-t", "--unixtime", "Return local timestamp" do
puts Time.local.to_unix.colorize(:yellow).mode(:bold)
exit(0)
end
end
rescue ex
puts ex.message, ""
end

3
src/pmng/app_settings.cr Normal file
View File

@ -0,0 +1,3 @@
VERSION = {{ `shards version "#{__DIR__}"`.chomp.stringify }}
PASSWORD_FILE_PATH = "#{ENV["HOME"]}/.pwd.yml"
USER_INPUT_TIMEOUT = 60

8
src/pmng/ascii_logo.cr Normal file
View File

@ -0,0 +1,8 @@
ASCII_LOGO = "
"

View File

@ -0,0 +1,18 @@
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