File size: 2,464 Bytes
5e0fb22
 
c66f7d7
9ad7c81
5e0fb22
 
 
 
 
 
 
 
 
 
 
d893df4
5e0fb22
 
 
 
 
 
 
 
8213677
f360902
 
5e0fb22
8213677
bba5be7
5e0fb22
9ad7c81
 
 
 
 
 
5e0fb22
 
 
 
 
9ad7c81
5e0fb22
9ad7c81
5e0fb22
 
9ad7c81
 
 
 
 
5e0fb22
9ad7c81
c66f7d7
5e0fb22
 
 
 
a299c89
5e0fb22
8213677
 
 
9ad7c81
8213677
 
 
 
5e0fb22
 
c66f7d7
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
import os
import shutil
from flask import Flask, send_from_directory, abort, render_template
import subprocess

# リポジトリをクローンするディレクトリ
temp_dir = "/tmp/nebula_repo"

# リポジトリのクローンとセットアップを行う
def clone_and_setup_repo():
    # 一時ディレクトリが存在する場合は削除
    if os.path.exists(temp_dir):
        shutil.rmtree(temp_dir)

    print("Cloning the repository...")
    result = os.system(f"git clone https://github.com/izum00/Alu.git --recursive {temp_dir}")
    
    if result != 0:
        print("Error: Failed to clone the repository.")
        return

    # クローンしたディレクトリに移動してセットアップ
    os.chdir(temp_dir)
    os.system("npm i")
    os.system("cp .env.example .env")
    os.system("npm i -g pnpm")
    os.system("pnpm i")
    os.system("npm run build")
    os.system("npm start")
    os.system("npm restart")

    # index.htmlをカレントディレクトリに移動
    index_html_path = os.path.join(temp_dir, 'index.html')
    if os.path.exists(index_html_path):
        if os.path.exists('index.html'):
            os.remove('index.html')
        shutil.move(index_html_path, '.')

# クローンとセットアップを実行
clone_and_setup_repo()

# Flaskアプリケーションの設定
app = Flask(__name__, template_folder=os.path.join(temp_dir, 'views'))

# ルートでindex.htmlを表示
@app.route('/')
def index():
    # index.htmlがリポジトリ内のviewsディレクトリに存在しない場合は404エラー
    index_html_path = os.path.join(temp_dir, 'views', 'index.html')
    if not os.path.exists(index_html_path):
        print("index 404")
        return abort(404, description="index.html not found.")

    # Flaskのテンプレートエンジンを使ってindex.htmlをレンダリング
    return render_template('index.html')

# 静的ファイルを提供するためのルート
@app.route('/<path:filename>')
def static_files(filename):
    return send_from_directory(os.path.join(temp_dir, 'views'), filename)

# main.jsの存在を確認するエンドポイント
@app.route('/check_main_js')
def check_main_js():
    if os.path.exists(os.path.join(temp_dir, 'static', 'main.js')):
        return "main.js exists."
    else:
        return "main.js does not exist."

if __name__ == '__main__':
    # port 7860でFlaskアプリを起動
    app.run(host='0.0.0.0', port=7860)