diff --git a/app.rb b/app.rb
index e6df777..f830668 100644
--- a/app.rb
+++ b/app.rb
@@ -15,6 +15,7 @@ require_relative "classes/gitinfo"
require_relative "classes/db"
require_relative "classes/systeminfo"
require_relative "classes/utilities"
+require_relative "classes/projects"
def print_error_page(error_status, error_meaasge)
@page_name = "Ошибка выполнения"
@@ -36,10 +37,16 @@ get "/" do
if repo.path.nil?
print_error_page(503, "Путь к репозиториям не существует")
else
- repo_data = repo.getrepos
- @repos_number = repo_data.length
- @rcp_number = db.get_recips.length
- erb :index
+ prj = ProjectsActions.new(cfg.get_projects_path, db)
+ if prj.path.nil?
+ print_error_page(503, "Путь к проектам не существует")
+ else
+ repo_data = repo.getrepos
+ @repos_number = repo_data.length
+ @rcp_number = db.get_recips.length
+ @prj_number = prj.get_projects.length
+ erb :index
+ end
end
end
@@ -283,6 +290,17 @@ get "/bldcfginfo" do
end
end
+get "/projs" do
+ @page_name = "Список проектов"
+ prj = ProjectsActions.new(cfg.get_projects_path, db)
+ if prj.path.nil?
+ print_error_page(503, "Путь к проектам не существует")
+ else
+ @prj_list = prj.get_projects
+ erb :prjlist
+ end
+end
+
not_found do
status 404
@page_name = "Кто-то потерялся"
diff --git a/classes/config.rb b/classes/config.rb
index 0aa800c..17a1bae 100644
--- a/classes/config.rb
+++ b/classes/config.rb
@@ -54,4 +54,12 @@ class IniConfig
[]
end
end
+
+ def get_projects_path()
+ unless @config["projects"]["path"].nil?
+ @config["projects"]["path"].to_s
+ else
+ "projects"
+ end
+ end
end
diff --git a/classes/db.rb b/classes/db.rb
index 77188d9..abf2939 100644
--- a/classes/db.rb
+++ b/classes/db.rb
@@ -12,6 +12,12 @@ end
class RepocRecips < Sequel::Model(:repos_recips)
end
+class Projects < Sequel::Model(:projects)
+end
+
+class ReposProjects < Sequel::Model(:repos_projects)
+end
+
class DBase
attr :error, :last_id
@@ -108,4 +114,8 @@ class DBase
RepocRecips.where(recip_id: id.to_i).delete
Recips.where(id: id.to_i).delete
end
+
+ def proj_list
+ Projects.order(:id).all
+ end
end
diff --git a/classes/projects.rb b/classes/projects.rb
new file mode 100644
index 0000000..fa2352e
--- /dev/null
+++ b/classes/projects.rb
@@ -0,0 +1,30 @@
+require_relative "db"
+
+class ProjectsActions
+ attr :path, :error, :db
+
+ def initialize(path, db)
+ @path = nil
+ @error = nil
+ @db = db
+ if File.absolute_path?(path)
+ if File.exist?(path)
+ @path = path
+ end
+ else
+ apath = File.realpath(path)
+ if File.exist?(apath)
+ @path = apath
+ end
+ end
+ end
+
+ def get_projects
+ prj = []
+ File.open("locks/prjcreate", "r") do |f|
+ f.flock(File::LOCK_SH)
+ prj = @db.proj_list
+ end
+ prj
+ end
+end
diff --git a/locks/prjcreate b/locks/prjcreate
new file mode 100644
index 0000000..e69de29
diff --git a/views/index.erb b/views/index.erb
index 4640a4c..4f05d54 100644
--- a/views/index.erb
+++ b/views/index.erb
@@ -8,7 +8,7 @@
Проектов