From 8e38b5a757e1da575274a84b27f65d9dea131511 Mon Sep 17 00:00:00 2001 From: Dave Sargent Date: Mon, 28 Oct 2024 16:20:50 -0700 Subject: [PATCH 01/11] Add all the badges. --- README.md | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 81a92aa..c019fe7 100644 --- a/README.md +++ b/README.md @@ -1,16 +1,33 @@ # Go Dev Container - +[![OpenSSF Scorecard](https://api.scorecard.dev/projects/github.com/sarg3nt/go-dev-container/badge)](https://scorecard.dev/viewer/?uri=github.com/sarg3nt/go-dev-container) +[![Scorecard supply-chain security](https://github.com/sarg3nt/go-dev-container/actions/workflows/scorecard.yml/badge.svg)](https://github.com/sarg3nt/go-dev-container/actions/workflows/scorecard.yml) +[![CodeQL](https://github.com/sarg3nt/go-dev-container/actions/workflows/github-code-scanning/codeql/badge.svg)](https://github.com/sarg3nt/go-dev-container/actions/workflows/github-code-scanning/codeql) +[![trivy](https://github.com/sarg3nt/go-dev-container/actions/workflows/trivy.yml/badge.svg)](https://github.com/sarg3nt/go-dev-container/actions/workflows/trivy.yml) +[![Dependabot Updates](https://github.com/sarg3nt/go-dev-container/actions/workflows/dependabot/dependabot-updates/badge.svg)](https://github.com/sarg3nt/go-dev-container/actions/workflows/dependabot/dependabot-updates) +[![Dependency Review](https://github.com/sarg3nt/go-dev-container/actions/workflows/dependency-review.yml/badge.svg)](https://github.com/sarg3nt/go-dev-container/actions/workflows/dependency-review.yml) +[![Release](https://github.com/sarg3nt/go-dev-container/actions/workflows/release.yml/badge.svg)](https://github.com/sarg3nt/go-dev-container/actions/workflows/release.yml) A Go Dev Container using `mise` to install Go and other conventinet tools. `mise` can then be used to install various other go versions as needed. +- [Tools Included](#tools-included) + - [Go Tooling](#go-tooling) + - [Utilities](#utilities) +- [Using `mise` to Manage Go Versions](#using-mise-to-manage-go-versions) +- [Included `.devcontainer` Config](#included-devcontainer-config) +- [Initial Worksation Setup](#initial-worksation-setup) + - [WSL](#wsl) + - [Windows Font Install](#windows-font-install) + - [Windows Terminal Font Setup](#windows-terminal-font-setup) + - [Visual Studio Code Font Setup](#visual-studio-code-font-setup) +- [Initial Dev Container and Project Setup](#initial-dev-container-and-project-setup) + - [`dev.sh`](#devsh) + - [Dev Container Setup](#dev-container-setup) - [Contributions](#contributions) -- [License](#license) - [Author](#author) + ## Tools Included See the root `mise` config file at `home/vscode/.config/mise/config.toml` for all tools and versions. From 33cfde11d2c143e258ee3b4357ea07bfeb701af9 Mon Sep 17 00:00:00 2001 From: Dave Sargent Date: Mon, 28 Oct 2024 16:22:01 -0700 Subject: [PATCH 02/11] Remove codeql badge from README.md --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index c019fe7..b7e1a0b 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,6 @@ [![OpenSSF Scorecard](https://api.scorecard.dev/projects/github.com/sarg3nt/go-dev-container/badge)](https://scorecard.dev/viewer/?uri=github.com/sarg3nt/go-dev-container) [![Scorecard supply-chain security](https://github.com/sarg3nt/go-dev-container/actions/workflows/scorecard.yml/badge.svg)](https://github.com/sarg3nt/go-dev-container/actions/workflows/scorecard.yml) -[![CodeQL](https://github.com/sarg3nt/go-dev-container/actions/workflows/github-code-scanning/codeql/badge.svg)](https://github.com/sarg3nt/go-dev-container/actions/workflows/github-code-scanning/codeql) [![trivy](https://github.com/sarg3nt/go-dev-container/actions/workflows/trivy.yml/badge.svg)](https://github.com/sarg3nt/go-dev-container/actions/workflows/trivy.yml) [![Dependabot Updates](https://github.com/sarg3nt/go-dev-container/actions/workflows/dependabot/dependabot-updates/badge.svg)](https://github.com/sarg3nt/go-dev-container/actions/workflows/dependabot/dependabot-updates) [![Dependency Review](https://github.com/sarg3nt/go-dev-container/actions/workflows/dependency-review.yml/badge.svg)](https://github.com/sarg3nt/go-dev-container/actions/workflows/dependency-review.yml) From 1d2601c25c6049f9087cf120ed27e668d688637b Mon Sep 17 00:00:00 2001 From: Dave Sargent Date: Mon, 28 Oct 2024 20:17:49 -0700 Subject: [PATCH 03/11] Fix viarious spelling errors in README.md --- README.md | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index b7e1a0b..5c3cf1d 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ - + # Go Dev Container [![OpenSSF Scorecard](https://api.scorecard.dev/projects/github.com/sarg3nt/go-dev-container/badge)](https://scorecard.dev/viewer/?uri=github.com/sarg3nt/go-dev-container) @@ -8,10 +8,10 @@ [![Dependency Review](https://github.com/sarg3nt/go-dev-container/actions/workflows/dependency-review.yml/badge.svg)](https://github.com/sarg3nt/go-dev-container/actions/workflows/dependency-review.yml) [![Release](https://github.com/sarg3nt/go-dev-container/actions/workflows/release.yml/badge.svg)](https://github.com/sarg3nt/go-dev-container/actions/workflows/release.yml) -A Go Dev Container using `mise` to install Go and other conventinet tools. `mise` can then be used to install various other go versions as needed. +A Go Dev Container using `mise` to install Go and other convenient tools. `mise` can then be used to install various other go versions as needed. - [Tools Included](#tools-included) - - [Go Tooling](#go-tooling) + - [Go](#go) - [Utilities](#utilities) - [Using `mise` to Manage Go Versions](#using-mise-to-manage-go-versions) - [Included `.devcontainer` Config](#included-devcontainer-config) @@ -29,9 +29,9 @@ A Go Dev Container using `mise` to install Go and other conventinet tools. `mis ## Tools Included -See the root `mise` config file at `home/vscode/.config/mise/config.toml` for all tools and versions. +See the base `mise` config file at `home/vscode/.config/mise/config.toml` for all tools and versions. -### Go Tooling +### Go - golang - golangci-lint - goreleaser @@ -50,22 +50,22 @@ See the root `mise` config file at `home/vscode/.config/mise/config.toml` for al ## Using `mise` to Manage Go Versions -1. Copy the `.mise.toml` file from the root of this repo to your projects repo root and modify it as needed. -1. The provided `.devcontainer` will automatclly call `mise install` to install the custom versions of the applications. +1. Copy the `.mise.toml` file from the root of this repo to your project's root and modify it as needed. +1. The provided `.devcontainer` will automatically call `mise install` to install the custom versions of the applications. 1. After the container is started and you shell into it you may need to call `mise use golang@` to switch to the new version. The included `help` explains how to do this in more detail and other `mise` commands you can use. ## Included `.devcontainer` Config -This project not only builds the dev container into the provided Docker container it also includes an example implemantion in the `.devontainer` directory. -Do the following to use this implmention. +This project not only builds the dev container into the provided Docker container it also includes an example implemantion in the `.devcontainer` directory. +Do the following to use this implementation. -1. Cone down the rpository. -1. Copy the `.devcontainer` directory to your project. Note: you should not already have a `.devctonaer` directory or things could get weird. +1. Cone down the repository. +1. Copy the `.devcontainer` directory to your project. Note: you should not already have a `.devcontainer` directory or things could get weird. 1. Copy the following files to the root of your projects. All of these are optional but encouraged. - `.mise.toml` - `cspell.json` Edit this with your specific words that you need to `cspell` to ignroe globally. - `dev.sh` This file helps launch and exec into the dev container. -1. Starship has a custom Power Line command prompt we include, for it to function properly you need one of the Nerd Fonts installed. See the [Initial Worksation Setup](#initial-worksation-setup) documentiaon for instrucitons on downloading and installing the fonts. +1. Starship has a custom Power Line command prompt we include, for it to function properly you need one of the Nerd Fonts installed. See the [Initial Worksation Setup](#initial-worksation-setup) documentation for instructions on downloading and installing the fonts. ## Initial Worksation Setup @@ -119,7 +119,7 @@ The following contains initial project setup. This script is used to more easily start Visual Studio code and hop into the Dev Container from the terminal that it is ran from. - Open the `dev.sh` file and set a `docker_exec_command` if desired, this is optional but if this repo is used a lot, it is a nice to have. This will create a command in the users `.bashrc` and `.zshrc` to quickly exec into this running dev container. -- Change `project_name` to match the name of the repository. Exaple: If your root project repository is called `my-go-project` then set `project_name` to `my-go-project` +- Change `project_name` to match the name of the repository. Example: If your root project repository is called `my-go-project` then set `project_name` to `my-go-project` To use the `./dev.sh` script, simply run it, then when VS Code opens, there should be a prompt at the bottom right of the editor saying "Folder contains a Dev Container . . .". Click the "Reopen in Container" button and VS Code will open the dev container and attach to it. ![Reopen in Container](.devcontainer/reopen_in_container.png) From 60542a67864ee61abcf306fb44770f45fc932e98 Mon Sep 17 00:00:00 2001 From: Dave Sargent Date: Mon, 28 Oct 2024 21:09:56 -0700 Subject: [PATCH 04/11] Imrpove README.md and fix some minor config issues in dev container --- .devcontainer/devcontainer.json | 6 +-- .mise.toml | 10 ++-- README.md | 80 ++++++++++++++++++-------------- dev.sh | 4 +- images/reopen-in-container.png | Bin 0 -> 31541 bytes images/stargship-prompt.png | Bin 0 -> 20210 bytes 6 files changed, 55 insertions(+), 45 deletions(-) create mode 100644 images/reopen-in-container.png create mode 100644 images/stargship-prompt.png diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index da9d925..3d993bd 100755 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -1,9 +1,9 @@ // cSpell:ignore FUMPT ciiqr darkriszty euskadi Gruntfuggly huizhou githd kato mhutchie tamasfe koehler yzhang gopls gofumpt docomment { "name": "go-dev-container", - // "runArgs": [ - // "--name=go-dev-container-dev" - // ], + "runArgs": [ + "--name=go-dev-container" + ], "mounts": [ "source=go-dev-container-bashhistory,target=/commandhistory,type=volume", "source=go-dev-container-plugins,target=/home/vscode/.vscode-server/extensions,type=volume", diff --git a/.mise.toml b/.mise.toml index be97891..12e6912 100644 --- a/.mise.toml +++ b/.mise.toml @@ -4,9 +4,9 @@ # supports arbitrary env vars so mise can be used like direnv/dotenv #EXAMPLE = 'bar' -[tools] # specify single or multiple versions of specific tools you want installed for this project. -golang = '1.23.2' -golangci-lint = '1.61.0' -goreleaser = "2.3.2" -kubectl = "1.30" +# Below are examples. +# [tools] +# golang = '1.23.1' +# golangci-lint = '1.61.0' +# goreleaser = "2.3.2" diff --git a/README.md b/README.md index 5c3cf1d..4defcf6 100644 --- a/README.md +++ b/README.md @@ -8,21 +8,23 @@ [![Dependency Review](https://github.com/sarg3nt/go-dev-container/actions/workflows/dependency-review.yml/badge.svg)](https://github.com/sarg3nt/go-dev-container/actions/workflows/dependency-review.yml) [![Release](https://github.com/sarg3nt/go-dev-container/actions/workflows/release.yml/badge.svg)](https://github.com/sarg3nt/go-dev-container/actions/workflows/release.yml) -A Go Dev Container using `mise` to install Go and other convenient tools. `mise` can then be used to install various other go versions as needed. +A Go Dev Container using `mise` to install Go and other convenient tools. +`mise` can then be used to install various other Go versions as needed. - [Tools Included](#tools-included) - [Go](#go) - [Utilities](#utilities) - [Using `mise` to Manage Go Versions](#using-mise-to-manage-go-versions) - [Included `.devcontainer` Config](#included-devcontainer-config) +- [Initial Dev Container and Project Setup](#initial-dev-container-and-project-setup) + - [`dev.sh`](#devsh) + - [Dev Container Setup](#dev-container-setup) +- [Starship](#starship) - [Initial Worksation Setup](#initial-worksation-setup) - [WSL](#wsl) - [Windows Font Install](#windows-font-install) - [Windows Terminal Font Setup](#windows-terminal-font-setup) - [Visual Studio Code Font Setup](#visual-studio-code-font-setup) -- [Initial Dev Container and Project Setup](#initial-dev-container-and-project-setup) - - [`dev.sh`](#devsh) - - [Dev Container Setup](#dev-container-setup) - [Contributions](#contributions) - [Author](#author) @@ -52,21 +54,53 @@ See the base `mise` config file at `home/vscode/.config/mise/config.toml` for al 1. Copy the `.mise.toml` file from the root of this repo to your project's root and modify it as needed. 1. The provided `.devcontainer` will automatically call `mise install` to install the custom versions of the applications. -1. After the container is started and you shell into it you may need to call `mise use golang@` to switch to the new version. The included `help` explains how to do this in more detail and other `mise` commands you can use. +1. After the container is started and you shell into it `mise` will automatically install the versions listed in the `.mise.toml` file. ## Included `.devcontainer` Config This project not only builds the dev container into the provided Docker container it also includes an example implemantion in the `.devcontainer` directory. Do the following to use this implementation. -1. Cone down the repository. +1. Clone down the repository. 1. Copy the `.devcontainer` directory to your project. Note: you should not already have a `.devcontainer` directory or things could get weird. -1. Copy the following files to the root of your projects. All of these are optional but encouraged. - - `.mise.toml` - - `cspell.json` Edit this with your specific words that you need to `cspell` to ignroe globally. - - `dev.sh` This file helps launch and exec into the dev container. -1. Starship has a custom Power Line command prompt we include, for it to function properly you need one of the Nerd Fonts installed. See the [Initial Worksation Setup](#initial-worksation-setup) documentation for instructions on downloading and installing the fonts. +1. Copy the following files to the root of your project. All of these are optional but encouraged. + - `.mise.toml`: The config file for manageing specific versions of tooling you need for your Go project. + - `cspell.json`: The cspell config for spell checking in your project, edit to add any specific words that your project needs. + - `dev.sh`: This file helps launch and exec into the dev container. This file needs some modification to use in your repository. See [Initial Dev Container and Project Setup](#initial-dev-container-and-project-setup) for instructions. + +## Initial Dev Container and Project Setup + +The following contains initial project setup. + +### `dev.sh` + +This script is used to more easily start Visual Studio code and hop into the Dev Container from the terminal that it is ran from. + +- Open the `dev.sh` file and set a `docker_exec_command` if desired, this is optional but if this repo is used a lot, it is a nice to have. This will create a command in the users `.bashrc` and `.zshrc` to quickly exec into this running dev container. +- Change `project_name` to match the name of the repository. Example: If your root project repository is called `my-go-project` then set `project_name` to `my-go-project` + +To use the `./dev.sh` script, simply run it, then when VS Code opens, there should be a prompt at the bottom right of the editor saying "Folder contains a Dev Container . . .". Click the "Reopen in Container" button and VS Code will open the dev container and attach to it. +![Reopen in Container](images/reopen-in-container.png) +> **NOTE:** If you have not opened the dev container before or if it has been updated it will download the container from Github, which can take a while. + +### Dev Container Setup + +Edit the `devcontainer.json` file to make the following changes. + +- Change `name` from `go-dev-container` to the name of your project. +- Change `--name` in `runargs` from `go-dev-container` to the name of your project. +- Change `source=go-dev-container-bashhistory` to `source=-bashhistory` +- Change `source=go-dev-container-plugins` to `source=-plugins` +## Starship + +Starship is a custom Power Line command prompt we include. + +![Starship Prompt](images/starship-prompt.png) + +For Starship to function properly you need one of the [Nerd Font](https://www.nerdfonts.com/) installed from [Nerd Fonts Downloads](https://www.nerdfonts.com/font-downloads). + +See [Initial Worksation Setup](#initial-worksation-setup) for instructions on downloading and installing the fonts. ## Initial Worksation Setup @@ -110,30 +144,6 @@ Download your chosen font and [install it in Windows](https://support.microsoft. 'FiraCode NF', 'CaskaydiaCove NF', Consolas, 'Courier New', monospace ``` -## Initial Dev Container and Project Setup - -The following contains initial project setup. - -### `dev.sh` - -This script is used to more easily start Visual Studio code and hop into the Dev Container from the terminal that it is ran from. - -- Open the `dev.sh` file and set a `docker_exec_command` if desired, this is optional but if this repo is used a lot, it is a nice to have. This will create a command in the users `.bashrc` and `.zshrc` to quickly exec into this running dev container. -- Change `project_name` to match the name of the repository. Example: If your root project repository is called `my-go-project` then set `project_name` to `my-go-project` - -To use the `./dev.sh` script, simply run it, then when VS Code opens, there should be a prompt at the bottom right of the editor saying "Folder contains a Dev Container . . .". Click the "Reopen in Container" button and VS Code will open the dev container and attach to it. -![Reopen in Container](.devcontainer/reopen_in_container.png) -> **NOTE:** If you have not opened the dev container before or if it has been updated it will download the container from Github, which can take a while. - -### Dev Container Setup - -Edit the `devcontainer.json` file to make the following changes. - -- Change the `name`, by replacing "Template" to the name of your project. -- Replace all instances of `template-` with your projects name and a dash. Example: `my-project-` - -The rest of this doc is typically kept in all projects that use the dev container. - ## Contributions If you would like to contribute to this projects, please, open a PR via GitHub. Thanks. diff --git a/dev.sh b/dev.sh index b03bccb..a642766 100755 --- a/dev.sh +++ b/dev.sh @@ -17,8 +17,8 @@ main() { local docker_exec_command="gdc" # Name of the project folder local project_name="go-dev-container" - # Name of the container - local container_name="go-dev-container" + # Name of the container. This assumes you are using the same name as the project folder in the devcontainer.json file 'runargs' section. + local container_name="${project_name}" # User being created in the container local container_user="vscode" diff --git a/images/reopen-in-container.png b/images/reopen-in-container.png new file mode 100644 index 0000000000000000000000000000000000000000..908634476063f8688e8602ac63ef598f2f201f6c GIT binary patch literal 31541 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%0Dr@RZy9Qun1(c+1Yg}A)W{ey>E#O4^ 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 SMOj^=y-`$GsCi`;`hNf$#nLMP literal 0 HcmV?d00001 diff --git a/images/stargship-prompt.png b/images/stargship-prompt.png new file mode 100644 index 0000000000000000000000000000000000000000..4e8878af9c448a3911751e492751f51de1a37f18 GIT binary patch literal 20210 zcmY(q2Q=JI^frzVqKn>%h!8c=YqSueTb)%R>LSt0>Lo~!B1G@jDyxgO!eXO$s|ymn z2D@0xf4{%?J^%B2=bYWoe$JUYJ9o~VJ9qB$+(bitEh=(0asmPZs+Zat#smbUuK3>u zWOwo3qABTB_y?h{v6dP^%_zqX{)N~@RZo?Gpe~i-+JOZBe$PkS(wBgM8u8zU5a|th zO+cWZ@KQt7G|28?`CiAXzub3^^Gnq^`vCQEUq26i*14w{+el|j9v5r+Q0Nms zf03s%b3K3klUQ<1OEnuE&0Fc);1%B$kHe*B*wD?kI5r}6i=Zk?^_0^=^mmh-}1`Z_7(%*8gWI*Qy%WG}W6^04Fj-_W1av92`rgp@fC`l)F_ zb?0?bnC?e5^LdZQ3IqCJC5EGq>?JGo8jsHQC+wQTq*B2`Y;QRxQ$j1tO<`uEa1G0u zvzKB+HK3_|-4mzYG_QBpzwcXiIaYN(5?`8i`+ls?jb+-bvXB(|b5Jz?+AQ17_dLDc zev|f`YaD!ctM0Hy!F|3ZNo)nT82YvthP{ZayUPGhDrV5&6)C~xcRo;F3J%p13=F=9z3&X@OSa`1c)5iiUaLvS95VHF zl3BN|XshxxYB;N1ak<`ogbB-b`tOgNE{OU27gmt`?@RPk-+#|5ObZ+L=UQc|k4m_d zM5Ss3#hiz199N&hgD}3rUg-0=30_cG#0&k0!K3ns)4V6{z@!g}NV2k^iPvMRkZW}5 z1yeGbr>K{qeItR|?Gp2?KI70}$uWPZ%ugH3y^6i3mC)$Ij}E+)vubwt-yNb_d?+W^ zB@C<^wgWw{In{W#*(BCWW6FRIg*QMSd#1MUKCn_8G=1fK-2&$# z$Av!zu1SYdIZKJbFTQff2WiB2%B|Ra36@uywQ`@W62hXnKbPl)4A|)!4FGO7{PW6HVuaW4iD$*HW&PC}@l|rSE0^>!vZ)#XOj&x_jrKJ4!#uLT}SYv+q zJ{DPNc1q~a<*;#gY~#;RhL)Aeq`{lf%U9Kb(Tk!$S>u0yNB96r7|aTj$(izBG2=x$ zdT!dhnbu49`SznUNw1Ye=gD4{FB!tX@ffC>zzy8yU3xI*Ov@aQ-c-n2Ybg8j2E4x)! z0jXO8a~}0fxCMoIxNq0~a)d^|f!(8LDs~>Q5eO(dIJGgu}kK| z6U3@C$4e#A3ayAQ=j>gl`^fV8H#ll+)`yg%T-SX1o!bSifB*KT4s^?HO{zZ#=d7UM z4=2xC-#!hoxjI^3a!n2TCWuV6xzv2uyBauI7oa!uc@nd8*LY{pF>lPq1?r#Oa`5Gz z32JcrB)@VfilKd5acBP0tO8KnxP>z_tX6pYPi(%?KmP+;i_M$S#j4ppwMHz_BQ8Wq zyI197v2#zzLbFG{8y!e}aTYc7dn@}_)n#@mAmJ@~;pZ7RhePhFegERdW&UEuZs%nE zRVXL~8QA5Of676TAe@%5deIB_V_OJWOGsVJP(=2SVZ=Oxj*yR2t)8AM8>kF|fJv{m zR+60$`f+G}U#PjL(3nzir>RgN+=YG2a8KGx=^^*4RiPvOlx6HJWP?JHw4gT!KH)=B z&3rx-_XQnyVFdHi^B+u7)A8Hi`}&@3#ZoJ-=!Agx?bMspXE{C--GA!_sLIGY<(L2RN@w|gs{SYy zv1`*`?hl+`^d#%ZsX^i-V|mo$4UD#cyHonPSI_*8O`vW5SNqPEkA$C+sM4t&X!p!( z7-Kdo4}8}Uw4K`sIM@b*l9vH|iECIjMA-194eK8xD6h30yNje!j;i<3;p*JoG!NE$ zy1GJcMsaSyUn{hZJT`>aw!0T(5zk*HR;+={b#tv4_jN5%Q2$kE?RaREyo}k`lj1x> z^#IZs@o9`iScY4J`CQ&G~3+@dRg(*Y(}yHPTB?faKU_m*<4zUPb z+=_lS!}aI)>c)fer?(1j#6Dz*+TMjoyTF0rlT@9L?xnA{YVrY*E$%o`LEGIh#!)>M zx(h9$IkZ8UvZ%;W-3?XK#j`PqpQkKA!it+0YoKZ0-v4Vd48*Hb$R-mIB<4t4X>xGa z`le_4d2>Xdc2f+d{`RMs(9gpQLy>uOu=flNQEOZMDa46tj})HoalDdh#1-e$JRW@c z@bBcqP(9Zq;8&oCPk8+$Q53ny+8B)BPGWhe~`rG#H!4v^KJo zdUxQOHD+eKf5qKYOe_YgQl_@3;FXLc-P5)YANYou&FI8NdLDrSFYSP zAXYh=b^@zKRH){E0g=fw+nT@+9fWI_&p+J2QdeMnW-6iU41k)}jyrfM#-mw8f7^9l$E`*p>*e?moex0$*-bSw5Zdo-`P=J^j%ben!>A zO*YN^Y7ew3&qv(x8wUOHF7ETL>8dEL$$@J4Yh&%?!EO>0g@JAuDU^VEjho4ovnF$q z|B-`8^I8-WiX5tukb3#bT{;K=FrW37e|6}tqyy-d?r3uSS@_o9S>O>t zX|f0^&Gp2iJSk|UIPTM=-x>DAXBYRRV2|s;-+|@KitzYTe z+BKmJ15Qt(0Z^KYo5v3r+SL5^V_TtO3f&>ZO{vN!NglYI$Bq)zZtY4dhO@$lVwh#$ zn3AvXUv?g?KP>8}TkE2SZ;vfmWr~VBXTeQ1PXt)97zl}>zl7{8)#84A%``lD?_g`> z-0Cs)xOFceyyg`Hi`7M;zBlyL-#baK?<+f!hPbdrGTbh%QL0At$(^glde}=ELa{t{ z#*S?ie9$K3QyW)Hu`KOI8WZ3X%Pb=xD}>C}n{kNI#6cw5s(gHifpQ~xOG~rF+xc%6 zRl5>+I;(ODXz{__B-WSgCP(Pm35(bwVqv{?iQxbqnTQl8>;{jGp3ekRQrT1=4*f&q z{VER}2c@o+>8Z^nKj&JLSfE1KVAXyk2dJyOCEppc34!BhFvK8HRq|1QWtL@482ToZ z>eVePi@MD8N8Mkj=BY8pkV?ZHnRq{Gd36+`AT$vvI{J$B+U~iis0LN8$ zCiBF-9udXOT>y8*qC>Z0W@fuM%aZ;oX)-lZ^aqcei1;a7`F>DUtM7^#1{ttkuQK;$ z71RT+6LDRA?xV8Y{NvykomffJJ^i<~wZ}B5;@lI9m4n29pBr)PT64V-*|lFzN7=2Y1Y@!lT1mV55aGEGNDB6mm4W?i-Qmb_e-4{vLO11HvwRdWiZ z*K-po^K4qq|Mdy=#G;>iM>>)J(}6j<887xq+%#5w}60)j*k!E`_>rba%YancDNL z?`MWcvWZ6@_gr921yH7$CdjZYJ>pW;s401OJ*Hjx+XiU{WQsBQMa6lP{f*(0a+;x6 z%w8_ja2=}$#A>UDabr4@z2G zSN;JD=TI!`((#)*w)=Tntg?qmTw(4AjP5l5IgRCKnh;xu%h z9Y!Zrfc;)PA=T!nb>+a4pwhnX;RND~*FwFutzGTwVtFc;OygLA%$WPWYL2Sg3A>#> zYHakW4&+3-rU#r$Yrzpg%_QYdHZe48uh&C7pKS(BV`i|?ND2Y6kIhOx?R2naT?|V| z_jp~VFFoMfz{|_h^G=xs%ph56%vRs&9(F_GWUjCWUZB^}LYNvAIVWiP?B3!bt|QW2 z_sBowUMYyqvsf&s3qB_kLFoAAXGb-e^xK?nblX7h34%Lz#QQ^5<*1B@U#|R22S!(= z<;bUhPWtR9cQyY8^Ro2cp&9cFB5ZVc?8cqZJq(+EyUM)9@?F#p=IJcyp7)8L;t0g5rNia)XP`iBi$plI)ENRj)w_Z}nfqAH? z?+L$PYg!{H6n6DM$*`c-vG1-wH!;Yt){yX=|Ef1p-PFF>`-spVTynhRw8F}hVPkBn zgv5c`1`5@+_B{*`2es96n_-v#px~dUj&g6;OBR@jgD;F#(mL`Ys*3eqbe(_x`chD^ z66I-{`Y9{qRZSZ-hmvJn#9ll4H{Gd$BfB){>Jf-tKcty3>QAi$SdCn|R)y?!o8oy| z22>cVZRzR=LF^1Xktql5rRWhUQ=pbLDgB5?yL-BnW$;ue zQG{%-?=~iPDs+^A9=ts5QMt$n>s#q0HSkW@YU)8>h8~5V^vyP+2q-Slx}C)Cy8q)t z5dTJGR_9T%0+ZJ=v8JX8*(>Ns_&0&L*ar0FG>EauQLZJf4~W|%N*6h{NsPV zMFxf{f*+@v)>v2pW~4#st-KI1VvWox|Ct4mw-U$_uH7Gwmy>RU9PwqE0MHM0c0P@X zLTY{Wdr2LIp#H99>%p(0H4CJ^>1A9v0Em6I_}?68$CNMrqTd zuNi;4HXk9y4pi~-#>qbV+TKxec5s^_pQ=npO=(NXFV-@+*7Q_x07m)%XAaD+j+m5u~NDm z)b54gtLQ4RF3)(SV%EknS@f9^%zwQhiSmW!eIE5P?G`TMa_=7)InoOr5y>>5Z z&%OUT=UW4>KjvTK_mh97F>xvL0wJw10ZhIFKD3oW|Qu&BqDpg?n zV6Nkwbfzn8Yk@;$K1;cqnac%H-|e1XOLK*eM7|(kczoRL|APumve*&yeJjXbr9YAW z)`U=^XWej9_v3WZ46t0Od?g^l_u~UvN@DPx?tmR#G1Efs!x(VSUM!e$ma8rn{V~op zmAm@`SBqiX2$>ZQ_tRm+-0XQ}!n0XFd+cSF_q1S6sQ&R0&r{tm3NQf98M$GcXSu$ zs`YIOdFelfvCeR#K&k0xcw=`bv7TXKS)4XUu zigfAfWM~)fl5CUGWP;6!WH(#pmu4>=+OWhgK6roN6Tvu;Ezr_NBlNB==lYbp!la>O z__p9Xx%)E!QCy?k!PMNZk~HbBNorwrsbV;~tP8cjnKcjoRl5t@4PQBu@kYypwWb`e zBe^j{wja3wYc4Q5*no*a=fftC7SqM(t&mOD+b$wb^k$HMeq6HIoQFnR0N4V|y1EV* znBt;8R$Lng_U@%YzzJLX9#3}{x9<73zx=YP9izZygpJ(ln{1rlFfRAJuCZOFXOS_h5 z0;c_r`JI?M;7X9f6An?6HjRZV=X~d!+g=Tz3}JfgTwo{X3haq!dD%@-Ghdo3a8cqY z9HQ^t%75(hvF(2FL7U$0w8#Y7-vlPIf^{_~E`~3j3>Hl6N>^LS-8$q;I5{kMM3NY% za_F^;V&x-VajJCW(+s8Ls?4EcMYGTZ^hh3=TR6*>u{QSbB6VgbuQNfBJ7p|GDj%LM zyD&RH`qL<9;&2c@1?=ce9%QVJC>FM8e39E9<242sglr$Il%|ts-0eKe@&d}z+-6FDWCN*d7>q8^04`9oq1wfWN6sv~iIaNMG7j0!xQ8$Q>OKMD@5v)5m> zP=B6KKt<>>lSKo$w5k)4?fYAdOsPzowNNFIS}~b>6#JoY5_}zHM)d)}qqTs1)hKwC zca+oCmj7GvN|eiK+kR`jswX|8!X6+NqEc(SvR7vc{e7D;iO@38&2F(eN?3`XO+7O? za_%r+=ZtTeT};8R2$unVMcQ8BHBTPjOw_98aTA4V=O`)7bPiZ&2?+<;omj zggene|83HcRw}Lrx<@2&!t#iBE+}Hx#TYtSJo#hhd6P&cz3+v>>CAcV;_6z9ZG4xK z!LHO{r56mNzRKqIgyCxvpj2Wtr6?cL0b%!VT+)3o9jYId9YMn zDp_2?p6|w_67^{D$68KxQspYIjX${#oHHOF>m{ug0VXA&5YcFiibBMV1R-I5xW4dj z@0y9{w4V#Tw^1aZM67-OxH)YsiASo%q;LJGwJVMQZ%!O4YNcDLnvpxiM+!evg*tYA z2F!L;Nq7qrnQ{pDty-N`F!uA7aALcS&-1#kCXPf*_xxoKMOISE30oN^A5>L_7N6fC zH2u0V>F3&JPtTZ@naV^<>zHD|Ia%~s`m4_~4k=jctK0{V(WUB2#Bqzw*6Az!qN5k^ zmqM>e8oRf-!_zxtFFZatygLsol|7j3z9j=^C4%wG2!Alo{KYR{Jt9Dl47Z1pDKHZ_n-`R?az*V^=#{;j+?_L{l{&eO%KkdyE1 z(}F@CEufYp>m;D*^V};osbjO&AFhO#_E%;Vrhy+MK{DziPRS&vn`RJP3OR^|lbYi< zQX@LHv5v}>mtM`v)=1VlNy;=)1;RqKO51F4GSxMzRl7q4DE!SHzaxeUJ>%H7n28fx zrz0yi9>82)2e(;U18mR75lT-LxuK%!ap0dBSh7t+-Z;>`hk^qk2sF32aqd;m4R7s9 zU}yYRw(Q&Hje}ZhUIMQT*gMLx4KY6rpZB$Qc)be>U%btwKB0Xs+bK;ZO8f32R5aEu zh>KW|EH%slNNYn90@7=$fEi-t3v%h!?XBy^;I+5Ul&}eFuj#_CHeLW}n2Da4K6vmN zfkgx=_^`qPYYPMyP)uVn;tU6DuD~Z|9X3q^Ki*F5OKpDN-Yc`S?tq=#^d5k@Ne@0C ze}a}`w?3jT9CR8F9M)O>3{9^xqkhm%D$iX7Ffusi%|F7Ne?Cyalu?CNZG9I3tQR$| zeK5$oHaYah8ZTTo>akhf{`@F#&RSg0tj<~N$O!P5paxwdx!2-Y z$sBWq0z%JND~Qz2NQnIsDS3H>XrVb>5 z0}K-)93_OR>%3XXW)WfoG|i0;vwTxnYsKp{)mjLRkN;ERJ0o}&^0vMMdo$VSJU(ve z1_)aL7RkU7w`5Nyo@=s2D=KL~(DQ?!UCD9rQZgXzW1gIDn@{kWgdZOY2vwt0@F`@; z*euSr4riczHS(0+)G!uR=aSKW(6r+aN@pmiN|qGRkHb+ZcoZqoJ}f%o5$~18_Mr8? z*BO%pk@;S${zw8HEJu7Mmjf4mJm!EzpPLV4n2zu6=^xyi<0j6zsYw+89ktj!8$Q~_ zwh<7Cn{M89Pqmmp7;K!sT`)5#k_(SjC%wqL+jkF5cXZD)IdGA$w$EezNQu?ku7FS(v@3(IUOo}I;btfr+eo%&Sa^?YD6CS_NDcx+Wwmf_xXF0@*f7&uz6`}C7yuOF zb2T9{;KN5vAKT=gj#;`uOuY3S-tdr7BF>TbJZ{zLM&Pb^z4Lw0eX%JtE0C+{udF)} zv@x~ZfX*_t2qodS(0m=MM)oUm{PxXDV2TpyaT-2im$9LA0|w!I{jXNoqatV%c;h8H zPJXT(h67`g?7Uf0SOBnRo8IQ>O%=$hfL|FhE%N8-rsApc2h&eBy7~xGqsC`f&m}Sl zctN8a=;%*2AFsZ^Uegf2tjd3|aK1Rr(ZGV1^wu+mxhs zCZ_(5ETA*6>B|UQ-$TY($I)3Ip?AEWmERQU(f!*cw<-5AL(p&*_$OP>xV@1L>%Fpe zd*|x*&r!Cd+G+sGLP+V&k;Fe_uu84Y*{(XKBoEfVn&3JUFU=%HamR|elO2k*^Ba;e zxIzHp{~}kSoz45})7if$=F{LraZ{ z6N{>aMCjHQ$YpJ4$@&rOtNuT&%b^W#C9LSTb-9ruZlmJs7a!$0ee--u|if~$OZCmjJ~zN4P*=peGb zqHHh%UPk3NUqv{tT-I;YH!B_D3CqF2dv+F%|C1VqX`}l}-h6~YKq$s4uW^J5!Vl)~ z6}{vX;{eri;=5das+(ozX z7@u|N;EtHz*(DWwGi0~JQPUuzb|U>H9B7AvIQWxsUR<4yw9H!UrwheNo8N^(bBOdQ z6O-MC?86ZA&mAgSg3;FlhDlFa(EFAd;ggzRbUlw71(9TQ&lQQ z+G*5fvO>3?cYEDYv{aag(A1cBZ%EK|GM+t$um|QY#cjwKDf_XR2(?(xI7`zjKJEWt zO5NUjY5!JB=DYKtRx)5bQE1Mm07}mYW%d1%hHIj&+K$m5n(*yh z3zKckpVRehJSw0oZ-mb)bQL8wzHSz2cJyXX_rzZHJM|qL$%X#nzW2RmvCPV|iG+ra|FN72Z5AIvUq|a4^^|zNX#C%m+8+t-$$k0Y z?85|7xbMKOoX-%@0oQIarc#N;lvU3vHtECE%X|b&4y2Bsv7W3j8yCA9St@PaH2Tob zRFZ)t@}Km~aNdg`Tp=bXh-jfvXL zH&5O3~!%K0#-1t9yneqH1% z`Z-J7R<67=q{{BxXkqE6MJ*_5o9D@#cuUmwPcGj2K<&-ONG`9*j2&sJ7Ff)Us@i#F zHBE%RpOk|;^wh%%3M-~kv+a1YB(*%+wk~rYADKPp7lRt)+UXL1-;Rlb8t0-HSJ$Vx z9$mFrBkP74Mo#$bGWW|@mTI=8cU8s`(o8097uQ-=s|(CYsbq7p6FfT;O@Ia101fvg zfGV`(YN};2UMXIUgd!*<`9g*=j;N45+EQtCuhzUBG8I%9BTF2c_==k*;FjegLFPN5 zZ~l4$UEm5=5OrY0FeYNaCHdJ=Mrw6g8a z4jImZjhl~nR2vD?)?VICfKyyhbc%~rVI;J4%s-7ZZrvkc`U0%UnJz0RSr_Im_=HCu9=AF;=0fJ0*@jZXoX&jYhnT^ zsXov>)d9MH6e>gvV#+O4`e`&J59nxKaT+`u>B`&q6g8Hf6{z`?=;uAY1xOz-y@Jaa zC0V}ann2}RM)Z2PX_q2B6Hfc9+Nw*Jr1r^XfKg#?e54Pq=d^wHbjL!8RH8WOL8w(FCM_A zVmo+cr#YsAy-9eh$c%|#XKa~@~Bhq$egV? z=K7T3%7Q+Vt$vQsLy%gze)WtSgfWinmEq+ku8$N>jFhKjt$gy$Z@Z}LF^cguJUULZ zkWzh5BrBMJuD`U*3h|kQ{Li&&K`7{BI{@;&mFjeJsFLWT1LEq}XZ|B>u8cHC_d@ZM zQ#Bwhacg8NI6T%qQ{7yQOyJIh>bJy82D<6J$l=xd9|r#0J9pF^8(E`m8>_|6PMJgw zO}EZ{DsD6uQA6fGME>wk6UZAsva?nq^=WuRHC+*pVo>>f@#o9WgPq3J8>Vu!_&iFF z8~IeX5t$m~RFof*oE-c{{S)HUJKiR)dg`%=O}%QabQjWh3Eb3Bb$KRIVY>G8JMM)1 zWrZKC&Fi-Z{p+8oPv&)F zj%c$3$i`a>zD%T=sZ9P>W5Vm)c$&RlH;&Rt_bA!~X&x(Ymm>E)HkenKgJ8r~OYspuNq;zuI@U>WwTK3kWJMY>jK%OK)hWSgtCW25r4Hhc#v9?{2G!m^+wH_L zyv501gP)T$kujcb%9$*CUqb|5qsoljN0*-G*r`V(FA`eS{vL9>G4%ewXG_q5RTF#B zHy7Z=^Xm4Rkk?Ztnh(AqX>c)7-kd8cE2nkqxcIJ&?TyR`rlT0cX!j)2ysnm3a<)sG ziaSb2yf(=>`9P8e`5b>}jY#mx&L_HX<@M{0bZriFu(0XY16OdUnkz!g<2;+%WabM? zG;3il^>Ii*4NT|>_ksMxsmFdrrbIn56@c# zatM?{70WkG(MT-m-R$N=6EKmg@@9VDMw`*HN9>jUJ>N&!xEARGW2UwJ{WygZ)jgUS zdDG$DTHnKq(2}{hLtOUtuZc627ta~Rnzs&Ut_?ujG(^jefcOfK)?cw3k+@o>(|s@C zgk4)xOMGL>lkyvZcb-trpDrSKD?vKw{bfO9M6xsE*Dbe`?q^yT^xg^NjB!ogHFRd0 zyahV5q1xJE_fq@|o(!DPe!2L}eXSH;+e)ctmVftj57srHPJ=OI^e6lCA|LBu1)g}_JHBrr6>!RWTxw)gm>G-)g5Vk78IX(e1r{o(9!%Th5MxckHq64Z3>r>>qWxTfg&{~ z#sA9X$;ym)+Ee_$;7sEIk$QpIp` z1sqWU9;H-D*l4glG@HqT57kDcLiUz9$|OJ8-;AZutO`Na_pX*?1p`MmjJsZTHPTWg zoBaF}|3U<4hFEe8_3IP*#(0XYv}fRDBHFO$@j867icleLa!oZ(=SrVV zg%@(M^9GES9|ll<-uTqj8q;K08Lg)-{sFC_xmO}l$I8n8-!3Wswz?nux_c)g%`*SXVdCf7@tGao(iv8wAS;tJWpv!OKI+S;ktAMP5lL-qvm=!4ZxQ}(gj`UeA=_00(6b&jGXKM6SIq{otVHB5;g6m1IkSul zE6F#i1YYGRl79!IF_Tcl4?hZM(w%dy^48Zf;m%Y}AA(&auAg$5XSd98RSU%y7TcC1 zESdj7D!iqP)9cA37ya^{V5xJsI`2BTU=Jx2L0=4%IhKFf?ZLGUD@&j*;H?flAy=?@ z*m{XCNwtipg4*WSEWW=t0-KQIOFY0?s#VVBZnylS5Ha6X1<#xb3VB0q&^5fbQ~XAm z?Cw^$ECuAT#t(+Wu$+s}Tp0E3II;6{`Em8ny9CTLO;Pc*RMHuRdBEe6tvdi=4tc*` zZS6|lShd=TVkD3MrD%KS14h@ImrCASIdZx^)Vxx-E8BN3|2UQJIn?SA1N9%cO=)A> z%*y=kG1?SH>zl8n3z`_iuis^pH`FS1zYYMRQmqRjPYulr#c>OwmL0~OqHXutkPO2V z$?k3)%*(HfU>+v{9LceX8(JMcSQdsB%7lgxStrvTBB(rFPmQfN)yGW=#$Ylptq*yJ zZdgV4%VQjKNl4QL^mxLzViv~E-Svh;q9hwio}(OUxgg%-I#fr$36;)~tjV{^m_Ivi zVYx5!33plUpCf82t}L_@R+w6_&WO05&G9)1Rz5}uZPmlWcu&kMxiiO_%b9)&%d;S{ zfU!W`y4TVt0HHv6~UY*mtqh4bi`p5OV zY-(OAcu_l;_WH?fd;ShO00jrSd{o}KeMgjwKfFsM+x+X;# zmGAytdaPrc($g<_NJcOzf*va>FOGq)Na9U9q08f=r(yXwDQGk%4b}FU3CwTO$};LW zw<<5C3w8M50R*azsP46&g>}SV<5@F+3HklL?SJ$U-(Yn;FBM69OmfiNZ93JbW}>gF7CLiLWyH5SG8bBTicc103l`Uziv{o{SmthX&8<&IEVr z)BLsU_;H@hK-^S84crv5Yc$Sf5_`kBgqu)*=)LNNPJPQ$rfxNU5G^NDT)4Pc@mY^X z;lNvV$8g8t6(8s4;2EL4p`#?mDf1UuOzzn)rci5zq(?@)E7rvV6*>yG{t1N{N8VE+ z+fMzucpI+V`j8U4g9;e6sa$_EOX`FzJ;nPV(CW7d<_ ze3-bOROX0ob{x60h39a8S>%(ligx&>$N&xdN0H1#FtiP>^_zX7sy|Ht%`I(l>d z@4H=Y(w5fmhQL)`DH(_irAl(4vC$06flu=z$;K_E<+^8kH!;c#*3Fj4pOuyU1Ehka zWTb^oi`(U+<7XWopKZk|3)nzjHSTm6RMCv23%&MAhuv5wI(!tI9ZqNv_xUBv_^sNi z#rDMqOP;_LE4}~NUB2aKwcZY_=)stJFiw2um^NNmkuwE+?C@JquBQ~y8}bn=Z>F(J zf{K|EFSUj@D`x<~fImmf^r>{ZRNf6j4+Fy@+8$U4p)+SS4v%cVanT_ouwOU z^U4)HJaQ7Z>wZQ{|Fnvh_Kc~^ACVg z)U14J)62Acjcpor<xK71l^hAv=Pq@XcLG)8p7|X-69MH~`#B5a=aBx# z)nj${&#Ns*S&Cflx-#Ie3=Ab>(v>y2fThZ>YV)B%l~?Me!fK9+%snQQdLImD%uC;y zrKub^RsImLxso`)c?~5dbKx!T6)ya!CrdG5%CNipFg8w5a2EFcO#b) zny~$xqf*Y>nD+LHG$sTG?B+})xDLbTmR^Uy>_hCC_9Pgd3Z1Ym;Tq3&G0irH+r3d`ChvOXrmjI{@ZvC!aaaS~l1GhRjyzRu&ELUOJ5ifBV+YtHNzJI9+8o~rz;VW5g z7Xv6;2ef8cO9`Q ziKkVNKtETRR7T6&qAz!j9yS_6QPCqRo=_zy0RAc$uEJkGmc9+k6l3bPFk=muH6=Uz zOn!OGu}-Y|6k2AK%l7zU+V>|q;+)T)&0|jA)Mo?98S>siCKK=6i7*qV{9Q`npXAT~ zDj@gSi#MTbdC2gzlgvbvGE+Qtm~3@4OSvtV0_RPuAXjSnO)LESVW&oXnJls1V>pEDH0h_E`R6%?^?dSgWdetZ~8e zQnQeYO|sR8SJ3QQjq&cbf30`dISEa)#4)vZr(UMGdM@?$>WqZA+T$d#If+yrxKC=6 zp}JM9mF~9=F{M!12!~kk6lR7oH0ndJOQh3W@!}oCZb(Z@vjc+3KP2$W73+eD_Z>7J z%P=PCpm(X~N9vSE%t7culM5#-hK_I599N{7tiV}G|5jyqV;45^s!7m`Sr16MoR38Z z_Z;2arKbUNg71P!9h#=#1tX-C+hsL04;N6g8PqS|c0A8t?6_q2mt%T$b{?dd0$Mox zxau>x8lH)F{S;F;Nv~FhQTG)DD_;qxcu@485#Miqu8S6%V=Ps(d|&&FA@+m-sn7$x z1Jg_**_o}4dr()2*Uz9Pcj8`IbU98u{;n*z5vDz{yHeT|5+1966R)Ew#n=37+7Rl} zf+a!l-_ggS!z^-XW&|4IWt;n=zpGDg6c#aqwlu~Ll6kYi4vSiyCyijifN*6`oLXxy zf0UNoaXfFVjQ4y+^l4x`W|;Qz16c(8_tkLhV1Q>#myngGOP5{huYYlTchHBmd6-kiSMeq3JE<8q=%2 z134~6K-AO_%%BC8hrVRnYtXEGBlBjC#-<DZtO&oDJ;S0MJ+eQ zNsyxdrk!l1!`$kcQx!Lar{v(j0)_KFih6r@0V$g8v$qGY7q>c{k5BbXwaFlVdO2WT z&&d)EDRn=cPTd-kGQx3ftA(Qp);sU*?_;BJ>V2<^vDFS6>Jts8)o$v?>y1ZKRMVIC z_)OLg`n@0UzN&HI2X&4+3;JUYd%EVR{+yvTVacv1^`E|;i6hE*ziKjyd^`Oz6+xO( zn2GgoSIv!ZDe^6q^=bfXhIS#u`O@+fR@h!rpDw=1A|`j?)f)OHVlZ+QRA^)N@BaM7 z-;mIzmvs~_gg_l9>XC_Jfy&4S_f5(v0gP7i;=P72Hnpf`&=DZr`3JlYY#@I(De`x* zSMJ_4^9~s!o*Z(@@rzvN``6FAa7eT}zD5i?%evMoe#>_lb4=in%yokq@8;t@;6{_+ ziM03q$xn_omDNm4Nfbadn`_|V2F^LVePjw}`xG=@;!JQ;NOLzbhR!OV8!&$RjWLoEq5Mw819^2I2 zY_DwA8NS{-AHF!JaEu7>u8)y9lJ4G%bBFu7JmV)lRFAGg8u1M3BU1NMd!(TE3J99Y z7m4e3>bP29L1N&E8>B=BZ$`XY#4OKFi#W%nv$~ubE70$o^Rq6n>p~fLl*dph6yeVZ z5Kk^}U8wr|)Wt4{+h&8XhmKO>gFV?y3>nYu#YRci)_uk}`S)r+OdAf1cRN%dY8*>l zU+|TJHdad49i6kRJ=DZ5m;W|DL8Z9KSR6N++08xx7U!-$g%c(e^xZUew7|hHO)so( zYkne(@2I)sN@>yTSS%uy)KtM<+cH+#HQ$;o0Nq|q7T}`K1!jwo5QGT z5IM-gMwb%suxWNkLhJSypjZ7(XCzV(?Dn>a>uAG04+9W)zq4;jNft@A9}6d_~pUYonM%Ofn4bnPiTfKCV0(KkB}TSvketp~C#&9t}ZUH;}nG zps&v-%Md>PTwI>P4V2;CR}KV1E_9<=)S-Tc@7J_W;=;u*KHu&&ArxVkZv_E@xYfrt z3D4=Hh-UDJ`>!st*;{zF`dwE33Ab*;&`N1I;mHWKW-{UH+kQ(?Rt z9??3V^@3zE`qHzG%Yi4}2pt!!(;nzmwLqnMGK@%TgNj*%a#--W6QJIZZ1DzgQ zFJ#Fy-Fk4#!9~TvJ>pYmjmFS`+A|W-89VNTMhBy@r8Z3iLq3lRczh)#zhS#F!X)KMn%M7Lc>a%%G+c= zufT?_PM@;QepVqWx;L%&05vS{SQn#%9VJ?XUJOJ0oF$q>b3o6<7f-s`XK1_0GL7Vt zeP&ydo~F^kBs0EYat_PMAbT>LZ-C^(_z1-lAEA(>w@Jb3UgV66%ZRGkDfZ*dGD0#T z*aks0e&R$htdPu`a%Y)&F^Zc)W0J;5igJxI|AUazzSCaHhD`-aAVZ7~Q$Lj(Pv9&? z#QTWYY}Cq09(X`_SY@%yjl`f!Ssh<7ShAU=C+gSyUlE~|Oz0Z5R7MrO>74RZT|D%s z=C5`fw%E;ghN%k@Sz=?Qt<;}~>(YstD%&rtDz#HO3^n^hM`#X^w>KNXubYu4IwodyM%21f<}uAo zMJ9Yjb9@^&CXip17DGy-yVes|V$(XgD}k@7eK6mEga-9y97XvZ{7bWm00aEFe{Ou$ z6D(y4>pou7Vil0W_>U>IK(XL9&yQhy;^25(moqX8}v#F(+e!RFnE2rZBsg zqUVY$+yeT8>-60-!7INL8XdQI7Z7Ww|)oKM(*$>G2bmw0M@uf z+o4HpF3+abcc>YpFyj$}d+S)Fr+4m;yK=H<2V-fV!5ZiFfk%XbX}26Rvn@;SV#02h zQ{B6A@vw#7I5ry9+n#!Tj#_={zpL0pg}>>T?7c|2{s}jKG11Wsuhj!oel-V0(Sm-Z z)uE;89ExCC*o9q8c!4xcK+eB-JY_isqc>pOSDJ*A=ku{WlDk`F+b~doJ3+;UgT88K|GxkXyYri;XKJEm1G!x-9Zzb~)f@0@g=fA)R7_I>twp6By?zTfXY z-{*O^jZbKeI!Bq&>}O9%j7wa8|!n+vpIIlctD#KG%6# z#>Dt6gLA{MB*}SCIFs1pD8{Ver-fUx))pT+I*>Zj3vqQ<^Oys>3P=6(g zf>w)4W08g}IR|tW*V~G(sy>O)SB@66ZWtC!^lt*n59-_Sc>NzOfvVJ5Xlr=HR69auo4cjE?mVki)Ld#srIgdsTO%kdt*DMnVD~-S4(8{= zac{Gd+Xz@Yb>0gm6R9)uDA#nh^Xa9-KfUR1-?T6!&k~2G^_p33RIR@}TW-CSe`i<3 zZXV4BrARu@-)0OH9x3$v0Oy0JKMt)M04bY3_-Ne8@!Ks{00gc!M2C9<5 z+n^3q3b?81(2Ba#;}SEa?sFzTXl}!Rhj2XXb4$ z85O7jbvAYLlz3u>-0)O=ko;GTuKtAL0IM~Rl|HKE z-iqz3VLp`}qgpGNtmt_nT8lwhwR^-i!JuqE=c(z3S1ByiT6o31YiknBc%Fe}<3Uqb zW1MP}&&5 zX|pc69jiE#A+W)!m}I8v1mkDLuT`(W`QcQ&_S`)3T48>+CjXp26{iA%He*3J?u@w+ zIX!N9HSI_3@OAL#q1c9KC|_KE?Mra}%0lE5c-ShgXsuIAiaR#3WJLAlmq%9){wi7J zG`mc?wU!s7V=5ZH-FPqv9+Qb*+iNe;_r)CMe966axR}dAnMHCHd^f)B5K`{c85{rr@%MLK2G#YA=~V3N7JRZ0ALOf`Hhx^rGz^~{v!2bYf2 z`z&2Jo^0EfYq=0V1cmX`j|@i{r(bZiueP?#KGI(V>4Ee?+#40qFpH`z<2!|X$}WMi z2Z;q!UPDn^NczY>Q z_Vs|Ar%Lb33|()}dSzyIxyQJ`#!U8+oSy%P+H`sKy$h>{93FbfQWQ47YH;B67PdQ> zY5S3LSXt-*#WaoM)?lbhyM8kN5bP0G=~-)0r?>|1w-VicGXz;2Uo%Hs=@v5(^4aSK zE_*>|b8{qFv44n5Nc6;iO-+TQ%2FJ?p4L2@{Nr&|rhQ_+3OHGmH!eNNu==qY@8-UnnFx{;5 zQFw3BoA*2#0E$sp1@JH|L!b4qw0&ZxFp>T8RxWc5x~GT4+iY1_psV=jSX9VgWP5HD z6x&9ZHh56Nz%n=ESyU?6LM?^62E5o=%AK#zlcWfIJmwGlJxe5F7p+%UfjepMMgqvP zoa{#PEx1_i9#70Yoi(K?Ax93}V#3IEpSKFk&DkG<5dHL~&tux}S>?R5ehN*eKm|N4 zOWB8X67ku8P7m1Vv`CR&E4;50>#!n4$^#VIo&@ zqpQy5y;cG0*HY*OA>cb2Kv&Oxu1tBuJ5o`qT>;=*{L#+0 z6jd}Zf+I#=o8!W3y?b*2;0k5@^?JlMTH~k$dY6dLy*iCVqR^52cw$E7%?;t`u$zrg zVJSm9QHAwhkAuK%S<(y*PC!oZ?$llXd<}q_XE_5(E_n1d6W%0vbs=XsT21#Q2CTz6o$dcK!_eodW&KFGk0bS3B-h1-LM4Qc~% z1eXQ=27Hv6J>LrXi|Bt`Ng!shu+ggEt$~x&fBFCT+nk;5^JRX?Q+{22iNHhWmGQD3 zeDf>k!7VCMf`DR~-R7(Tt2i_dP(#xVX{@k?*rFN5sNKNVayhexRExgMcN1`MpK&l^ zGJ>htIL^nqQZ$b(Q)~TXD5gLqu-q0%30C-(#xmKSmJ%N44v-cSXc})bVM-H#6H%2C ziTAz`+D5bs5_h zF=1KANii4XWcoYDX&!6dcc<>z{=9DE{rG6arV=rdSqnM;CG_ZFjpNcakeyg33E8|m zH>O`YZ(OIJ;$Y5>bDQaGg`S6<2|lB~-;4_!zBqdl1QJ}xtYW2&|YWw48|hljzB#bjiX`Srs| zAKteoIR{|9zdyA-RghG}tTgdH$24NAK)YiAFp#hhEoY~Fb>#(u7W%ftpfeSk@)3jW z%9!J^$F818V!hhI!g63=ZjC#a&tEnkIl;`0wxq|^Mc{^BK<5EE)VDH{?z`*g%Y{am zXmr%;cIDt1|J^em$;U|F#SaOo79@2jtV7u-ql<_-$)h<`V~cNp#|+!nbYQT|ja~61 za}EmbnBzlThIUvafwZXJO#-(vAN{@% zdyhU)-0yLyj#~x1tQsM(cb-``N6xy{Ftg|w?D0xx9tuXpU=Kql3_ZUOY*FeS(tyWN z4H=jL8F29vEmIrUAHdmZodX;Bdr2F9Iw9C4Q<;O&WzOa5{qe78<=5WQ!=2lOAF57@ z?$yS>IkvIdiTIaU17}aVPj>0x9QaUW6c5fmfVLBy&zbL!ssAplX!I?1`xNe>=eGUs zjDwjtl)}Gq_kRnUCDV^ofuR3`sBVPa6&)htDvEs(b#rbU`MY{M*WEJO$##SRj{g-% z`M1|W-8*?`WvQtmLDoAa&+MsI$=C&hSSF&&9g^huoR`GWR2#J1Yq~sxyD?9bPOzC|3?=i1`p{kz&ICVc* Mn%kOHn|j9m7iEuhvj6}9 literal 0 HcmV?d00001 From e368a793bcd9c5ba5c318f6cab41cde103be025b Mon Sep 17 00:00:00 2001 From: Dave Sargent Date: Mon, 28 Oct 2024 21:20:26 -0700 Subject: [PATCH 05/11] Improve dev conatiner setup instructions and fix images. --- README.md | 27 ++++++++---------- images/reopen-in-container.png | Bin 31541 -> 30772 bytes ...argship-prompt.png => starship-prompt.png} | Bin 3 files changed, 12 insertions(+), 15 deletions(-) rename images/{stargship-prompt.png => starship-prompt.png} (100%) diff --git a/README.md b/README.md index 4defcf6..343a63c 100644 --- a/README.md +++ b/README.md @@ -16,9 +16,8 @@ A Go Dev Container using `mise` to install Go and other convenient tools. - [Utilities](#utilities) - [Using `mise` to Manage Go Versions](#using-mise-to-manage-go-versions) - [Included `.devcontainer` Config](#included-devcontainer-config) -- [Initial Dev Container and Project Setup](#initial-dev-container-and-project-setup) - - [`dev.sh`](#devsh) - [Dev Container Setup](#dev-container-setup) + - [`dev.sh`](#devsh) - [Starship](#starship) - [Initial Worksation Setup](#initial-worksation-setup) - [WSL](#wsl) @@ -68,9 +67,16 @@ Do the following to use this implementation. - `cspell.json`: The cspell config for spell checking in your project, edit to add any specific words that your project needs. - `dev.sh`: This file helps launch and exec into the dev container. This file needs some modification to use in your repository. See [Initial Dev Container and Project Setup](#initial-dev-container-and-project-setup) for instructions. -## Initial Dev Container and Project Setup +### Dev Container Setup + +Once you've followed the above instructions and have copied the needed files to your project, perform the following actions to configure them. + +Edit the `devcontainer.json` file to make the following changes. -The following contains initial project setup. +- Change `name` from `go-dev-container` to the name of your project. +- Change `--name` in `runargs` from `go-dev-container` to the name of your project. +- Change `source=go-dev-container-bashhistory` to `source=-bashhistory` +- Change `source=go-dev-container-plugins` to `source=-plugins` ### `dev.sh` @@ -80,25 +86,16 @@ This script is used to more easily start Visual Studio code and hop into the Dev - Change `project_name` to match the name of the repository. Example: If your root project repository is called `my-go-project` then set `project_name` to `my-go-project` To use the `./dev.sh` script, simply run it, then when VS Code opens, there should be a prompt at the bottom right of the editor saying "Folder contains a Dev Container . . .". Click the "Reopen in Container" button and VS Code will open the dev container and attach to it. -![Reopen in Container](images/reopen-in-container.png) +Reopen in Container > **NOTE:** If you have not opened the dev container before or if it has been updated it will download the container from Github, which can take a while. -### Dev Container Setup - -Edit the `devcontainer.json` file to make the following changes. - -- Change `name` from `go-dev-container` to the name of your project. -- Change `--name` in `runargs` from `go-dev-container` to the name of your project. -- Change `source=go-dev-container-bashhistory` to `source=-bashhistory` -- Change `source=go-dev-container-plugins` to `source=-plugins` - ## Starship Starship is a custom Power Line command prompt we include. ![Starship Prompt](images/starship-prompt.png) -For Starship to function properly you need one of the [Nerd Font](https://www.nerdfonts.com/) installed from [Nerd Fonts Downloads](https://www.nerdfonts.com/font-downloads). +For Starship to function properly you need a [Nerd Font](https://www.nerdfonts.com/) installed from [Nerd Fonts Downloads](https://www.nerdfonts.com/font-downloads). See [Initial Worksation Setup](#initial-worksation-setup) for instructions on downloading and installing the fonts. diff --git a/images/reopen-in-container.png b/images/reopen-in-container.png index 908634476063f8688e8602ac63ef598f2f201f6c..231b27ed8c6d401c72616c51e8e1024d5b250eaa 100644 GIT binary patch literal 30772 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⪙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 z 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 literal 31541 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%0Dr@RZy9Qun1(c+1Yg}A)W{ey>E#O4^ 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 SMOj^=y-`$GsCi`;`hNf$#nLMP diff --git a/images/stargship-prompt.png b/images/starship-prompt.png similarity index 100% rename from images/stargship-prompt.png rename to images/starship-prompt.png From 41224f456b502c662c214b9014fbff8b04a50708 Mon Sep 17 00:00:00 2001 From: Dave Sargent Date: Mon, 28 Oct 2024 21:26:56 -0700 Subject: [PATCH 06/11] Improve docs for dev.sh in README.md --- README.md | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 343a63c..b4a8de5 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ A Go Dev Container using `mise` to install Go and other convenient tools. `mise` can then be used to install various other Go versions as needed. -- [Tools Included](#tools-included) +- [Included Tools](#included-tools) - [Go](#go) - [Utilities](#utilities) - [Using `mise` to Manage Go Versions](#using-mise-to-manage-go-versions) @@ -28,7 +28,7 @@ A Go Dev Container using `mise` to install Go and other convenient tools. - [Author](#author) -## Tools Included +## Included Tools See the base `mise` config file at `home/vscode/.config/mise/config.toml` for all tools and versions. @@ -63,9 +63,9 @@ Do the following to use this implementation. 1. Clone down the repository. 1. Copy the `.devcontainer` directory to your project. Note: you should not already have a `.devcontainer` directory or things could get weird. 1. Copy the following files to the root of your project. All of these are optional but encouraged. - - `.mise.toml`: The config file for manageing specific versions of tooling you need for your Go project. - - `cspell.json`: The cspell config for spell checking in your project, edit to add any specific words that your project needs. - - `dev.sh`: This file helps launch and exec into the dev container. This file needs some modification to use in your repository. See [Initial Dev Container and Project Setup](#initial-dev-container-and-project-setup) for instructions. + - `.mise.toml`: The config file for manageing specific versions of tooling you need for your Go project. + - `cspell.json`: The cspell config for spell checking in your project, edit to add any specific words that your project needs. + - `dev.sh`: Helps launch VSCode and exec into the dev container. This file needs some modification to use in your repository. See [dev.sh](#devsh) for instructions. ### Dev Container Setup @@ -80,7 +80,9 @@ Edit the `devcontainer.json` file to make the following changes. ### `dev.sh` -This script is used to more easily start Visual Studio code and hop into the Dev Container from the terminal that it is ran from. +This script is used to easily start VSCode and exec into the Dev Container from the terminal that it is ran from. This frees the developer from having to use the VSCode integrated terminal. + +You can run `dev.sh` in multiple terminals once VSCode is running and the container has started to easily exec into it. - Open the `dev.sh` file and set a `docker_exec_command` if desired, this is optional but if this repo is used a lot, it is a nice to have. This will create a command in the users `.bashrc` and `.zshrc` to quickly exec into this running dev container. - Change `project_name` to match the name of the repository. Example: If your root project repository is called `my-go-project` then set `project_name` to `my-go-project` From 7e76c4c6caa4b86b45748939c923461090c6e529 Mon Sep 17 00:00:00 2001 From: Dave Sargent Date: Mon, 28 Oct 2024 21:46:04 -0700 Subject: [PATCH 07/11] More README.md improvements --- README.md | 34 ++++++++++++++++++++++++---------- 1 file changed, 24 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index b4a8de5..197c5fb 100644 --- a/README.md +++ b/README.md @@ -20,10 +20,11 @@ A Go Dev Container using `mise` to install Go and other convenient tools. - [`dev.sh`](#devsh) - [Starship](#starship) - [Initial Worksation Setup](#initial-worksation-setup) - - [WSL](#wsl) + - [WSL on Windows](#wsl-on-windows) - [Windows Font Install](#windows-font-install) - [Windows Terminal Font Setup](#windows-terminal-font-setup) - - [Visual Studio Code Font Setup](#visual-studio-code-font-setup) + - [Linux Font Install](#linux-font-install) + - [Visual Studio Code Font Setup](#visual-studio-code-font-setup) - [Contributions](#contributions) - [Author](#author) @@ -57,19 +58,22 @@ See the base `mise` config file at `home/vscode/.config/mise/config.toml` for al ## Included `.devcontainer` Config -This project not only builds the dev container into the provided Docker container it also includes an example implemantion in the `.devcontainer` directory. -Do the following to use this implementation. +This repository not only builds a Go dev container into a Docker container it also includes example usage in the `.devcontainer` directory. + +Do the following to use this example. 1. Clone down the repository. -1. Copy the `.devcontainer` directory to your project. Note: you should not already have a `.devcontainer` directory or things could get weird. -1. Copy the following files to the root of your project. All of these are optional but encouraged. +2. Ensure your target project does not already have a `.devcontainer` directory. If it does, you will either need to rename it for testing or delete it. +3. Copy the `.devcontainer` directory to your project. +4. Copy the following files to the root of your project. + These are optional but encouraged. - `.mise.toml`: The config file for manageing specific versions of tooling you need for your Go project. - `cspell.json`: The cspell config for spell checking in your project, edit to add any specific words that your project needs. - `dev.sh`: Helps launch VSCode and exec into the dev container. This file needs some modification to use in your repository. See [dev.sh](#devsh) for instructions. ### Dev Container Setup -Once you've followed the above instructions and have copied the needed files to your project, perform the following actions to configure them. +Once you've followed the above instructions to copy the needed files to your project, perform the following to configure them. Edit the `devcontainer.json` file to make the following changes. @@ -78,6 +82,8 @@ Edit the `devcontainer.json` file to make the following changes. - Change `source=go-dev-container-bashhistory` to `source=-bashhistory` - Change `source=go-dev-container-plugins` to `source=-plugins` +> **NOTE:** You may be tempted to find and replace `go-dev-container` with the name of your project, however the `image` for the container is called `go-dev-container` so that would break things. If you want to do a controlled replacement you can, just be careful not to replace that one line. + ### `dev.sh` This script is used to easily start VSCode and exec into the Dev Container from the terminal that it is ran from. This frees the developer from having to use the VSCode integrated terminal. @@ -88,7 +94,9 @@ You can run `dev.sh` in multiple terminals once VSCode is running and the contai - Change `project_name` to match the name of the repository. Example: If your root project repository is called `my-go-project` then set `project_name` to `my-go-project` To use the `./dev.sh` script, simply run it, then when VS Code opens, there should be a prompt at the bottom right of the editor saying "Folder contains a Dev Container . . .". Click the "Reopen in Container" button and VS Code will open the dev container and attach to it. + Reopen in Container + > **NOTE:** If you have not opened the dev container before or if it has been updated it will download the container from Github, which can take a while. ## Starship @@ -106,7 +114,7 @@ See [Initial Worksation Setup](#initial-worksation-setup) for instructions on do Instructions to set up your worksation. For more information on Dev Containers check out the [official docs](https://code.visualstudio.com/docs/devcontainers/containers). -### WSL +### WSL on Windows 1. If you will be building Docker containers in Windows, then install Docker Desktop for Windows following [Docker's instructions](https://docs.docker.com/desktop/install/windows-install/). If you do not need Docker for Windows support then you can [directly install Docker inside of Ubuntu](https://docs.docker.com/engine/install/ubuntu/) **AFTER** you install WSL and Ubuntu in the following steps. 1. Install VS Code from the [Visual Studio Code website](https://code.visualstudio.com/download) or from the Microsoft Store. @@ -131,13 +139,19 @@ Download your chosen font and [install it in Windows](https://support.microsoft. 1. Under `Additional Settings` select `Appearance` 1. Under `Font Face` select the name of the font you downloaded, for example if you chose the "Firacode Nerd Font" then you'd choose `Firacode NF` You may need to check `Show all items` or restart Windows Terminal to see the new fonts. -#### Visual Studio Code Font Setup +### Linux Font Install + +See [How to Install New (or Nerd) Fonts on Linux (Ultimate Guide)](https://linuxtldr.com/install-fonts-on-linux/) for instructions. + +### Visual Studio Code Font Setup + +The fonts must be installed in your operating system to be used in VSCode. If you are running VSCode on Windows and using it in Linux inside of WSL you would still install the fonts in Windows. 1. Select `File` --> `Preferences` --> `Settings` 1. Expand `Text Editor` --> select `Font` 1. In the `Font Family` text box paste the following: -> **NOTE:** This assumes you chose "FiraCode NF", if not, replace the first font name with the name of the font you installed in Windows. + > **NOTE:** This assumes you chose "FiraCode NF", if not, replace the first font name with the name of the font you installed in Windows. ``` 'FiraCode NF', 'CaskaydiaCove NF', Consolas, 'Courier New', monospace From 118302107f11a570582e588c47bd4c1d4e6eb7b9 Mon Sep 17 00:00:00 2001 From: Dave Sargent Date: Mon, 28 Oct 2024 22:47:02 -0700 Subject: [PATCH 08/11] Add an install.sh file to make installing the .devcontainer and other files easier for end users. --- README.md | 14 +++++++++--- install.sh | 66 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 77 insertions(+), 3 deletions(-) create mode 100755 install.sh diff --git a/README.md b/README.md index 197c5fb..22a59b4 100644 --- a/README.md +++ b/README.md @@ -54,15 +54,18 @@ See the base `mise` config file at `home/vscode/.config/mise/config.toml` for al 1. Copy the `.mise.toml` file from the root of this repo to your project's root and modify it as needed. 1. The provided `.devcontainer` will automatically call `mise install` to install the custom versions of the applications. -1. After the container is started and you shell into it `mise` will automatically install the versions listed in the `.mise.toml` file. +1. After the container is started and you exec into it, `mise` will automatically install the app versions listed in the `.mise.toml` file. +1. Other applications can also be installed by editing the `.mise.toml` file. + Run `mise help` for examples. ## Included `.devcontainer` Config -This repository not only builds a Go dev container into a Docker container it also includes example usage in the `.devcontainer` directory. +This repository also includes an example on how to use the built Go dev container. Do the following to use this example. -1. Clone down the repository. +1. Clone down the repository. + `git clone https://github.com/sarg3nt/go-dev-container.git` 2. Ensure your target project does not already have a `.devcontainer` directory. If it does, you will either need to rename it for testing or delete it. 3. Copy the `.devcontainer` directory to your project. 4. Copy the following files to the root of your project. @@ -71,6 +74,11 @@ Do the following to use this example. - `cspell.json`: The cspell config for spell checking in your project, edit to add any specific words that your project needs. - `dev.sh`: Helps launch VSCode and exec into the dev container. This file needs some modification to use in your repository. See [dev.sh](#devsh) for instructions. +We've included an `install.sh` script to automate the process of copying the above files into your project directory. +The script must be ran from the root of the `go-dev-container` project. +Example: +`./install.sh ~/src/my-go-project` + ### Dev Container Setup Once you've followed the above instructions to copy the needed files to your project, perform the following to configure them. diff --git a/install.sh b/install.sh new file mode 100755 index 0000000..e1ebf14 --- /dev/null +++ b/install.sh @@ -0,0 +1,66 @@ +#!/bin/bash +# +# This script will start the dev container and open an interactive prompt into it. +# + +set -euo pipefail +IFS=$'\n\t' + +# Check if user is using Docker Deskop for Windows or the native Docker Engine. +main() { + # shellcheck source=/dev/null + if [[ ! -f "usr/bin/lib/sh/colors.sh" ]]; then + echo "You do not appear to be in the go-dev-container project directory." + echo "This script must be ran from the root of the go-dev-container project directory." + exit 1 + fi + source "usr/bin/lib/sh/colors.sh" + + local project_path="" + project_path="${1-}" + if [[ -z "${project_path}" ]]; then + echo -e "${RED}The path to your project was not passed in and is required.${NC}" + echo -e "${CYAN}Usage:${NC} $0 " + exit 1 + fi + + # Remove trailing slash from project_path if it exists + project_path="${project_path%/}" + + if [[ ! -d "${project_path}" ]]; then + echo -e "${RED}The path to your project does not exist.${NC}" + exit 1 + fi + + echo -e "${BLUE}This script will copy the following directories and files into${NC} ${project_path}" + echo -e " .devcontainer" + echo -e " .mise.toml" + echo -e " cspell.json" + echo -e " dev.sh" + read -r -p "$(echo -e "${CYAN}Do you wish to continue? (y/n): ${NC}")" response + if [[ "$response" != "y" ]]; then + echo -e "${RED}Aborting.${NC}" + exit 1 + fi + echo "" + + echo -e "${BLUE}Copying files to ${project_path}${NC}" + + echo -e " ${GREEN}Copying${NC} .devcontainer ${GREEN}directory${NC}" + cp -r ".devcontainer" "${project_path}/" + echo -e " ${GREEN}Copying${NC} .mise.toml" + cp ".mise.toml" "${project_path}/" + echo -e " ${GREEN}Copying${NC} cspell.json" + cp "cspell.json" "${project_path}/" + echo -e " ${GREEN}Copying${NC} dev.sh" + cp "dev.sh" "${project_path}/" + + echo "" + echo -e "${CYAN}You must now update the values in the${NC} ${project_path}/.devcontainer/devcontainer.json ${CYAN}and${NC} ${project_path}/dev.sh ${CYAN}files.${NC}" + echo -e "${CYAN}See${NC} README.md ${CYAN}for instructions.${NC}" + +} + +if ! (return 0 2>/dev/null); then + (main "$@") +fi From c0af123e1621912ecf422745a80a4b8d8f0a38e4 Mon Sep 17 00:00:00 2001 From: Dave Sargent Date: Mon, 28 Oct 2024 22:50:36 -0700 Subject: [PATCH 09/11] Update some examples. --- README.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 22a59b4..eafdafc 100644 --- a/README.md +++ b/README.md @@ -75,9 +75,10 @@ Do the following to use this example. - `dev.sh`: Helps launch VSCode and exec into the dev container. This file needs some modification to use in your repository. See [dev.sh](#devsh) for instructions. We've included an `install.sh` script to automate the process of copying the above files into your project directory. + The script must be ran from the root of the `go-dev-container` project. -Example: -`./install.sh ~/src/my-go-project` + +**Example:** `./install.sh ~/src/my-go-project` ### Dev Container Setup @@ -99,7 +100,8 @@ This script is used to easily start VSCode and exec into the Dev Container from You can run `dev.sh` in multiple terminals once VSCode is running and the container has started to easily exec into it. - Open the `dev.sh` file and set a `docker_exec_command` if desired, this is optional but if this repo is used a lot, it is a nice to have. This will create a command in the users `.bashrc` and `.zshrc` to quickly exec into this running dev container. -- Change `project_name` to match the name of the repository. Example: If your root project repository is called `my-go-project` then set `project_name` to `my-go-project` +- Change `project_name` to match the name of the repository. + **Example:** If your root project repository is called `my-go-project` then set `project_name` to `my-go-project` To use the `./dev.sh` script, simply run it, then when VS Code opens, there should be a prompt at the bottom right of the editor saying "Folder contains a Dev Container . . .". Click the "Reopen in Container" button and VS Code will open the dev container and attach to it. From 4cfd63f4b7990e860b03677870a22d844d8ce074 Mon Sep 17 00:00:00 2001 From: Dave Sargent Date: Mon, 28 Oct 2024 22:54:38 -0700 Subject: [PATCH 10/11] Fix contributers section in README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index eafdafc..380f868 100644 --- a/README.md +++ b/README.md @@ -169,7 +169,7 @@ The fonts must be installed in your operating system to be used in VSCode. If y ## Contributions -If you would like to contribute to this projects, please, open a PR via GitHub. Thanks. +Contributions are welcome via the standard Github Fork --> PR process. ## Author From 9674c68e9ff40851026e0feebcbcb09d0c5a2765 Mon Sep 17 00:00:00 2001 From: Dave Sargent Date: Tue, 29 Oct 2024 08:49:14 -0700 Subject: [PATCH 11/11] Fix PR issues Add instructions as to where the dev container is stored and how to use it. --- README.md | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 380f868..ac67c25 100644 --- a/README.md +++ b/README.md @@ -11,6 +11,7 @@ A Go Dev Container using `mise` to install Go and other convenient tools. `mise` can then be used to install various other Go versions as needed. +- [Using the Go Dev Container](#using-the-go-dev-container) - [Included Tools](#included-tools) - [Go](#go) - [Utilities](#utilities) @@ -19,7 +20,7 @@ A Go Dev Container using `mise` to install Go and other convenient tools. - [Dev Container Setup](#dev-container-setup) - [`dev.sh`](#devsh) - [Starship](#starship) -- [Initial Worksation Setup](#initial-worksation-setup) +- [Initial Workstation Setup](#initial-workstation-setup) - [WSL on Windows](#wsl-on-windows) - [Windows Font Install](#windows-font-install) - [Windows Terminal Font Setup](#windows-terminal-font-setup) @@ -29,6 +30,12 @@ A Go Dev Container using `mise` to install Go and other convenient tools. - [Author](#author) +## Using the Go Dev Container + +The container is stored in the [Github Container Registry](https://github.com/sarg3nt/go-dev-container/pkgs/container/go-dev-container). + +You can use the container in your own dev container config or use the [included one](#included-devcontainer-config). + ## Included Tools See the base `mise` config file at `home/vscode/.config/mise/config.toml` for all tools and versions. @@ -70,7 +77,7 @@ Do the following to use this example. 3. Copy the `.devcontainer` directory to your project. 4. Copy the following files to the root of your project. These are optional but encouraged. - - `.mise.toml`: The config file for manageing specific versions of tooling you need for your Go project. + - `.mise.toml`: The config file for managing specific versions of tooling you need for your Go project. - `cspell.json`: The cspell config for spell checking in your project, edit to add any specific words that your project needs. - `dev.sh`: Helps launch VSCode and exec into the dev container. This file needs some modification to use in your repository. See [dev.sh](#devsh) for instructions. @@ -117,11 +124,11 @@ Starship is a custom Power Line command prompt we include. For Starship to function properly you need a [Nerd Font](https://www.nerdfonts.com/) installed from [Nerd Fonts Downloads](https://www.nerdfonts.com/font-downloads). -See [Initial Worksation Setup](#initial-worksation-setup) for instructions on downloading and installing the fonts. +See [Initial Workstation Setup](#initial-workstation-setup) for instructions on downloading and installing the fonts. -## Initial Worksation Setup +## Initial Workstation Setup -Instructions to set up your worksation. +Instructions to set up your workstation. For more information on Dev Containers check out the [official docs](https://code.visualstudio.com/docs/devcontainers/containers). ### WSL on Windows