travis 1.5.9.travis.360.4 → 1.5.9.travis.361.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- NzhjYzU1NGE5NzM2N2Y0MzgzOWI5YzFhMTU1ODU1NzEyZTYyNjUwYw==
4
+ YTM3ZGUxYTZiNWEzNTE3YWU1ODZkMGEyNTY1ZTUzOWY5NWI3ZjE4OA==
5
5
  data.tar.gz: !binary |-
6
- NGMyODliMzkwZTk2ZDEwNGY0YjFlZjEwOTI2Y2FkMjQzZTY2Y2MxMg==
6
+ MjgxNmY1ODE0N2Q3ZWEzMGNiNmZlNjliNzVjOWRlZjRiMmI0YjA0MA==
7
7
  !binary "U0hBNTEy":
8
8
  metadata.gz: !binary |-
9
- NTQ3MDQxNTRiMDdjMjczOWIzOWI1YjJjMzA4MTE2OThiMjc5NTk4NzQ3ZjVh
10
- YmFhNjY0OWRlMTgwMzdkZGFkM2Q3NzVjY2FmMGNkMzEyN2I3YWFiNWJjMjU0
11
- ODNjYzExYWZjOTE5MjE5YWVmMDEyNDY5Y2I5OThjMzRkNTYyMGM=
9
+ ZjVlNmY4NWFlNzc5YWE4NTVjYTZjYzQ0ZDQ1Y2Y2Yzc0NGNjY2U1MDgyYjUx
10
+ MTY2YTg5NWZjNzdhNWJhYzc0NDA5ZjdlN2I2ZTAzNTBlZmZiZDYwM2U4N2Yw
11
+ Zjc4Yjk2OTlhYTIyODU4ZTE3ZTQ0M2UwNzFiOTIyZDA0NTQ0ODU=
12
12
  data.tar.gz: !binary |-
