sefy-cli 0.3.1 → 0.5.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.
Files changed (2) hide show
  1. package/README.md +40 -13
  2. package/package.json +2 -2
package/README.md CHANGED
@@ -106,9 +106,19 @@ error: 2 items match "ma":
106
106
  narrow the text, or use an id
107
107
  ```
108
108
 
109
- Two machines, two copies, both edited? Fold one into the other. Where they
110
- disagree about the same item, sefy keeps both versions rather than letting a
111
- timestamp decide which password you get to keep:
109
+ Several machines? `sefy sync` carries the vault through a transport and folds
110
+ what comes back into this one:
111
+
112
+ ```
113
+ $ sefy sync
114
+ Master password:
115
+ synced "vault" through github
116
+ merged: 2 added, 0 updated, 14 unchanged
117
+ ```
118
+
119
+ Or fold in a copy you carried across by hand. Either way, where the two disagree
120
+ about the same item, sefy keeps both versions rather than letting a timestamp
121
+ decide which password you get to keep:
112
122
 
113
123
  ```
114
124
  $ sefy merge ~/from-laptop.bak
@@ -141,17 +151,29 @@ named `sefy-plugin-*`, found in sefy's data directory or on `PATH`. sefy knows
141
151
  nothing about git, FTP or any cloud drive - it asks a plugin what it can do and
142
152
  what happened.
143
153
 
154
+ Two transports ship alongside the CLI, and neither stores a credential of its
155
+ own - each authenticates the way the machine already does:
156
+
157
+ - **github** keeps the vault in a git repository. Point `SEFY_GITHUB_REPO` at
158
+ one; version history comes free with it.
159
+ - **sftp** keeps it on a server you control, over OpenSSH. Point
160
+ `SEFY_SFTP_DESTINATION` at `you@server:/path`; nothing lands there but the
161
+ blob.
162
+
144
163
  ```
145
164
  $ sefy plugin list
146
- ftp 0.2.1 push
147
165
  future 9.0.0 unusable: it speaks protocol 99 and this build speaks 1
148
- github 0.1.0 pull, push
166
+ github 0.5.0 pull, push
167
+ sftp 0.5.0 pull, push
149
168
  ```
150
169
 
170
+ With more than one installed, sefy asks which rather than choosing where your
171
+ vault goes: `sefy sync --transport sftp`, or `SEFY_TRANSPORT=sftp` once.
172
+
151
173
  A transport is handed the **path of the sealed file** and nothing else - no
152
174
  master password, no key, no item. What it carries is what anyone would find on
153
- your disk: a blob it cannot read. That is also why a plugin cannot merge; it
154
- fetches the other copy to a file, and `sefy merge` folds the two together where
175
+ your disk: a blob it cannot read. That is also why a plugin cannot merge: it
176
+ moves the other copy to a file, and sefy folds the two together itself, where
155
177
  both sides can actually be read.
156
178
 
157
179
  Broken plugins are listed with the reason rather than skipped: an omitted line
@@ -194,7 +216,8 @@ curl -fsSL https://raw.githubusercontent.com/lacodda/sefy/main/tools/install.sh
194
216
 
195
217
  On Windows use the PowerShell line above: `install.sh` carries the macOS and Linux builds only, and run from Git Bash it stops with a pointer back here.
196
218
 
197
- **cargo** - `cargo install sefy`
219
+ **cargo** - `cargo install sefy`, plus `cargo install sefy-plugin-github` or
220
+ `sefy-plugin-sftp` for a transport
198
221
 
199
222
  **npm** - `npm install -g sefy-cli`
200
223
 
@@ -203,7 +226,9 @@ On Windows use the PowerShell line above: `install.sh` carries the macOS and Lin
203
226
  `PATH`.
204
227
 
205
228
  Both installers take the newest release by default; set `SEFY_VERSION` to a tag
206
- to pin one, and `SEFY_INSTALL_DIR` to choose where the binary lands.
229
+ to pin one, and `SEFY_INSTALL_DIR` to choose where the binary lands. They also
230
+ place any transport the archive carries into sefy's plugins directory, so
231
+ `sefy plugin list` finds it without a second step.
207
232
 
208
233
  Shell completions: `sefy completions bash` (also `zsh`, `fish`, `powershell`,
209
234
  `elvish`).
@@ -220,10 +245,12 @@ The database inside the ciphertext is versioned separately, and it does move:
220
245
  from 0.1.x opens, is migrated on the way in, and is still readable by 0.1.x
221
246
  afterwards - the file on disk did not change shape.
222
247
 
223
- The **plugin protocol is at version 1** as of 0.3.0. Optional fields may be
224
- added to the manifest without breaking a plugin that predates them; changing
225
- what an existing field means would arrive as version 2, with both accepted for a
226
- time.
248
+ The **plugin protocol is at version 1** as of 0.3.0. 0.4.0 put it to work and
249
+ 0.5.0 added a second transport of a different shape without changing a field of
250
+ it, which is the evidence that it was not built around the first one. Optional
251
+ fields may be added to the manifest without breaking a plugin that predates
252
+ them; changing what an existing field means would arrive as version 2, with both
253
+ accepted for a time.
227
254
 
228
255
  Released versions and what landed in each: [CHANGELOG on the Releases page](https://github.com/lacodda/sefy/releases).
229
256
 
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "sefy-cli",
3
- "version": "0.3.1",
3
+ "version": "0.5.0",
4
4
  "sefy": {
5
- "binary": "v0.3.1"
5
+ "binary": "v0.5.0"
6
6
  },
7
7
  "description": "An inconspicuous encrypted store for notes, credentials and files",
8
8
  "license": "MIT",