mirror of https://github.com/coder/coder.git
chore: Add .editorconfig, shfmt, shellcheck and subshell dir changes (#1649)
This commit is contained in:
parent
1a70298b5c
commit
608eb322a8
|
@ -0,0 +1,16 @@
|
||||||
|
root = true
|
||||||
|
|
||||||
|
[*]
|
||||||
|
end_of_line = lf
|
||||||
|
charset = utf-8
|
||||||
|
trim_trailing_whitespace = true
|
||||||
|
insert_final_newline = true
|
||||||
|
indent_style = tab
|
||||||
|
|
||||||
|
[*.{md,json,yaml,tf,tfvars}]
|
||||||
|
indent_style = space
|
||||||
|
indent_size = 2
|
||||||
|
|
||||||
|
[coderd/database/dump.sql]
|
||||||
|
indent_style = space
|
||||||
|
indent_size = 4
|
|
@ -44,6 +44,17 @@ jobs:
|
||||||
with:
|
with:
|
||||||
version: v1.46.0
|
version: v1.46.0
|
||||||
|
|
||||||
|
style-lint-shellcheck:
|
||||||
|
name: style/lint/shellcheck
|
||||||
|
timeout-minutes: 5
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
- name: Run ShellCheck
|
||||||
|
uses: ludeeus/action-shellcheck@1.1.0
|
||||||
|
with:
|
||||||
|
ignore: node_modules
|
||||||
|
|
||||||
style-lint-typescript:
|
style-lint-typescript:
|
||||||
name: "style/lint/typescript"
|
name: "style/lint/typescript"
|
||||||
timeout-minutes: 5
|
timeout-minutes: 5
|
||||||
|
@ -133,7 +144,12 @@ jobs:
|
||||||
- name: Install node_modules
|
- name: Install node_modules
|
||||||
run: ./scripts/yarn_install.sh
|
run: ./scripts/yarn_install.sh
|
||||||
|
|
||||||
- run: "make --output-sync -j -B fmt"
|
- name: Install shfmt
|
||||||
|
run: go install mvdan.cc/sh/v3/cmd/shfmt@v3.5.0
|
||||||
|
|
||||||
|
- run: |
|
||||||
|
export PATH=${PATH}:$(go env GOPATH)/bin
|
||||||
|
make --output-sync -j -B fmt
|
||||||
|
|
||||||
test-go:
|
test-go:
|
||||||
name: "test/go"
|
name: "test/go"
|
||||||
|
|
23
Makefile
23
Makefile
|
@ -41,20 +41,37 @@ fmt/terraform: $(wildcard *.tf)
|
||||||
terraform fmt -recursive
|
terraform fmt -recursive
|
||||||
.PHONY: fmt/terraform
|
.PHONY: fmt/terraform
|
||||||
|
|
||||||
fmt: fmt/prettier fmt/terraform
|
fmt/shfmt: $(shell shfmt -f .)
|
||||||
|
@echo "--- shfmt"
|
||||||
|
# Only do diff check in CI, errors on diff.
|
||||||
|
ifdef CI
|
||||||
|
shfmt -d $(shell shfmt -f .)
|
||||||
|
else
|
||||||
|
shfmt -w $(shell shfmt -f .)
|
||||||
|
endif
|
||||||
|
|
||||||
|
fmt: fmt/prettier fmt/terraform fmt/shfmt
|
||||||
.PHONY: fmt
|
.PHONY: fmt
|
||||||
|
|
||||||
gen: coderd/database/querier.go peerbroker/proto/peerbroker.pb.go provisionersdk/proto/provisioner.pb.go provisionerd/proto/provisionerd.pb.go site/src/api/typesGenerated.ts
|
gen: coderd/database/querier.go peerbroker/proto/peerbroker.pb.go provisionersdk/proto/provisioner.pb.go provisionerd/proto/provisionerd.pb.go site/src/api/typesGenerated.ts
|
||||||
|
|
||||||
install: build
|
install: build
|
||||||
|
mkdir -p $(INSTALL_DIR)
|
||||||
@echo "--- Copying from bin to $(INSTALL_DIR)"
|
@echo "--- Copying from bin to $(INSTALL_DIR)"
|
||||||
cp -r ./dist/coder-$(GOOS)_$(GOOS)_$(GOARCH)*/* $(INSTALL_DIR)
|
cp -r ./dist/coder-$(GOOS)_$(GOOS)_$(GOARCH)*/* $(INSTALL_DIR)
|
||||||
@echo "-- CLI available at $(shell ls $(INSTALL_DIR)/coder*)"
|
@echo "-- CLI available at $(shell ls $(INSTALL_DIR)/coder*)"
|
||||||
.PHONY: install
|
.PHONY: install
|
||||||
|
|
||||||
lint:
|
lint: lint/shellcheck lint/go
|
||||||
|
|
||||||
|
lint/go:
|
||||||
golangci-lint run
|
golangci-lint run
|
||||||
.PHONY: lint
|
.PHONY: lint/go
|
||||||
|
|
||||||
|
# Use shfmt to determine the shell files, takes editorconfig into consideration.
|
||||||
|
lint/shellcheck: $(shell shfmt -f .)
|
||||||
|
@echo "--- shellcheck"
|
||||||
|
shellcheck $(shell shfmt -f .)
|
||||||
|
|
||||||
peerbroker/proto/peerbroker.pb.go: peerbroker/proto/peerbroker.proto
|
peerbroker/proto/peerbroker.pb.go: peerbroker/proto/peerbroker.proto
|
||||||
protoc \
|
protoc \
|
||||||
|
|
|
@ -8,8 +8,12 @@
|
||||||
# Usage:
|
# Usage:
|
||||||
# ./generate.sh <database type> <database type> ...
|
# ./generate.sh <database type> <database type> ...
|
||||||
|
|
||||||
|
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
|
||||||
cd "$(dirname "$0")" && cd "$(git rev-parse --show-toplevel)"
|
SCRIPT_DIR=$(dirname "${BASH_SOURCE[0]}")
|
||||||
go run ./scripts/auditgen ./coderd/database "$@"
|
PROJECT_ROOT=$(cd "$SCRIPT_DIR" && git rev-parse --show-toplevel)
|
||||||
|
|
||||||
|
(
|
||||||
|
cd "$PROJECT_ROOT"
|
||||||
|
go run ./scripts/auditgen ./coderd/database "$@"
|
||||||
|
)
|
||||||
|
|
|
@ -8,39 +8,43 @@
|
||||||
|
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
|
||||||
cd "$(dirname "$0")"
|
SCRIPT_DIR=$(dirname "${BASH_SOURCE[0]}")
|
||||||
|
|
||||||
# The logic below depends on the exact version being correct :(
|
(
|
||||||
go run github.com/kyleconroy/sqlc/cmd/sqlc@v1.13.0 generate
|
cd "$SCRIPT_DIR"
|
||||||
|
|
||||||
first=true
|
# The logic below depends on the exact version being correct :(
|
||||||
for fi in queries/*.sql.go; do
|
go run github.com/kyleconroy/sqlc/cmd/sqlc@v1.13.0 generate
|
||||||
# Find the last line from the imports section and add 1.
|
|
||||||
cut=$(grep -n ')' "$fi" | head -n 1 | cut -d: -f1)
|
|
||||||
cut=$((cut + 1))
|
|
||||||
|
|
||||||
# Copy the header from the first file only, ignoring the source comment.
|
first=true
|
||||||
if $first; then
|
for fi in queries/*.sql.go; do
|
||||||
head -n 6 < "$fi" | grep -v "source" > queries.sql.go
|
# Find the last line from the imports section and add 1.
|
||||||
first=false
|
cut=$(grep -n ')' "$fi" | head -n 1 | cut -d: -f1)
|
||||||
fi
|
cut=$((cut + 1))
|
||||||
|
|
||||||
# Append the file past the imports section into queries.sql.go.
|
# Copy the header from the first file only, ignoring the source comment.
|
||||||
tail -n "+$cut" < "$fi" >> queries.sql.go
|
if $first; then
|
||||||
done
|
head -n 6 <"$fi" | grep -v "source" >queries.sql.go
|
||||||
|
first=false
|
||||||
|
fi
|
||||||
|
|
||||||
# Move the files we want.
|
# Append the file past the imports section into queries.sql.go.
|
||||||
mv queries/querier.go .
|
tail -n "+$cut" <"$fi" >>queries.sql.go
|
||||||
mv queries/models.go .
|
done
|
||||||
|
|
||||||
# Remove temporary go files.
|
# Move the files we want.
|
||||||
rm -f queries/*.go
|
mv queries/querier.go .
|
||||||
|
mv queries/models.go .
|
||||||
|
|
||||||
# Fix struct/interface names.
|
# Remove temporary go files.
|
||||||
gofmt -w -r 'Querier -> querier' -- *.go
|
rm -f queries/*.go
|
||||||
gofmt -w -r 'Queries -> sqlQuerier' -- *.go
|
|
||||||
|
|
||||||
# Ensure correct imports exist. Modules must all be downloaded so we get correct
|
# Fix struct/interface names.
|
||||||
# suggestions.
|
gofmt -w -r 'Querier -> querier' -- *.go
|
||||||
go mod download
|
gofmt -w -r 'Queries -> sqlQuerier' -- *.go
|
||||||
goimports -w queries.sql.go
|
|
||||||
|
# Ensure correct imports exist. Modules must all be downloaded so we get correct
|
||||||
|
# suggestions.
|
||||||
|
go mod download
|
||||||
|
goimports -w queries.sql.go
|
||||||
|
)
|
||||||
|
|
|
@ -7,14 +7,17 @@
|
||||||
|
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
|
||||||
cd "$(dirname "$0")"
|
SCRIPT_DIR=$(dirname "${BASH_SOURCE[0]}")
|
||||||
|
(
|
||||||
|
cd "$SCRIPT_DIR"
|
||||||
|
|
||||||
# if migration name is an empty string exit
|
# if migration name is an empty string exit
|
||||||
[[ -z "${*}" ]] && (echo "Must provide a migration name" && exit 1)
|
[[ -z "${*}" ]] && (echo "Must provide a migration name" && exit 1)
|
||||||
|
|
||||||
# " " && "-" -> "_"
|
# " " && "-" -> "_"
|
||||||
title="$(echo "${@}" | tr "[:upper:]" "[:lower:]" | sed -E -e "s/( |-)/_/g")"
|
title="$(echo "${@}" | tr "[:upper:]" "[:lower:]" | sed -E -e "s/( |-)/_/g")"
|
||||||
|
|
||||||
migrate create -ext sql -dir . -seq "$title"
|
migrate create -ext sql -dir . -seq "$title"
|
||||||
|
|
||||||
echo "Run \"make gen\" to generate models."
|
echo "Run \"make gen\" to generate models."
|
||||||
|
)
|
||||||
|
|
|
@ -2,23 +2,29 @@
|
||||||
|
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
|
||||||
FILES="$(git ls-files --other --modified --exclude-standard)"
|
SCRIPT_DIR=$(dirname "${BASH_SOURCE[0]}")
|
||||||
if [[ "$FILES" != "" ]]; then
|
PROJECT_ROOT=$(cd "$SCRIPT_DIR" && git rev-parse --show-toplevel)
|
||||||
mapfile -t files <<<"$FILES"
|
|
||||||
|
|
||||||
echo "The following files contain unstaged changes:"
|
(
|
||||||
echo
|
cd "${PROJECT_ROOT}"
|
||||||
for file in "${files[@]}"; do
|
|
||||||
echo " - $file"
|
|
||||||
done
|
|
||||||
echo
|
|
||||||
|
|
||||||
echo "These are the changes:"
|
FILES="$(git ls-files --other --modified --exclude-standard)"
|
||||||
echo
|
if [[ "$FILES" != "" ]]; then
|
||||||
for file in "${files[@]}"; do
|
mapfile -t files <<<"$FILES"
|
||||||
git --no-pager diff "$file"
|
|
||||||
done
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
echo "The following files contain unstaged changes:"
|
||||||
|
echo
|
||||||
|
for file in "${files[@]}"; do
|
||||||
|
echo " - $file"
|
||||||
|
done
|
||||||
|
echo
|
||||||
|
|
||||||
|
echo "These are the changes:"
|
||||||
|
echo
|
||||||
|
for file in "${files[@]}"; do
|
||||||
|
git --no-pager diff "$file"
|
||||||
|
done
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
)
|
||||||
exit 0
|
exit 0
|
||||||
|
|
|
@ -2,8 +2,8 @@
|
||||||
|
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
|
||||||
PROJECT_ROOT="$(git rev-parse --show-toplevel)"
|
SCRIPT_DIR=$(dirname "${BASH_SOURCE[0]}")
|
||||||
cd "${PROJECT_ROOT}"
|
PROJECT_ROOT=$(cd "$SCRIPT_DIR" && git rev-parse --show-toplevel)
|
||||||
|
|
||||||
echo '== Run "make build" before running this command to build binaries.'
|
echo '== Run "make build" before running this command to build binaries.'
|
||||||
echo '== Without these binaries, workspaces will fail to start!'
|
echo '== Without these binaries, workspaces will fail to start!'
|
||||||
|
@ -19,8 +19,10 @@ export CODER_DEV_ADMIN_PASSWORD=password
|
||||||
# to kill both at the same time. For more details, see:
|
# to kill both at the same time. For more details, see:
|
||||||
# https://stackoverflow.com/questions/3004811/how-do-you-run-multiple-programs-in-parallel-from-a-bash-script
|
# https://stackoverflow.com/questions/3004811/how-do-you-run-multiple-programs-in-parallel-from-a-bash-script
|
||||||
(
|
(
|
||||||
trap 'kill 0' SIGINT
|
cd "${PROJECT_ROOT}"
|
||||||
CODERV2_HOST=http://127.0.0.1:3000 INSPECT_XSTATE=true yarn --cwd=./site dev &
|
|
||||||
go run -tags embed cmd/coder/main.go server --dev --tunnel=true &
|
trap 'kill 0' SIGINT
|
||||||
wait
|
CODERV2_HOST=http://127.0.0.1:3000 INSPECT_XSTATE=true yarn --cwd=./site dev &
|
||||||
|
go run -tags embed cmd/coder/main.go server --dev --tunnel=true &
|
||||||
|
wait
|
||||||
)
|
)
|
||||||
|
|
|
@ -1,17 +1,23 @@
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
cd "$(git rev-parse --show-toplevel)"
|
|
||||||
|
|
||||||
codesign -s $AC_APPLICATION_IDENTITY -f -v --timestamp --options runtime $1
|
SCRIPT_DIR=$(dirname "${BASH_SOURCE[0]}")
|
||||||
|
PROJECT_ROOT=$(cd "$SCRIPT_DIR" && git rev-parse --show-toplevel)
|
||||||
|
|
||||||
config="$(mktemp -d)/gon.json"
|
(
|
||||||
jq -r --null-input --arg path "$(pwd)/$1" '{
|
cd "${PROJECT_ROOT}"
|
||||||
"notarize": [
|
|
||||||
{
|
codesign -s "$AC_APPLICATION_IDENTITY" -f -v --timestamp --options runtime "$1"
|
||||||
"path": $path,
|
|
||||||
"bundle_id": "com.coder.cli"
|
config=$(mktemp -d)/gon.json
|
||||||
}
|
jq -r --null-input --arg path "$(pwd)/$1" '{
|
||||||
]
|
"notarize": [
|
||||||
}' > $config
|
{
|
||||||
gon $config
|
"path": $path,
|
||||||
|
"bundle_id": "com.coder.cli"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}' >"$config"
|
||||||
|
gon "$config"
|
||||||
|
)
|
||||||
|
|
|
@ -7,33 +7,37 @@
|
||||||
|
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
|
||||||
PROJECT_ROOT=$(git rev-parse --show-toplevel)
|
SCRIPT_DIR=$(dirname "${BASH_SOURCE[0]}")
|
||||||
cd "$PROJECT_ROOT/site"
|
PROJECT_ROOT=$(cd "$SCRIPT_DIR" && git rev-parse --show-toplevel)
|
||||||
|
|
||||||
yarn_flags=(
|
(
|
||||||
# Do not execute install scripts
|
cd "$PROJECT_ROOT/site"
|
||||||
# TODO: check if build works properly with this enabled
|
|
||||||
# --ignore-scripts
|
|
||||||
|
|
||||||
# Check if existing node_modules are valid
|
yarn_flags=(
|
||||||
# TODO: determine if this is necessary
|
# Do not execute install scripts
|
||||||
# --check-files
|
# TODO: check if build works properly with this enabled
|
||||||
|
# --ignore-scripts
|
||||||
|
|
||||||
|
# Check if existing node_modules are valid
|
||||||
|
# TODO: determine if this is necessary
|
||||||
|
# --check-files
|
||||||
|
)
|
||||||
|
|
||||||
|
if [ -n "${CI:-}" ]; then
|
||||||
|
yarn_flags+=(
|
||||||
|
# Install dependencies from lockfile, ensuring builds are fully
|
||||||
|
# reproducible
|
||||||
|
--frozen-lockfile
|
||||||
|
# Suppress progress information
|
||||||
|
--silent
|
||||||
|
# Disable interactive prompts for build
|
||||||
|
--non-interactive
|
||||||
|
)
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Append whatever is specified on the command line
|
||||||
|
yarn_flags+=("$@")
|
||||||
|
|
||||||
|
echo "+ yarn install ${yarn_flags[*]}"
|
||||||
|
yarn install "${yarn_flags[@]}"
|
||||||
)
|
)
|
||||||
|
|
||||||
if [ -n "${CI:-}" ]; then
|
|
||||||
yarn_flags+=(
|
|
||||||
# Install dependencies from lockfile, ensuring builds are fully
|
|
||||||
# reproducible
|
|
||||||
--frozen-lockfile
|
|
||||||
# Suppress progress information
|
|
||||||
--silent
|
|
||||||
# Disable interactive prompts for build
|
|
||||||
--non-interactive
|
|
||||||
)
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Append whatever is specified on the command line
|
|
||||||
yarn_flags+=("$@")
|
|
||||||
|
|
||||||
echo "+ yarn install ${yarn_flags[*]}"
|
|
||||||
yarn install "${yarn_flags[@]}"
|
|
||||||
|
|
|
@ -0,0 +1,10 @@
|
||||||
|
[*]
|
||||||
|
indent_style = space
|
||||||
|
indent_size = 2
|
||||||
|
|
||||||
|
[*.go]
|
||||||
|
indent_style = tab
|
||||||
|
indent_size = unset
|
||||||
|
|
||||||
|
[node_modules/**]
|
||||||
|
ignore = true
|
Loading…
Reference in New Issue