Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| ca49cdbbf3 | |||
| 919a91d6aa | |||
| 3c9a947017 | |||
| cc90857cf5 |
@@ -24,25 +24,18 @@ jobs:
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Set image tag
|
||||
id: tag
|
||||
run: |
|
||||
TIMESTAMP=$(date +%Y%m%d%H%M%S)
|
||||
SHA=$(echo ${{ gitea.sha }} | cut -c1-7)
|
||||
echo "tag=${TIMESTAMP}-${SHA}" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Build Docker image
|
||||
run: |
|
||||
docker build -t gitea.leeworks.dev/0xwheatyz/gitea-mobile:${{ steps.tag.outputs.tag }} .
|
||||
docker tag gitea.leeworks.dev/0xwheatyz/gitea-mobile:${{ steps.tag.outputs.tag }} \
|
||||
gitea.leeworks.dev/0xwheatyz/gitea-mobile:latest
|
||||
|
||||
- name: Login to Gitea registry
|
||||
run: |
|
||||
echo "${{ secrets.REGISTRY_PASSWORD }}" | docker login gitea.leeworks.dev \
|
||||
-u "${{ secrets.REGISTRY_USERNAME }}" --password-stdin
|
||||
|
||||
- name: Push image
|
||||
- name: Build and push Docker image
|
||||
run: |
|
||||
docker push gitea.leeworks.dev/0xwheatyz/gitea-mobile:${{ steps.tag.outputs.tag }}
|
||||
TIMESTAMP=$(date +%Y%m%d%H%M%S)
|
||||
SHA=$(echo ${{ gitea.sha }} | cut -c1-7)
|
||||
TAG="${TIMESTAMP}-${SHA}"
|
||||
docker build -t gitea.leeworks.dev/0xwheatyz/gitea-mobile:${TAG} .
|
||||
docker tag gitea.leeworks.dev/0xwheatyz/gitea-mobile:${TAG} \
|
||||
gitea.leeworks.dev/0xwheatyz/gitea-mobile:latest
|
||||
docker push gitea.leeworks.dev/0xwheatyz/gitea-mobile:${TAG}
|
||||
docker push gitea.leeworks.dev/0xwheatyz/gitea-mobile:latest
|
||||
|
||||
@@ -38,6 +38,7 @@ func (h *Handler) RegisterRoutes(mux *http.ServeMux) {
|
||||
|
||||
// Issues.
|
||||
mux.HandleFunc("GET /issues", h.ListIssues)
|
||||
mux.HandleFunc("GET /issues/new", h.NewIssue)
|
||||
mux.HandleFunc("POST /issues", h.CreateIssue)
|
||||
mux.HandleFunc("POST /issues/{owner}/{repo}/{index}/labels", h.ApplyLabels)
|
||||
|
||||
@@ -444,6 +445,41 @@ func (h *Handler) PullDetail(w http.ResponseWriter, r *http.Request) {
|
||||
renderPage(w, r, fmt.Sprintf("PR #%d", index), "pulls", buf.String())
|
||||
}
|
||||
|
||||
// NewIssue handles GET /issues/new — renders the create-issue form.
|
||||
func (h *Handler) NewIssue(w http.ResponseWriter, r *http.Request) {
|
||||
token := getToken(r)
|
||||
|
||||
repos, err := h.Client.ListOrgsAndRepos(r.Context(), token)
|
||||
if err != nil {
|
||||
slog.Error("failed to list repos for new issue form", "error", err)
|
||||
renderPage(w, r, "New Issue", "issues",
|
||||
`<h1>New Issue</h1><p class="empty">Error loading repositories.</p>`)
|
||||
return
|
||||
}
|
||||
|
||||
tmpl, err := template.ParseFiles("internal/templates/create_issue.html")
|
||||
if err != nil {
|
||||
slog.Error("failed to parse create_issue template", "error", err)
|
||||
http.Error(w, "template error", http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
|
||||
type templateData struct {
|
||||
Repos map[string][]giteaclient.Repo
|
||||
}
|
||||
|
||||
data := templateData{Repos: repos}
|
||||
|
||||
var buf strings.Builder
|
||||
if err := tmpl.ExecuteTemplate(&buf, "content", data); err != nil {
|
||||
slog.Error("failed to execute create_issue template", "error", err)
|
||||
http.Error(w, "template error", http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
|
||||
renderPage(w, r, "New Issue", "issues", buf.String())
|
||||
}
|
||||
|
||||
// CreateIssue handles POST /issues.
|
||||
func (h *Handler) CreateIssue(w http.ResponseWriter, r *http.Request) {
|
||||
token := getToken(r)
|
||||
|
||||
Reference in New Issue
Block a user