13
- ODgxNTkyZTZkMTBkZTViMmUwN2RiOTAxMTQ4MmZlODQxYTI2NDVmMTE2NGE1
14
- N2Y5ZGY5YjQ0NTc3MTFhZTk0MTUzZDU1YmNhY2Q4NTBjZTAxMTgwNWJlMTJk
15
- MGMxMDc2NmZhYjE0ODQ3ZWUzNWYwYjJkYjNiZTBhM2M2OGY5MGY=
13
+ NDk5YzYxZGZkYzM5Y2Y5ZGZhYTM4ZmQ2YjNhNmFhOGNiZWI2NjQxM2ZiYjZk
14
+ NThhOTBlMTc3YjAwYWM5MmQ1NTZhNzY0YTcwMjY0ODNiMGVkM2ZjYjU0Zjc0
15
+ MmQ2ZWI2ZGRiNzQ4MWQ5NTI2NDFmY2MyMDJlMGJlYzg2ZDBiYTk=
data/README.md CHANGED
@@ -24,6 +24,7 @@ The [travis gem](https://rubygems.org/gems/travis) includes both a [command line
24
24
  * [`whoami`](#whoami)
25
25
  * [Repository Commands](#repository-commands)
26
26
  * [`branches`](#branches)
27
+ * [`cache`](#cache)
27
28
  * [`cancel`](#cancel)
28
29
  * [`disable`](#disable)
29
30
  * [`enable`](#enable)
@@ -389,12 +390,16 @@ Again, like most other commands, goes well with shell scripting:
389
390
  -h, --help Display help
390
391
  -i, --[no-]interactive be interactive and colorful
391
392
  -E, --[no-]explode don't rescue exceptions
393
+ --skip-version-check don't check if travis client is up to date
394
+ --skip-completion-check don't check if auto-completion is set up
392
395
  -e, --api-endpoint URL Travis API server to talk to
396
+ -I, --[no-]insecure do not verify SSL certificate of API endpoint
393
397
  --pro short-cut for --api-endpoint 'https://api.travis-ci.com/'
394
398
  --org short-cut for --api-endpoint 'https://api.travis-ci.org/'
395
399
  -t, --token [ACCESS_TOKEN] access token to use
396
400
  --debug show API requests
397
- -r, --repo SLUG
401
+ -X, --enterprise [NAME] use enterprise setup (optionally takes name for multiple setups)
402
+ -r, --repo SLUG repository to use (will try to detect from current git clone)
398
403
 
399
404
  Repository commands have all the options [General API Commands](#general-api-commands) have.
400
405
 
@@ -419,6 +424,68 @@ Displays the most recent build for each branch:
419
424
 
420
425
  For more fine grained control and older builds on a specific branch, see [`history`](#history).
421
426
 
427
+ #### `cache`
428
+
429
+ Lists or deletes repository caches.
430
+ Usage: travis cache [options]
431
+ -h, --help Display help
432
+ -i, --[no-]interactive be interactive and colorful
433
+ -E, --[no-]explode don't rescue exceptions
434
+ --skip-version-check don't check if travis client is up to date
435
+ --skip-completion-check don't check if auto-completion is set up
436
+ -e, --api-endpoint URL Travis API server to talk to
437
+ -I, --[no-]insecure do not verify SSL certificate of API endpoint
438
+ --pro short-cut for --api-endpoint 'https://api.travis-ci.com/'
439
+ --org short-cut for --api-endpoint 'https://api.travis-ci.org/'
440
+ -t, --token [ACCESS_TOKEN] access token to use
441
+ --debug show API requests
442
+ -X, --enterprise [NAME] use enterprise setup (optionally takes name for multiple setups)
443
+ -r, --repo SLUG repository to use (will try to detect from current git clone)
444
+ -d, --delete delete listed caches
445
+ -b, --branch BRANCH only list/delete caches on given branch
446
+ -m, --match STRING only list/delete caches where slug matches given string
447
+ -f, --force do not ask user to confirm deleting the caches
448
+
449
+ Lists or deletes [directory caches](http://about.travis-ci.org/docs/user/caching/) for a repository:
450
+
451
+ $ travis cache
452
+ On branch master:
453
+ cache--rvm-2.0.0--gemfile-Gemfile last modified: 2013-11-04 13:45:44 size: 62.21 MiB
454
+ cache--rvm-ruby-head--gemfile-Gemfile last modified: 2013-11-04 13:46:55 size: 62.65 MiB
455
+
456
+ On branch example:
457
+ cache--rvm-2.0.0--gemfile-Gemfile last modified: 2013-11-04 13:45:44 size: 62.21 MiB
458
+
459
+ Overall size of above caches: 187.07 MiB
460
+
461
+ You can filter by branch:
462
+
463
+ $ travis cache --branch master
464
+ On branch master:
465
+ cache--rvm-2.0.0--gemfile-Gemfile last modified: 2013-11-04 13:45:44 size: 62.21 MiB
466
+ cache--rvm-ruby-head--gemfile-Gemfile last modified: 2013-11-04 13:46:55 size: 62.65 MiB
467
+
468
+ Overall size of above caches: 124.86 MiB
469
+
470
+ And by matching against the slug:
471
+
472
+ $ travis cache --match 2.0.0
473
+ On branch master:
474
+ cache--rvm-2.0.0--gemfile-Gemfile last modified: 2013-11-04 13:45:44 size: 62.21 MiB
475
+
476
+ Overall size of above caches: 62.21 MiB
477
+
478
+ You can also use this command to delete caches:
479
+
480
+ $ travis cache -b example -m 2.0.0 --delete
481
+ DANGER ZONE: Do you really want to delete all caches on branch example that match 2.0.0? |no| yes
482
+ Deleted the following caches:
483
+
484
+ On branch example:
485
+ cache--rvm-2.0.0--gemfile-Gemfile last modified: 2013-11-04 13:45:44 size: 62.21 MiB
486
+
487
+ Overall size of above caches: 62.21 MiB
488
+
422
489
  #### `cancel`
423
490
 
424
491
  This command will cancel the latest build:
@@ -1169,6 +1236,28 @@ commit = repo.last_build.commit
1169
1236
  puts "Last tested commit: #{commit.short_sha} on #{commit.branch} by #{commit.author_name} - #{commit.subject}"
1170
1237
  ```
1171
1238
 
1239
+ #### Caches
1240
+
1241
+ Caches can be fetched for a repository.
1242
+
1243
+ ``` ruby
1244
+ require 'travis/pro'
1245
+
1246
+ Travis::Pro.access_token = "MY SECRET TOKEN"
1247
+ repo = Travis::Pro::Repository.find("my/rep")
1248
+
1249
+ repo.caches.each do |cache|
1250
+ puts "#{cache.branch}: #{cache.size}"
1251
+ cache.delete
1252
+ end
1253
+ ```
1254
+
1255
+ It is also possible to delete multiple caches with a single API call:
1256
+
1257
+ ``` ruby
1258
+ repo.delete_caches(branch: "master", match: "rbx")
1259
+ ```
1260
+
1172
1261
  #### Workers
1173
1262
 
1174
1263
  If a worker is running something, it will reference a `job` and a `repository`. Otherwise the values will be `nil`.
@@ -1356,7 +1445,9 @@ If you have the old `travis-cli` gem installed, you should `gem uninstall travis
1356
1445
 
1357
1446
  **1.5.9** (not yet released)
1358
1447
 
1448
+ * Add `travis cache` to list and delete directory caches.
1359
1449
  * Add `travis report` to give a report of the system, endpoint, configuration and last exception.
1450
+ * Add `Cache` entity.
1360
1451
 
1361
1452
  **1.5.8** (October 24, 2013)
1362
1453
 
data/assets/travis.sh CHANGED
@@ -19,13 +19,14 @@ _travis_complete() {
19
19
  if type compdef 1>/dev/null 2>/dev/null; then
20
20
  compdef _travis travis
21
21
  _travis() { _travis_complete $((${#words} - 1)) "${words[2]}"; }
22
- _travis_commands() { list=(accounts:"displays accounts and their subscription status" branches:"displays the most recent build for each branch" cancel:"cancels a job or build" console:"interactive shell" disable:"disables a project" enable:"enables a project" encrypt:"encrypts values for the .travis.yml" endpoint:"displays or changes the API endpoint" help:"helps you out when in dire need of information" history:"displays a projects build history" init:"generates a .travis.yml and enables the project" login:"authenticates against the API and stores the token" logout:"deletes the stored API token" logs:"streams test logs" monitor:"live monitor for what's going on" open:"opens a build or job in the browser" pubkey:"prints out a repository's public key" raw:"makes an (authenticated) API call and prints out the result" restart:"restarts a build or job" setup:"sets up an addon or deploy target" show:"displays a build or job" status:"checks status of the latest build" sync:"triggers a new sync with GitHub" token:"outputs the secret API token" version:"outputs the client version" whatsup:"lists most recent builds" whoami:"outputs the current user") _describe -t common-commands 'common commands' list; }
22
+ _travis_commands() { list=(accounts:"displays accounts and their subscription status" branches:"displays the most recent build for each branch" cache:"lists or deletes repository caches" cancel:"cancels a job or build" console:"interactive shell" disable:"disables a project" enable:"enables a project" encrypt:"encrypts values for the .travis.yml" endpoint:"displays or changes the API endpoint" help:"helps you out when in dire need of information" history:"displays a projects build history" init:"generates a .travis.yml and enables the project" login:"authenticates against the API and stores the token" logout:"deletes the stored API token" logs:"streams test logs" monitor:"live monitor for what's going on" open:"opens a build or job in the browser" pubkey:"prints out a repository's public key" raw:"makes an (authenticated) API call and prints out the result" report:"generates a report useful for filing issues" restart:"restarts a build or job" setup:"sets up an addon or deploy target" show:"displays a build or job" status:"checks status of the latest build" sync:"triggers a new sync with GitHub" token:"outputs the secret API token" version:"outputs the client version" whatsup:"lists most recent builds" whoami:"outputs the current user") _describe -t common-commands 'common commands' list; }
23
23
  _travis_setup() { list=(appfog:"automatic deployment to Appfog" cloudcontrol:"automatic deployment to cloudControl" cloudfoundry:"automatic deployment to Cloud Foundry" engineyard:"automatic deployment to Engine Yard" heroku:"automatic deployment to Heroku" npm:"automatic release to NPM" nodejitsu:"automatic deployment to Nodejitsu" openshift:"automatic deployment to OpenShfit" pypi:"automatic deployment to PyPI" rubygems:"automatic release to RubyGems" s:"automatic pushing to S3" sauce_connect:"Sauce Connet addon for Sauce Labs integration") _describe -t common-commands 'common commands' list; }
24
24
  _travis_init() { list=(c:'initialize c project' clojure:'initialize clojure project' cpp:'initialize cpp project' erlang:'initialize erlang project' go:'initialize go project' groovy:'initialize groovy project' haskell:'initialize haskell project' java:'initialize java project' node_js:'initialize node_js project' objective-c:'initialize objective-c project' perl:'initialize perl project' php:'initialize php project' python:'initialize python project' ruby:'initialize ruby project' scala:'initialize scala project') _describe -t common-commands 'common commands' list; }
25
25
  _travis_option() {
26
26
  case "${words[2]}" in
27
27
  accounts) _arguments -s -S "-h[Display help]" "--help[Display help]" "-i[be interactive and colorful]" "--interactive[be interactive and colorful]" "--no-interactive[be interactive and colorful]" "-E[don't rescue exceptions]" "--explode[don't rescue exceptions]" "--no-explode[don't rescue exceptions]" "--skip-version-check[don't check if travis client is up to date]" "--skip-completion-check[don't check if auto-completion is set up]" "-e[Travis API server to talk to]" "--api-endpoint[Travis API server to talk to]" "-I[do not verify SSL certificate of API endpoint]" "--insecure[do not verify SSL certificate of API endpoint]" "--no-insecure[do not verify SSL certificate of API endpoint]" "--pro[short-cut for --api-endpoint 'https://api.travis-ci.com/']" "--org[short-cut for --api-endpoint 'https://api.travis-ci.org/']" "--staging[talks to staging system]" "-t[access token to use]" "--token[access token to use]" "--debug[show API requests]" "-X[use enterprise setup (optionally takes name for multiple setups)]" "--enterprise[use enterprise setup (optionally takes name for multiple setups)]" "--adapter[Faraday adapter to use for HTTP requests]" '*:file:_files' && return 0;;
28
28
  branches) _arguments -s -S "-h[Display help]" "--help[Display help]" "-i[be interactive and colorful]" "--interactive[be interactive and colorful]" "--no-interactive[be interactive and colorful]" "-E[don't rescue exceptions]" "--explode[don't rescue exceptions]" "--no-explode[don't rescue exceptions]" "--skip-version-check[don't check if travis client is up to date]" "--skip-completion-check[don't check if auto-completion is set up]" "-e[Travis API server to talk to]" "--api-endpoint[Travis API server to talk to]" "-I[do not verify SSL certificate of API endpoint]" "--insecure[do not verify SSL certificate of API endpoint]" "--no-insecure[do not verify SSL certificate of API endpoint]" "--pro[short-cut for --api-endpoint 'https://api.travis-ci.com/']" "--org[short-cut for --api-endpoint 'https://api.travis-ci.org/']" "--staging[talks to staging system]" "-t[access token to use]" "--token[access token to use]" "--debug[show API requests]" "-X[use enterprise setup (optionally takes name for multiple setups)]" "--enterprise[use enterprise setup (optionally takes name for multiple setups)]" "--adapter[Faraday adapter to use for HTTP requests]" "-r[repository to use (will try to detect from current git clone)]" "--repo[repository to use (will try to detect from current git clone)]" '*:file:_files' && return 0;;
29
+ cache) _arguments -s -S "-h[Display help]" "--help[Display help]" "-i[be interactive and colorful]" "--interactive[be interactive and colorful]" "--no-interactive[be interactive and colorful]" "-E[don't rescue exceptions]" "--explode[don't rescue exceptions]" "--no-explode[don't rescue exceptions]" "--skip-version-check[don't check if travis client is up to date]" "--skip-completion-check[don't check if auto-completion is set up]" "-e[Travis API server to talk to]" "--api-endpoint[Travis API server to talk to]" "-I[do not verify SSL certificate of API endpoint]" "--insecure[do not verify SSL certificate of API endpoint]" "--no-insecure[do not verify SSL certificate of API endpoint]" "--pro[short-cut for --api-endpoint 'https://api.travis-ci.com/']" "--org[short-cut for --api-endpoint 'https://api.travis-ci.org/']" "--staging[talks to staging system]" "-t[access token to use]" "--token[access token to use]" "--debug[show API requests]" "-X[use enterprise setup (optionally takes name for multiple setups)]" "--enterprise[use enterprise setup (optionally takes name for multiple setups)]" "--adapter[Faraday adapter to use for HTTP requests]" "-r[repository to use (will try to detect from current git clone)]" "--repo[repository to use (will try to detect from current git clone)]" "-d[delete listed caches]" "--delete[delete listed caches]" "-b[only list/delete caches on given branch]" "--branch[only list/delete caches on given branch]" "-m[only list/delete caches where slug matches given string]" "--match[only list/delete caches where slug matches given string]" "-f[do not ask user to confirm deleting the caches]" "--force[do not ask user to confirm deleting the caches]" '*:file:_files' && return 0;;
29
30
  cancel) _arguments -s -S "-h[Display help]" "--help[Display help]" "-i[be interactive and colorful]" "--interactive[be interactive and colorful]" "--no-interactive[be interactive and colorful]" "-E[don't rescue exceptions]" "--explode[don't rescue exceptions]" "--no-explode[don't rescue exceptions]" "--skip-version-check[don't check if travis client is up to date]" "--skip-completion-check[don't check if auto-completion is set up]" "-e[Travis API server to talk to]" "--api-endpoint[Travis API server to talk to]" "-I[do not verify SSL certificate of API endpoint]" "--insecure[do not verify SSL certificate of API endpoint]" "--no-insecure[do not verify SSL certificate of API endpoint]" "--pro[short-cut for --api-endpoint 'https://api.travis-ci.com/']" "--org[short-cut for --api-endpoint 'https://api.travis-ci.org/']" "--staging[talks to staging system]" "-t[access token to use]" "--token[access token to use]" "--debug[show API requests]" "-X[use enterprise setup (optionally takes name for multiple setups)]" "--enterprise[use enterprise setup (optionally takes name for multiple setups)]" "--adapter[Faraday adapter to use for HTTP requests]" "-r[repository to use (will try to detect from current git clone)]" "--repo[repository to use (will try to detect from current git clone)]" '*:file:_files' && return 0;;
30
31
  console) _arguments -s -S "-h[Display help]" "--help[Display help]" "-i[be interactive and colorful]" "--interactive[be interactive and colorful]" "--no-interactive[be interactive and colorful]" "-E[don't rescue exceptions]" "--explode[don't rescue exceptions]" "--no-explode[don't rescue exceptions]" "--skip-version-check[don't check if travis client is up to date]" "--skip-completion-check[don't check if auto-completion is set up]" "-e[Travis API server to talk to]" "--api-endpoint[Travis API server to talk to]" "-I[do not verify SSL certificate of API endpoint]" "--insecure[do not verify SSL certificate of API endpoint]" "--no-insecure[do not verify SSL certificate of API endpoint]" "--pro[short-cut for --api-endpoint 'https://api.travis-ci.com/']" "--org[short-cut for --api-endpoint 'https://api.travis-ci.org/']" "--staging[talks to staging system]" "-t[access token to use]" "--token[access token to use]" "--debug[show API requests]" "-X[use enterprise setup (optionally takes name for multiple setups)]" "--enterprise[use enterprise setup (optionally takes name for multiple setups)]" "--adapter[Faraday adapter to use for HTTP requests]" '*:file:_files' && return 0;;
31
32
  disable) _arguments -s -S "-h[Display help]" "--help[Display help]" "-i[be interactive and colorful]" "--interactive[be interactive and colorful]" "--no-interactive[be interactive and colorful]" "-E[don't rescue exceptions]" "--explode[don't rescue exceptions]" "--no-explode[don't rescue exceptions]" "--skip-version-check[don't check if travis client is up to date]" "--skip-completion-check[don't check if auto-completion is set up]" "-e[Travis API server to talk to]" "--api-endpoint[Travis API server to talk to]" "-I[do not verify SSL certificate of API endpoint]" "--insecure[do not verify SSL certificate of API endpoint]" "--no-insecure[do not verify SSL certificate of API endpoint]" "--pro[short-cut for --api-endpoint 'https://api.travis-ci.com/']" "--org[short-cut for --api-endpoint 'https://api.travis-ci.org/']" "--staging[talks to staging system]" "-t[access token to use]" "--token[access token to use]" "--debug[show API requests]" "-X[use enterprise setup (optionally takes name for multiple setups)]" "--enterprise[use enterprise setup (optionally takes name for multiple setups)]" "--adapter[Faraday adapter to use for HTTP requests]" "-r[repository to use (will try to detect from current git clone)]" "--repo[repository to use (will try to detect from current git clone)]" '*:file:_files' && return 0;;
@@ -42,6 +43,7 @@ if type compdef 1>/dev/null 2>/dev/null; then
42
43
  open) _arguments -s -S "-h[Display help]" "--help[Display help]" "-i[be interactive and colorful]" "--interactive[be interactive and colorful]" "--no-interactive[be interactive and colorful]" "-E[don't rescue exceptions]" "--explode[don't rescue exceptions]" "--no-explode[don't rescue exceptions]" "--skip-version-check[don't check if travis client is up to date]" "--skip-completion-check[don't check if auto-completion is set up]" "-e[Travis API server to talk to]" "--api-endpoint[Travis API server to talk to]" "-I[do not verify SSL certificate of API endpoint]" "--insecure[do not verify SSL certificate of API endpoint]" "--no-insecure[do not verify SSL certificate of API endpoint]" "--pro[short-cut for --api-endpoint 'https://api.travis-ci.com/']" "--org[short-cut for --api-endpoint 'https://api.travis-ci.org/']" "--staging[talks to staging system]" "-t[access token to use]" "--token[access token to use]" "--debug[show API requests]" "-X[use enterprise setup (optionally takes name for multiple setups)]" "--enterprise[use enterprise setup (optionally takes name for multiple setups)]" "--adapter[Faraday adapter to use for HTTP requests]" "-r[repository to use (will try to detect from current git clone)]" "--repo[repository to use (will try to detect from current git clone)]" "-g[Open the corresponding project, compare view or pull request on GitHub]" "--github[Open the corresponding project, compare view or pull request on GitHub]" "-p[Print out the URL instead of opening it in a browser]" "--print[Print out the URL instead of opening it in a browser]" '*:file:_files' && return 0;;
43
44
  pubkey) _arguments -s -S "-h[Display help]" "--help[Display help]" "-i[be interactive and colorful]" "--interactive[be interactive and colorful]" "--no-interactive[be interactive and colorful]" "-E[don't rescue exceptions]" "--explode[don't rescue exceptions]" "--no-explode[don't rescue exceptions]" "--skip-version-check[don't check if travis client is up to date]" "--skip-completion-check[don't check if auto-completion is set up]" "-e[Travis API server to talk to]" "--api-endpoint[Travis API server to talk to]" "-I[do not verify SSL certificate of API endpoint]" "--insecure[do not verify SSL certificate of API endpoint]" "--no-insecure[do not verify SSL certificate of API endpoint]" "--pro[short-cut for --api-endpoint 'https://api.travis-ci.com/']" "--org[short-cut for --api-endpoint 'https://api.travis-ci.org/']" "--staging[talks to staging system]" "-t[access token to use]" "--token[access token to use]" "--debug[show API requests]" "-X[use enterprise setup (optionally takes name for multiple setups)]" "--enterprise[use enterprise setup (optionally takes name for multiple setups)]" "--adapter[Faraday adapter to use for HTTP requests]" "-r[repository to use (will try to detect from current git clone)]" "--repo[repository to use (will try to detect from current git clone)]" "-p[encode in format used by pem]" "--pem[encode in format used by pem]" "--no-pem[encode in format used by pem]" '*:file:_files' && return 0;;
44
45
  raw) _arguments -s -S "-h[Display help]" "--help[Display help]" "-i[be interactive and colorful]" "--interactive[be interactive and colorful]" "--no-interactive[be interactive and colorful]" "-E[don't rescue exceptions]" "--explode[don't rescue exceptions]" "--no-explode[don't rescue exceptions]" "--skip-version-check[don't check if travis client is up to date]" "--skip-completion-check[don't check if auto-completion is set up]" "-e[Travis API server to talk to]" "--api-endpoint[Travis API server to talk to]" "-I[do not verify SSL certificate of API endpoint]" "--insecure[do not verify SSL certificate of API endpoint]" "--no-insecure[do not verify SSL certificate of API endpoint]" "--pro[short-cut for --api-endpoint 'https://api.travis-ci.com/']" "--org[short-cut for --api-endpoint 'https://api.travis-ci.org/']" "--staging[talks to staging system]" "-t[access token to use]" "--token[access token to use]" "--debug[show API requests]" "-X[use enterprise setup (optionally takes name for multiple setups)]" "--enterprise[use enterprise setup (optionally takes name for multiple setups)]" "--adapter[Faraday adapter to use for HTTP requests]" "--json[display as json]" "--no-json[display as json]" '*:file:_files' && return 0;;
46
+ report) _arguments -s -S "-h[Display help]" "--help[Display help]" "-i[be interactive and colorful]" "--interactive[be interactive and colorful]" "--no-interactive[be interactive and colorful]" "-E[don't rescue exceptions]" "--explode[don't rescue exceptions]" "--no-explode[don't rescue exceptions]" "--skip-version-check[don't check if travis client is up to date]" "--skip-completion-check[don't check if auto-completion is set up]" "-e[Travis API server to talk to]" "--api-endpoint[Travis API server to talk to]" "-I[do not verify SSL certificate of API endpoint]" "--insecure[do not verify SSL certificate of API endpoint]" "--no-insecure[do not verify SSL certificate of API endpoint]" "--pro[short-cut for --api-endpoint 'https://api.travis-ci.com/']" "--org[short-cut for --api-endpoint 'https://api.travis-ci.org/']" "--staging[talks to staging system]" "-t[access token to use]" "--token[access token to use]" "--debug[show API requests]" "-X[use enterprise setup (optionally takes name for multiple setups)]" "--enterprise[use enterprise setup (optionally takes name for multiple setups)]" "--adapter[Faraday adapter to use for HTTP requests]" "-r[include repositories in report]" "--known-repos[include repositories in report]" '*:file:_files' && return 0;;
45
47
  restart) _arguments -s -S "-h[Display help]" "--help[Display help]" "-i[be interactive and colorful]" "--interactive[be interactive and colorful]" "--no-interactive[be interactive and colorful]" "-E[don't rescue exceptions]" "--explode[don't rescue exceptions]" "--no-explode[don't rescue exceptions]" "--skip-version-check[don't check if travis client is up to date]" "--skip-completion-check[don't check if auto-completion is set up]" "-e[Travis API server to talk to]" "--api-endpoint[Travis API server to talk to]" "-I[do not verify SSL certificate of API endpoint]" "--insecure[do not verify SSL certificate of API endpoint]" "--no-insecure[do not verify SSL certificate of API endpoint]" "--pro[short-cut for --api-endpoint 'https://api.travis-ci.com/']" "--org[short-cut for --api-endpoint 'https://api.travis-ci.org/']" "--staging[talks to staging system]" "-t[access token to use]" "--token[access token to use]" "--debug[show API requests]" "-X[use enterprise setup (optionally takes name for multiple setups)]" "--enterprise[use enterprise setup (optionally takes name for multiple setups)]" "--adapter[Faraday adapter to use for HTTP requests]" "-r[repository to use (will try to detect from current git clone)]" "--repo[repository to use (will try to detect from current git clone)]" '*:file:_files' && return 0;;
46
48
  setup) _arguments -s -S "-h[Display help]" "--help[Display help]" "-i[be interactive and colorful]" "--interactive[be interactive and colorful]" "--no-interactive[be interactive and colorful]" "-E[don't rescue exceptions]" "--explode[don't rescue exceptions]" "--no-explode[don't rescue exceptions]" "--skip-version-check[don't check if travis client is up to date]" "--skip-completion-check[don't check if auto-completion is set up]" "-e[Travis API server to talk to]" "--api-endpoint[Travis API server to talk to]" "-I[do not verify SSL certificate of API endpoint]" "--insecure[do not verify SSL certificate of API endpoint]" "--no-insecure[do not verify SSL certificate of API endpoint]" "--pro[short-cut for --api-endpoint 'https://api.travis-ci.com/']" "--org[short-cut for --api-endpoint 'https://api.travis-ci.org/']" "--staging[talks to staging system]" "-t[access token to use]" "--token[access token to use]" "--debug[show API requests]" "-X[use enterprise setup (optionally takes name for multiple setups)]" "--enterprise[use enterprise setup (optionally takes name for multiple setups)]" "--adapter[Faraday adapter to use for HTTP requests]" "-r[repository to use (will try to detect from current git clone)]" "--repo[repository to use (will try to detect from current git clone)]" "-f[override config section if it already exists]" "--force[override config section if it already exists]" '*:file:_files' && return 0;;
47
49
  show) _arguments -s -S "-h[Display help]" "--help[Display help]" "-i[be interactive and colorful]" "--interactive[be interactive and colorful]" "--no-interactive[be interactive and colorful]" "-E[don't rescue exceptions]" "--explode[don't rescue exceptions]" "--no-explode[don't rescue exceptions]" "--skip-version-check[don't check if travis client is up to date]" "--skip-completion-check[don't check if auto-completion is set up]" "-e[Travis API server to talk to]" "--api-endpoint[Travis API server to talk to]" "-I[do not verify SSL certificate of API endpoint]" "--insecure[do not verify SSL certificate of API endpoint]" "--no-insecure[do not verify SSL certificate of API endpoint]" "--pro[short-cut for --api-endpoint 'https://api.travis-ci.com/']" "--org[short-cut for --api-endpoint 'https://api.travis-ci.org/']" "--staging[talks to staging system]" "-t[access token to use]" "--token[access token to use]" "--debug[show API requests]" "-X[use enterprise setup (optionally takes name for multiple setups)]" "--enterprise[use enterprise setup (optionally takes name for multiple setups)]" "--adapter[Faraday adapter to use for HTTP requests]" "-r[repository to use (will try to detect from current git clone)]" "--repo[repository to use (will try to detect from current git clone)]" '*:file:_files' && return 0;;
@@ -56,13 +58,14 @@ if type compdef 1>/dev/null 2>/dev/null; then
56
58
  elif type compctl 1>/dev/null 2>/dev/null; then
57
59
  compctl -K _travis travis
58
60
  _travis() { read -cA words && _travis_complete $((${#words} - 1)) "${words[2]}"; }
59
- _travis_commands() { reply=("accounts" "branches" "cancel" "console" "disable" "enable" "encrypt" "endpoint" "help" "history" "init" "login" "logout" "logs" "monitor" "open" "pubkey" "raw" "restart" "setup" "show" "status" "sync" "token" "version" "whatsup" "whoami"); }
61
+ _travis_commands() { reply=("accounts" "branches" "cache" "cancel" "console" "disable" "enable" "encrypt" "endpoint" "help" "history" "init" "login" "logout" "logs" "monitor" "open" "pubkey" "raw" "report" "restart" "setup" "show" "status" "sync" "token" "version" "whatsup" "whoami"); }
60
62
  _travis_setup() { reply=("appfog" "cloudcontrol" "cloudfoundry" "engineyard" "heroku" "npm" "nodejitsu" "openshift" "pypi" "rubygems" "s" "sauce_connect"); }
61
63
  _travis_init() { reply=("c" "clojure" "cpp" "erlang" "go" "groovy" "haskell" "java" "node_js" "objective-c" "perl" "php" "python" "ruby" "scala"); }
62
64
  _travis_option() {
63
65
  case "${words[2]}" in
64
66
  accounts) reply=("--help" "-h" "--interactive" "--no-interactive" "-i" "--explode" "--no-explode" "-E" "--skip-version-check" "--skip-completion-check" "--api-endpoint" "-e" "--insecure" "--no-insecure" "-I" "--pro" "--org" "--staging" "--token" "-t" "--debug" "--enterprise" "-X" "--adapter");;
65
67
  branches) reply=("--help" "-h" "--interactive" "--no-interactive" "-i" "--explode" "--no-explode" "-E" "--skip-version-check" "--skip-completion-check" "--api-endpoint" "-e" "--insecure" "--no-insecure" "-I" "--pro" "--org" "--staging" "--token" "-t" "--debug" "--enterprise" "-X" "--adapter" "--repo" "-r");;
68
+ cache) reply=("--help" "-h" "--interactive" "--no-interactive" "-i" "--explode" "--no-explode" "-E" "--skip-version-check" "--skip-completion-check" "--api-endpoint" "-e" "--insecure" "--no-insecure" "-I" "--pro" "--org" "--staging" "--token" "-t" "--debug" "--enterprise" "-X" "--adapter" "--repo" "-r" "--delete" "-d" "--branch" "-b" "--match" "-m" "--force" "-f");;
66
69
  cancel) reply=("--help" "-h" "--interactive" "--no-interactive" "-i" "--explode" "--no-explode" "-E" "--skip-version-check" "--skip-completion-check" "--api-endpoint" "-e" "--insecure" "--no-insecure" "-I" "--pro" "--org" "--staging" "--token" "-t" "--debug" "--enterprise" "-X" "--adapter" "--repo" "-r");;
67
70
  console) reply=("--help" "-h" "--interactive" "--no-interactive" "-i" "--explode" "--no-explode" "-E" "--skip-version-check" "--skip-completion-check" "--api-endpoint" "-e" "--insecure" "--no-insecure" "-I" "--pro" "--org" "--staging" "--token" "-t" "--debug" "--enterprise" "-X" "--adapter");;
68
71
  disable) reply=("--help" "-h" "--interactive" "--no-interactive" "-i" "--explode" "--no-explode" "-E" "--skip-version-check" "--skip-completion-check" "--api-endpoint" "-e" "--insecure" "--no-insecure" "-I" "--pro" "--org" "--staging" "--token" "-t" "--debug" "--enterprise" "-X" "--adapter" "--repo" "-r");;
@@ -79,6 +82,7 @@ elif type compctl 1>/dev/null 2>/dev/null; then
79
82
  open) reply=("--help" "-h" "--interactive" "--no-interactive" "-i" "--explode" "--no-explode" "-E" "--skip-version-check" "--skip-completion-check" "--api-endpoint" "-e" "--insecure" "--no-insecure" "-I" "--pro" "--org" "--staging" "--token" "-t" "--debug" "--enterprise" "-X" "--adapter" "--repo" "-r" "--github" "-g" "--print" "-p");;
80
83
  pubkey) reply=("--help" "-h" "--interactive" "--no-interactive" "-i" "--explode" "--no-explode" "-E" "--skip-version-check" "--skip-completion-check" "--api-endpoint" "-e" "--insecure" "--no-insecure" "-I" "--pro" "--org" "--staging" "--token" "-t" "--debug" "--enterprise" "-X" "--adapter" "--repo" "-r" "--pem" "--no-pem" "-p");;
81
84
  raw) reply=("--help" "-h" "--interactive" "--no-interactive" "-i" "--explode" "--no-explode" "-E" "--skip-version-check" "--skip-completion-check" "--api-endpoint" "-e" "--insecure" "--no-insecure" "-I" "--pro" "--org" "--staging" "--token" "-t" "--debug" "--enterprise" "-X" "--adapter" "--json" "--no-json");;
