tdiary-io-mongodb 5.1.0 → 5.1.1
Sign up to get free protection for your applications and to get access to all the features.
- 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