tdiary-io-mongodb 5.1.0 → 5.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e238fc1411ee9e6c2799b957680df12df93b21e615d7cd1b6710a923fc94946a
4
- data.tar.gz: bf84b576fdfca7607fda1f7b9b554f40f2ca3193c2e96590a1175bab348c5887
3
+ metadata.gz: 8e5fd6061a24098db620d9429d7196d5bda51b7570b24b801bb8df95065f2241
4
+ data.tar.gz: '098ffdd8da60f6bd146defa7813445605a03ed3b6ab61e13d37d380678b5ec33'
5
5
  SHA512:
6
- metadata.gz: d39177a691525bf37a60c4f0bec0673db8c24487d9d7cd9ab6081f206ddbf4a1b478ab67601fc7fead882950c724644b90ddd87e526e867f9b65e1329812fb24
7
- data.tar.gz: 95d8171ea0a0094f2b468e3dd10634a77b948609a7bd7aea98f26925e0440cca9c37fc8d318ef1702fcb8aabb1715352d022b9062c37a7ffd868721ec6ad4592
6
+ metadata.gz: 3d38d2e0032323f9d02b1afa5553dde1195c200e52d4a4780339e8e5e3644ba4666bea9638c617f1546f57e9e93cc9f1b4b9d11b08af524d0483ee520a46b262
7
+ data.tar.gz: 24f85a2a63b9eeba10d98bb46127a3b61495a516a66cdf76238b7e454c45ac2e238e6f124ee4c845a728fb4685c87db2a129579f6620c249fe89aa7a88b9b828
@@ -0,0 +1,20 @@
1
+ # See here for image contents: https://github.com/microsoft/vscode-dev-containers/tree/v0.166.1/containers/ruby/.devcontainer/base.Dockerfile
2
+
3
+ # [Choice] Ruby version: 3, 3.0, 2, 2.7, 2.6, 2.5
4
+ ARG VARIANT="3"
5
+ FROM mcr.microsoft.com/vscode/devcontainers/ruby:0-${VARIANT}
6
+
7
+ # [Option] Install Node.js
8
+ ARG INSTALL_NODE="true"
9
+ ARG NODE_VERSION="lts/*"
10
+ RUN if [ "${INSTALL_NODE}" = "true" ]; then su vscode -c "umask 0002 && . /usr/local/share/nvm/nvm.sh && nvm install ${NODE_VERSION} 2>&1"; fi
11
+
12
+ # [Optional] Uncomment this section to install additional OS packages.
13
+ # RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \
14
+ # && apt-get -y install --no-install-recommends <your-package-list-here>
15
+
16
+ # [Optional] Uncomment this line to install additional gems.
17
+ # RUN gem install <your-gem-names-here>
18
+
19
+ # [Optional] Uncomment this line to install global node packages.
20
+ # RUN su vscode -c "source /usr/local/share/nvm/nvm.sh && npm install -g <your-package-here>" 2>&1
@@ -0,0 +1,32 @@
1
+ // For format details, see https://aka.ms/devcontainer.json. For config options, see the README at:
2
+ // https://github.com/microsoft/vscode-dev-containers/tree/v0.154.2/containers/docker-from-docker-compose
3
+ {
4
+ "name": "MongoDB IO for tDiary",
5
+ "dockerComposeFile": "docker-compose.yml",
6
+ "service": "app",
7
+ "workspaceFolder": "/workspace",
8
+
9
+ // Use this environment variable if you need to bind mount your local source code into a new container.
10
+ "remoteEnv": {
11
+ "LOCAL_WORKSPACE_FOLDER": "${localWorkspaceFolder}"
12
+ },
13
+
14
+ // Set *default* container specific settings.json values on container create.
15
+ "settings": {
16
+ },
17
+
18
+ // Add the IDs of extensions you want installed when the container is created.
19
+ "extensions": [
20
+ "ms-azuretools.vscode-docker",
21
+ "github.vscode-pull-request-github"
22
+ ],
23
+
24
+ // Use 'forwardPorts' to make a list of ports inside the container available locally.
25
+ // "forwardPorts": [],
26
+
27
+ // Use 'postCreateCommand' to run commands after the container is created.
28
+ // "postCreateCommand": "docker --version",
29
+
30
+ // Comment out connect as root instead. More info: https://aka.ms/vscode-remote/containers/non-root.
31
+ "remoteUser": "vscode"
32
+ }
@@ -0,0 +1,39 @@
1
+ version: '3'
2
+
3
+ services:
4
+ app:
5
+ build:
6
+ context: .
7
+ dockerfile: Dockerfile
8
+ args:
9
+ # On Linux, you may need to update USER_UID and USER_GID below if not your local UID is not 1000.
10
+ USER_UID: 1000
11
+ USER_GID: 1000
12
+ INSTALL_NODE: "false"
13
+ environment:
14
+ - MONGODB_URI=mongodb://mongodb:27017/tdiary_test
15
+ volumes:
16
+ # Forwards the local Docker socket to the container.
17
+ - /var/run/docker.sock:/var/run/docker-host.sock
18
+ # Update this to wherever you want VS Code to mount the folder of your project
19
+ - ..:/workspaces/mongodb:cached
20
+
21
+ # Overrides default command so things don't shut down after the process ends.
22
+ # entrypoint: /usr/local/share/docker-init.sh
23
+ command: sleep infinity
24
+
25
+ # Uncomment the next four lines if you will use a ptrace-based debuggers like C++, Go, and Rust.
26
+ # cap_add:
27
+ # - SYS_PTRACE
28
+ # security_opt:
29
+ # - seccomp:unconfined
30
+
31
+ # Uncomment the next line to use a non-root user for all processes.
32
+ # user: vscode
33
+
34
+ # Use "forwardPorts" in **devcontainer.json** to forward an app port locally.
35
+ # (Adding the "ports" property to this file will not forward from a Codespace.)
36
+ mongodb:
37
+ image: mongo:4.4
38
+ ports:
39
+ - 27017:27017
@@ -0,0 +1,340 @@
1
+ #!/usr/bin/env bash
2
+ #-------------------------------------------------------------------------------------------------------------
3
+ # Copyright (c) Microsoft Corporation. All rights reserved.
4
+ # Licensed under the MIT License. See https://go.microsoft.com/fwlink/?linkid=2090316 for license information.
5
+ #-------------------------------------------------------------------------------------------------------------
6
+ #
7
+ # Docs: https://github.com/microsoft/vscode-dev-containers/blob/master/script-library/docs/common.md
8
+ #
9
+ # Syntax: ./common-debian.sh [install zsh flag] [username] [user UID] [user GID] [upgrade packages flag] [install Oh My *! flag]
10
+
11
+ INSTALL_ZSH=${1:-"true"}
12
+ USERNAME=${2:-"automatic"}
13
+ USER_UID=${3:-"automatic"}
14
+ USER_GID=${4:-"automatic"}
15
+ UPGRADE_PACKAGES=${5:-"true"}
16
+ INSTALL_OH_MYS=${6:-"true"}
17
+
18
+ set -e
19
+
20
+ if [ "$(id -u)" -ne 0 ]; then
21
+ echo -e 'Script must be run as root. Use sudo, su, or add "USER root" to your Dockerfile before running this script.'
22
+ exit 1
23
+ fi
24
+
25
+ # Ensure that login shells get the correct path if the user updated the PATH using ENV.
26
+ rm -f /etc/profile.d/00-restore-env.sh
27
+ echo "export PATH=${PATH//$(sh -lc 'echo $PATH')/\$PATH}" > /etc/profile.d/00-restore-env.sh
28
+ chmod +x /etc/profile.d/00-restore-env.sh
29
+
30
+ # If in automatic mode, determine if a user already exists, if not use vscode
31
+ if [ "${USERNAME}" = "auto" ] || [ "${USERNAME}" = "automatic" ]; then
32
+ USERNAME=""
33
+ POSSIBLE_USERS=("vscode" "node" "codespace" "$(awk -v val=1000 -F ":" '$3==val{print $1}' /etc/passwd)")
34
+ for CURRENT_USER in ${POSSIBLE_USERS[@]}; do
35
+ if id -u ${CURRENT_USER} > /dev/null 2>&1; then
36
+ USERNAME=${CURRENT_USER}
37
+ break
38
+ fi
39
+ done
40
+ if [ "${USERNAME}" = "" ]; then
41
+ USERNAME=vscode
42
+ fi
43
+ elif [ "${USERNAME}" = "none" ]; then
44
+ USERNAME=root
45
+ USER_UID=0
46
+ USER_GID=0
47
+ fi
48
+
49
+ # Load markers to see which steps have already run
50
+ MARKER_FILE="/usr/local/etc/vscode-dev-containers/common"
51
+ if [ -f "${MARKER_FILE}" ]; then
52
+ echo "Marker file found:"
53
+ cat "${MARKER_FILE}"
54
+ source "${MARKER_FILE}"
55
+ fi
56
+
57
+ # Ensure apt is in non-interactive to avoid prompts
58
+ export DEBIAN_FRONTEND=noninteractive
59
+
60
+ # Function to call apt-get if needed
61
+ apt-get-update-if-needed()
62
+ {
63
+ if [ ! -d "/var/lib/apt/lists" ] || [ "$(ls /var/lib/apt/lists/ | wc -l)" = "0" ]; then
64
+ echo "Running apt-get update..."
65
+ apt-get update
66
+ else
67
+ echo "Skipping apt-get update."
68
+ fi
69
+ }
70
+
71
+ # Run install apt-utils to avoid debconf warning then verify presence of other common developer tools and dependencies
72
+ if [ "${PACKAGES_ALREADY_INSTALLED}" != "true" ]; then
73
+ apt-get-update-if-needed
74
+
75
+ PACKAGE_LIST="apt-utils \
76
+ git \
77
+ openssh-client \
78
+ gnupg2 \
79
+ iproute2 \
80
+ procps \
81
+ lsof \
82
+ htop \
83
+ net-tools \
84
+ psmisc \
85
+ curl \
86
+ wget \
87
+ rsync \
88
+ ca-certificates \
89
+ unzip \
90
+ zip \
91
+ nano \
92
+ vim-tiny \
93
+ less \
94
+ jq \
95
+ lsb-release \
96
+ apt-transport-https \
97
+ dialog \
98
+ libc6 \
99
+ libgcc1 \
100
+ libkrb5-3 \
101
+ libgssapi-krb5-2 \
102
+ libicu[0-9][0-9] \
103
+ liblttng-ust0 \
104
+ libstdc++6 \
105
+ zlib1g \
106
+ locales \
107
+ sudo \
108
+ ncdu \
109
+ man-db \
110
+ strace"
111
+
112
+ # Install libssl1.1 if available
113
+ if [[ ! -z $(apt-cache --names-only search ^libssl1.1$) ]]; then
114
+ PACKAGE_LIST="${PACKAGE_LIST} libssl1.1"
115
+ fi
116
+
117
+ # Install appropriate version of libssl1.0.x if available
118
+ LIBSSL=$(dpkg-query -f '${db:Status-Abbrev}\t${binary:Package}\n' -W 'libssl1\.0\.?' 2>&1 || echo '')
119
+ if [ "$(echo "$LIBSSL" | grep -o 'libssl1\.0\.[0-9]:' | uniq | sort | wc -l)" -eq 0 ]; then
120
+ if [[ ! -z $(apt-cache --names-only search ^libssl1.0.2$) ]]; then
121
+ # Debian 9
122
+ PACKAGE_LIST="${PACKAGE_LIST} libssl1.0.2"
123
+ elif [[ ! -z $(apt-cache --names-only search ^libssl1.0.0$) ]]; then
124
+ # Ubuntu 18.04, 16.04, earlier
125
+ PACKAGE_LIST="${PACKAGE_LIST} libssl1.0.0"
126
+ fi
127
+ fi
128
+
129
+ echo "Packages to verify are installed: ${PACKAGE_LIST}"
130
+ apt-get -y install --no-install-recommends ${PACKAGE_LIST} 2> >( grep -v 'debconf: delaying package configuration, since apt-utils is not installed' >&2 )
131
+
132
+ PACKAGES_ALREADY_INSTALLED="true"
133
+ fi
134
+
135
+ # Get to latest versions of all packages
136
+ if [ "${UPGRADE_PACKAGES}" = "true" ]; then
137
+ apt-get-update-if-needed
138
+ apt-get -y upgrade --no-install-recommends
139
+ apt-get autoremove -y
140
+ fi
141
+
142
+ # Ensure at least the en_US.UTF-8 UTF-8 locale is available.
143
+ # Common need for both applications and things like the agnoster ZSH theme.
144
+ if [ "${LOCALE_ALREADY_SET}" != "true" ] && ! grep -o -E '^\s*en_US.UTF-8\s+UTF-8' /etc/locale.gen > /dev/null; then
145
+ echo "en_US.UTF-8 UTF-8" >> /etc/locale.gen
146
+ locale-gen
147
+ LOCALE_ALREADY_SET="true"
148
+ fi
149
+
150
+ # Create or update a non-root user to match UID/GID.
151
+ if id -u ${USERNAME} > /dev/null 2>&1; then
152
+ # User exists, update if needed
153
+ if [ "${USER_GID}" != "automatic" ] && [ "$USER_GID" != "$(id -G $USERNAME)" ]; then
154
+ groupmod --gid $USER_GID $USERNAME
155
+ usermod --gid $USER_GID $USERNAME
156
+ fi
157
+ if [ "${USER_UID}" != "automatic" ] && [ "$USER_UID" != "$(id -u $USERNAME)" ]; then
158
+ usermod --uid $USER_UID $USERNAME
159
+ fi
160
+ else
161
+ # Create user
162
+ if [ "${USER_GID}" = "automatic" ]; then
163
+ groupadd $USERNAME
164
+ else
165
+ groupadd --gid $USER_GID $USERNAME
166
+ fi
167
+ if [ "${USER_UID}" = "automatic" ]; then
168
+ useradd -s /bin/bash --gid $USERNAME -m $USERNAME
169
+ else
170
+ useradd -s /bin/bash --uid $USER_UID --gid $USERNAME -m $USERNAME
171
+ fi
172
+ fi
173
+
174
+ # Add add sudo support for non-root user
175
+ if [ "${USERNAME}" != "root" ] && [ "${EXISTING_NON_ROOT_USER}" != "${USERNAME}" ]; then
176
+ echo $USERNAME ALL=\(root\) NOPASSWD:ALL > /etc/sudoers.d/$USERNAME
177
+ chmod 0440 /etc/sudoers.d/$USERNAME
178
+ EXISTING_NON_ROOT_USER="${USERNAME}"
179
+ fi
180
+
181
+ # ** Shell customization section **
182
+ if [ "${USERNAME}" = "root" ]; then
183
+ USER_RC_PATH="/root"
184
+ else
185
+ USER_RC_PATH="/home/${USERNAME}"
186
+ fi
187
+
188
+ # .bashrc/.zshrc snippet
189
+ RC_SNIPPET="$(cat << EOF
190
+ export USER=\$(whoami)
191
+ if [[ "\${PATH}" != *"\$HOME/.local/bin"* ]]; then export PATH="\${PATH}:\$HOME/.local/bin"; fi
192
+ EOF
193
+ )"
194
+
195
+ # code shim, it fallbacks to code-insiders if code is not available
196
+ cat << 'EOF' > /usr/local/bin/code
197
+ #!/bin/sh
198
+
199
+ get_in_path_except_current() {
200
+ which -a "$1" | grep -A1 "$0" | grep -v "$0"
201
+ }
202
+
203
+ code="$(get_in_path_except_current code)"
204
+
205
+ if [ -n "$code" ]; then
206
+ exec "$code" "$@"
207
+ elif [ "$(command -v code-insiders)" ]; then
208
+ exec code-insiders "$@"
209
+ else
210
+ echo "code or code-insiders is not installed" >&2
211
+ exit 127
212
+ fi
213
+ EOF
214
+ chmod +x /usr/local/bin/code
215
+
216
+ # Codespaces themes - partly inspired by https://github.com/ohmyzsh/ohmyzsh/blob/master/themes/robbyrussell.zsh-theme
217
+ CODESPACES_BASH="$(cat \
218
+ <<EOF
219
+ #!/usr/bin/env bash
220
+ prompt() {
221
+ if [ "\$?" != "0" ]; then
222
+ local arrow_color=\${bold_red}
223
+ else
224
+ local arrow_color=\${reset_color}
225
+ fi
226
+ if [ ! -z "\${GITHUB_USER}" ]; then
227
+ local USERNAME="@\${GITHUB_USER}"
228
+ else
229
+ local USERNAME="\\u"
230
+ fi
231
+ local cwd="\$(pwd | sed "s|^\${HOME}|~|")"
232
+ PS1="\${green}\${USERNAME} \${arrow_color}➜\${reset_color} \${bold_blue}\${cwd}\${reset_color} \$(scm_prompt_info)\${white}$ \${reset_color}"
233
+
234
+ # Prepend Python virtual env version to prompt
235
+ if [[ -n \$VIRTUAL_ENV ]]; then
236
+ if [ -z "\${VIRTUAL_ENV_DISABLE_PROMPT:-}" ]; then
237
+ PS1="(\`basename \"\$VIRTUAL_ENV\"\`) \${PS1:-}"
238
+ fi
239
+ fi
240
+ }
241
+
242
+ SCM_THEME_PROMPT_PREFIX="\${reset_color}\${cyan}(\${bold_red}"
243
+ SCM_THEME_PROMPT_SUFFIX="\${reset_color} "
244
+ SCM_THEME_PROMPT_DIRTY=" \${bold_yellow}✗\${reset_color}\${cyan})"
245
+ SCM_THEME_PROMPT_CLEAN="\${reset_color}\${cyan})"
246
+ SCM_GIT_SHOW_MINIMAL_INFO="true"
247
+ safe_append_prompt_command prompt
248
+ EOF
249
+ )"
250
+ CODESPACES_ZSH="$(cat \
251
+ <<EOF
252
+ prompt() {
253
+ if [ ! -z "\${GITHUB_USER}" ]; then
254
+ local USERNAME="@\${GITHUB_USER}"
255
+ else
256
+ local USERNAME="%n"
257
+ fi
258
+ PROMPT="%{\$fg[green]%}\${USERNAME} %(?:%{\$reset_color%}➜ :%{\$fg_bold[red]%}➜ )"
259
+ PROMPT+='%{\$fg_bold[blue]%}%~%{\$reset_color%} \$(git_prompt_info)%{\$fg[white]%}$ %{\$reset_color%}'
260
+ }
261
+ ZSH_THEME_GIT_PROMPT_PREFIX="%{\$fg_bold[cyan]%}(%{\$fg_bold[red]%}"
262
+ ZSH_THEME_GIT_PROMPT_SUFFIX="%{\$reset_color%} "
263
+ ZSH_THEME_GIT_PROMPT_DIRTY=" %{\$fg_bold[yellow]%}✗%{\$fg_bold[cyan]%})"
264
+ ZSH_THEME_GIT_PROMPT_CLEAN="%{\$fg_bold[cyan]%})"
265
+ prompt
266
+ EOF
267
+ )"
268
+
269
+ # Adapted Oh My Zsh! install step to work with both "Oh Mys" rather than relying on an installer script
270
+ # See https://github.com/ohmyzsh/ohmyzsh/blob/master/tools/install.sh for offical script.
271
+ install-oh-my()
272
+ {
273
+ local OH_MY=$1
274
+ local OH_MY_INSTALL_DIR="${USER_RC_PATH}/.oh-my-${OH_MY}"
275
+ local TEMPLATE="${OH_MY_INSTALL_DIR}/templates/$2"
276
+ local OH_MY_GIT_URL=$3
277
+ local USER_RC_FILE="${USER_RC_PATH}/.${OH_MY}rc"
278
+
279
+ if [ -d "${OH_MY_INSTALL_DIR}" ] || [ "${INSTALL_OH_MYS}" != "true" ]; then
280
+ return 0
281
+ fi
282
+
283
+ umask g-w,o-w
284
+ mkdir -p ${OH_MY_INSTALL_DIR}
285
+ git clone --depth=1 \
286
+ -c core.eol=lf \
287
+ -c core.autocrlf=false \
288
+ -c fsck.zeroPaddedFilemode=ignore \
289
+ -c fetch.fsck.zeroPaddedFilemode=ignore \
290
+ -c receive.fsck.zeroPaddedFilemode=ignore \
291
+ ${OH_MY_GIT_URL} ${OH_MY_INSTALL_DIR} 2>&1
292
+ echo -e "$(cat "${TEMPLATE}")\nDISABLE_AUTO_UPDATE=true\nDISABLE_UPDATE_PROMPT=true" > ${USER_RC_FILE}
293
+ if [ "${OH_MY}" = "bash" ]; then
294
+ sed -i -e 's/OSH_THEME=.*/OSH_THEME="codespaces"/g' ${USER_RC_FILE}
295
+ mkdir -p ${OH_MY_INSTALL_DIR}/custom/themes/codespaces
296
+ echo "${CODESPACES_BASH}" > ${OH_MY_INSTALL_DIR}/custom/themes/codespaces/codespaces.theme.sh
297
+ else
298
+ sed -i -e 's/ZSH_THEME=.*/ZSH_THEME="codespaces"/g' ${USER_RC_FILE}
299
+ mkdir -p ${OH_MY_INSTALL_DIR}/custom/themes
300
+ echo "${CODESPACES_ZSH}" > ${OH_MY_INSTALL_DIR}/custom/themes/codespaces.zsh-theme
301
+ fi
302
+ # Shrink git while still enabling updates
303
+ cd ${OH_MY_INSTALL_DIR}
304
+ git repack -a -d -f --depth=1 --window=1
305
+
306
+ if [ "${USERNAME}" != "root" ]; then
307
+ cp -rf ${USER_RC_FILE} ${OH_MY_INSTALL_DIR} /root
308
+ chown -R ${USERNAME}:${USERNAME} ${USER_RC_PATH}
309
+ fi
310
+ }
311
+
312
+ if [ "${RC_SNIPPET_ALREADY_ADDED}" != "true" ]; then
313
+ echo "${RC_SNIPPET}" >> /etc/bash.bashrc
314
+ RC_SNIPPET_ALREADY_ADDED="true"
315
+ fi
316
+ install-oh-my bash bashrc.osh-template https://github.com/ohmybash/oh-my-bash
317
+
318
+ # Optionally install and configure zsh and Oh My Zsh!
319
+ if [ "${INSTALL_ZSH}" = "true" ]; then
320
+ if ! type zsh > /dev/null 2>&1; then
321
+ apt-get-update-if-needed
322
+ apt-get install -y zsh
323
+ fi
324
+ if [ "${ZSH_ALREADY_INSTALLED}" != "true" ]; then
325
+ echo "${RC_SNIPPET}" >> /etc/zsh/zshrc
326
+ ZSH_ALREADY_INSTALLED="true"
327
+ fi
328
+ install-oh-my zsh zshrc.zsh-template https://github.com/ohmyzsh/ohmyzsh
329
+ fi
330
+
331
+ # Write marker file
332
+ mkdir -p "$(dirname "${MARKER_FILE}")"
333
+ echo -e "\
334
+ PACKAGES_ALREADY_INSTALLED=${PACKAGES_ALREADY_INSTALLED}\n\
335
+ LOCALE_ALREADY_SET=${LOCALE_ALREADY_SET}\n\
336
+ EXISTING_NON_ROOT_USER=${EXISTING_NON_ROOT_USER}\n\
337
+ RC_SNIPPET_ALREADY_ADDED=${RC_SNIPPET_ALREADY_ADDED}\n\
338
+ ZSH_ALREADY_INSTALLED=${ZSH_ALREADY_INSTALLED}" > "${MARKER_FILE}"
339
+
340
+ echo "Done!"
@@ -0,0 +1,181 @@
1
+ #!/usr/bin/env bash
2
+ #-------------------------------------------------------------------------------------------------------------
3
+ # Copyright (c) Microsoft Corporation. All rights reserved.
4
+ # Licensed under the MIT License. See https://go.microsoft.com/fwlink/?linkid=2090316 for license information.
5
+ #-------------------------------------------------------------------------------------------------------------
6
+ #
7
+ # Docs: https://github.com/microsoft/vscode-dev-containers/blob/master/script-library/docs/docker.md
8
+ #
9
+ # Syntax: ./docker-debian.sh [enable non-root docker socket access flag] [source socket] [target socket] [non-root user] [use moby]
10
+
11
+ ENABLE_NONROOT_DOCKER=${1:-"true"}
12
+ SOURCE_SOCKET=${2:-"/var/run/docker-host.sock"}
13
+ TARGET_SOCKET=${3:-"/var/run/docker.sock"}
14
+ USERNAME=${4:-"automatic"}
15
+ USE_MOBY=${5:-"true"}
16
+
17
+ set -e
18
+
19
+ if [ "$(id -u)" -ne 0 ]; then
20
+ echo -e 'Script must be run as root. Use sudo, su, or add "USER root" to your Dockerfile before running this script.'
21
+ exit 1
22
+ fi
23
+
24
+ # Determine the appropriate non-root user
25
+ if [ "${USERNAME}" = "auto" ] || [ "${USERNAME}" = "automatic" ]; then
26
+ USERNAME=""
27
+ POSSIBLE_USERS=("vscode" "node" "codespace" "$(awk -v val=1000 -F ":" '$3==val{print $1}' /etc/passwd)")
28
+ for CURRENT_USER in ${POSSIBLE_USERS[@]}; do
29
+ if id -u ${CURRENT_USER} > /dev/null 2>&1; then
30
+ USERNAME=${CURRENT_USER}
31
+ break
32
+ fi
33
+ done
34
+ if [ "${USERNAME}" = "" ]; then
35
+ USERNAME=root
36
+ fi
37
+ elif [ "${USERNAME}" = "none" ] || ! id -u ${USERNAME} > /dev/null 2>&1; then
38
+ USERNAME=root
39
+ fi
40
+
41
+ # Function to run apt-get if needed
42
+ apt-get-update-if-needed()
43
+ {
44
+ if [ ! -d "/var/lib/apt/lists" ] || [ "$(ls /var/lib/apt/lists/ | wc -l)" = "0" ]; then
45
+ echo "Running apt-get update..."
46
+ apt-get update
47
+ else
48
+ echo "Skipping apt-get update."
49
+ fi
50
+ }
51
+
52
+ # Ensure apt is in non-interactive to avoid prompts
53
+ export DEBIAN_FRONTEND=noninteractive
54
+
55
+ # Install apt-transport-https, curl, lsb-release, gpg if missing
56
+ if ! dpkg -s apt-transport-https curl ca-certificates lsb-release > /dev/null 2>&1 || ! type gpg > /dev/null 2>&1; then
57
+ apt-get-update-if-needed
58
+ apt-get -y install --no-install-recommends apt-transport-https curl ca-certificates lsb-release gnupg2
59
+ fi
60
+
61
+ # Install Docker / Moby CLI if not already installed
62
+ if type docker > /dev/null 2>&1; then
63
+ echo "Docker / Moby CLI already installed."
64
+ else
65
+ if [ "${USE_MOBY}" = "true" ]; then
66
+ DISTRO=$(lsb_release -is | tr '[:upper:]' '[:lower:]')
67
+ CODENAME=$(lsb_release -cs)
68
+ curl -s https://packages.microsoft.com/keys/microsoft.asc | (OUT=$(apt-key add - 2>&1) || echo $OUT)
69
+ echo "deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-${DISTRO}-${CODENAME}-prod ${CODENAME} main" > /etc/apt/sources.list.d/microsoft.list
70
+ apt-get update
71
+ apt-get -y install --no-install-recommends moby-cli
72
+ else
73
+ curl -fsSL https://download.docker.com/linux/$(lsb_release -is | tr '[:upper:]' '[:lower:]')/gpg | (OUT=$(apt-key add - 2>&1) || echo $OUT)
74
+ echo "deb [arch=amd64] https://download.docker.com/linux/$(lsb_release -is | tr '[:upper:]' '[:lower:]') $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list
75
+ apt-get update
76
+ apt-get -y install --no-install-recommends docker-ce-cli
77
+ fi
78
+ fi
79
+
80
+ # Install Docker Compose if not already installed
81
+ if type docker-compose > /dev/null 2>&1; then
82
+ echo "Docker Compose already installed."
83
+ else
84
+ LATEST_COMPOSE_VERSION=$(curl -sSL "https://api.github.com/repos/docker/compose/releases/latest" | grep -o -P '(?<="tag_name": ").+(?=")')
85
+ curl -sSL "https://github.com/docker/compose/releases/download/${LATEST_COMPOSE_VERSION}/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
86
+ chmod +x /usr/local/bin/docker-compose
87
+ fi
88
+
89
+ # If init file already exists, exit
90
+ if [ -f "/usr/local/share/docker-init.sh" ]; then
91
+ exit 0
92
+ fi
93
+
94
+ # By default, make the source and target sockets the same
95
+ if [ "${SOURCE_SOCKET}" != "${TARGET_SOCKET}" ]; then
96
+ touch "${SOURCE_SOCKET}"
97
+ ln -s "${SOURCE_SOCKET}" "${TARGET_SOCKET}"
98
+ fi
99
+
100
+ # Add a stub if not adding non-root user access, user is root
101
+ if [ "${ENABLE_NONROOT_DOCKER}" = "false" ] || [ "${USERNAME}" = "root" ]; then
102
+ echo '/usr/bin/env bash -c "\$@"' > /usr/local/share/docker-init.sh
103
+ chmod +x /usr/local/share/docker-init.sh
104
+ exit 0
105
+ fi
106
+
107
+ # If enabling non-root access and specified user is found, setup socat and add script
108
+ chown -h "${USERNAME}":root "${TARGET_SOCKET}"
109
+ if ! dpkg -s socat > /dev/null 2>&1; then
110
+ apt-get-update-if-needed
111
+ apt-get -y install socat
112
+ fi
113
+ tee /usr/local/share/docker-init.sh > /dev/null \
114
+ << EOF
115
+ #!/usr/bin/env bash
116
+ #-------------------------------------------------------------------------------------------------------------
117
+ # Copyright (c) Microsoft Corporation. All rights reserved.
118
+ # Licensed under the MIT License. See https://go.microsoft.com/fwlink/?linkid=2090316 for license information.
119
+ #-------------------------------------------------------------------------------------------------------------
120
+
121
+ set -e
122
+
123
+ SOCAT_PATH_BASE=/tmp/vscr-dind-socat
124
+ SOCAT_LOG=\${SOCAT_PATH_BASE}.log
125
+ SOCAT_PID=\${SOCAT_PATH_BASE}.pid
126
+
127
+ # Wrapper function to only use sudo if not already root
128
+ sudoIf()
129
+ {
130
+ if [ "\$(id -u)" -ne 0 ]; then
131
+ sudo "\$@"
132
+ else
133
+ "\$@"
134
+ fi
135
+ }
136
+
137
+ # Log messages
138
+ log()
139
+ {
140
+ echo -e "[\$(date)] \$@" | sudoIf tee -a \${SOCAT_LOG} > /dev/null
141
+ }
142
+
143
+ echo -e "\n** \$(date) **" | sudoIf tee -a \${SOCAT_LOG} > /dev/null
144
+ log "Ensuring ${USERNAME} has access to ${SOURCE_SOCKET} via ${TARGET_SOCKET}"
145
+
146
+ # If enabled, try to add a docker group with the right GID. If the group is root,
147
+ # fall back on using socat to forward the docker socket to another unix socket so
148
+ # that we can set permissions on it without affecting the host.
149
+ if [ "${ENABLE_NONROOT_DOCKER}" = "true" ] && [ "${SOURCE_SOCKET}" != "${TARGET_SOCKET}" ] && [ "${USERNAME}" != "root" ] && [ "${USERNAME}" != "0" ]; then
150
+ SOCKET_GID=\$(stat -c '%g' ${SOURCE_SOCKET})
151
+ if [ "\${SOCKET_GID}" != "0" ]; then
152
+ log "Adding user to group with GID \${SOCKET_GID}."
153
+ if [ "\$(cat /etc/group | grep :\${SOCKET_GID}:)" = "" ]; then
154
+ sudoIf groupadd --gid \${SOCKET_GID} docker-host
155
+ fi
156
+ # Add user to group if not already in it
157
+ if [ "\$(id ${USERNAME} | grep -E 'groups=.+\${SOCKET_GID}\(')" = "" ]; then
158
+ sudoIf usermod -aG \${SOCKET_GID} ${USERNAME}
159
+ fi
160
+ else
161
+ # Enable proxy if not already running
162
+ if [ ! -f "\${SOCAT_PID}" ] || ! ps -p \$(cat \${SOCAT_PID}) > /dev/null; then
163
+ log "Enabling socket proxy."
164
+ log "Proxying ${SOURCE_SOCKET} to ${TARGET_SOCKET} for vscode"
165
+ sudoIf rm -rf ${TARGET_SOCKET}
166
+ (sudoIf socat UNIX-LISTEN:${TARGET_SOCKET},fork,mode=660,user=${USERNAME} UNIX-CONNECT:${SOURCE_SOCKET} 2>&1 | sudoIf tee -a \${SOCAT_LOG} > /dev/null & echo "\$!" | sudoIf tee \${SOCAT_PID} > /dev/null)
167
+ else
168
+ log "Socket proxy already running."
169
+ fi
170
+ fi
171
+ log "Success"
172
+ fi
173
+
174
+ # Execute whatever commands were passed in (if any). This allows us
175
+ # to set this script to ENTRYPOINT while still executing the default CMD.
176
+ set +e
177
+ exec "\$@"
178
+ EOF
179
+ chmod +x /usr/local/share/docker-init.sh
180
+ chown ${USERNAME}:root /usr/local/share/docker-init.sh
181
+ echo "Done!"
@@ -0,0 +1,35 @@
1
+ # This workflow uses actions that are not certified by GitHub.
2
+ # They are provided by a third-party and are governed by
3
+ # separate terms of service, privacy policy, and support
4
+ # documentation.
5
+ # This workflow will download a prebuilt Ruby version, install dependencies and run tests with Rake
6
+ # For more information see: https://github.com/marketplace/actions/setup-ruby-jruby-and-truffleruby
7
+
8
+ name: CI
9
+
10
+ on: [push, pull_request]
11
+
12
+ jobs:
13
+ test:
14
+ runs-on: ubuntu-latest
15
+ strategy:
16
+ matrix:
17
+ ruby-version: ['2.6', '2.7', '3.0']
18
+ steps:
19
+ - uses: actions/checkout@v2
20
+ - name: Set up Ruby
21
+ # To automatically get bug fixes and new Ruby versions for ruby/setup-ruby,
22
+ # change this to (see https://github.com/ruby/setup-ruby#versioning):
23
+ # uses: ruby/setup-ruby@v1
24
+ uses: ruby/setup-ruby@473e4d8fe5dd94ee328fdfca9f8c9c7afc9dae5e
25
+ with:
26
+ ruby-version: ${{ matrix.ruby-version }}
27
+ bundler-cache: true # runs 'bundle install' and caches installed gems automatically
28
+ - name: MongoDB in GitHub Actions
29
+ # You may pin to the exact commit or the version.
30
+ # uses: supercharge/mongodb-github-action@310bd1bbeb878d9de3e54ee492cbd9643b1e8875
31
+ uses: supercharge/mongodb-github-action@1.3.0
32
+ with:
33
+ mongodb-version: '4.4'
34
+ - name: Run tests
35
+ run: bundle exec rake spec
@@ -0,0 +1,18 @@
1
+ name: Publish to RubyGems.org
2
+ on:
3
+ push:
4
+ tags:
5
+ - '*'
6
+ jobs:
7
+ build:
8
+ runs-on: ubuntu-latest
9
+ steps:
10
+ - uses: actions/checkout@v2
11
+ - name: Set up Ruby
12
+ uses: ruby/setup-ruby@v1
13
+ with:
14
+ ruby-version: '3.0'
15
+ - name: Publish to RubyGems.org
16
+ uses: dawidd6/action-publish-gem@v1
17
+ with:
18
+ api_key: ${{ secrets.RUBYGEMS_API_KEY }}
data/spec/spec_helper.rb CHANGED
@@ -37,7 +37,7 @@ end
37
37
 
