keysloth 0.1.1 → 0.2.0

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.
@@ -1,4 +1,4 @@
1
- # Test plan: Проверка работы gem KeySloth (шаг за шагом для новичка)
1
+ # Test plan: Проверка работы gem KeySloth (шаг за шагом, как для новичка)
2
2
 
3
3
  ## Цели
4
4
  - Подтвердить, что все основные команды работают: `init`, `pull`, `push`, `status`, `validate`, `restore`, `version`, `help`.
@@ -18,7 +18,7 @@
18
18
 
19
19
  ## 1. Клонирование проекта и установка зависимостей
20
20
  ```bash
21
- git clone https://github.com/keysloth/keysloth.git # если локально — просто перейдите в папку проекта
21
+ # перейдите в папку проекта
22
22
  cd keysloth
23
23
  bundle install
24
24
  ```
@@ -28,14 +28,10 @@ bundle install
28
28
  # Тесты
29
29
  bundle exec rake spec
30
30
 
31
- # Линтинг
32
- bundle exec rake rubocop
33
- ```
34
-
35
31
  ## 3. Сборка и локальная установка gem
36
32
  ```bash
37
33
  gem build keysloth.gemspec
38
- gem install ./keysloth-0.1.1.gem
34
+ gem install ./keysloth-0.2.0.gem # подставить текущую версию вместо 0.2.0
39
35
 
40
36
  # Проверка установки и базовых команд
41
37
  keysloth version
@@ -50,27 +46,8 @@ ssh -V
50
46
  ```
51
47
 
52
48
  ## 4. Подготовка тестового удалённого репозитория (SSH)
53
- Вариант A (GitHub через веб-интерфейс):
54
49
  - Создайте приватный репозиторий, например `keysloth-secrets-test`.
55
- - Выберите «Add a README» при создании, чтобы в репозитории сразу была ветка `main`.
56
-
57
- Вариант B (через локальный git и push):
58
- ```bash
59
- mkdir -p ~/tmp/keysloth-secrets-remote
60
- cd ~/tmp/keysloth-secrets-remote
61
- git init
62
- echo "# secrets" > README.md
63
- git add README.md
64
- git commit -m "init"
65
- git branch -M main
66
- git remote add origin git@github.com:<YOUR_USER>/keysloth-secrets-test.git
67
- git push -u origin main
68
- ```
69
-
70
- Проверьте доступ по SSH:
71
- ```bash
72
- ssh -T git@github.com
73
- ```
50
+ - Выберите «Add a README» при создании, чтобы в репозитории сразу была ветка `main`
74
51
 
75
52
  ## 5. Подготовка рабочего каталога и начальной конфигурации
76
53
  ```bash
@@ -78,6 +55,7 @@ mkdir -p ~/tmp/keysloth-playground
78
55
  cd ~/tmp/keysloth-playground
79
56
 
80
57
  # Инициализация проекта под KeySloth (создаст .keyslothrc, директорию секретов, обновит .gitignore)
58
+ # Этот и остальные шаги этого пункта ниже - делать только если репозиторий в пункте 4 до этого ни разу не создавался
81
59
  keysloth init -r git@github.com:chausovSurfStudio/keysloth-secrets-test.git -b main -d ./secrets
82
60
 
83
61
  # Проверим, что создалось
@@ -88,32 +66,7 @@ cat .gitignore
88
66
  Ожидаемо: `.keyslothrc` содержит `repo_url`, `branch`, `local_path`; в `.gitignore` добавлены `secrets/` и `.keyslothrc`.
89
67
 
90
68
  ## 6. Подготовка тестовых «секретов»
91
- Создадим набор файлов разных типов, поддерживаемых инструментом:
92
- ```bash
93
- mkdir -p secrets/certificates secrets/config
94
-
95
- # JSON
96
- cat > secrets/config/app.json << 'JSON'
97
- {
98
- "apiKey": "demo-123",
99
- "endpoint": "https://api.example.com",
100
- "featureFlags": {"newUI": true}
101
- }
102
- JSON
103
-
104
- # CER (PEM)
105
- cat > secrets/certificates/dev.cer << 'CER'
106
- -----BEGIN CERTIFICATE-----
107
- MIIBkTCB+wI...FAKE...FOR...TEST...
108
- -----END CERTIFICATE-----
109
- CER
110
-
111
- # P12 (минимальный валидный заголовок: первый байт 0x30)
112
- printf "\x30\x82\x05\x10\x02\x01\x03\x30" > secrets/certificates/dev.p12
113
-
114
- # Mobile provisioning (XML/plist признак)
115
- echo '<?xml version="1.0" encoding="UTF-8"?><plist version="1.0"></plist>' > secrets/dev.mobileprovisioning
116
- ```
69
+ Создать/скопировать в заранее подготовленную папку набор необходимых "серкретов"
117
70
 
118
71
  ## 7. Первая отправка секретов (push)