85
+ report) reply=("--help" "-h" "--interactive" "--no-interactive" "-i" "--explode" "--no-explode" "-E" "--skip-version-check" "--skip-completion-check" "--api-endpoint" "-e" "--insecure" "--no-insecure" "-I" "--pro" "--org" "--staging" "--token" "-t" "--debug" "--enterprise" "-X" "--adapter" "--known-repos" "-r");;
82
86
  restart) reply=("--help" "-h" "--interactive" "--no-interactive" "-i" "--explode" "--no-explode" "-E" "--skip-version-check" "--skip-completion-check" "--api-endpoint" "-e" "--insecure" "--no-insecure" "-I" "--pro" "--org" "--staging" "--token" "-t" "--debug" "--enterprise" "-X" "--adapter" "--repo" "-r");;
83
87
  setup) reply=("--help" "-h" "--interactive" "--no-interactive" "-i" "--explode" "--no-explode" "-E" "--skip-version-check" "--skip-completion-check" "--api-endpoint" "-e" "--insecure" "--no-insecure" "-I" "--pro" "--org" "--staging" "--token" "-t" "--debug" "--enterprise" "-X" "--adapter" "--repo" "-r" "--force" "-f");;
84
88
  show) reply=("--help" "-h" "--interactive" "--no-interactive" "-i" "--explode" "--no-explode" "-E" "--skip-version-check" "--skip-completion-check" "--api-endpoint" "-e" "--insecure" "--no-insecure" "-I" "--pro" "--org" "--staging" "--token" "-t" "--debug" "--enterprise" "-X" "--adapter" "--repo" "-r");;
