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:
|
||||
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:
|
||||
name: "style/lint/typescript"
|
||||
timeout-minutes: 5
|
||||
|
@ -133,7 +144,12 @@ jobs:
|
|||
- name: Install node_modules
|
||||
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:
|
||||
name: "test/go"
|
||||
|
|
23
Makefile
23
Makefile
|
@ -41,20 +41,37 @@ fmt/terraform: $(wildcard *.tf)
|
|||
terraform fmt -recursive
|
||||
.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
|
||||
|
||||
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
|
||||
mkdir -p $(INSTALL_DIR)
|
||||
@echo "--- Copying from bin to $(INSTALL_DIR)"
|
||||
cp -r ./dist/coder-$(GOOS)_$(GOOS)_$(GOARCH)*/* $(INSTALL_DIR)
|
||||
@echo "-- CLI available at $(shell ls $(INSTALL_DIR)/coder*)"
|
||||
.PHONY: install
|
||||
|
||||
lint:
|
||||
lint: lint/shellcheck lint/go
|
||||
|
||||
lint/go:
|
||||
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
|
||||
protoc \
|
||||
|
|
|
@ -8,8 +8,12 @@
|
|||
# Usage:
|
||||
# ./generate.sh <database type> <database type> ...
|
||||
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
cd "$(dirname "$0")" && cd "$(git rev-parse --show-toplevel)"
|
||||
go run ./scripts/auditgen ./coderd/database "$@"
|
||||
SCRIPT_DIR=$(dirname "${BASH_SOURCE[0]}")
|
||||
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
|
||||
|
||||
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
|
||||
for fi in queries/*.sql.go; do
|
||||
# Find the last line from the imports section and add 1.
|
||||
cut=$(grep -n ')' "$fi" | head -n 1 | cut -d: -f1)
|
||||
cut=$((cut + 1))
|
||||
# The logic below depends on the exact version being correct :(
|
||||
go run github.com/kyleconroy/sqlc/cmd/sqlc@v1.13.0 generate
|
||||
|
||||
# Copy the header from the first file only, ignoring the source comment.
|
||||
if $first; then
|
||||
head -n 6 < "$fi" | grep -v "source" > queries.sql.go
|
||||
first=false
|
||||
fi
|
||||
first=true
|
||||
for fi in queries/*.sql.go; do
|
||||
# Find the last line from the imports section and add 1.
|
||||
cut=$(grep -n ')' "$fi" | head -n 1 | cut -d: -f1)
|
||||
cut=$((cut + 1))
|
||||
|
||||
# Append the file past the imports section into queries.sql.go.
|
||||
tail -n "+$cut" < "$fi" >> queries.sql.go
|
||||
done
|
||||
# Copy the header from the first file only, ignoring the source comment.
|
||||
if $first; then
|
||||
head -n 6 <"$fi" | grep -v "source" >queries.sql.go
|
||||
first=false
|
||||
fi
|
||||
|
||||
# Move the files we want.
|
||||
mv queries/querier.go .
|
||||
mv queries/models.go .
|
||||
# Append the file past the imports section into queries.sql.go.
|
||||
tail -n "+$cut" <"$fi" >>queries.sql.go
|
||||
done
|
||||
|
||||
# Remove temporary go files.
|
||||
rm -f queries/*.go
|
||||
# Move the files we want.
|
||||
mv queries/querier.go .
|
||||
mv queries/models.go .
|
||||
|
||||
# Fix struct/interface names.
|
||||
gofmt -w -r 'Querier -> querier' -- *.go
|
||||
gofmt -w -r 'Queries -> sqlQuerier' -- *.go
|
||||
# Remove temporary go files.
|
||||
rm -f queries/*.go
|
||||
|
||||
# Ensure correct imports exist. Modules must all be downloaded so we get correct
|
||||
# suggestions.
|
||||
go mod download
|
||||
goimports -w queries.sql.go
|
||||
# Fix struct/interface names.
|
||||
gofmt -w -r 'Querier -> querier' -- *.go
|
||||
gofmt -w -r 'Queries -> sqlQuerier' -- *.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
|
||||
|
||||
cd "$(dirname "$0")"
|
||||
SCRIPT_DIR=$(dirname "${BASH_SOURCE[0]}")
|
||||
(
|
||||
cd "$SCRIPT_DIR"
|
||||
|
||||
# if migration name is an empty string exit
|
||||
[[ -z "${*}" ]] && (echo "Must provide a migration name" && exit 1)
|
||||
# if migration name is an empty string exit
|
||||
[[ -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
|
||||
|
||||
FILES="$(git ls-files --other --modified --exclude-standard)"
|
||||
if [[ "$FILES" != "" ]]; then
|
||||
mapfile -t files <<<"$FILES"
|
||||
SCRIPT_DIR=$(dirname "${BASH_SOURCE[0]}")
|
||||
PROJECT_ROOT=$(cd "$SCRIPT_DIR" && git rev-parse --show-toplevel)
|
||||
|
||||
echo "The following files contain unstaged changes:"
|
||||
echo
|
||||
for file in "${files[@]}"; do
|
||||
echo " - $file"
|
||||
done
|
||||
echo
|
||||
(
|
||||
cd "${PROJECT_ROOT}"
|
||||
|
||||
echo "These are the changes:"
|
||||
echo
|
||||
for file in "${files[@]}"; do
|
||||
git --no-pager diff "$file"
|
||||
done
|
||||
exit 1
|
||||
fi
|
||||
FILES="$(git ls-files --other --modified --exclude-standard)"
|
||||
if [[ "$FILES" != "" ]]; then
|
||||
mapfile -t files <<<"$FILES"
|
||||
|
||||
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
|
||||
|
|
|
@ -2,8 +2,8 @@
|
|||
|
||||
set -euo pipefail
|
||||
|
||||
PROJECT_ROOT="$(git rev-parse --show-toplevel)"
|
||||
cd "${PROJECT_ROOT}"
|
||||
SCRIPT_DIR=$(dirname "${BASH_SOURCE[0]}")
|
||||
PROJECT_ROOT=$(cd "$SCRIPT_DIR" && git rev-parse --show-toplevel)
|
||||
|
||||
echo '== Run "make build" before running this command to build binaries.'
|
||||
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:
|
||||
# https://stackoverflow.com/questions/3004811/how-do-you-run-multiple-programs-in-parallel-from-a-bash-script
|
||||
(
|
||||
trap 'kill 0' SIGINT
|
||||
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
|
||||
cd "${PROJECT_ROOT}"
|
||||
|
||||
trap 'kill 0' SIGINT
|
||||
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
|
||||
|
||||
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" '{
|
||||
"notarize": [
|
||||
{
|
||||
"path": $path,
|
||||
"bundle_id": "com.coder.cli"
|
||||
}
|
||||
]
|
||||
}' > $config
|
||||
gon $config
|
||||
(
|
||||
cd "${PROJECT_ROOT}"
|
||||
|
||||
codesign -s "$AC_APPLICATION_IDENTITY" -f -v --timestamp --options runtime "$1"
|
||||
|
||||
config=$(mktemp -d)/gon.json
|
||||
jq -r --null-input --arg path "$(pwd)/$1" '{
|
||||
"notarize": [
|
||||
{
|
||||
"path": $path,
|
||||
"bundle_id": "com.coder.cli"
|
||||
}
|
||||
]
|
||||
}' >"$config"
|
||||
gon "$config"
|
||||
)
|
||||
|
|
|
@ -7,33 +7,37 @@
|
|||
|
||||
set -euo pipefail
|
||||
|
||||
PROJECT_ROOT=$(git rev-parse --show-toplevel)
|
||||
cd "$PROJECT_ROOT/site"
|
||||
SCRIPT_DIR=$(dirname "${BASH_SOURCE[0]}")
|
||||
PROJECT_ROOT=$(cd "$SCRIPT_DIR" && git rev-parse --show-toplevel)
|
||||
|
||||
yarn_flags=(
|
||||
# Do not execute install scripts
|
||||
# TODO: check if build works properly with this enabled
|
||||
# --ignore-scripts
|
||||
(
|
||||
cd "$PROJECT_ROOT/site"
|
||||
|
||||
# Check if existing node_modules are valid
|
||||
# TODO: determine if this is necessary
|
||||
# --check-files
|
||||
yarn_flags=(
|
||||
# Do not execute install scripts
|
||||
# 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