Skip to content

Commit c104ae3

Browse files
committed
feat:implemented one click installation
1 parent 913871b commit c104ae3

File tree

5 files changed

+92
-69
lines changed

5 files changed

+92
-69
lines changed

Dockerfile

+29
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
# syntax=docker/dockerfile:1
2+
3+
# Build stage
4+
FROM golang:1.22 AS builder
5+
6+
# Set the working directory inside the container
7+
WORKDIR /app
8+
9+
# Copy go.mod and go.sum files to download dependencies
10+
COPY go.mod go.sum ./
11+
RUN go mod download
12+
13+
# Copy the entire source code into the container
14+
COPY . .
15+
16+
# Build the Go application
17+
RUN CGO_ENABLED=0 GOOS=linux go build -o myapp .
18+
19+
# Production stage
20+
FROM alpine:latest
21+
22+
# Copy the binary from the builder stage
23+
COPY --from=builder /app/myapp .
24+
25+
# Expose the port on which your app will run
26+
EXPOSE 8080
27+
28+
# Command to run the application
29+
CMD ["./myapp"]

docker-compose.yml

+7-34
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,10 @@
1-
# version: '3'
2-
# services:
3-
# ftp-server:
4-
# image: stilliard/pure-ftpd
5-
# environment:
6-
# FTP_USER_NAME: testuser
7-
# FTP_USER_PASS: testpass
8-
# FTP_USER_HOME: /home/testuser
9-
# ports:
10-
# - "21:21"
11-
# - "30000-30009:30000-30009"
12-
# volumes:
13-
# - ./ftp-data:/home/testuser # Mounts the local directory to the container
14-
151

162
services:
17-
jaeger:
18-
image: jaegertracing/all-in-one:1.34
19-
container_name: jaeger
20-
environment:
21-
- COLLECTOR_ZIPKIN_HTTP_PORT=9411
3+
app:
4+
build:
5+
context: .
6+
dockerfile: Dockerfile
227
ports:
23-
- "5775:5775" # Jaeger agent
24-
- "6831:6831/udp" # Jaeger agent (UDP)
25-
- "6832:6832/udp" # Jaeger agent (UDP)
26-
- "5778:5778" # Jaeger UI (HTTP)
27-
- "16686:16686" # Jaeger UI
28-
- "14250:14250" # Jaeger Thrift HTTP
29-
- "14268:14268" # Jaeger Collector HTTP
30-
- "9411:9411" # Zipkin HTTP endpoint
31-
networks:
32-
- jaeger
33-
34-
networks:
35-
jaeger:
36-
driver: bridge
37-
8+
- "8080:8080"
9+
volumes:
10+
- .:/app

go.mod

