gemstash 1.0.2 → 1.0.3

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 (54) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +11 -0
  3. data/lib/gemstash/cli.rb +46 -0
  4. data/lib/gemstash/cli/setup.rb +1 -1
  5. data/lib/gemstash/env.rb +5 -0
  6. data/lib/gemstash/man/gemstash-authorize.1 +50 -0
  7. data/lib/gemstash/man/gemstash-authorize.1.txt +45 -0
  8. data/lib/gemstash/man/gemstash-configuration.5 +133 -0
  9. data/lib/gemstash/man/gemstash-configuration.5.txt +121 -0
  10. data/lib/gemstash/man/gemstash-customize.7 +224 -0
  11. data/lib/gemstash/man/gemstash-customize.7.txt +137 -0
  12. data/lib/gemstash/man/gemstash-debugging.7 +34 -0
  13. data/lib/gemstash/man/gemstash-debugging.7.txt +29 -0
  14. data/lib/gemstash/man/gemstash-deploy.7 +40 -0
  15. data/lib/gemstash/man/gemstash-deploy.7.txt +34 -0
  16. data/lib/gemstash/man/gemstash-mirror.7 +40 -0
  17. data/lib/gemstash/man/gemstash-mirror.7.txt +33 -0
  18. data/lib/gemstash/man/gemstash-multiple-sources.7 +89 -0
  19. data/lib/gemstash/man/gemstash-multiple-sources.7.txt +71 -0
  20. data/lib/gemstash/man/gemstash-private-gems.7 +195 -0
  21. data/lib/gemstash/man/gemstash-private-gems.7.txt +133 -0
  22. data/lib/gemstash/man/gemstash-readme.7 +204 -0
  23. data/lib/gemstash/man/gemstash-readme.7.txt +160 -0
  24. data/lib/gemstash/man/gemstash-setup.1 +41 -0
  25. data/lib/gemstash/man/gemstash-setup.1.txt +38 -0
  26. data/lib/gemstash/man/gemstash-start.1 +25 -0
  27. data/lib/gemstash/man/gemstash-start.1.txt +25 -0
  28. data/lib/gemstash/man/gemstash-status.1 +19 -0
  29. data/lib/gemstash/man/gemstash-status.1.txt +21 -0
  30. data/lib/gemstash/man/gemstash-stop.1 +19 -0
  31. data/lib/gemstash/man/gemstash-stop.1.txt +21 -0
  32. data/lib/gemstash/man/gemstash-version.1 +22 -0
  33. data/lib/gemstash/man/gemstash-version.1.txt +21 -0
  34. data/lib/gemstash/storage.rb +7 -4
  35. data/lib/gemstash/version.rb +1 -1
  36. metadata +79 -48
  37. data/Gemfile +0 -4
  38. data/README.md +0 -161
  39. data/Rakefile +0 -25
  40. data/bin/console +0 -14
  41. data/bin/gemstash +0 -3
  42. data/bin/setup +0 -5
  43. data/docs/config.md +0 -136
  44. data/docs/debug.md +0 -24
  45. data/docs/deploy.md +0 -30
  46. data/docs/mirror.md +0 -30
  47. data/docs/multiple_sources.md +0 -68
  48. data/docs/private_gems.md +0 -140
  49. data/docs/reference.md +0 -323
  50. data/gemstash.gemspec +0 -49
  51. data/gemstash.png +0 -0
  52. data/rake/changelog.citrus +0 -157
  53. data/rake/changelog.rb +0 -201
  54. data/rake/table_of_contents.rb +0 -36