@@ -93,7 +97,7 @@ elif type compctl 1>/dev/null 2>/dev/null; then
93
97
  elif type complete 1>/dev/null 2>/dev/null; then
94
98
  complete -F _travis travis
95
99
  _travis() { _travis_complete "$COMP_CWORD" "${COMP_WORDS[1]}"; }
96
- _travis_commands() { COMPREPLY=( $(compgen -W "accounts branches cancel console disable enable encrypt endpoint help history init login logout logs monitor open pubkey raw restart setup show status sync token version whatsup whoami" -- "${COMP_WORDS[COMP_CWORD]}") ); }
100
+ _travis_commands() { COMPREPLY=( $(compgen -W "accounts branches cache cancel console disable enable encrypt endpoint help history init login logout logs monitor open pubkey raw report restart setup show status sync token version whatsup whoami" -- "${COMP_WORDS[COMP_CWORD]}") ); }
97
101
  _travis_setup() { COMPREPLY=( $(compgen -W "appfog cloudcontrol cloudfoundry engineyard heroku npm nodejitsu openshift pypi rubygems s sauce_connect" -- "${COMP_WORDS[COMP_CWORD]}") ); }
98
102
  _travis_init() { COMPREPLY=( $(compgen -W "c clojure cpp erlang go groovy haskell java node_js objective-c perl php python ruby scala" -- "${COMP_WORDS[COMP_CWORD]}") ); }
