Skip to content
This repository was archived by the owner on Dec 1, 2025. It is now read-only.

Commit 716d840

Browse files
authored
Merge pull request #16 from xeyossr/windows-support
Windows & Mac desteği
2 parents f86c9ae + 80c2f0b commit 716d840

File tree

12 files changed

+217
-102
lines changed

12 files changed

+217
-102
lines changed

Makefile

Lines changed: 30 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
GO=go
22
BINARY_NAME=anitr-cli
33
BUILD_DIR=./build
4-
INSTALL_DIR=/usr/bin
4+
5+
INSTALL_DIR_LINUX=/usr/bin
6+
INSTALL_DIR_WINDOWS="C:/Program Files/anitr-cli"
7+
INSTALL_DIR_MAC=/usr/local/bin
58

69
VERSION ?= $(shell git describe --tags --abbrev=0 2>/dev/null || echo "dev")
710
BUILDENV := $(shell go version)
@@ -11,17 +14,38 @@ LDFLAGS=-ldflags="-X 'github.com/xeyossr/anitr-cli/internal/update.version=$(VER
1114
mod-tidy:
1215
$(GO) mod tidy
1316

17+
build-linux:
18+
mkdir -p $(BUILD_DIR)
19+
GOOS=linux GOARCH=amd64 $(GO) build $(LDFLAGS) -o $(BUILD_DIR)/$(BINARY_NAME)-linux-x86_64
20+
GOOS=linux GOARCH=arm64 $(GO) build $(LDFLAGS) -o $(BUILD_DIR)/$(BINARY_NAME)-linux-arm64
21+
22+
build-windows:
23+
mkdir -p $(BUILD_DIR)
24+
GOOS=windows GOARCH=amd64 $(GO) build $(LDFLAGS) -o $(BUILD_DIR)/$(BINARY_NAME)-windows-x86_64.exe
25+
26+
build-macos:
27+
mkdir -p $(BUILD_DIR)
28+
GOOS=darwin GOARCH=amd64 $(GO) build $(LDFLAGS) -o $(BUILD_DIR)/$(BINARY_NAME)-macos-amd64
29+
GOOS=darwin GOARCH=arm64 $(GO) build $(LDFLAGS) -o $(BUILD_DIR)/$(BINARY_NAME)-macos-arm64
30+
1431
build: mod-tidy
32+
mkdir -p $(BUILD_DIR)
1533
$(GO) build $(LDFLAGS) -o $(BUILD_DIR)/$(BINARY_NAME)
1634

17-
run: build
18-
./$(BUILD_DIR)/$(BINARY_NAME)
35+
build-all: mod-tidy build-linux build-windows build-macos
1936

20-
install: build
37+
install-linux: build
2138
chmod +x $(BUILD_DIR)/$(BINARY_NAME)
22-
sudo mv $(BUILD_DIR)/$(BINARY_NAME) $(INSTALL_DIR)/$(BINARY_NAME)
39+
sudo mv $(BUILD_DIR)/$(BINARY_NAME) $(INSTALL_DIR_LINUX)/$(BINARY_NAME)
40+
41+
install-windows: build
42+
powershell -Command "New-Item -ItemType Directory -Force -Path $(INSTALL_DIR_WINDOWS)"
43+
powershell -Command "Copy-Item -Path $(BUILD_DIR)/$(BINARY_NAME) -Destination $(INSTALL_DIR_WINDOWS)/$(BINARY_NAME).exe -Force"
44+
45+
install-macos: build
46+
sudo mv $(BUILD_DIR)/$(BINARY_NAME) $(INSTALL_DIR_MAC)/$(BINARY_NAME)
2347

2448
clean:
2549
rm -rf $(BUILD_DIR)
2650

27-
all: mod-tidy build install
51+
all: build-all install

README.md

Lines changed: 33 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020

2121
## 🎬 Özellikler
2222

23+
- **Cross-Platform**: Linux, Windows ve macOS üzerinde çalışabilir.
2324
- **AnimeCix ve OpenAnime Entegrasyonu**: Popüler anime platformlarından hızlı arama ve izleme imkanı.
2425
- **Fansub Seçimi**: OpenAnime üzerinden izlerken favori çeviri grubunuzu seçme özgürlüğü.
2526
- **Çoklu Arayüz Desteği**: Terminal tabanlı TUI ve minimalist grafik arayüz (Rofi UI) seçenekleri.
@@ -30,7 +31,9 @@
3031

3132
## ⚡ Kurulum
3233

33-
### 🐧 Arch tabanlı dağıtımlar (AUR):
34+
## 🐧 Linux
35+
36+
### Arch tabanlı dağıtımlar (AUR):
3437

