Skip to content

Commit d8a69d0

Browse files
authored
Merge branch 'main' into swagger-cli-docs
2 parents ea0806e + 2e06e30 commit d8a69d0

File tree

9 files changed

+96
-57
lines changed

9 files changed

+96
-57
lines changed

.envrc

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,13 @@
1+
if ! has nix; then
2+
echo -e "\033[31mWARNING: Nix is not installed!\033[0m"
3+
echo -e "\033[31mWe recommend using Determinate Nix Installer to get started: https://determinate.systems/nix-installer/\033[0m"
4+
exit 1
5+
fi
6+
7+
watch_file nix/shell.nix
18
use flake
9+
10+
if ! has nix-direnv-reload; then
11+
echo -e "\033[31mWARNING: nix-direnv is recommended for better performance and caching.\033[0m"
12+
echo -e "\033[31mTo install, see https://github.com/nix-community/nix-direnv\033[0m"
13+
fi

.github/workflows/ci.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ jobs:
3232
run: nix develop -c make check
3333

3434
- name: Sql check
35-
run: nix develop -c make sql-check
35+
run: nix develop -c make check-sql
3636

3737
- name: Build
3838
run: nix develop -c make build

Makefile

Lines changed: 19 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2,50 +2,53 @@
22

33
BIN_DIR := bin
44
APP_NAME := api
5-
CLI_NAME := cli
5+
CLI_NAME := csuf
66