99
103
  _travis_option() {
@@ -101,6 +105,7 @@ elif type complete 1>/dev/null 2>/dev/null; then
101
105
  case "${COMP_WORDS[1]}" in
102
106
  accounts) options="--help -h --interactive --no-interactive -i --explode --no-explode -E --skip-version-check --skip-completion-check --api-endpoint -e --insecure --no-insecure -I --pro --org --staging --token -t --debug --enterprise -X --adapter";;
103
107
  branches) options="--help -h --interactive --no-interactive -i --explode --no-explode -E --skip-version-check --skip-completion-check --api-endpoint -e --insecure --no-insecure -I --pro --org --staging --token -t --debug --enterprise -X --adapter --repo -r";;
108
+ cache) options="--help -h --interactive --no-interactive -i --explode --no-explode -E --skip-version-check --skip-completion-check --api-endpoint -e --insecure --no-insecure -I --pro --org --staging --token -t --debug --enterprise -X --adapter --repo -r --delete -d --branch -b --match -m --force -f";;
104
109
  cancel) options="--help -h --interactive --no-interactive -i --explode --no-explode -E --skip-version-check --skip-completion-check --api-endpoint -e --insecure --no-insecure -I --pro --org --staging --token -t --debug --enterprise -X --adapter --repo -r";;