3538
```bash
3639
yay -S anitr-cli
@@ -40,7 +43,7 @@ ya da
4043
paru -S anitr-cli
4144
```
4245

43-
### 🐧 Diğer Linux dağıtımları:
46+
### Diğer Linux dağıtımları:
4447

4548
```bash
4649
curl -sS https://raw.githubusercontent.com/xeyossr/anitr-cli/main/install.sh | bash
@@ -50,7 +53,7 @@ ya da
5053
git clone https://github.com/xeyossr/anitr-cli.git
5154
cd anitr-cli
5255
git fetch --tags
53-
make install
56+
make install-linux
5457
```
5558

5659
> **Gereksinimler:**
@@ -78,18 +81,32 @@ make install
7881
sudo zypper install go git make mpv rofi
7982
```
8083

81-
---
84+
## 🪟 Windows
8285

83-
### 🔄 Güncelleme
86+
> [NOTE!]
87+
> Windows sürümünde GUI bulunmaz, yalnızca TUI ile çalışır.
8488
85-
- **AUR ile kurduysanız:**
86-
```bash
87-
yay -Sy anitr-cli
88-
```
89-
- **Manuel kurulum yaptıysanız:**
90-
```bash
91-
curl -sS https://raw.githubusercontent.com/xeyossr/anitr-cli/main/install.sh | bash
92-
```
89+
1. Sisteminizde [**MPV**](https://sourceforge.net/projects/mpv-player-windows/files/) kurulu olmalıdır.
90+
2. [Releases](https://github.com/xeyossr/anitr-cli/releases) sayfasından `anitr-cli.exe` indirin.
91+
3. `C:\Program Files\anitr-cli` klasörünü oluşturun.
92+
4. `anitr-cli.exe` dosyasını bu klasöre taşıyın.
93+
5. PATH’e `C:\Program Files\anitr-cli` ekleyin.
94+
95+
Artık **cmd** veya **PowerShell** içinde anitr-cli çalıştırabilirsiniz.
96+
97+
## 💻 MacOS
98+
99+
> [WARNING!]
100+
> Mac cihazım olmadığından dolayı **anitr-cli** MacOS üzerinde test edilmedi.
101+
> Ancak, Linux'ta kullanılan yöntemlerle kurulup çalışması oldukça muhtemeldir. Herhangi bir sorunla karşılaşırsanız lütfen [**issue**](https://github.com/xeyossr/anitr-cli/issues) açınız.
102+
103+
**Kurulum (Manuel)**:
104+
```bash
105+
git clone https://github.com/xeyossr/anitr-cli.git
106+
cd anitr-cli
107+
git fetch --tags
108+
make install-macos
109+
```
93110

94111
---
95112

@@ -103,10 +120,10 @@ Bayraklar:
103120
`--disable-rpc` Discord Rich Presence özelliğini kapatır
104121
`--version`, `-v` Sürüm bilgisini gösterir
105122
`--help`, `-h` Yardım menüsünü gösterir
106-
`--rofi` **[Kullanımdan kaldırıldı]** Yerine 'rofi' alt komutunu kullanın
123+
`--rofi` **[Kullanımdan kaldırıldı]** Yerine 'rofi' alt komutunu kullanın (Sadece Linux)
107124

108-
Alt komutlar:
109-
`rofi` Rofi arayüzü ile başlatır
125+
Alt komutlar: (Sadece Linux)
126+
`rofi` Rofi arayüzü ile başlatır
110127
`-f`, `--rofi-flags` Rofi’ye özel parametreler (örn: `--rofi-flags="-theme mytheme"`)
111128
`tui` Terminal arayüzü ile başlatır
112129

aur/.SRCINFO

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,16 @@
11
pkgbase = anitr-cli
22
pkgdesc = 🚀 Terminalde Türkçe altyazılı anime arama ve izleme aracı
3-
pkgver = 4.3.2
3+
pkgver = 4.3.3
44
pkgrel = 1
55
url = https://github.com/xeyossr/anitr-cli
66
arch = any
77
license = GPL3
88
makedepends = go
99
makedepends = git
10-
makedepends = make
1110
depends = mpv
1211
optdepends = rofi: X11 kullanıcıları için GUI
1312
optdepends = rofi-wayland: Wayland kullanıcıları için GUI
14-
source = anitr-cli-4.3.2.tar.gz::https://github.com/xeyossr/anitr-cli/archive/refs/tags/v4.3.2.tar.gz
13+
source = anitr-cli-4.3.3.tar.gz::https://github.com/xeyossr/anitr-cli/archive/refs/tags/v4.3.3.tar.gz
1514
sha256sums = SKIP
1615

1716
pkgname = anitr-cli

aur/PKGBUILD

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
1-
# Maintainer: kamisaki
1+
# Maintainer: xeyossr
22
# Description: 🚀 Terminalde Türkçe altyazılı anime arama ve izleme aracı
33
pkgname=anitr-cli
4-
pkgver=4.3.2
4+
pkgver=4.3.3
55
pkgrel=1
66
pkgdesc="🚀 Terminalde Türkçe altyazılı anime arama ve izleme aracı"
77
arch=('any')
88
url="https://github.com/xeyossr/anitr-cli"
99
license=('GPL3')
1010
depends=('mpv')
11-
makedepends=('go' 'git' 'make')
11+
makedepends=('go' 'git')
1212

1313
optdepends=(
1414
'rofi: X11 kullanıcıları için GUI'

go.mod

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ go 1.24.5
44

55
require (
66
github.com/Masterminds/semver/v3 v3.4.0
7+
github.com/Microsoft/go-winio v0.6.2
78
github.com/charmbracelet/bubbles v0.21.0
89
github.com/charmbracelet/bubbletea v1.3.6
910
github.com/charmbracelet/lipgloss v1.1.0

go.sum

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
github.com/Masterminds/semver/v3 v3.4.0 h1:Zog+i5UMtVoCU8oKka5P7i9q9HgrJeGzI9SA1Xbatp0=
22
github.com/Masterminds/semver/v3 v3.4.0/go.mod h1:4V+yj/TJE1HU9XfppCwVMZq3I84lprf4nC11bSS5beM=
3+
github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY=
4+
github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU=
35
github.com/atotto/clipboard v0.1.4 h1:EH0zSVneZPSuFR11BlR9YppQTVDbh5+16AmcJi4g1z4=
46
github.com/atotto/clipboard v0.1.4/go.mod h1:ZY9tmq7sm5xIbd9bOK4onWV4S6X0u6GY7Vn0Yu86PYI=
57
github.com/aymanbagabas/go-osc52/v2 v2.0.1 h1:HwpRHbFMcZLEVr42D4p7XBqjyuxQH5SMiErDT4WkJ2k=

install.sh

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,9 +39,9 @@ echo "⚙️ Derleniyor ve kuruluyor..."
3939

4040
if [[ "$HAS_MAKE" -eq 1 ]]; then
4141
if [[ $EUID -ne 0 ]]; then
42-
sudo make install &>/dev/null
42+
sudo make install-linux &>/dev/null
4343
else
44-
make install &>/dev/null
44+
make install-linux &>/dev/null
4545
fi
4646
else
4747
VERSION=$(git describe --tags --abbrev=0 2>/dev/null || echo "dev")

internal/flags/flags.go

Lines changed: 40 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,25 @@
1-
// flags paketi, anitr-cli için komut satırı bayraklarını ve alt komutlarını tanımlar
21
package flags
32

43
import (
4+
"runtime"
5+
56
"github.com/spf13/cobra"
67
"github.com/xeyossr/anitr-cli/internal/update"
78
)
89

9-
// CLI'de kullanılacak bayraklar burada tutulur
1010
type Flags struct {
1111
DisableRPC bool
1212
PrintVersion bool
1313
RofiMode bool
1414
RofiFlags string
1515
}
1616

17-
// CLI komutunu ve ilgili bayrakları oluşturan fonksiyon
1817
func NewFlagsCmd() (*cobra.Command, *Flags) {
1918
f := &Flags{}
2019

2120
cmd := &cobra.Command{
2221
Use: "anitr-cli",
23-
Short: "🚀 Terminalde Türkçe altyazılı anime izleme aracı ",
22+
Short: "🚀 Terminalde Türkçe altyazılı anime izleme aracı",
2423
SilenceUsage: true,
2524
SilenceErrors: true,
2625
DisableAutoGenTag: true,
@@ -29,52 +28,54 @@ func NewFlagsCmd() (*cobra.Command, *Flags) {
2928
},
3029
}
3130

32-
// Global flag: Discord RPC devre dışı bırakmak için
3331
cmd.PersistentFlags().BoolVar(&f.DisableRPC, "disable-rpc", false,
3432
"Discord Rich Presence desteğini devre dışı bırakır.")
3533

36-
// Versiyon bilgisi ayarlanıyor
3734
cmd.SetVersionTemplate(update.Version())
3835
cmd.Version = update.Version()
3936

40-
// Eski --rofi flag'i (artık kullanılmıyor)
41-
cmd.PersistentFlags().BoolVarP(&f.RofiMode, "rofi", "r", false,
42-
"[DEPRECATED] --rofi seçeneği kullanımdan kaldırıldı. Lütfen 'rofi' alt komutunu kullanın.")
43-
_ = cmd.PersistentFlags().MarkDeprecated("rofi", "Bu bayrak artık kullanılmıyor. Yerine 'rofi' alt komutunu kullanın.")
44-
45-
// rofi alt komutu
46-
rofiCmd := &cobra.Command{
47-
Use: "rofi",
48-
Short: "🔹 Rofi arayüzüyle başlatır",
49-
Long: `Uygulamayı rofi arayüzü ile başlatır.
37+
if runtime.GOOS == "linux" {
38+
// Linux'ta rofi ve tui alt komutları eklenir
5039

51-
--rofi-flags bayrağı ile Rofi'ye özel parametreler verilebilir.`,
52-
Run: func(cmd *cobra.Command, args []string) {
53-
f.RofiMode = true
54-
},
55-
SilenceUsage: true,
56-
SilenceErrors: true,
57-
}
40+
// Eski --rofi flag'i (deprecated)
41+
cmd.PersistentFlags().BoolVarP(&f.RofiMode, "rofi", "r", false,
42+
"[DEPRECATED] --rofi seçeneği kullanımdan kaldırıldı. Lütfen 'rofi' alt komutunu kullanın.")
43+
_ = cmd.PersistentFlags().MarkDeprecated("rofi", "Bu bayrak artık kullanılmıyor. Yerine 'rofi' alt komutunu kullanın.")
5844

