From dbdeeb916fe6984bf1ad4a844eb66589582651a2 Mon Sep 17 00:00:00 2001
From: Eliot Berriot <contact@eliotberriot.com>
Date: Fri, 10 May 2019 11:01:34 +0200
Subject: [PATCH] Download API and frontend files

---
 defaults/main.yml                      |  1 -
 molecule/default/playbook.yml          |  1 +
 molecule/default/tests/test_default.py | 17 +++++++++++++++--
 tasks/funkwhale.yml                    | 18 ++++++++++++++++++
 templates/env.j2                       |  4 ++--
 5 files changed, 36 insertions(+), 5 deletions(-)

diff --git a/defaults/main.yml b/defaults/main.yml
index 26d6909..7748243 100644
--- a/defaults/main.yml
+++ b/defaults/main.yml
@@ -5,7 +5,6 @@ funkwhale_media_path: /srv/funkwhale/data/media
 funkwhale_static_path: /srv/funkwhale/data/static
 funkwhale_music_path: /srv/funkwhale/data/music
 funkwhale_config_path: /srv/funkwhale/config
-funkwhale_frontend_path: /srv/funkwhale/frontend/dist
 funkwhale_username: funkwhale
 funkwhale_database_managed: true
 funkwhale_database_name: funkwhale
diff --git a/molecule/default/playbook.yml b/molecule/default/playbook.yml
index 09a690e..99584c4 100644
--- a/molecule/default/playbook.yml
+++ b/molecule/default/playbook.yml
@@ -8,6 +8,7 @@
       vars:
         funkwhale_hostname: yourdomain.funkwhale
         funkwhale_protocol: https
+        funkwhale_version: 0.19.0-rc2
         funkwhale_env_vars:
           - EMAIL_CONFIG=smtp+tls://user@:password@youremail.host:587
           - DEFAULT_FROM_EMAIL=noreply@yourdomain
diff --git a/molecule/default/tests/test_default.py b/molecule/default/tests/test_default.py
index f918a94..0f4439c 100644
--- a/molecule/default/tests/test_default.py
+++ b/molecule/default/tests/test_default.py
@@ -73,9 +73,9 @@ def test_funkwhale_env_file(host):
         f.contains("EMAIL_CONFIG=smtp+tls://user@:password@youremail.host:587") is True
     )
     assert f.contains("DEFAULT_FROM_EMAIL=noreply@yourdomain") is True
-    assert f.contains("FUNKWHALE_FRONTEND_PATH=/srv/funkwhale/frontend/dist") is True
+    assert f.contains("FUNKWHALE_FRONTEND_PATH=/srv/funkwhale/front/dist") is True
     assert (
-        f.contains("FUNKWHALE_SPA_HTML_ROOT=/srv/funkwhale/frontend/dist/index.html")
+        f.contains("FUNKWHALE_SPA_HTML_ROOT=/srv/funkwhale/front/dist/index.html")
         is True
     )
     assert f.contains("NGINX_MAX_BODY_SIZE=100M") is True
@@ -84,3 +84,16 @@ def test_funkwhale_env_file(host):
     # additional vars
     assert f.contains("ADDITIONAL_VAR=1") is True
     assert f.contains("ADDITIONAL_VAR=2") is True
+
+
+def test_frontend_download(host):
+    f = host.file("/srv/funkwhale/front/dist/index.html")
+
+    assert f.exists is True
+
+
+def test_api_download(host):
+    f = host.file("/srv/funkwhale/api/funkwhale_api/__init__.py")
+
+    assert f.exists is True
+    assert f.contains('__version__ = "0.19.0-rc2"') is True
diff --git a/tasks/funkwhale.yml b/tasks/funkwhale.yml
index 8cd5dc1..4327615 100644
--- a/tasks/funkwhale.yml
+++ b/tasks/funkwhale.yml
@@ -24,9 +24,27 @@
 
 - name: "Create funkwhale configuration file"
   become: true
+  become_user: "{{ funkwhale_username }}"
   template:
     src: env.j2
     dest: "{{ funkwhale_config_path }}/.env"
     owner: "{{ funkwhale_username }}"
   vars:
     secret_key: secret_key
+
+- name: Download front-end files
+  become: true
+  become_user: "{{ funkwhale_username }}"
+  unarchive:
+    src: https://dev.funkwhale.audio/funkwhale/funkwhale/-/jobs/artifacts/{{ funkwhale_version }}/download?job=build_front
+    dest: "{{ funkwhale_install_path }}"
+    remote_src: true
+
+
+- name: Download api files
+  become: true
+  become_user: "{{ funkwhale_username }}"
+  unarchive:
+    src: https://dev.funkwhale.audio/funkwhale/funkwhale/-/jobs/artifacts/{{ funkwhale_version }}/download?job=build_api
+    dest: "{{ funkwhale_install_path }}"
+    remote_src: true
diff --git a/templates/env.j2 b/templates/env.j2
index 848ccfb..3e2e587 100644
--- a/templates/env.j2
+++ b/templates/env.j2
@@ -24,8 +24,8 @@ MEDIA_ROOT={{ funkwhale_media_path }}
 STATIC_ROOT={{ funkwhale_static_path }}
 MUSIC_DIRECTORY_PATH={{ funkwhale_music_path }}
 MUSIC_DIRECTORY_SERVE_PATH={{ funkwhale_music_path }}
-FUNKWHALE_FRONTEND_PATH={{ funkwhale_frontend_path }}
-FUNKWHALE_SPA_HTML_ROOT={{ funkwhale_frontend_path }}/index.html
+FUNKWHALE_FRONTEND_PATH={{ funkwhale_install_path }}/front/dist
+FUNKWHALE_SPA_HTML_ROOT={{ funkwhale_install_path }}/front/dist/index.html
 {% if funkwhale_nginx_managed %}
 NGINX_MAX_BODY_SIZE={{ funkwhale_nginx_max_body_size }}
 {% endif %}
-- 
GitLab