119
72
  ```bash
@@ -141,10 +94,6 @@ keysloth pull \
141
94
  -p "$SECRET_PASSWORD" \
142
95
  -b main \
143
96
  -d ./secrets
144
-
145
- # Проверим содержимое
146
- ls -la ./secrets ./secrets/certificates
147
- cat ./secrets/config/app.json
148
97
  ```
149
98
 
150
99
  Ожидаемо: файлы восстановлены и читаемы.
@@ -216,38 +165,7 @@ keysloth pull -p "$SECRET_PASSWORD"
216
165
  keysloth push -p "$SECRET_PASSWORD" -m "update via rc"
217
166
  ```
218
167
 
219
- ## 15. Минимальная проверка в CI/CD (GitHub Actions пример)
220
- Создайте секреты репозитория: `SSH_PRIVATE_KEY`, `SECRET_PASSWORD`. Затем workflow:
221
- ```yaml
222
- name: KeySloth smoke
223
- on: [workflow_dispatch]
224
- jobs:
225
- check:
226
- runs-on: ubuntu-latest
227
- steps:
228
- - uses: actions/checkout@v4
229
- - name: Setup Ruby
230
- uses: ruby/setup-ruby@v1
231
- with:
232
- ruby-version: '3.2'
233
- - name: Setup SSH key
234
- env:
235
- SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }}
236
- run: |
237
- mkdir -p ~/.ssh
238
- echo "$SSH_PRIVATE_KEY" > ~/.ssh/id_rsa
239
- chmod 600 ~/.ssh/id_rsa
240
- ssh-keyscan github.com >> ~/.ssh/known_hosts
241
- - name: Install KeySloth
242
- run: gem install keysloth
243
- - name: Pull secrets
244
- env:
245
- SECRET_PASSWORD: ${{ secrets.SECRET_PASSWORD }}
246
- run: |
247
- keysloth pull -r git@github.com:<YOUR_USER>/keysloth-secrets-test.git -p "$SECRET_PASSWORD"
248
- ```
249
-
250
- ## 16. Завершение и очистка
168
+ ## 15. Завершение и очистка
251
169
  ```bash
252
170
  # Опционально удалить установленный gem локально
253
171
  gem uninstall keysloth -aIx
@@ -256,6 +174,7 @@ gem uninstall keysloth -aIx
256
174
  rm -rf ~/tmp/keysloth-playground ~/tmp/keysloth-secrets-remote
