neocities-red 1.2.0 → 1.2.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/.github/workflows/ci.yml +1 -1
- data/.gitignore +5 -0
- data/.rubocop.yml +1 -0
- data/Gemfile +1 -1
- data/Gemfile.lock +12 -12
- data/README.md +181 -20
- data/lib/neocities_red/version.rb +1 -1
- data/neocities-red.gemspec +1 -1
- data/spec/neocities_red/cli_spec.rb +1 -0
- data/spec/neocities_red/services/site/differencer_spec.rb +1 -2
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: ef7b7c412b2db9911f08da1e341094af9e73cdc5f15ccd1b64187acc98c6df9a
|
|
4
|
+
data.tar.gz: 33e7e3e703787840f0e69985859f9d3e80a6560f40c81cd115df88388021eec1
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: f683232f030fdd8c2b2b0e6a99dc20edd2bb035a929f38c87c708e4f34513154343b159b35aa38a0fe0579101b6b4cddba2e72a24c90d0e0d5ee9782ad05c3a7
|
|
7
|
+
data.tar.gz: b960d354732fa8836ea390a9953a0db14321d55ad74d293302eb9bd0f6d7323677b9a81c294a81c2490a81349f0ae47b7c0d18560ce25198ca8381a3f5dd5f0f
|
data/.github/workflows/ci.yml
CHANGED
data/.gitignore
CHANGED
data/.rubocop.yml
CHANGED
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
|
@@ -25,7 +25,7 @@ GEM
|
|
|
25
25
|
bigdecimal
|
|
26
26
|
rexml
|
|
27
27
|
diff-lcs (1.6.2)
|
|
28
|
-
faraday (2.14.
|
|
28
|
+
faraday (2.14.4)
|
|
29
29
|
faraday-net_http (>= 2.0, < 3.5)
|
|
30
30
|
json
|
|
31
31
|
logger
|
|
@@ -39,14 +39,14 @@ GEM
|
|
|
39
39
|
faraday (~> 2.0)
|
|
40
40
|
fiddle (1.1.8)
|
|
41
41
|
hashdiff (1.2.1)
|
|
42
|
-
json (
|
|
42
|
+
json (3.0.2)
|
|
43
43
|
language_server-protocol (3.17.0.6)
|
|
44
44
|
lint_roller (1.1.0)
|
|
45
45
|
logger (1.7.0)
|
|
46
46
|
multipart-post (2.4.1)
|
|
47
47
|
net-http (0.9.1)
|
|
48
48
|
uri (>= 0.11.1)
|
|
49
|
-
parallel (2.
|
|
49
|
+
parallel (2.2.0)
|
|
50
50
|
parser (3.3.12.0)
|
|
51
51
|
ast (~> 2.4.1)
|
|
52
52
|
racc
|
|
@@ -72,8 +72,8 @@ GEM
|
|
|
72
72
|
diff-lcs (>= 1.2.0, < 2.0)
|
|
73
73
|
rspec-support (~> 3.13.0)
|
|
74
74
|
rspec-support (3.13.7)
|
|
75
|
-
rubocop (1.
|
|
76
|
-
json (
|
|
75
|
+
rubocop (1.91.0)
|
|
76
|
+
json (>= 2.3)
|
|
77
77
|
language_server-protocol (~> 3.17.0.2)
|
|
78
78
|
lint_roller (~> 1.1.0)
|
|
79
79
|
parallel (>= 1.10)
|
|
@@ -114,7 +114,7 @@ GEM
|
|
|
114
114
|
unicode-display_width (2.6.0)
|
|
115
115
|
unicode_utils (1.4.0)
|
|
116
116
|
uri (1.1.1)
|
|
117
|
-
webmock (3.26.
|
|
117
|
+
webmock (3.26.4)
|
|
118
118
|
addressable (>= 2.8.0)
|
|
119
119
|
crack (>= 0.3.2)
|
|
120
120
|
hashdiff (>= 0.4.0, < 2.0.0)
|
|
@@ -131,7 +131,7 @@ PLATFORMS
|
|
|
131
131
|
DEPENDENCIES
|
|
132
132
|
neocities-red!
|
|
133
133
|
rspec
|
|
134
|
-
rubocop (~> 1.
|
|
134
|
+
rubocop (~> 1.91.0)
|
|
135
135
|
rubocop-rspec (~> 3.10.2)
|
|
136
136
|
webmock
|
|
137
137
|
yard
|
|
@@ -143,21 +143,21 @@ CHECKSUMS
|
|
|
143
143
|
bundler (4.0.17) sha256=214e21431b5665dd2f99df8a5511c6b151d7a72e8015c8b38f8b775b61cbb6c1
|
|
144
144
|
crack (1.0.1) sha256=ff4a10390cd31d66440b7524eb1841874db86201d5b70032028553130b6d4c7e
|
|
145
145
|
diff-lcs (1.6.2) sha256=9ae0d2cba7d4df3075fe8cd8602a8604993efc0dfa934cff568969efb1909962
|
|
146
|
-
faraday (2.14.
|
|
146
|
+
faraday (2.14.4) sha256=9bb4408c44621b0dbaaaa39e5dbfc4dbe58cc6751b6eb94d16ae9e1f2f2fab6e
|
|
147
147
|
faraday-follow_redirects (0.5.0) sha256=5cde93c894b30943a5d2b93c2fe9284216a6b756f7af406a1e55f211d97d10ad
|
|
148
148
|
faraday-multipart (1.2.0) sha256=7d89a949693714176f612323ca13746a2ded204031a6ba528adee788694ef757
|
|
149
149
|
faraday-net_http (3.4.4) sha256=0e78af151747ed1b00f33e25973b4bc220d7f16c00c39676817c8b12331eb588
|
|
150
150
|
faraday-retry (2.4.0) sha256=7b79c48fb7e56526faf247b12d94a680071ff40c9fda7cf1ec1549439ad11ebe
|
|
151
151
|
fiddle (1.1.8) sha256=7fa8ee3627271497f3add5503acdbc3f40b32f610fc1cf49634f083ef3f32eee
|
|
152
152
|
hashdiff (1.2.1) sha256=9c079dbc513dfc8833ab59c0c2d8f230fa28499cc5efb4b8dd276cf931457cd1
|
|
153
|
-
json (
|
|
153
|
+
json (3.0.2) sha256=8e6d7e7b11384c21230430cef90b71f14849a34a1f4452796670f7c981bd19df
|
|
154
154
|
language_server-protocol (3.17.0.6) sha256=5ef2c0c138f8267e1bc631d3328347d354f96724b0af22f2c79516120443b7f0
|
|
155
155
|
lint_roller (1.1.0) sha256=2c0c845b632a7d172cb849cc90c1bce937a28c5c8ccccb50dfd46a485003cc87
|
|
156
156
|
logger (1.7.0) sha256=196edec7cc44b66cfb40f9755ce11b392f21f7967696af15d274dde7edff0203
|
|
157
157
|
multipart-post (2.4.1) sha256=9872d03a8e552020ca096adadbf5e3cb1cd1cdd6acd3c161136b8a5737cdb4a8
|
|
158
158
|
neocities-red (1.2.0)
|
|
159
159
|
net-http (0.9.1) sha256=25ba0b67c63e89df626ed8fac771d0ad24ad151a858af2cc8e6a716ca4336996
|
|
160
|
-
parallel (2.
|
|
160
|
+
parallel (2.2.0) sha256=e1059c5fd7b649558a0aec38a769f06a42942bdb40503d005a59c352fe011cd8
|
|
161
161
|
parser (3.3.12.0) sha256=21a6d7f755d5a24dfbdc6e6b772e4e879a52e7631a88bc5a3a134606052c9828
|
|
162
162
|
pastel (0.8.0) sha256=481da9fb7d2f6e6b1a08faf11fa10363172dc40fd47848f096ae21209f805a75
|
|
163
163
|
prism (1.9.0) sha256=7b530c6a9f92c24300014919c9dcbc055bf4cdf51ec30aed099b06cd6674ef85
|
|
@@ -172,7 +172,7 @@ CHECKSUMS
|
|
|
172
172
|
rspec-expectations (3.13.5) sha256=33a4d3a1d95060aea4c94e9f237030a8f9eae5615e9bd85718fe3a09e4b58836
|
|
173
173
|
rspec-mocks (3.13.8) sha256=086ad3d3d17533f4237643de0b5c42f04b66348c28bf6b9c2d3f4a3b01af1d47
|
|
174
174
|
rspec-support (3.13.7) sha256=0640e5570872aafefd79867901deeeeb40b0c9875a36b983d85f54fb7381c47c
|
|
175
|
-
rubocop (1.
|
|
175
|
+
rubocop (1.91.0) sha256=9c82b7bf391c5d7e3798c5b9996e22a1fe3bd7468e351dfdeb96140c058296d0
|
|
176
176
|
rubocop-ast (1.50.0) sha256=b9ca88300da0803ee222ad20cdb30494c0a784eed06fdc35d254b06d662788db
|
|
177
177
|
rubocop-rspec (3.10.2) sha256=0b3e2ecc592cd10ecbf0095bb58d1e357905276e069643523cc19eb7495f65e2
|
|
178
178
|
ruby-progressbar (1.13.0) sha256=80fc9c47a9b640d6834e0dc7b3c94c9df37f08cb072b7761e4a71e22cff29b33
|
|
@@ -188,7 +188,7 @@ CHECKSUMS
|
|
|
188
188
|
unicode-display_width (2.6.0) sha256=12279874bba6d5e4d2728cef814b19197dbb10d7a7837a869bab65da943b7f5a
|
|
189
189
|
unicode_utils (1.4.0) sha256=b922d0cf2313b6b7136ada6645ce7154ffc86418ca07d53b058efe9eb72f2a40
|
|
190
190
|
uri (1.1.1) sha256=379fa58d27ffb1387eaada68c749d1426738bd0f654d812fcc07e7568f5c57c6
|
|
191
|
-
webmock (3.26.
|
|
191
|
+
webmock (3.26.4) sha256=8d8da206d217ebe6968cfb09c77f4533c23074e1432bad865f3994eacbaad50d
|
|
192
192
|
whirly (0.4.0) sha256=3ffdf9097e711097442f6d83c91b8fc431d73224863f75b48f06fb850b3e596e
|
|
193
193
|
wisper (2.0.1) sha256=ce17bc5c3a166f241a2e6613848b025c8146fce2defba505920c1d1f3f88fae6
|
|
194
194
|
yard (0.9.45) sha256=52e211493f7cb8a3ebf7e104a25a1e73937a3103092545d34cb88fafebb3dc51
|
data/README.md
CHANGED
|
@@ -24,14 +24,14 @@ Built for performance, reliability, and real-world workflows (especially static
|
|
|
24
24
|
- **Recursive uploads** out of the box
|
|
25
25
|
- **SSG-friendly** (Jekyll, Hugo, Eleventy, etc.)
|
|
26
26
|
- **Namespaced services** grouped by domain (`file/`, `site/`, `common/`)
|
|
27
|
+
- **Incremental `pull`** — skips files unchanged since your last pull
|
|
28
|
+
- **`.gitignore`-aware `push`** — respects your ignore rules by default
|
|
27
29
|
|
|
28
30
|
---
|
|
29
31
|
|
|
30
|
-
##
|
|
31
|
-
|
|
32
|
-
### Requirements
|
|
32
|
+
## Requirements
|
|
33
33
|
|
|
34
|
-
- **Ruby 3.4+** (tested,
|
|
34
|
+
- **Ruby 3.4+** (CI-tested against 3.4, 3.5, and 4.0 on Linux, macOS, Windows, and FreeBSD)
|
|
35
35
|
|
|
36
36
|
Not a programmer?
|
|
37
37
|
|
|
@@ -40,7 +40,7 @@ Not a programmer?
|
|
|
40
40
|
|
|
41
41
|
---
|
|
42
42
|
|
|
43
|
-
|
|
43
|
+
## Installation
|
|
44
44
|
|
|
45
45
|
```bash
|
|
46
46
|
gem install neocities-red
|
|
@@ -55,6 +55,47 @@ neocities-red help
|
|
|
55
55
|
neocities-red help push
|
|
56
56
|
```
|
|
57
57
|
|
|
58
|
+
On first authenticated command you'll be prompted for your sitename/username and
|
|
59
|
+
password — the resulting API key is stored locally for future runs.
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
neocities-red push .
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
---
|
|
66
|
+
|
|
67
|
+
## Authentication
|
|
68
|
+
|
|
69
|
+
The CLI resolves credentials in this order:
|
|
70
|
+
|
|
71
|
+
1. **`--api-key` flag** — `neocities-red --api-key <key> push .`
|
|
72
|
+
2. **`NEOCITIES_API_KEY` environment variable**
|
|
73
|
+
3. **Stored config** — the API key saved by a previous interactive login
|
|
74
|
+
4. **Interactive login** — prompts for sitename/username and password
|
|
75
|
+
|
|
76
|
+
For non-interactive logins you can also set:
|
|
77
|
+
|
|
78
|
+
| Variable | Purpose |
|
|
79
|
+
| --- | --- |
|
|
80
|
+
| `NEOCITIES_API_KEY` | API key used as a Bearer token |
|
|
81
|
+
| `NEOCITIES_SITENAME` | Default sitename/username for the login prompt |
|
|
82
|
+
| `NEOCITIES_PASSWORD` | Default password for the login prompt |
|
|
83
|
+
|
|
84
|
+
The config file is stored per platform:
|
|
85
|
+
|
|
86
|
+
| Platform | Location |
|
|
87
|
+
| --- | --- |
|
|
88
|
+
| Linux | `$XDG_CONFIG_HOME/neocities/config.json` (defaults to `~/.config/neocities/config.json`) |
|
|
89
|
+
| macOS | `~/Library/Application Support/neocities/config.json` |
|
|
90
|
+
| Windows | `%LOCALAPPDATA%\neocities\config.json` |
|
|
91
|
+
| FreeBSD / other | `~/.neocities/config.json` |
|
|
92
|
+
|
|
93
|
+
Remove the stored key with:
|
|
94
|
+
|
|
95
|
+
```bash
|
|
96
|
+
neocities-red logout -y
|
|
97
|
+
```
|
|
98
|
+
|
|
58
99
|
---
|
|
59
100
|
|
|
60
101
|
## CLI Commands
|
|
@@ -62,36 +103,142 @@ neocities-red help push
|
|
|
62
103
|
```text
|
|
63
104
|
push Recursively upload a local directory to your site
|
|
64
105
|
upload Upload individual files/folders to your site
|
|
65
|
-
delete Delete
|
|
66
|
-
diff Compare local directory with
|
|
67
|
-
list List
|
|
68
|
-
info Show site
|
|
69
|
-
pull
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
106
|
+
delete Delete files from your site
|
|
107
|
+
diff Compare your local directory with your site
|
|
108
|
+
list List files from your site
|
|
109
|
+
info Show information and stats for your site
|
|
110
|
+
pull Get the most recent version of files from your site
|
|
111
|
+
purge Remove all files from your site (development only)
|
|
112
|
+
logout Remove the stored API key from the config
|
|
113
|
+
version Print the gem version
|
|
114
|
+
pizza Order a free pizza
|
|
115
|
+
help Show help for a command
|
|
73
116
|
```
|
|
74
117
|
|
|
75
|
-
### `push`
|
|
118
|
+
### `push`
|
|
119
|
+
|
|
120
|
+
Recursively upload a local directory to your Neocities site. Respects
|
|
121
|
+
`.gitignore` rules by default.
|
|
76
122
|
|
|
77
123
|
| Flag | Description |
|
|
78
124
|
| --- | --- |
|
|
79
125
|
| `--no-gitignore` | Ignore `.gitignore` filtering and upload matching files |
|
|
80
126
|
| `--ignore-dotfiles` | Skip dotfiles/dot-directories |
|
|
81
|
-
| `-e`, `--exclude` | Exclude file/directory paths |
|
|
127
|
+
| `-e`, `--exclude` | Exclude file/directory paths (repeatable) |
|
|
82
128
|
| `--dry-run` | Show intended actions without mutating remote |
|
|
83
|
-
| `--optimized` | Skip files
|
|
129
|
+
| `--optimized` | Skip files whose SHA1 hash already matches the server |
|
|
84
130
|
| `--prune` | Delete remote files that do not exist locally |
|
|
85
131
|
|
|
86
|
-
Examples:
|
|
87
|
-
|
|
88
132
|
```bash
|
|
89
133
|
neocities-red push .
|
|
90
134
|
neocities-red push . --optimized --ignore-dotfiles
|
|
91
135
|
neocities-red push . -e node_modules -e .git
|
|
136
|
+
neocities-red push . --dry-run
|
|
137
|
+
neocities-red push . --prune
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
### `diff`
|
|
141
|
+
|
|
142
|
+
Compare a local directory with the remote site and show added, modified, and
|
|
143
|
+
removed files.
|
|
144
|
+
|
|
145
|
+
| Flag | Description |
|
|
146
|
+
| --- | --- |
|
|
147
|
+
| `--ignore-dotfiles` | Skip dotfiles/dot-directories |
|
|
148
|
+
| `-e`, `--exclude` | Exclude file/directory paths (repeatable) |
|
|
149
|
+
|
|
150
|
+
```bash
|
|
151
|
+
neocities-red diff .
|
|
152
|
+
neocities-red diff ./my-website --ignore-dotfiles
|
|
92
153
|
neocities-red diff . -e secret.txt
|
|
93
154
|
```
|
|
94
155
|
|
|
156
|
+
### `upload`
|
|
157
|
+
|
|
158
|
+
Upload an individual file or folder to your site.
|
|
159
|
+
|
|
160
|
+
```bash
|
|
161
|
+
neocities-red upload index.html
|
|
162
|
+
neocities-red upload assets/ images/assets
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
### `list`
|
|
166
|
+
|
|
167
|
+
List files from your Neocities site.
|
|
168
|
+
|
|
169
|
+
| Flag | Description |
|
|
170
|
+
| --- | --- |
|
|
171
|
+
| `-d`, `--detail` | Show a detailed table with size, SHA1 hash, and last-updated timestamp |
|
|
172
|
+
| `-a`, `--all` | List the entire site (ignore the path argument) |
|
|
173
|
+
|
|
174
|
+
```bash
|
|
175
|
+
neocities-red list
|
|
176
|
+
neocities-red list images -d
|
|
177
|
+
neocities-red list -a
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
### `info`
|
|
181
|
+
|
|
182
|
+
Show information and statistics for a site (defaults to your own site).
|
|
183
|
+
|
|
184
|
+
```bash
|
|
185
|
+
neocities-red info
|
|
186
|
+
neocities-red info fauux
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
### `pull`
|
|
190
|
+
|
|
191
|
+
Download the most recent version of files from your site. Skips files that
|
|
192
|
+
haven't changed since your last pull.
|
|
193
|
+
|
|
194
|
+
| Flag | Description |
|
|
195
|
+
| --- | --- |
|
|
196
|
+
| `-q`, `--quiet` | Show a spinner instead of per-file output |
|
|
197
|
+
|
|
198
|
+
```bash
|
|
199
|
+
neocities-red pull
|
|
200
|
+
neocities-red pull --quiet
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
### `delete`
|
|
204
|
+
|
|
205
|
+
Delete one or more files from your site.
|
|
206
|
+
|
|
207
|
+
```bash
|
|
208
|
+
neocities-red delete old.html
|
|
209
|
+
neocities-red delete old.html archived/old.css
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
### `purge`
|
|
213
|
+
|
|
214
|
+
Delete **everything** from your site. Intended for development sites only —
|
|
215
|
+
use with care.
|
|
216
|
+
|
|
217
|
+
| Flag | Description |
|
|
218
|
+
| --- | --- |
|
|
219
|
+
| `-y`, `--yes` | Confirm the destructive action (required) |
|
|
220
|
+
| `--dry-run` | Show what would be deleted without deleting |
|
|
221
|
+
|
|
222
|
+
```bash
|
|
223
|
+
neocities-red purge -y
|
|
224
|
+
neocities-red purge -y --dry-run
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
### `logout`
|
|
228
|
+
|
|
229
|
+
Remove the stored API key from the config. Requires confirmation.
|
|
230
|
+
|
|
231
|
+
```bash
|
|
232
|
+
neocities-red logout -y
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
### `version` & `pizza`
|
|
236
|
+
|
|
237
|
+
```bash
|
|
238
|
+
neocities-red version # print the gem version
|
|
239
|
+
neocities-red pizza # order a free pizza (easter egg)
|
|
240
|
+
```
|
|
241
|
+
|
|
95
242
|
---
|
|
96
243
|
|
|
97
244
|
## Library Usage
|
|
@@ -109,7 +256,10 @@ client.list(remote_path)
|
|
|
109
256
|
client.info(sitename)
|
|
110
257
|
```
|
|
111
258
|
|
|
112
|
-
|
|
259
|
+
The client supports both API-key (`api_key:`) and basic-auth
|
|
260
|
+
(`sitename:`/`password:`) authentication, retries transient failures (429/5xx)
|
|
261
|
+
automatically, and exposes low-level helpers like `upload_hash`,
|
|
262
|
+
`delete_wrapper_with_dry_run`, `key`, and `download`.
|
|
113
263
|
|
|
114
264
|
### Advanced: Services
|
|
115
265
|
|
|
@@ -132,7 +282,18 @@ Current service namespaces:
|
|
|
132
282
|
|
|
133
283
|
- `NeocitiesRed::Services::File` (`Uploader`, `FolderUploader`, `List`, `Remover`)
|
|
134
284
|
- `NeocitiesRed::Services::Site` (`Pusher`, `Differencer`, `Exporter`, `Informer`)
|
|
135
|
-
- `NeocitiesRed::Services::Common` (`Pizza`)
|
|
285
|
+
- `NeocitiesRed::Services::Common` (`Exclusions`, `WorkerPool`, `Pizza`)
|
|
286
|
+
|
|
287
|
+
---
|
|
288
|
+
|
|
289
|
+
## Development
|
|
290
|
+
|
|
291
|
+
```bash
|
|
292
|
+
bundle install
|
|
293
|
+
bundle exec rspec # run the test suite
|
|
294
|
+
bundle exec rubocop # run the linter
|
|
295
|
+
bundle exec ruby bin/neocities-red # run the CLI from source
|
|
296
|
+
```
|
|
136
297
|
|
|
137
298
|
---
|
|
138
299
|
|
data/neocities-red.gemspec
CHANGED
|
@@ -15,7 +15,7 @@ Gem::Specification.new do |spec|
|
|
|
15
15
|
spec.files = Dir.chdir(File.expand_path(__dir__)) do
|
|
16
16
|
files = begin
|
|
17
17
|
if system("git", "rev-parse", "--is-inside-work-tree", out: File::NULL, err: File::NULL)
|
|
18
|
-
`git ls-files -z`.split("\x0").reject { |f| f == ".yardopts" }
|
|
18
|
+
`git ls-files -z`.split("\x0").reject { |f| f == ".yardopts" || f.start_with?("docs/") }
|
|
19
19
|
else
|
|
20
20
|
[]
|
|
21
21
|
end
|
|
@@ -87,6 +87,7 @@ RSpec.describe NeocitiesRed::CLI do
|
|
|
87
87
|
cli.send(:persist_config, API_KEY: "secret", SITENAME: "test-site")
|
|
88
88
|
|
|
89
89
|
expect(File.read(config_path)).to eq('{"API_KEY":"secret","SITENAME":"test-site"}')
|
|
90
|
+
skip "chmod is a no-op on Windows" if Gem.win_platform?
|
|
90
91
|
expect(File.stat(config_path).mode & 0o777).to eq(0o600)
|
|
91
92
|
end
|
|
92
93
|
end
|
|
@@ -23,9 +23,8 @@ RSpec.describe NeocitiesRed::Services::Site::Differencer do
|
|
|
23
23
|
let(:ignore_dotfiles) { false }
|
|
24
24
|
let(:exclude) { [] }
|
|
25
25
|
|
|
26
|
-
# rubocop:disable RSpec/VerifiedDoubles
|
|
26
|
+
# rubocop:disable-next RSpec/VerifiedDoubles
|
|
27
27
|
let(:pastel) { double("Pastel") }
|
|
28
|
-
# rubocop:enable RSpec/VerifiedDoubles
|
|
29
28
|
|
|
30
29
|
let(:file_list_service) do
|
|
31
30
|
instance_double(
|