+6-7
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ require (
1010
github.com/jlaffaye/ftp v0.2.0
1111
github.com/manifoldco/promptui v0.9.0
1212
github.com/pkg/sftp v1.13.7
13+
github.com/rabbitmq/amqp091-go v1.10.0
1314
github.com/spf13/viper v1.19.0
1415
go.mongodb.org/mongo-driver v1.17.1
1516
gofr.dev v1.27.1
@@ -32,7 +33,6 @@ require (
3233
github.com/mitchellh/mapstructure v1.5.0 // indirect
3334
github.com/montanaflynn/stats v0.7.1 // indirect
3435
github.com/pelletier/go-toml/v2 v2.2.2 // indirect
35-
github.com/rabbitmq/amqp091-go v1.10.0 // indirect
3636
github.com/sagikazarmark/locafero v0.4.0 // indirect
3737
github.com/sagikazarmark/slog-shim v0.1.0 // indirect
3838
github.com/sourcegraph/conc v0.3.0 // indirect
@@ -86,7 +86,7 @@ require (
8686
github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 // indirect
8787
github.com/grpc-ecosystem/grpc-gateway/v2 v2.22.0 // indirect
8888
github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect
89-
github.com/joho/godotenv v1.5.1 // indirect
89+
github.com/joho/godotenv v1.5.1
9090
github.com/klauspost/compress v1.17.9 // indirect
9191
github.com/lib/pq v1.10.9
9292
github.com/mattn/go-isatty v0.0.20 // indirect
@@ -111,16 +111,15 @@ require (
111111
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.54.0 // indirect
112112
go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace v0.56.0 // indirect
113113
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.56.0 // indirect
114-
go.opentelemetry.io/otel v1.32.0 // indirect
115-
go.opentelemetry.io/otel/exporters/jaeger v1.17.0
114+
go.opentelemetry.io/otel v1.32.0
116115
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.31.0 // indirect
117-
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.31.0 // indirect
116+
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.31.0
118117
go.opentelemetry.io/otel/exporters/prometheus v0.52.0 // indirect
119118
go.opentelemetry.io/otel/exporters/zipkin v1.31.0 // indirect
120119
go.opentelemetry.io/otel/metric v1.32.0 // indirect
121-
go.opentelemetry.io/otel/sdk v1.32.0 // indirect
120+
go.opentelemetry.io/otel/sdk v1.32.0
122121
go.opentelemetry.io/otel/sdk/metric v1.30.0 // indirect
123-
go.opentelemetry.io/otel/trace v1.32.0 // indirect
122+
go.opentelemetry.io/otel/trace v1.32.0
124123
go.opentelemetry.io/proto/otlp v1.3.1 // indirect
125124
go.uber.org/mock v0.5.0 // indirect
126125
golang.org/x/crypto v0.28.0

go.sum

-28
Original file line numberDiff line numberDiff line change
@@ -140,8 +140,6 @@ github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 h1:UH//fgunKIs4JdUbpDl1VZCDa
140140
github.com/grpc-ecosystem/go-grpc-middleware v1.4.0/go.mod h1:g5qyo/la0ALbONm6Vbp88Yd8NsDy6rZz+RcrMPxvld8=
141141
github.com/grpc-ecosystem/grpc-gateway/v2 v2.22.0 h1:asbCHRVmodnJTuQ3qamDwqVOIjwqUPTYmYuemVOx+Ys=
142142
github.com/grpc-ecosystem/grpc-gateway/v2 v2.22.0/go.mod h1:ggCgvZ2r7uOoQjOyu2Y1NhHmEPPzzuhWgcza5M1Ji1I=
143-
github.com/grpc-ecosystem/grpc-gateway/v2 v2.23.0 h1:ad0vkEBuk23VJzZR9nkLVG0YAoN9coASF1GusYX6AlU=
144-
github.com/grpc-ecosystem/grpc-gateway/v2 v2.23.0/go.mod h1:igFoXX2ELCW06bol23DWPB5BEWfZISOzSP5K2sbLea0=
145143
github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
146144
github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I=
147145
github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
@@ -293,36 +291,22 @@ go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace v0.
293291
go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace v0.56.0/go.mod h1:3qi2EEwMgB4xnKgPLqsDP3j9qxnHDZeHsnAxfjQqTko=
294292
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.56.0 h1:UP6IpuHFkUgOQL9FFQFrZ+5LiwhhYRbi7VZSIx6Nj5s=
295293
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.56.0/go.mod h1:qxuZLtbq5QDtdeSHsS7bcf6EH6uO6jUAgk764zd3rhM=
296-
go.opentelemetry.io/otel v1.31.0 h1:NsJcKPIW0D0H3NgzPDHmo0WW6SptzPdqg/L1zsIm2hY=
297-
go.opentelemetry.io/otel v1.31.0/go.mod h1:O0C14Yl9FgkjqcCZAsE053C13OaddMYr/hz6clDkEJE=
298294
go.opentelemetry.io/otel v1.32.0 h1:WnBN+Xjcteh0zdk01SVqV55d/m62NJLJdIyb4y/WO5U=
299295
go.opentelemetry.io/otel v1.32.0/go.mod h1:00DCVSB0RQcnzlwyTfqtxSm+DRr9hpYrHjNGiBHVQIg=
300-
go.opentelemetry.io/otel/exporters/jaeger v1.17.0 h1:D7UpUy2Xc2wsi1Ras6V40q806WM07rqoCWzXu7Sqy+4=
301-
go.opentelemetry.io/otel/exporters/jaeger v1.17.0/go.mod h1:nPCqOnEH9rNLKqH/+rrUjiMzHJdV1BlpKcTwRTyKkKI=
302296
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.31.0 h1:K0XaT3DwHAcV4nKLzcQvwAgSyisUghWoY20I7huthMk=
303297
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.31.0/go.mod h1:B5Ki776z/MBnVha1Nzwp5arlzBbE3+1jk+pGmaP5HME=
304-
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.32.0 h1:IJFEoHiytixx8cMiVAO+GmHR6Frwu+u5Ur8njpFO6Ac=
305-
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.32.0/go.mod h1:3rHrKNtLIoS0oZwkY2vxi+oJcwFRWdtUyRII+so45p8=
306298
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.31.0 h1:FFeLy03iVTXP6ffeN2iXrxfGsZGCjVx0/4KlizjyBwU=
307299
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.31.0/go.mod h1:TMu73/k1CP8nBUpDLc71Wj/Kf7ZS9FK5b53VapRsP9o=
308-
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.32.0 h1:9kV11HXBHZAvuPUZxmMWrH8hZn/6UnHX4K0mu36vNsU=
309-
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.32.0/go.mod h1:JyA0FHXe22E1NeNiHmVp7kFHglnexDQ7uRWDiiJ1hKQ=
310300
go.opentelemetry.io/otel/exporters/prometheus v0.52.0 h1:kmU3H0b9ufFSi8IQCcxack+sWUblKkFbqWYs6YiACGQ=
311301
go.opentelemetry.io/otel/exporters/prometheus v0.52.0/go.mod h1:+wsAp2+JhuGXX7YRkjlkx6hyWY3ogFPfNA4x3nyiAh0=
312302
go.opentelemetry.io/otel/exporters/zipkin v1.31.0 h1:CgucL0tj3717DJnni7HVVB2wExzi8c2zJNEA2BhLMvI=
313303
go.opentelemetry.io/otel/exporters/zipkin v1.31.0/go.mod h1:rfzOVNiSwIcWtEC2J8epwG26fiaXlYvLySJ7bwsrtAE=
314-
go.opentelemetry.io/otel/metric v1.31.0 h1:FSErL0ATQAmYHUIzSezZibnyVlft1ybhy4ozRPcF2fE=
315-
go.opentelemetry.io/otel/metric v1.31.0/go.mod h1:C3dEloVbLuYoX41KpmAhOqNriGbA+qqH6PQ5E5mUfnY=
316304
go.opentelemetry.io/otel/metric v1.32.0 h1:xV2umtmNcThh2/a/aCP+h64Xx5wsj8qqnkYZktzNa0M=
317305
go.opentelemetry.io/otel/metric v1.32.0/go.mod h1:jH7CIbbK6SH2V2wE16W05BHCtIDzauciCRLoc/SyMv8=
318-
go.opentelemetry.io/otel/sdk v1.31.0 h1:xLY3abVHYZ5HSfOg3l2E5LUj2Cwva5Y7yGxnSW9H5Gk=
319-
go.opentelemetry.io/otel/sdk v1.31.0/go.mod h1:TfRbMdhvxIIr/B2N2LQW2S5v9m3gOQ/08KsbbO5BPT0=
320306
go.opentelemetry.io/otel/sdk v1.32.0 h1:RNxepc9vK59A8XsgZQouW8ue8Gkb4jpWtJm9ge5lEG4=
321307
go.opentelemetry.io/otel/sdk v1.32.0/go.mod h1:LqgegDBjKMmb2GC6/PrTnteJG39I8/vJCAP9LlJXEjU=
322308
go.opentelemetry.io/otel/sdk/metric v1.30.0 h1:QJLT8Pe11jyHBHfSAgYH7kEmT24eX792jZO1bo4BXkM=
323309
go.opentelemetry.io/otel/sdk/metric v1.30.0/go.mod h1:waS6P3YqFNzeP01kuo/MBBYqaoBJl7efRQHOaydhy1Y=
324-
go.opentelemetry.io/otel/trace v1.31.0 h1:ffjsj1aRouKewfr85U2aGagJ46+MvodynlQ1HYdmJys=
325-
go.opentelemetry.io/otel/trace v1.31.0/go.mod h1:TXZkRk7SM2ZQLtR6eoAWQFIHPvzQ06FJAsO1tJg480A=
326310
go.opentelemetry.io/otel/trace v1.32.0 h1:WIC9mYrXf8TmY/EXuULKc8hR17vE+Hjv2cssQDe03fM=
327311
go.opentelemetry.io/otel/trace v1.32.0/go.mod h1:+i4rkvCraA+tG6AzwloGaCtkx53Fa+L+V8e9a7YvhT8=
328312
go.opentelemetry.io/proto/otlp v1.3.1 h1:TrMUixzpM0yuc/znrFTP9MMRh8trP93mkCiDVeXrui0=
@@ -390,8 +374,6 @@ golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJ
390374
golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
391375
golang.org/x/sync v0.8.0 h1:3NFvSEYkUoMifnESzZl15y791HH1qU2xm6eCJU5ZPXQ=
392376
golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
393-
golang.org/x/sync v0.9.0 h1:fEo0HyrW1GIgZdpbhCRO0PkJajUS5H9IFUztCgEo2jQ=
394-
golang.org/x/sync v0.9.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
395377
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
396378
golang.org/x/sys v0.0.0-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
397379
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
@@ -408,8 +390,6 @@ golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
408390
golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
409391
golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
410392
golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
411-
golang.org/x/sys v0.26.0 h1:KHjCJyddX0LoSTb3J+vWpupP9p0oznkqVk/IfjymZbo=
412-
golang.org/x/sys v0.26.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
413393
golang.org/x/sys v0.27.0 h1:wBqf8DvsY9Y/2P8gAfPDEYNuS30J4lPHJxXSb/nJZ+s=
414394
golang.org/x/sys v0.27.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
415395
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
@@ -430,8 +410,6 @@ golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
430410
golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
431411
golang.org/x/text v0.19.0 h1:kTxAhCbGbxhK0IwgSKiMO5awPoDQ0RpfiVYBfK860YM=
432412
golang.org/x/text v0.19.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY=
433-
golang.org/x/text v0.20.0 h1:gK/Kv2otX8gz+wn7Rmb3vT96ZwuoxnQlY+HlJVj7Qug=
434-
golang.org/x/text v0.20.0/go.mod h1:D4IsuqiFMhST5bX19pQ9ikHC2GsaKyk/oF+pn3ducp4=
435413
golang.org/x/time v0.7.0 h1:ntUhktv3OPE6TgYxXWv9vKvUSJyIFJlyohwbkEwPrKQ=
436414
golang.org/x/time v0.7.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM=
437415
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
@@ -465,20 +443,14 @@ google.golang.org/genproto v0.0.0-20241015192408-796eee8c2d53 h1:Df6WuGvthPzc+Ji
465443
google.golang.org/genproto v0.0.0-20241015192408-796eee8c2d53/go.mod h1:fheguH3Am2dGp1LfXkrvwqC/KlFq8F0nLq3LryOMrrE=
466444
google.golang.org/genproto/googleapis/api v0.0.0-20241007155032-5fefd90f89a9 h1:T6rh4haD3GVYsgEfWExoCZA2o2FmbNyKpTuAxbEFPTg=
467445
google.golang.org/genproto/googleapis/api v0.0.0-20241007155032-5fefd90f89a9/go.mod h1:wp2WsuBYj6j8wUdo3ToZsdxxixbvQNAHqVJrTgi5E5M=
468-
google.golang.org/genproto/googleapis/api v0.0.0-20241104194629-dd2ea8efbc28 h1:M0KvPgPmDZHPlbRbaNU1APr28TvwvvdUPlSv7PUvy8g=
469-
google.golang.org/genproto/googleapis/api v0.0.0-20241104194629-dd2ea8efbc28/go.mod h1:dguCy7UOdZhTvLzDyt15+rOrawrpM4q7DD9dQ1P11P4=
470446
google.golang.org/genproto/googleapis/rpc v0.0.0-20241015192408-796eee8c2d53 h1:X58yt85/IXCx0Y3ZwN6sEIKZzQtDEYaBWrDvErdXrRE=
471447
google.golang.org/genproto/googleapis/rpc v0.0.0-20241015192408-796eee8c2d53/go.mod h1:GX3210XPVPUjJbTUbvwI8f2IpZDMZuPJWDzDuebbviI=
472-
google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 h1:XVhgTWWV3kGQlwJHR3upFWZeTsei6Oks1apkZSeonIE=
473-
google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28/go.mod h1:GX3210XPVPUjJbTUbvwI8f2IpZDMZuPJWDzDuebbviI=
474448
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
475449
google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
476450
google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY=
477451
google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
478452
google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk=
479453
google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc=
480-
google.golang.org/grpc v1.67.1 h1:zWnc1Vrcno+lHZCOofnIMvycFcc0QRGIzm9dhnDX68E=
481-
google.golang.org/grpc v1.67.1/go.mod h1:1gLDyUQU7CTLJI90u3nXZ9ekeghjeM7pTDZlqFNg2AA=
482454
google.golang.org/grpc v1.68.0 h1:aHQeeJbo8zAkAa3pRzrVjZlbz6uSfeOXlJNQM0RAbz0=
483455
google.golang.org/grpc v1.68.0/go.mod h1:fmSPC5AsjSBCK54MyHRx48kpOti1/jRfOlwEWywNjWA=
484456
google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=

install.sh

+50
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
#!/bin/bash
2+
3+
installfractal() {
4+
echo "Installing Fractal..."
5+
6+
# Clone the repository containing docker-compose.yml
7+
git clone https://github.com/SkySingh04/fractal.git /tmp/fractal || {
8+
echo "Failed to clone the Fractal repository."
9+
exit 1
10+
}
11+
12+
cd /tmp/fractal || exit
13+
14+
echo "Running Docker Compose..."
15+
16+
# Check if Docker Compose is installed
17+
if ! command -v docker-compose &> /dev/null; then
18+
echo "Docker Compose not found. Please install Docker Compose and try again."
19+
exit 1
20+
fi
21+
22+
# Start the app using Docker Compose
23+
docker-compose up -d
24+
25+
# Create an alias for starting the app with Docker Compose
26+
alias_cmd="alias fractal='cd /tmp/fractal && docker-compose up -d'"
27+
28+
# Add alias to shell configuration file based on the user's shell
29+
current_shell="$(basename "$SHELL")"
30+
if [[ "$current_shell" == "zsh" ]]; then
31+
if ! grep -q "alias fractal=" "$HOME/.zshrc"; then
32+
echo "$alias_cmd" >> "$HOME/.zshrc"
33+
fi
34+
source "$HOME/.zshrc"
35+
elif [[ "$current_shell" == "bash" ]]; then
36+
if ! grep -q "alias fractal=" "$HOME/.bashrc"; then
37+
echo "$alias_cmd" >> "$HOME/.bashrc"
38+
fi
39+
source "$HOME/.bashrc"
40+
else
41+
if ! grep -q "alias fractal=" "$HOME/.profile"; then
42+
echo "$alias_cmd" >> "$HOME/.profile"
43+
fi
44+
source "$HOME/.profile"
45+
fi
46+
47+
echo "Alias 'fractal' added! Use 'fractal' to run the app."
48+
}
49+
50+
installfractal

0 commit comments

Comments
 (0)