257
175
  ```
258
176
 
177
+
259
178
  ## Чек-лист «что должно сработать»
260
179
  - `gem build` и `gem install` проходят без ошибок; `keysloth version`/`help` работают.
261
180
  - `push` создаёт `*.enc` в удалённом репозитории; `pull` восстанавливает исходные файлы.
metadata CHANGED
@@ -1,29 +1,35 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: keysloth
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - KeySloth Team
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-09-02 00:00:00.000000000 Z
11
+ date: 2025-09-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: 1.0.1
20
+ - - "<"
18
21
  - !ruby/object:Gem::Version
19
- version: '1.2'
22
+ version: 1.4.0
20
23
  type: :runtime
21
24
  prerelease: false
22
25
  version_requirements: !ruby/object:Gem::Requirement
23
26
  requirements:
24
- - - "~>"
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ version: 1.0.1
30
+ - - "<"
25
31
  - !ruby/object:Gem::Version
26
- version: '1.2'
32
+ version: 1.4.0
27
33
  - !ruby/object:Gem::Dependency
28
34
  name: rspec
29
35
  requirement: !ruby/object:Gem::Requirement
@@ -113,7 +119,7 @@ description: "KeySloth - инструмент для безопасного хр
113
119
  \nОбеспечивает простое получение, изменение и отправку секретов с использованием
114
120
  \nAES-256-GCM шифрования.\n"
115
121
  email:
116
- - team@keysloth.org
122
+ - chausov@surf.dev
117
123
  executables:
118
124
  - keysloth
119
125
  extensions: []
@@ -123,12 +129,17 @@ files:
123
129
  - ".rspec"
124
130
  - ".rubocop.yml"
125
131
  - ".yardopts"
132
+ - Appraisals
126
133
  - CHANGELOG.md
134
+ - LICENSE
127
135
  - Makefile
128
136
  - README.md
129
137
  - Rakefile
130
138
  - bin/keysloth
139
+ - gemfiles/thor_1.0.gemfile
140
+ - gemfiles/thor_1.3.gemfile
131
141
  - keysloth.gemspec
142
+ - keysloth.png
132
143
  - lib/keysloth.rb
133
144
  - lib/keysloth/cli.rb
134
145
  - lib/keysloth/config.rb
@@ -138,19 +149,25 @@ files:
138
149
  - lib/keysloth/git_manager.rb
139
150
  - lib/keysloth/logger.rb
140
151
  - lib/keysloth/version.rb
141
- - task/cr.md
142
- - task/plan.md
143
- - task/ragged_removing.md
144
- - task/task.md
145
- - task/test_plan.md
146
- homepage: https://github.com/keysloth/keysloth
152
+ - promts/main/rules.md
153
+ - promts/main/task.md
154
+ - promts/outdated/feature_ragged_removing.md
155
+ - promts/outdated/feature_wildcard_extensions.md
156
+ - promts/outdated/fix_backups.md
157
+ - promts/outdated/fix_config_file.md
158
+ - promts/outdated/fix_ssh.md
159
+ - promts/outdated/plan.md
160
+ - promts/outdated/thor-updates.md
161
+ - promts/task_lists_for_human/release_task_list.md
162
+ - promts/task_lists_for_human/test_plan.md
163
+ homepage: https://github.com/chausovSurfStudio/keysloth
147
164
  licenses:
148
165
  - MIT
149
166
  metadata:
150
167
  allowed_push_host: https://rubygems.org
151
- homepage_uri: https://github.com/keysloth/keysloth
152
- source_code_uri: https://github.com/keysloth/keysloth
153
- changelog_uri: https://github.com/keysloth/keysloth/blob/main/CHANGELOG.md
168
+ homepage_uri: https://github.com/chausovSurfStudio/keysloth
169
+ source_code_uri: https://github.com/chausovSurfStudio/keysloth
170
+ changelog_uri: https://github.com/chausovSurfStudio/keysloth/blob/main/CHANGELOG.md
154
171
  rubygems_mfa_required: 'true'
155
172
  post_install_message:
156
173
  rdoc_options: []
data/task/cr.md DELETED
@@ -1,59 +0,0 @@
1
- # Change Request: Поддержка SSH ключей id_ed25519 и улучшение UX
2
-
3
- ## Контекст проблемы
4
- При запуске команды (например, `keysloth pull`) возникла ошибка:
5
-
6
- ```
7
- Ошибка выполнения операции: SSH ключ не найден: /Users/<user>/.ssh/id_rsa
8
- ```
9
-
10
- Причина: в `KeySloth::GitManager#create_ssh_credentials` по умолчанию ожидаются ключи формата RSA (`~/.ssh/id_rsa` и `~/.ssh/id_rsa.pub`). На машине пользователя используются ключи Ed25519 (`id_ed25519`, `id_ed25519.pub`).
11
-
12
- ## Временные решения (workarounds)
13
- 1. Использовать ключи из переменных окружения (подходит для локали и CI/CD):
14
- ```bash
15
- export SSH_PRIVATE_KEY="$(cat ~/.ssh/id_ed25519)"
16
- export SSH_PUBLIC_KEY="$(cat ~/.ssh/id_ed25519.pub)"
17
- keysloth pull -r git@github.com:USER/REPO.git -p "PASSWORD"
18
- ```
19
-
20
- 2. Создать симлинки под ожидаемые имена (быстро, локально):
21
- ```bash
22
- ln -s ~/.ssh/id_ed25519 ~/.ssh/id_rsa
23
- ln -s ~/.ssh/id_ed25519.pub ~/.ssh/id_rsa.pub
24
- ```
25
-
26
- 3. Сгенерировать отдельный RSA‑ключ (если принципиально):
27
- ```bash
28
- ssh-keygen -t rsa -b 4096 -C "you@example.com" -f ~/.ssh/id_rsa
29
- # добавить ~/.ssh/id_rsa.pub в GitHub/GitLab
30
- ```
31
-
32
- ## Предложения по доработке
33
- 1. Поддержать Ed25519 «из коробки» в `create_ssh_credentials`:
34
- - Приоритет: переменные окружения `SSH_PRIVATE_KEY`/`SSH_PUBLIC_KEY` (как сейчас).
35
- - Fallback: искать пары ключей по стандартным путям в порядке:
36
- - `~/.ssh/id_rsa(.pub)`
37
- - `~/.ssh/id_ed25519(.pub)`
38
- - Если пара найдена — использовать; иначе выбрасывать `AuthenticationError` с подсказками.
39
-
40
- 2. Добавить конфигурируемый путь к ключу:
41
- - Env: `KEYSLOTH_SSH_KEY_PATH` (если задан — использовать `<path>` и `<path>.pub`).
42
- - Опция CLI: `--ssh-key PATH` (пробрасывать в `GitManager`).
43
-
44
- 3. Рассмотреть поддержку ssh-agent:
45
- - Использовать `Rugged::Credentials::SshKeyFromAgent` при отсутствии файлов и env.
46
-
47
- 4. Улучшить сообщение об ошибке:
48
- - Печатать проверённые пути, быстрые шаги: env, симлинк, `--ssh-key`.
49
-
50
- ## Тестирование
51
- - Добавить тесты в `spec/keysloth/git_manager_spec.rb`:
52
- - только `id_rsa`
53
- - только `id_ed25519`
54
- - ключи через ENV
55
- - путь через `KEYSLOTH_SSH_KEY_PATH`
56
- - отсутствие ключей → `AuthenticationError`
57
-
58
- ## Документация
59
- - Обновить README (раздел «Настройка SSH ключей») и `task/test_plan.md` (раздел про SSH) с примерами для Ed25519 и `--ssh-key`/env.
File without changes
File without changes