59-
// rofi alt komutu için ek parametre alma
60-
rofiCmd.Flags().StringVarP(&f.RofiFlags, "rofi-flags", "f", "",
61-
"Rofi'ye aktarılacak ek parametreler (örnek: --rofi-flags='-theme mytheme')")
45+
// rofi alt komutu
46+
rofiCmd := &cobra.Command{
47+
Use: "rofi",
48+
Short: "🔹 Rofi arayüzüyle başlatır",
49+
Long: `Uygulamayı rofi arayüzü ile başlatır.
6250
63-
cmd.AddCommand(rofiCmd)
51+
--rofi-flags bayrağı ile Rofi'ye özel parametreler verilebilir.`,
52+
Run: func(cmd *cobra.Command, args []string) {
53+
f.RofiMode = true
54+
},
55+
SilenceUsage: true,
56+
SilenceErrors: true,
57+
}
58+
rofiCmd.Flags().StringVarP(&f.RofiFlags, "rofi-flags", "f", "",
59+
"Rofi'ye aktarılacak ek parametreler (örnek: --rofi-flags='-theme mytheme')")
60+
cmd.AddCommand(rofiCmd)
6461

65-
// tui alt komutu
66-
tuiCmd := &cobra.Command{
67-
Use: "tui",
68-
Short: "🔹 Terminal (TUI) arayüzüyle başlatır",
69-
Long: "Uygulamayı terminal arayüzü (TUI) ile başlatır.",
70-
Run: func(cmd *cobra.Command, args []string) {
71-
f.RofiMode = false
72-
},
73-
SilenceUsage: true,
74-
SilenceErrors: true,
62+
// tui alt komutu
63+
tuiCmd := &cobra.Command{
64+
Use: "tui",
65+
Short: "🔹 Terminal (TUI) arayüzüyle başlatır",
66+
Long: "Uygulamayı terminal arayüzü (TUI) ile başlatır.",
67+
Run: func(cmd *cobra.Command, args []string) {
68+
f.RofiMode = false
69+
},
70+
SilenceUsage: true,
71+
SilenceErrors: true,
72+
}
73+
cmd.AddCommand(tuiCmd)
74+
} else {
75+
// Windows'ta rofi yok, otomatik tui modunda başlatılır
76+
f.RofiMode = false
77+
// Hiç alt komut ekleme, kullanıcıya seçim sunma
7578
}
7679

77-
cmd.AddCommand(tuiCmd)
78-
7980
return cmd, f
8081
}

internal/ipc/unix_ipc.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
//go:build !windows
2+
// +build !windows
3+
14
package ipc
25

36
import (

internal/ipc/windows_ipc.go

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
//go:build windows
2+
// +build windows
3+
4+
package ipc
5+
6+
import (
7+
"net"
8+
9+
"github.com/Microsoft/go-winio"
10+
)
11+
12+
// ConnectToPipe, verilen NPIPE soket yoluna bağlanmaya çalışır.
13+
// Başarılı olursa net.Conn nesnesi döner, aksi hâlde hata döner.
14+
func ConnectToPipe(ipcSocketPath string) (net.Conn, error) {
15+
conn, err := winio.DialPipe(ipcSocketPath, nil)
16+
if err != nil {
17+
return nil, err
18+
}
19+
return conn, nil
20+
}

0 commit comments

Comments
 (0)