@@ -1,140 +0,0 @@
1
- # Private Gems
2
-
3
- Stashing private gems in your Gemstash server requires a bit of additional
4
- setup. If you haven't read through the [Quickstart
5
- Guide](../README.md#quickstart-guide), you should do that first. By the end of
6
- this guide, you will be able to interact with your Gemstash server to store and
7
- retrieve your private gems.
8
-
9
- ## Authorizing
10
-
11
- **IMPORTANT NOTE:** Do not use the actual key value in this document, otherwise
12
- your Gemstash server will be vulnerable to anyone who wants to try to use the
13
- key against your server. Instead of the key value here, use whatever key is
14
- generated from running the commands.
15
-
16
- In order to push a gem to your Gemstash server, you need to first create an API
17
- key. Utilize the `gemstash authorize` command to create the API key:
18
- ```
19
- $ gemstash authorize
20
- Your new key is: e374e237fdf5fa5718d2a21bd63dc911
21
- ```
22
-
23
- This new key can `push`, `yank`, and `unyank` gems from your Gemstash server.
24
- Run `gemstash authorize` with just the permissions you want to limit what the
25
- key will be allowed to do. You can similarly update a specific key by providing
26
- it via the `--key` option:
27
- ```
28
- $ gemstash authorize push yank --key e374e237fdf5fa5718d2a21bd63dc911
29
- ```
30
-
31
- When no permissions are provided (like the first example), the key will be
32
- authorized for all permissions. Leave the key authorized with everything if you
33
- want to use it to try all private gem interactions:
34
- ```
35
- $ gemstash authorize --key e374e237fdf5fa5718d2a21bd63dc911
36
- ```
37
-
38
- With the key generated, you'll need to tell Rubygems about your new key. If
39
- you've pushed a gem to https://rubygems.org, then you will already have a
40
- credentials file to add the key to. If not, run the following commands before
41
- modifying the credentials file:
42
- ```
43
- $ mkdir -p ~/.gem
44
- $ touch ~/.gem/credentials
45
- $ chmod 0600 ~/.gem/credentials
46
- ```
47
-
48
- Add your new key to credentials such that it looks something like this (but make
49
- sure not to remove any existing keys):
50
- ```yaml
51
- # ~/.gem/credentials
52
- ---
53
- :test_key: e374e237fdf5fa5718d2a21bd63dc911
54
- ```
55
-
56
- The name `test_key` can be anything you want, but you will need to remember it
57
- and use it again later in this guide for the `--key` option.
58
-
59
- ## Creating a Test Gem
60
-
61
- You'll need a test gem before you can play with private gems on your Gemstash
62
- server. If you have a gem you can use, move along to the next section. You can
63
- start by instantiating a test gem via Bundler:
64
- ```
65
- $ bundle gem private-example
66
- ```
67
-
68
- You'll need to add a summary and description to the new gem's gemspec file in
69
- order to successfully build it. Once you've built the gem, you will be ready to
70
- push the new gem.
71
- ```
72
- $ cd private-example
73
- $ rake build
74
- ```
75
-
76
- You will now have a gem at `private-example/pkg/private-example-0.1.0.gem`.
77
-
78
- ## Pushing
79
-
80
- If your Gemstash server isn't running, go ahead and start it:
81
- ```
82
- $ gemstash start
83
- ```
84
-
85
- Push your test gem using Rubygems:
86
- ```
87
- $ gem push --key test_key --host http://localhost:9292/private pkg/private-example-0.1.0.gem
88
- ```
89
-
90
- The `/private` portion of the `--host` option tells Gemstash you are interacting
91
- with the private gems. Gemstash will not let you push, yank, or unyank from
92
- anything except `/private`.
93
-
94
- ## Bundling
95
-
96
- Once your gem is pushed to your Gemstash server, you are ready to bundle it.
97
- Create a `Gemfile` and specify the gem. You will probably want to wrap the
98
- private gem in a source block, and let the rest of Gemstash handle all other
99
- gems:
100
- ```ruby
101
- # ./Gemfile
102
- source "http://localhost:9292"
103
- gem "rubywarrior"
104
-
105
- source "http://localhost:9292/private" do
106
- gem "private-example"
107
- end
108
- ```
109
-
110
- Notice that the Gemstash server points to `/private` again when installing your
111
- private gem. Go ahead and bundle to install your new private gem:
112
- ```
113
- $ bundle
114
- ```
115
-
116
- ## Yanking
117
-
118
- If you push a private gem by accident, you can yank the gem with Rubygems:
119
- ```
120
- $ RUBYGEMS_HOST=http://localhost:9292/private gem yank --key test_key private-example --version 0.1.0
121
- ```
122
-
123
- Like with pushing, the `/private` portion of the host option tells Gemstash you
124
- are interacting with private gems. Gemstash will only let you yank from
125
- `/private`. Unlike pushing, Rubygems doesn't support `--host` for yank and
126
- unyank (yet), so you need to specify the host via the `RUBYGEMS_HOST`
127
- environment variable.
128
-
129
- ## Unyanking
130
-
131
- If you yank a private gem by accident, you can unyank the gem with Rubygems:
132
- ```
133
- $ RUBYGEMS_HOST=http://localhost:9292/private gem yank --key test_key private-example --version 0.1.0 --undo
134
- ```
135
-
136
- Like with pushing and yanking, the `/private` portion of the host option tells
137
- Gemstash you are interacting with private gems. Gemstash will only let you
138
- unyank from `/private`. Unlike pushing, Rubygems doesn't support `--host` for
139
- unyank and yank (yet), so you need to specify the host via the `RUBYGEMS_HOST`
140
- environment variable.
@@ -1,323 +0,0 @@
1
-
2
- Table of Contents
3
- =================
4
-
5
- * [Reference](#reference)
6
- * [Configuration](#configuration)
7
- * [:base_path](#base_path)
8
- * [:cache_type](#cache_type)
9
- * [:memcached_servers](#memcached_servers)
10
- * [:db_adapter](#db_adapter)
11
- * [:db_url](#db_url)
12
- * [:rubygems_url](#rubygems_url)
13
- * [:bind](#bind)
14
- * [Authorize](#authorize)
15
- * [Usage](#usage)
16
- * [Arguments](#arguments)
17
- * [Options](#options)
18
- * [--config-file](#--config-file)
19
- * [--key](#--key)
20
- * [--remove](#--remove)
21
- * [Start](#start)
22
- * [Usage](#usage-1)
23
- * [Options](#options-1)
24
- * [--config-file](#--config-file-1)
25
- * [--no-daemonize](#--no-daemonize)
26
- * [Stop](#stop)
27
- * [Usage](#usage-2)
28
- * [Options](#options-2)
29
- * [--config-file](#--config-file-2)
30
- * [Status](#status)
31
- * [Usage](#usage-3)
32
- * [Options](#options-3)
33
- * [--config-file](#--config-file-3)
34
- * [Setup](#setup)
35
- * [Usage](#usage-4)
36
- * [Options](#options-4)
37
- * [--redo](#--redo)
38
- * [--debug](#--debug)
39
- * [--config-file](#--config-file-4)
40
- * [Version](#version)
41
- * [Usage](#usage-5)
42
-
43
-
44
-
45
- ---
46
-
47
- # Reference
48
-
49
- ## Configuration
50
-
51
- **Example:**
52
- ```yaml
53
- # ~/.gemstash/config.yml
54
- ---
55
- :base_path: "/var/gemstash"
56
- :cache_type: memcached
57
- :memcached_servers: localhost:11211
58
- :db_adapter: postgres
59
- :db_url: postgres:///gemstash
60
- :rubygems_url: https://my.gem-source.local
61
- :bind: tcp://0.0.0.0:4242
62
- ```
63
-
64
- ### :base_path
65
-
66
- **Default value:** `~/.gemstash`
67
-
68
- **Valid values:** Any valid path
69
-
70
- **Description**<br />
71
- Specifies where to store local files like the server log, cached gem files, and
72
- the database (when using SQLite). If the default is being used, the directory
73
- will be created if it does not exist. Any other directory needs to be created
74
- ahead of time and be writable to the Gemstash server process. Specifying the
75
- `:base_path` via [`gemstash setup`](reference.md#setup) will create the
76
- directory for you.
77
-
78
- ### :cache_type
79
-
80
- **Default value:** `memory`
81
-
82
- **Valid values:** `memory`, `memcached`
83
-
84
- **Description**<br />
85
- Specifies how to cache values other than gem files (such as gem dependencies).
86
- `memory` will use an in memory cache while `memcached` will point to 1 or more
87
- Memcached servers. Use the `:memcached_servers` configuration key for specifying
88
- where the Memcached server(s) are.
89
-
90
- ### :memcached_servers
91
-
92
- **Default value:** `localhost:11211`
93
-
94
- **Valid values:** A comma delimited list of Memcached servers
95
-
96
- **Description**<br />
97
- Specifies the Memcached servers to connect to when using `memcached` for the
98
- `:cache_type`. Only used when `memcached` is used for `:cache_type`.
99
-
100
- ### :db_adapter
101
-
102
- **Default value:** `sqlite3`
103
-
104
- **Valid values:** `sqlite3`, `postgres`
105
-
106
- **Description**<br />
107
- Specifies what database adapter to use. When `sqlite3` is used, the database
108
- will be located at `gemstash.db` within the directory specified by `:base_path`.
109
- The database will automatically be created when using `sqlite3`. When `postgres`
110
- is used, the database to connect to must be specified in the `:db_url`
111
- configuration key. The database must already be created when using `postgres`.
112
-
113
- ### :db_url
114
-
115
- **Default value:** None
116
-
117
- **Valid values:** A valid database URL for the [Sequel
118
- gem](http://sequel.jeremyevans.net/)
119
-
120
- **Description**<br />
121
- Specifies the database to connect to when using `postgres` for the
122
- `:db_adapter`. Only used when `postgres` is used for `:db_adapter`.
123
-
124
- ### :rubygems_url
125
-
126
- **Default value:** `https://rubygems.org`
127
-
128
- **Valid values:** A valid gem source URL
129
-
130
- **Description**<br />
131
- Specifies the default gem source URL. When any API endpoint is called without a
132
- `/private` or `/upstream/<url>` prefix, this URL will be used to fetch the
133
- result. This value can be safely changed even if there are already gems stashed
134
- for the previous value.
135
-
136
- ### :bind
137
-
138
- **Default value:** `tcp://0.0.0.0:9292`
139
-
140
- **Valid values:** Any valid binding that [is supported by
141
- Puma](https://github.com/puma/puma#binding-tcp--sockets)
142
-
143
- **Description**<br />
144
- Specifies the binding used to start the Gemstash server. Keep in mind the user
145
- starting Gemstash needs to have access to bind in this manner. For example, if
146
- you use a port below 1024, you will need to run Gemstash as the root user.
147
-
148
- ## Authorize
149
-
150
- Adds or removes authorization to interact with privately stored gems.
151
-
152
- ### Usage
153
-
154
- ```
155
- gemstash authorize
156
- gemstash authorize push yank
157
- gemstash authorize yank unyank --key <secure-key>
158
- gemstash authorize --remove --key <secure-key>
159
- ```
160
-
161
- ### Arguments
162
-
163
- Any arguments will be used as specific permissions. Valid permissions include
164
- `push`, `yank`, and `unyank`. If no permissions are provided, then all
165
- permissions will be granted (including any that may be added in future versions
166
- of Gemstash).
167
-
168
- ### Options
169
-
170
- #### --config-file
171
-
172
- **Usage:** `--config-file <file>`
173
-
174
- **Description**<br />
175
- Specify the config file to use. If you aren't using the default config file at
176
- `~/.gemstash/config.yml`, then you must specify the config file via this option.
177
-
178
- #### --key
179
-
180
- **Usage:** `--key <secure-key>`
181
-
182
- **Description**<br />
183
- Specify the API key to affect. This should be the actual key value, not a name.
184
- This option is required when using `--remove` but is optional otherwise. If
185
- adding an authorization, using this will either create or update the permissions
186
- for the specified API key. If missing, a new API key will always be generated.
187
- Note that a key can only have a maximum length of 255 chars.
188
-
189
- #### --remove
190
-
191
- **Usage:** `--remove`
192
-
193
- **Description**<br />
194
- Remove an authorization rather than add or update one. When removing, permission
195
- values are not allowed. The `--key <secure-key>` option is required.
196
-
197
- ## Start
198
-
199
- Starts the Gemstash server.
200
-
201
- ### Usage
202
-
203
- ```
204
- gemstash start
205
- gemstash start --no-daemonize
206
- ```
207
-
208
- ### Options
209
-
210
- #### --config-file
211
-
212
- **Usage:** `--config-file <file>`
213
-
214
- **Description**<br />
215
- Specify the config file to use. If you aren't using the default config file at
216
- `~/.gemstash/config.yml`, then you must specify the config file via this option.
217
-
218
- #### --no-daemonize
219
-
220
- **Usage:** `--no-daemonize`
221
-
222
- **Description**<br />
223
- The Gemstash server daemonizes itself by default. Provide this option to instead
224
- run the server until `Ctrl-C` is typed. When not daemonized, the log will be
225
- output to standard out.
226
-
227
- ## Stop
228
-
229
- Stops the Gemstash server.
230
-
231
- ### Usage
232
-
233
- ```
234
- gemstash stop
235
- ```
236
-
237
- ### Options
238
-
239
- #### --config-file
240
-
241
- **Usage:** `--config-file <file>`
242
-
243
- **Description**<br />
244
- Specify the config file to use. If you aren't using the default config file at
245
- `~/.gemstash/config.yml`, then you must specify the config file via this option.
246
-
247
- ## Status
248
-
249
- Checks status of the Gemstash server.
250
-
251
- ### Usage
252
-
253
- ```
254
- gemstash status
255
- ```
256
-
257
- ### Options
258
-
259
- #### --config-file
260
-
261
- **Usage:** `--config-file <file>`
262
-
263
- **Description**<br />
264
- Specify the config file to use. If you aren't using the default config file at
265
- `~/.gemstash/config.yml`, then you must specify the config file via this option.
266
-
267
- ## Setup
268
-
269
- Customize your Gemstash configuration interactively. This will save your config
270
- file, but only if a few checks pass after you've provided your answers.
271
-
272
- ### Usage
273
-
274
- ```
275
- gemstash setup
276
- gemstash setup --redo
277
- gemstash setup --config-file <file>
278
- ```
279
-
280
- ### Options
281
-
282
- #### --redo
283
-
284
- **Usage:** `--redo`
285
-
286
- **Description**<br />
287
- Redo the configuration. This does nothing the first time `gemstash setup` is
288
- run. If you want to change your configuration using `gemstash setup` after
289
- you've run it before, you must provide this option, otherwise Gemstash will
290
- simply indicate your setup is complete.
291
-
292
- #### --debug
293
-
294
- **Usage:** `--debug`
295
-
296
- **Description**<br />
297
- Output additional information if one of the checks at the end of setup fails.
298
- This will do nothing if all checks pass.
299
-
300
- #### --config-file
301
-
302
- **Usage:** `--config-file <file>`
303
-
304
- **Description**<br />
305
- Specify the config file to write to. Without this option, your configuration
306
- will be written to `~/.gemstash/config.yml`. If you write to a custom location,
307
- you will need to pass the `--config-file` option to all Gemstash commands.
308
-
309
- ## Version
310
-
311
- Show what version of Gemstash you are using.
312
-
313
- ### Usage
314
-
315
- ```
316
- gemstash version
317
- gemstash --version
318
- gemstash -v
319
- ```
320
-
321
- ---
322
-
323
- Table of contents thanks to [gh-md-toc](https://github.com/ekalinin/github-markdown-toc).