38
38
  class DummyConf
39
39
  def database_url
40
- 'mongodb://localhost:27017/tdiary_test'
40
+ ENV['MONGODB_URI'] || 'mongodb://localhost:27017/tdiary_test'
41
41
  end
42
42
 
43
43
  def cache_path
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
 
5
5
  Gem::Specification.new do |spec|
6
6
  spec.name = "tdiary-io-mongodb"
7
- spec.version = "5.1.0"
7
+ spec.version = "5.1.1"
8
8
  spec.authors = ["Tada, Tadashi"]
9
9
  spec.email = ["t@tdtds.jp"]
10
10
  spec.description = %q{MongoDB adapter for tDiary}
@@ -17,8 +17,8 @@ Gem::Specification.new do |spec|
17
17
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
18
18
  spec.require_paths = ["lib"]
19
19
 
20
- spec.add_dependency "mongoid", "~> 7.0"
21
- spec.add_dependency "mongo", "< 2.9.0"
20
+ spec.add_dependency "mongoid", "~> 7.2"
21
+ spec.add_dependency "mongo", "~> 2.14"
22
22
  spec.add_dependency "hikidoc"
23
23
  spec.add_dependency "tdiary", ">= 5.0"
24
24
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tdiary-io-mongodb
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.1.0
4
+ version: 5.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tada, Tadashi
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-11-29 00:00:00.000000000 Z
11
+ date: 2021-05-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: mongoid
@@ -16,28 +16,28 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '7.0'
19
+ version: '7.2'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '7.0'
26
+ version: '7.2'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: mongo
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "<"
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 2.9.0
33
+ version: '2.14'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - "<"
38
+ - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: 2.9.0
40
+ version: '2.14'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: hikidoc
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -130,8 +130,14 @@ executables:
130
130
  extensions: []