105
110
  console) options="--help -h --interactive --no-interactive -i --explode --no-explode -E --skip-version-check --skip-completion-check --api-endpoint -e --insecure --no-insecure -I --pro --org --staging --token -t --debug --enterprise -X --adapter";;
106
111
  disable) options="--help -h --interactive --no-interactive -i --explode --no-explode -E --skip-version-check --skip-completion-check --api-endpoint -e --insecure --no-insecure -I --pro --org --staging --token -t --debug --enterprise -X --adapter --repo -r";;
@@ -117,6 +122,7 @@ elif type complete 1>/dev/null 2>/dev/null; then
117
122
  open) options="--help -h --interactive --no-interactive -i --explode --no-explode -E --skip-version-check --skip-completion-check --api-endpoint -e --insecure --no-insecure -I --pro --org --staging --token -t --debug --enterprise -X --adapter --repo -r --github -g --print -p";;
118
123
  pubkey) options="--help -h --interactive --no-interactive -i --explode --no-explode -E --skip-version-check --skip-completion-check --api-endpoint -e --insecure --no-insecure -I --pro --org --staging --token -t --debug --enterprise -X --adapter --repo -r --pem --no-pem -p";;
119
124
  raw) options="--help -h --interactive --no-interactive -i --explode --no-explode -E --skip-version-check --skip-completion-check --api-endpoint -e --insecure --no-insecure -I --pro --org --staging --token -t --debug --enterprise -X --adapter --json --no-json";;
125
+ report) options="--help -h --interactive --no-interactive -i --explode --no-explode -E --skip-version-check --skip-completion-check --api-endpoint -e --insecure --no-insecure -I --pro --org --staging --token -t --debug --enterprise -X --adapter --known-repos -r";;
120
126
  restart) options="--help -h --interactive --no-interactive -i --explode --no-explode -E --skip-version-check --skip-completion-check --api-endpoint -e --insecure --no-insecure -I --pro --org --staging --token -t --debug --enterprise -X --adapter --repo -r";;
121
127
  setup) options="--help -h --interactive --no-interactive -i --explode --no-explode -E --skip-version-check --skip-completion-check --api-endpoint -e --insecure --no-insecure -I --pro --org --staging --token -t --debug --enterprise -X --adapter --repo -r --force -f";;
122
128
  show) options="--help -h --interactive --no-interactive -i --explode --no-explode -E --skip-version-check --skip-completion-check --api-endpoint -e --insecure --no-insecure -I --pro --org --staging --token -t --debug --enterprise -X --adapter --repo -r";;
data/lib/travis/cli.rb CHANGED
@@ -17,6 +17,7 @@ module Travis
17
17
  autoload :ApiCommand, 'travis/cli/api_command'
18
18
  autoload :Accounts, 'travis/cli/accounts'
19
19
  autoload :Branches, 'travis/cli/branches'
20
+ autoload :Cache, 'travis/cli/cache'
20
21
  autoload :Cancel, 'travis/cli/cancel'
21
22
  autoload :Command, 'travis/cli/command'
22
23
  autoload :Console, 'travis/cli/console'
