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 +4 -4
- data/.devcontainer/Dockerfile +20 -0
- data/.devcontainer/devcontainer.json +32 -0
- data/.devcontainer/docker-compose.yml +39 -0
- data/.devcontainer/library-scripts/common-debian.sh +340 -0
- data/.devcontainer/library-scripts/docker-debian.sh +181 -0
- data/.github/workflows/ci.yml +35 -0
- data/.github/workflows/release.yml +18 -0
- data/spec/spec_helper.rb +1 -1
- data/tdiary-io-mongodb.gemspec +3 -3
- metadata +16 -10
- data/.travis.yml +0 -20
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8e5fd6061a24098db620d9429d7196d5bda51b7570b24b801bb8df95065f2241
|
4
|
+
data.tar.gz: '098ffdd8da60f6bd146defa7813445605a03ed3b6ab61e13d37d380678b5ec33'
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
data/tdiary-io-mongodb.gemspec
CHANGED
@@ -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.
|
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.
|
21
|
-
spec.add_dependency "mongo", "
|
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.
|
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:
|
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.
|
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.
|
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.
|
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.
|
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.
|
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