File size: 3,003 Bytes
097e928
26ec914
ceb9f2d
26ec914
097e928
 
 
26ec914
 
 
8a0f16c
 
 
 
 
 
 
 
 
 
 
 
 
097e928
8a0f16c
 
097e928
949095b
8a0f16c
 
863c8a3
949095b
57666ab
58d2505
949095b
58d2505
949095b
 
58193c1
8a0f16c
949095b
 
 
58193c1
949095b
 
 
 
 
 
8a0f16c
949095b
 
58193c1
 
8a0f16c
949095b
 
 
26ec914
949095b
 
26ec914
949095b
 
 
38cff14
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
# main.py
import os
import streamlit as st
import base64
from modules.git_operations import clone_repository
from modules.file_operations import get_file_tree, process_files
from modules.markdown_operations import create_markdown_content, save_markdown_file

# .gitignoreのパターンを読み込む
ignore_patterns = []
if os.path.exists(".CodeLumiaignore"):
    with open(".CodeLumiaignore", "r") as f:
        for line in f:
            line = line.strip()
            if line and not line.startswith("#"):
                ignore_patterns.append(line)

# docs\page_front.mdファイルの内容を読み込む
if os.path.exists("docs/page_front.md"):
    with open("docs/page_front.md", "r", encoding="utf-8") as f:
        page_front_content = f.read()
        st.markdown(page_front_content, unsafe_allow_html=True)

st.markdown("---")
# リポジトリのURLを入力するテキストボックス
repo_url = st.text_input("リポジトリのURL:")
st.markdown("---")
# st.markdown("[Full Text](#full-text)")

# .gitignoreのパターンを編集するサイドバー
st.sidebar.title(".CodeLumiaignore Patterns")
ignore_patterns = st.sidebar.text_area("Enter patterns (one per line):", value="\n".join(ignore_patterns), height=300).split("\n")
tmp_dir = st.sidebar.text_input('tmp_dir', '/tmp')
# 探索の最大深度を入力するテキストボックス
max_depth = st.sidebar.number_input("探索の最大深度:", min_value=1, value=1, step=1)

preview_markdown = st.sidebar.checkbox('preview markdown', value=False)
preview_plaintext = st.sidebar.checkbox('preview plaintext', value=False)
preview_tree = st.sidebar.checkbox('preview tree', value=True)

if st.button("CodeLumia Run ...", type="primary"):
    if repo_url:
        repo_name = repo_url.split("/")[-1].split(".")[0]
        with st.status("Scaning repository...", expanded=True):
            st.write("clone repository...")
            repo_path = clone_repository(repo_url, repo_name, tmp_dir=tmp_dir)
            st.write("get file tree...")
            file_tree = get_file_tree(repo_path, ignore_patterns, max_depth)
            st.write("create markdown content...")
            markdown_content = create_markdown_content(repo_name, file_tree, repo_path, ignore_patterns, max_depth)

        # マークダウンファイルを保存
        save_markdown_file(repo_name, markdown_content)
        if(preview_tree):
            st.code(f"{file_tree}")

        # Streamlitアプリケーションの構築
        if(preview_markdown):
            st.markdown(markdown_content, unsafe_allow_html=True)

        # ダウンロードリンクの作成
        st.markdown(f'<div align="center"><a href="data:text/markdown;base64,{base64.b64encode(markdown_content.encode("utf-8")).decode("utf-8")}" download="{repo_name}.md">Download Markdown File</a></div>', unsafe_allow_html=True)

        st.markdown("---")
        if(preview_plaintext):
            st.markdown("# Full Text")
            st.code(markdown_content)