131
131
  extra_rdoc_files: []
132
132
  files:
133
+ - ".devcontainer/Dockerfile"
134
+ - ".devcontainer/devcontainer.json"
135
+ - ".devcontainer/docker-compose.yml"
136
+ - ".devcontainer/library-scripts/common-debian.sh"
137
+ - ".devcontainer/library-scripts/docker-debian.sh"
138
+ - ".github/workflows/ci.yml"
139
+ - ".github/workflows/release.yml"
133
140
  - ".gitignore"
134
- - ".travis.yml"
135
141
  - Gemfile
136
142
  - LICENSE.txt
137
143
  - README.md
@@ -161,7 +167,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
161
167
  - !ruby/object:Gem::Version
162
168
  version: '0'
163
169
  requirements: []
164
- rubygems_version: 3.1.2
170
+ rubygems_version: 3.2.15
165
171
  signing_key:
166
172
  specification_version: 4
167
173
  summary: MongoDB adapter for tDiary
data/.travis.yml DELETED
@@ -1,20 +0,0 @@
1
- language: ruby
2
- cache: bundler
3
-
4
- rvm:
5
- - 2.3.8
6
- - 2.4.5
7
- - 2.5.3
8
- - 2.6.0
9
- - ruby-head
10
-
11
- matrix:
12
- allow_failures:
13
- - rvm: ruby-head
14
-
15
- before_install:
16
-
17
- script: bundle exec rake spec
18
-
19
- services:
20
- - mongodb