aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristopher Baines <mail@cbaines.net>2018-05-24 19:00:47 +0100
committerChristopher Baines <mail@cbaines.net>2018-05-24 19:00:47 +0100
commit502c924653c89e96c5b370cf281da59e3a2b3759 (patch)
treeb1708e1238fdf579826c5047cf0798b299ccd9ff
parent4eb5c0f4703671d81a2a4b536282f2be4169dac8 (diff)
downloadgovuk-mini-environment-admin-502c924653c89e96c5b370cf281da59e3a2b3759.tar
govuk-mini-environment-admin-502c924653c89e96c5b370cf281da59e3a2b3759.tar.gz
Show the available services for each revision
-rw-r--r--app/jobs/govuk_guix/fetch_revision_job.rb14
-rw-r--r--app/views/govuk_guix/revisions/show.html.erb39
-rw-r--r--db/migrate/20180523062426_add_available_services_to_govuk_guix_revision.rb5
-rw-r--r--db/structure.sql6
4 files changed, 60 insertions, 4 deletions
diff --git a/app/jobs/govuk_guix/fetch_revision_job.rb b/app/jobs/govuk_guix/fetch_revision_job.rb
index 76e16bd..c2c3c17 100644
--- a/app/jobs/govuk_guix/fetch_revision_job.rb
+++ b/app/jobs/govuk_guix/fetch_revision_job.rb
@@ -47,7 +47,8 @@ class GovukGuix::FetchRevisionJob < GovukGuix::Job
GovukGuix::Revision.create(
commit_hash: sha,
- store_path: store_path
+ store_path: store_path,
+ available_services: available_services(store_path)
)
end
@@ -61,6 +62,17 @@ class GovukGuix::FetchRevisionJob < GovukGuix::Job
end
end
+ def available_services(store_path)
+ command_output = run_command(
+ "#{store_path}/bin/govuk",
+ "system",
+ "available-services",
+ "--json"
+ )
+
+ JSON.parse(command_output.join)
+ end
+
def repository_directory
'tmp/cache/govuk-guix'
end
diff --git a/app/views/govuk_guix/revisions/show.html.erb b/app/views/govuk_guix/revisions/show.html.erb
index 96e3588..fe42dd7 100644
--- a/app/views/govuk_guix/revisions/show.html.erb
+++ b/app/views/govuk_guix/revisions/show.html.erb
@@ -26,7 +26,6 @@ License along with the GOV.UK Mini Environment Admin. If not, see
Back to Setup
</a>
-
<h1>Revision: <%= @revision.commit_hash %></h1>
<div class="row">
@@ -54,3 +53,41 @@ License along with the GOV.UK Mini Environment Admin. If not, see
<% else %>
<h2>There are no mini environments using this revision</h2>
<% end %>
+
+<h2>Available Services</h2>
+
+<% (@revision.available_services || []).each do |group| %>
+ <h3><%= group["name"] %></h3>
+ <p><%= group["description"] %></p>
+
+ <table class="table">
+ <thead>
+ <tr>
+ <th>Name</th>
+ <th>Description</th>
+ <th>Package</th>
+ </tr>
+ </thead>
+ <tbody>
+ <% group["services"].each do |service| %>
+ <tr>
+ <td class="col-md-3">
+ <strong><%= service["name"] %></strong>
+ </td>
+
+ <td class="col-md-6">
+ <%= service["description"] %>
+ </td>
+
+ <% package = service["package"] %>
+ <td class="col-md-3">
+ <a href="<%= package["source"]["uri"] %>">
+ <%= package["version"] %>
+ </a>
+ <a href="<%= package["homepage"] %>">[homepage]</a>
+ </td>
+ </tr>
+ <% end %>
+ </tbody>
+ </table>
+<% end %>
diff --git a/db/migrate/20180523062426_add_available_services_to_govuk_guix_revision.rb b/db/migrate/20180523062426_add_available_services_to_govuk_guix_revision.rb
new file mode 100644
index 0000000..328a9ed
--- /dev/null
+++ b/db/migrate/20180523062426_add_available_services_to_govuk_guix_revision.rb
@@ -0,0 +1,5 @@
+class AddAvailableServicesToGovukGuixRevision < ActiveRecord::Migration[5.1]
+ def change
+ add_column :govuk_guix_revisions, :available_services, :json
+ end
+end
diff --git a/db/structure.sql b/db/structure.sql
index 0d56576..12c19cf 100644
--- a/db/structure.sql
+++ b/db/structure.sql
@@ -79,7 +79,8 @@ CREATE TABLE public.govuk_guix_revisions (
store_path character varying,
created_at timestamp without time zone NOT NULL,
updated_at timestamp without time zone NOT NULL,
- archived boolean DEFAULT false NOT NULL
+ archived boolean DEFAULT false NOT NULL,
+ available_services json
);
@@ -501,6 +502,7 @@ INSERT INTO "schema_migrations" (version) VALUES
('20180406124443'),
('20180410192329'),
('20180410192412'),
-('20180417195307');
+('20180417195307'),
+('20180523062426');