77
GENERATE_DEPS := $(wildcard internal/db/sql/schemas/*.sql) $(wildcard internal/db/sql/queries/*.sql) $(wildcard sqlc.yaml)
88
GENERATE_MARKER := .generate.marker
99

10-
.PHONY:fmt vet run build check test sql-check sql-fix clean build-cli
10+
.PHONY:fmt run build check test check-sql fix-sql clean
1111

1212
fmt:
1313
@go fmt ./...
1414

15+
VERSION := $(shell git describe --tags --always --dirty 2> /dev/null || echo "dev")
16+
1517
$(GENERATE_MARKER): $(GENERATE_DEPS)
1618
go generate ./...
1719
@touch $@
1820

1921
generate: fmt $(GENERATE_MARKER)
2022

21-
vet: fmt
22-
go vet ./...
23-
2423
run: build
2524
./$(BIN_DIR)/$(APP_NAME)
2625

2726
build: generate
28-
mkdir -p $(BIN_DIR)
29-
go build -o $(BIN_DIR)/$(APP_NAME) ./cmd/api
27+
@mkdir -p $(BIN_DIR)
28+
go build -ldflags "-X main.Version=$(VERSION)" -o $(BIN_DIR)/$(APP_NAME) ./cmd/api
29+
go build -ldflags "-X main.Version=$(VERSION)" -o $(BIN_DIR)/$(CLI_NAME) ./cmd/csuf
3030

31-
check: vet
31+
check:
32+
go vet ./...
3233
nilaway ./...
3334

3435
test: check
3536
go test ./...
3637

37-
sql-check:
38+
check-sql:
3839
sqlfluff lint --dialect sqlite
3940

40-
sql-fix:
41-
sqlfluff format --dialect sqlite
41+
fix-sql:
4242
sqlfluff fix --dialect sqlite
4343

44+
release:
45+
@echo "Current version: $(VERSION)"
46+
@read -p "Enter new version (e.g., v0.2.0): " version; \
47+
git tag -a $$version -m "Release $$version"; \
48+
git push origin $$version; \
49+
echo "Tagged $$version."
50+
4451
clean:
4552
go clean
4653
rm -f $(GENERATE_MARKER)
47-
rm -rf $(BIN_DIR)
48-
49-
build-cli: fmt
50-
mkdir -p $(BIN_DIR)
51-
go build -o $(BIN_DIR)/$(CLI_NAME) ./cmd/csuf
54+
rm -rf $(BIN_DIR) result

cmd/api/main.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package main
22

33
import (
44
"context"
5+
"flag"
56
"fmt"
67
"log"
78
"os"
@@ -21,7 +22,18 @@ import (
2122
ginSwagger "github.com/swaggo/gin-swagger"
2223
)
2324

25+
var Version = "dev"
26+
2427
func main() {
28+
29+
var showVersion = flag.Bool("version", false, "Show version")
30+
flag.Parse()
31+
32+
if *showVersion {
33+
fmt.Printf("Version: %s\n", Version)
34+
os.Exit(0)
35+
}
36+
2537
ctx, cancel := context.WithCancel(context.Background())
2638
defer cancel()
2739

cmd/csuf/cmd/root.go

Lines changed: 0 additions & 33 deletions
This file was deleted.

cmd/csuf/main.go

Lines changed: 35 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,44 @@
11
package main
22

3-
import "github.com/acmcsufoss/api.acmcsuf.com/cmd/csuf/cmd"
4-
53
// Initalizing cobra here
64
// To use the CLI, first, cd into this directory (/api.acmcsuf.com/cmd/csuf)
75
// Next, run: go install .
86
// Now, if you have not already, export the go bin path: export PATH="$HOME/go/bin:$PATH"
97
// Now type csuf in your command line and see what happens!
8+
9+
import (
10+
"log"
11+
"os"
12+
13+
"github.com/acmcsufoss/api.acmcsuf.com/internal/cli/announcements"
14+
"github.com/acmcsufoss/api.acmcsuf.com/internal/cli/events"
15+
16+
"github.com/spf13/cobra"
17+
)
18+
19+
var Version = "dev"
20+
21+
var rootCmd = &cobra.Command{
22+
Use: "csuf",
23+
Short: "A CLI tool to help manage the API of the CSUF ACM website",
24+
Version: Version,
25+
}
26+
27+
func Execute() {
28+
// Logging the error, prefix is date, time, and what file the log is from
29+
log.SetFlags(log.Ldate | log.Ltime | log.Lshortfile)
30+
31+
if err := rootCmd.Execute(); err != nil {
32+
log.Println("Error with CLI:", err)
33+
os.Exit(1)
34+
}
35+
}
36+
37+
func init() {
38+
rootCmd.AddCommand(events.CLIEvents)
39+
rootCmd.AddCommand(announcements.CLIAnnouncements)
40+
}
41+
1042
func main() {
11-
cmd.Execute()
43+
Execute()
1244
}

flake.nix

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,18 @@
1414
flake-utils.lib.eachDefaultSystem (
1515
system: let
1616
pkgs = nixpkgs.legacyPackages.${system};
17-
package = pkgs.callPackage ./nix/package.nix {};
17+
18+
version =
19+
if (self ? rev)
20+
then builtins.substring 0 8 self.rev
21+
else "dev";
22+
23+
package = pkgs.callPackage ./nix/package.nix {
24+
version = version;
25+
};
1826
in {
1927
packages.default = package;
20-
devShells.default = pkgs.callPackage ./nix/devShell.nix {};
28+
devShells.default = pkgs.callPackage ./nix/shell.nix {};
2129

2230
apps = {
2331
default = {

nix/package.nix

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,19 @@
11
{
2+
version,
23
lib,
34
buildGoModule,
45
}:
56
buildGoModule {
67
name = "api-acmcsuf";
78
src = ../.;
9+
version = version;
810
vendorHash = "sha256-3BpLbfoLmv5dwBxEHW7i//MlgIsrGMT8ZILrze7WM18=";
9-
1011
postBuild = ''
1112
mv $GOPATH/bin/api $GOPATH/bin/api-acmcsuf
1213
'';
1314

1415
subPackages = ["cmd/api" "cmd/csuf"];
16+
ldflags = ["-X main.Version=${version}"];
1517

1618
meta = {
1719
description = "API created and used by CSUF's ACM chapter";

nix/devShell.nix renamed to nix/shell.nix

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
xh,
1414
jq,
1515
go-swag,
16+
cobra-cli,
1617
}:
1718
mkShell {
1819
packages = [
@@ -29,11 +30,13 @@ mkShell {
2930
xh
3031
jq
3132
go-swag
33+
cobra-cli
3234
];
3335

3436
shellHook = ''
3537
export DATABASE_URL="file:dev.db?cache=shared&mode=rwc"
3638
export CGO_ENABLED=0 # cgo compiler flags cause issues with delve when using Nix
37-
echo "Loaded dev shell."
39+
export PATH="$PWD/bin:$PATH"
40+
echo -e "\e[32mLoaded nix dev shell\e[0m"
3841
'';
3942
}

0 commit comments

Comments
 (0)