@@ -0,0 +1,76 @@
1
+ require 'travis/cli'
2
+
3
+ module Travis
4
+ module CLI
5
+ class Cache < RepoCommand
6
+ description 'lists or deletes repository caches'
7
+ on '-d', '--delete', 'delete listed caches'
8
+ on '-b', '--branch BRANCH', 'only list/delete caches on given branch'
9
+ on '-m', '--match STRING', 'only list/delete caches where slug matches given string'
10
+ on '-f', '--force', 'do not ask user to confirm deleting the caches'
11
+
12
+ def run
13
+ error "not allowed to access caches for #{color(repository.slug, :bold)}" unless repository.member?
14
+ branches = caches.group_by(&:branch)
15
+ check_caches
16
+
17
+ warn "Deleted the following caches:\n" if delete?
18
+ branches.each { |name, list| display_branch(name, list) }
19
+ size = caches.inject(0) { |s,c| s + c.size }
20
+ say "Overall size of above caches: " << formatter.file_size(size)
21
+ end
22
+
23
+ private
24
+
25
+ def check_caches
26
+ return if caches.any?
27
+ say "no caches found"
28
+ exit
29
+ end
30
+
31
+ def display_branch(name, list)
32
+ say color(name ? "On branch #{name}:" : "Global:", :important)
33
+ list.each { |c| display_cache(c) }
34
+ puts
35
+ end
36
+
37
+ def display_cache(cache)
38
+ say [
39
+ color(cache.slug.ljust(space), :bold),
40
+ "last modified: " << formatter.time(cache.last_modified),
41
+ "size: " << formatter.file_size(cache.size)
42
+ ].join(" ") << "\n"
43
+ end
44
+
45
+ def params
46
+ params = {}
47
+ params[:branch] = branch if branch?
48
+ params[:match] = match if match?
49
+ params
50
+ end
51
+
52
+ def caches
53
+ @caches ||= drop? ? repository.delete_caches(params) : repository.caches(params)
54
+ end
55
+
56
+ def space
57
+ @space ||= caches.map(&:slug).map(&:size).max
58
+ end
59
+
60
+ def drop?
61
+ return false unless delete?
62
+ return true if force?
63
+ error "not deleting caches without --force" unless interactive?
64
+ error "aborted" unless danger_zone? "Do you really want to delete #{description}?"
65
+ true
66
+ end
67
+
68
+ def description
69
+ description = color("all caches", :important)
70
+ description << " on branch #{color(branch, :important)}" if branch?
71
+ description << " that match #{color(match, :important)}" if match?
72
+ description
73
+ end
74
+ end
75
+ end
76
+ end
@@ -318,6 +318,10 @@ module Travis
318
318
  wrong_args("many") if args.any?
319
319
  end
320
320
 
321
+ def danger_zone?(message)
322
+ agree(color("DANGER ZONE: ", [:red, :bold]) << message << " ") { |q| q.default = "no" }
323
+ end
324
+
321
325
  def wrong_args(quantity)
322
326
  error "too #{quantity} arguments" do
323
327
  say help
@@ -0,0 +1,101 @@
1
+ require 'travis/cli'
2
+ require 'travis/tools/system'
3
+
4
+ module Travis
5
+ module CLI
6
+ class Report < ApiCommand
7
+ description "generates a report useful for filing issues"
8
+ on '-r', '--known-repos', 'include repositories in report'
9
+ skip :authenticate, :clear_error
10
+
11
+ def run
12
+ display("System", :general)
13
+ display("CLI", :cli_info)
14
+ display("Session", :session_info)
15
+ display("Endpoints", :endpoints)
16
+ display("Known Repositories", :known_repos) if known_repos?
17
+ display_error
18
+ say "For issues with the command line tool, please visit #{color("https://github.com/travis-ci/travis/issues", :underline)}."
19
+ say "For Travis CI in general, go to #{color("https://github.com/travis-ci/travis-ci/issues", :underline)} or email #{color("support@travis-ci.com", :underline)}."
20
+ end
21
+
22
+ def display_error
23
+ return unless error = load_file("error.log")
24
+ display("Last Exception", :say, color(error, :info))
25
+ end
26
+
27
+ def display(title, method, *args)
28
+ say color(title, [:bold, :underline])
29
+ send(method, *args) { |*a| list(*a) }
30
+ puts
31
+ end
32
+
33
+ def list(key, value, additional = nil)
34
+ value = case value
35
+ when Array then value.empty? ? none : value.map(&:inspect).join(", ")
36
+ when true then "yes"
37
+ when false then "no"
38
+ when nil then "unknown"
39
+ else value.to_s
40
+ end
41
+ additional &&= " (#{additional})"
42
+ say "#{key}:".ljust(known_repos? ? 50 : 25) << " " << color(value.to_s, :bold) << additional.to_s
43
+ end
44
+
45
+ def general
46
+ yield "Ruby", Tools::System.ruby
47
+ yield "Operating System", Tools::System.full_os
48
+ yield "RubyGems", Tools::System.rubygems
49
+ end
50
+
51
+ def cli_info
52
+ yield "Version", Travis::VERSION
53
+ yield "Plugins", defined?(TRAVIS_PLUGINS) ? TRAVIS_PLUGINS : []
54
+ yield "Auto-Completion", Tools::Completion.completion_installed?
55
+ yield "Last Version Check", last_check['at'] ? Time.at(last_check['at']) : 'never'
56
+ end
57
+
58
+ def session_info
59
+ yield "API Endpoint", api_endpoint
60
+ yield "Logged In", user_info
61
+ yield "Verify SSL", !insecure
62
+ yield "Enterprise", enterprise?
63
+ end
64
+
65
+ def endpoints
66
+ config['endpoints'].each do |endpoint, info|
67
+ info = [
68
+ info['access_token'] ? 'access token' : nil,
69
+ info['insecure'] ? 'insecure' : nil,
70
+ default_endpoint == endpoint ? 'default' : nil,
71
+ endpoint == api_endpoint ? 'current' : nil
72
+ ].compact
73
+ yield endpoint_name(endpoint), endpoint, info.join(', ')
74
+ end
75
+ end
76
+
77
+ def endpoint_name(url, prefix = "")
78
+ case url
79
+ when Travis::Client::ORG_URI then "#{prefix}org"
80
+ when Travis::Client::PRO_URI then "#{prefix}pro"
81
+ when /api-staging\.travis-ci/ then endpoint_name(url.sub("api-staging.", "api."), "staging-")
82
+ else
83
+ key, _ = config['enterprise'].detect { |k,v| v.start_with? url }
84
+ key ? "enterprise %p" % key : "???"
85
+ end
86
+ end
87
+
88
+ def known_repos
89
+ config["repos"].each do |key, info|
90
+ yield key, info['endpoint']
91
+ end
92
+ end
93
+
94
+ def user_info
95
+ access_token ? "as %p" % user.login : "no"
96
+ rescue Travis::Client::Error => e
97
+ e.message
98
+ end
99
+ end
100
+ end
101
+ end
data/lib/travis/client.rb CHANGED
@@ -9,6 +9,7 @@ require 'travis/client/user'
9
9
  require 'travis/client/repository'
10
10
  require 'travis/client/build'
11
11
  require 'travis/client/artifact'
12
+ require 'travis/client/cache'
12
13
  require 'travis/client/commit'
13
14
  require 'travis/client/job'
14
15
  require 'travis/client/worker'
@@ -0,0 +1,25 @@
1
+ require 'travis/client/weak_entity'
2
+
3
+ module Travis
4
+ module Client
5
+ class Cache < WeakEntity
6
+ # @!parse attr_reader :repository_id, :size, :slug, :branch, :last_modified
7
+ attributes :repository_id, :size, :slug, :branch, :last_modified
8
+ time :last_modified
9
+
10
+ # @!parse attr_reader :repository
11
+ has :repository
12
+
13
+ one :cache
14
+ many :caches
15
+
16
+ def delete
17
+ repository.delete_caches(:branch => branch, :match => slug)
18
+ end
19
+
20
+ def inspect_info
21
+ [repository.slug, branch, slug].compact.join(" ")
22
+ end
23
+ end
24
+ end
25
+ end
@@ -25,6 +25,10 @@ module Travis
25
25
  names.each { |n| MAP[n.to_s] = self }
26
26
  end
27
27
 
28
+ def self.weak?
29
+ false
30
+ end
31
+
28
32
  def self.one(key = nil)
29
33
  MAP[key.to_s] = self if key
30
34
  @one ||= key.to_s
@@ -85,9 +89,10 @@ module Travis
85
89
  id_field :id
86
90
 
87
91
  def initialize(session, id)
92
+ raise Travis::Client::Error, '%p is not a valid id' % id unless self.class.id? id
88
93
  @attributes = {}
89
94
  @session = session
90
- @id = self.class.cast_id(id)
95
+ @id = self.class.cast_id(id) if id
91
96
  end
92
97
 
93
98
  def update_attributes(data)
@@ -178,6 +178,14 @@ module Travis
178
178
  session.account(owner_name)
179
179
  end
180
180
 
181
+ def caches(params = {})
182
+ session.get("/repos/#{id}/caches", params)['caches']
183
+ end
184
+
185
+ def delete_caches(params = {})
186
+ session.delete("/repos/#{id}/caches", params)['caches']
187
+ end
188
+
181
189
  private
182
190
 
183
191
  def state
@@ -150,6 +150,10 @@ module Travis
150
150
  load get_raw(*args)
151
151
  end
152
152
 
153
+ def delete(*args)
154
+ load delete_raw(*args)
155
+ end
156
+
153
157
  def get_raw(*args)
154
158
  raw(:get, *args)
155
159
  end
@@ -162,6 +166,11 @@ module Travis
162
166
  raw(:put, *args)
163
167
  end
164
168
 
169
+ def delete_raw(*args)
170
+ raw(:delete, *args)
171
+ end
172
+
173
+
165
174
  def raw(verb, url, *args)
166
175
  url = url.sub(/^\//, '')
167
176
  result = instrumented(verb.to_s.upcase, url, *args) { connection.public_send(verb, url, *args) }
@@ -225,8 +234,8 @@ module Travis
225
234
 
226
235
  def create_entity(type, data)
227
236
  data = { type.id_field => data } if type.id? data
228
- id = type.cast_id(data.fetch(type.id_field))
229
- entity = cached(type, :id, id) { type.new(self, id) }
237
+ id = type.cast_id(data.fetch(type.id_field)) unless type.weak?
238
+ entity = id ? cached(type, :id, id) { type.new(self, id) } : type.new(self, nil)
230
239
  entity.update_attributes(data)
231
240
  entity
232
241
  end
@@ -0,0 +1,32 @@
1
+ require 'travis/client'
2
+
3
+ module Travis
4
+ module Client
5
+ class WeakEntity < Entity
6
+ def self.weak?
7
+ true
8
+ end
9
+
10
+ def self.id_field
11
+ raise "weak entities do not have id fields"
12
+ end
13
+
14
+ def self.id?(object)
15
+ object.nil?
16
+ end
17
+
18
+ def self.cast_id(object)
19
+ return object if id? object
20
+ raise "weak entities do not have id fields"
21
+ end
22
+
23
+ def missing?(attribute)
24
+ false
25
+ end
26
+
27
+ def complete?
28
+ true
29
+ end
30
+ end
31
+ end
32
+ end
@@ -20,6 +20,18 @@ module Travis
20
20
  output.join(" ")
21
21
  end
22
22
 
23
+ def file_size(input, human = true)
24
+ return "#{input} B" unless human
25
+ format = "B"
26
+ iec = %w[KiB MiB GiB TiB PiB EiB ZiB YiB]
27
+ while human and input > 512 and iec.any?
28
+ input /= 1024.0
29
+ format = iec.shift
30
+ end
31
+ input = input.round(2) if input.is_a? Float
32
+ "#{input} #{format}"
33
+ end
34
+
23
35
  def time(time)
24
36
  return "not yet" if time.nil? # or time > Time.now
25
37
  #return duration(time, "ago") if Time.now - time < DAY
data/travis.gemspec CHANGED
@@ -98,6 +98,7 @@ Gem::Specification.new do |s|
98
98
  "lib/travis/cli/accounts.rb",
99
99
  "lib/travis/cli/api_command.rb",
100
100
  "lib/travis/cli/branches.rb",
101
+ "lib/travis/cli/cache.rb",
101
102
  "lib/travis/cli/cancel.rb",
102
103
  "lib/travis/cli/command.rb",
103
104
  "lib/travis/cli/console.rb",
@@ -117,6 +118,7 @@ Gem::Specification.new do |s|
117
118
  "lib/travis/cli/pubkey.rb",
118
119
  "lib/travis/cli/raw.rb",
119
120
  "lib/travis/cli/repo_command.rb",
121
+ "lib/travis/cli/report.rb",
120
122
  "lib/travis/cli/restart.rb",
121
123
  "lib/travis/cli/setup.rb",
122
124
  "lib/travis/cli/setup/appfog.rb",
@@ -144,6 +146,7 @@ Gem::Specification.new do |s|
144
146
  "lib/travis/client/artifact.rb",
145
147
  "lib/travis/client/broadcast.rb",
146
148
  "lib/travis/client/build.rb",
149
+ "lib/travis/client/cache.rb",
147
150
  "lib/travis/client/commit.rb",
148
151
  "lib/travis/client/entity.rb",
149
152
  "lib/travis/client/error.rb",
@@ -156,6 +159,7 @@ Gem::Specification.new do |s|
156
159
  "lib/travis/client/session.rb",
157
160
  "lib/travis/client/states.rb",
158
161
  "lib/travis/client/user.rb",
162
+ "lib/travis/client/weak_entity.rb",
159
163
  "lib/travis/client/worker.rb",
160
164
  "lib/travis/pro.rb",
161
165
  "lib/travis/tools/assets.rb",
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: travis
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.9.travis.360.4
4
+ version: 1.5.9.travis.361.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Konstantin Haase
@@ -28,7 +28,7 @@ authors:
28
28
  autorequire:
29
29
  bindir: bin
30
30
  cert_chain: []
31
- date: 2013-11-02 00:00:00.000000000 Z
31
+ date: 2013-11-04 00:00:00.000000000 Z
32
32
  dependencies:
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: faraday
@@ -291,6 +291,7 @@ files:
291
291
  - lib/travis/cli/accounts.rb
292
292
  - lib/travis/cli/api_command.rb
293
293
  - lib/travis/cli/branches.rb
294
+ - lib/travis/cli/cache.rb
294
295
  - lib/travis/cli/cancel.rb
295
296
  - lib/travis/cli/command.rb
296
297
  - lib/travis/cli/console.rb
@@ -310,6 +311,7 @@ files:
310
311
  - lib/travis/cli/pubkey.rb
311
312
  - lib/travis/cli/raw.rb
312
313
  - lib/travis/cli/repo_command.rb
314
+ - lib/travis/cli/report.rb
313
315
  - lib/travis/cli/restart.rb
314
316
  - lib/travis/cli/setup.rb
315
317
  - lib/travis/cli/setup/appfog.rb
@@ -337,6 +339,7 @@ files:
337
339
  - lib/travis/client/artifact.rb
338
340
  - lib/travis/client/broadcast.rb
339
341
  - lib/travis/client/build.rb
342
+ - lib/travis/client/cache.rb
340
343
  - lib/travis/client/commit.rb
341
344
  - lib/travis/client/entity.rb
342
345
  - lib/travis/client/error.rb
@@ -349,6 +352,7 @@ files:
349
352
  - lib/travis/client/session.rb
350
353
  - lib/travis/client/states.rb
351
354
  - lib/travis/client/user.rb
355
+ - lib/travis/client/weak_entity.rb
352
356
  - lib/travis/client/worker.rb
353
357
  - lib/travis/pro.rb
354
358
  - lib/travis/tools/assets.rb