takelage 0.18.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.
Files changed (73) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +674 -0
  3. data/README.md +213 -0
  4. data/bin/tau +6 -0
  5. data/lib/Thorfile +3 -0
  6. data/lib/takelage.rb +230 -0
  7. data/lib/takelage/bit/check/cli.rb +23 -0
  8. data/lib/takelage/bit/check/workspace.rb +37 -0
  9. data/lib/takelage/bit/cli.rb +15 -0
  10. data/lib/takelage/bit/clipboard/cli.rb +73 -0
  11. data/lib/takelage/bit/clipboard/copy.rb +140 -0
  12. data/lib/takelage/bit/clipboard/lib.rb +132 -0
  13. data/lib/takelage/bit/clipboard/paste.rb +57 -0
  14. data/lib/takelage/bit/clipboard/pull.rb +37 -0
  15. data/lib/takelage/bit/clipboard/push.rb +37 -0
  16. data/lib/takelage/bit/scope/add.rb +55 -0
  17. data/lib/takelage/bit/scope/cli.rb +74 -0
  18. data/lib/takelage/bit/scope/inbit.rb +13 -0
  19. data/lib/takelage/bit/scope/list.rb +41 -0
  20. data/lib/takelage/bit/scope/new.rb +44 -0
  21. data/lib/takelage/completion/cli.rb +24 -0
  22. data/lib/takelage/default.yml +68 -0
  23. data/lib/takelage/docker/check/cli.rb +23 -0
  24. data/lib/takelage/docker/check/running.rb +23 -0
  25. data/lib/takelage/docker/cli.rb +18 -0
  26. data/lib/takelage/docker/container/check/cli.rb +57 -0
  27. data/lib/takelage/docker/container/check/existing.rb +31 -0
  28. data/lib/takelage/docker/container/check/network.rb +31 -0
  29. data/lib/takelage/docker/container/check/orphaned.rb +31 -0
  30. data/lib/takelage/docker/container/clean.rb +39 -0
  31. data/lib/takelage/docker/container/cli.rb +114 -0
  32. data/lib/takelage/docker/container/command.rb +33 -0
  33. data/lib/takelage/docker/container/daemon.rb +13 -0
  34. data/lib/takelage/docker/container/lib.rb +160 -0
  35. data/lib/takelage/docker/container/login.rb +46 -0
  36. data/lib/takelage/docker/container/prune.rb +30 -0
  37. data/lib/takelage/docker/image/check/cli.rb +39 -0
  38. data/lib/takelage/docker/image/check/outdated.rb +40 -0
  39. data/lib/takelage/docker/image/cli.rb +44 -0
  40. data/lib/takelage/docker/image/tag/check/cli.rb +48 -0
  41. data/lib/takelage/docker/image/tag/check/local.rb +42 -0
  42. data/lib/takelage/docker/image/tag/check/remote.rb +38 -0
  43. data/lib/takelage/docker/image/tag/cli.rb +15 -0
  44. data/lib/takelage/docker/image/tag/latest/cli.rb +57 -0
  45. data/lib/takelage/docker/image/tag/latest/local.rb +20 -0
  46. data/lib/takelage/docker/image/tag/latest/remote.rb +25 -0
  47. data/lib/takelage/docker/image/tag/list/cli.rb +53 -0
  48. data/lib/takelage/docker/image/tag/list/local.rb +19 -0
  49. data/lib/takelage/docker/image/tag/list/remote.rb +28 -0
  50. data/lib/takelage/docker/image/update.rb +33 -0
  51. data/lib/takelage/docker/socket/cli.rb +75 -0
  52. data/lib/takelage/docker/socket/host.rb +25 -0
  53. data/lib/takelage/docker/socket/lib.rb +88 -0
  54. data/lib/takelage/docker/socket/scheme.rb +63 -0
  55. data/lib/takelage/docker/socket/start.rb +34 -0
  56. data/lib/takelage/docker/socket/stop.rb +55 -0
  57. data/lib/takelage/git/check/clean.rb +46 -0
  58. data/lib/takelage/git/check/cli.rb +49 -0
  59. data/lib/takelage/git/check/master.rb +26 -0
  60. data/lib/takelage/git/check/workspace.rb +33 -0
  61. data/lib/takelage/git/cli.rb +9 -0
  62. data/lib/takelage/info/cli.rb +9 -0
  63. data/lib/takelage/info/project/cli.rb +56 -0
  64. data/lib/takelage/lib/config.rb +114 -0
  65. data/lib/takelage/lib/logging.rb +47 -0
  66. data/lib/takelage/lib/project.rb +69 -0
  67. data/lib/takelage/lib/subcmd.rb +16 -0
  68. data/lib/takelage/lib/system.rb +104 -0
  69. data/lib/takelage/self/cli.rb +43 -0
  70. data/lib/takelage/self/config/cli.rb +82 -0
  71. data/lib/takelage/self/list.rb +30 -0
  72. data/lib/takelage/version +1 -0
  73. metadata +298 -0
@@ -0,0 +1,213 @@
1
+ # takelage-cli
2
+
3
+ *takelage-cli* is a command line interface
4
+ to facilitate the takelage devops workflow.
5
+ The takelage devops workflow helps devops engineers
6
+ build, test and deploy os images.
7
+
8
+ The *takelage-cli* executable *tau* is a
9
+ [ruby](https://www.ruby-lang.org/)
10
+ command line script using the
11
+ [thor](http://whatisthor.com/) toolkit.
12
+
13
+ ## Framework
14
+
15
+ The takelage devops framework consists of these projects:
16
+
17
+ | App | Description |
18
+ | --- | ----------- |
19
+ | *[takelage-doc](https://github.com/geospin-takelage/takelage-doc)* | takelage documentation |
20
+ | *[takelage-dev](https://github.com/geospin-takelage/takelage-dev)* | takelage development environment |
21
+ | *[takelage-var](https://github.com/geospin-takelage/takelage-var)* | takelage test plugin |
22
+ | *[takelage-cli](https://github.com/geospin-takelage/takelage-cli)* | takelage command line interface |
23
+ | *[takelage-bit](https://github.com/geospin-takelage/takelage-bit)* | takelage bit server |
24
+
25
+ ## Installation
26
+
27
+ *tau* is part of *takelage-dev*'s docker image
28
+ but you typically want to install it on the host system as well.
29
+ Install the takelage gem and its dependencies
30
+ through the [gem](https://github.com/rubygems/rubygems)
31
+ command line tool:
32
+
33
+ ```bash
34
+ gem install takelage
35
+ ```
36
+
37
+ ## Commands
38
+
39
+ *takelage-cli* uses [cucumber](https://github.com/cucumber/cucumber)
40
+ to system test its features.
41
+ You are encouraged to read the cucumber feature files
42
+ for the *tau* commands
43
+ to get an idea of how the commands work.
44
+ You can list the *tau* commands by running
45
+ *tau [self list](features/takelage/self/self.list.feature)*
46
+ or *tau list*:
47
+
48
+ Command | Description
49
+ ------- | -----------
50
+ tau [bit check workspace](features/takelage/bit/bit.check.workspace.feature) | Check if a bit workspace exists
51
+ tau [bit clipboard copy](features/takelage/bit/bit.clipboard.copy.feature) [DIR] [SCOPE] | Copy new [DIR] to [SCOPE]
52
+ tau [bit clipboard paste](features/takelage/bit/bit.clipboard.paste.feature) [COMPONENT] [DIR] | Paste bit [COMPONENT] into [DIR]
53
+ tau [bit clipboard pull](features/takelage/bit/bit.clipboard.pull.feature) | Pull all updates for bit components from bit remote scopes
54
+ tau [bit clipboard push](features/takelage/bit/bit.clipboard.push.feature) | Push all updates of bit components to bit remote scopes
55
+ tau [bit scope add](features/takelage/bit/bit.scope.add.feature) [SCOPE] | Add a bit [SCOPE]
56
+ tau [bit scope inbit](features/takelage/bit/bit.scope.inbit.feature) | Log in to bit remote server
57
+ tau [bit scope list](features/takelage/bit/bit.scope.list.feature) | List bit remote scopes
58
+ tau [bit scope new](features/takelage/bit/bit.scope.new.feature) [SCOPE] | Init a new bit [SCOPE]
59
+ tau [completion bash](features/takelage/completion/completion.bash.feature) | Print bash completion code
60
+ tau [docker check running](features/takelage/docker/docker.check.running.feature) | Check if docker daemon is running
61
+ tau [docker container check existing](features/takelage/docker/docker.container.check.existing.feature) [CONTAINER] | Check if docker [CONTAINER] is existing
62
+ tau [docker container check network](features/takelage/docker/docker.container.check.network.feature) [NETWORK] | Check if docker [NETWORK] is existing
63
+ tau [docker container check orphaned](features/takelage/docker/docker.container.check.orphaned.feature) [CONTAINER] | Check if docker [CONTAINER] is orphaned
64
+ tau [docker container command](features/takelage/docker/docker.container.command.feature) [CMD] | Run [CMD] in a docker container
65
+ tau [docker container daemon](features/takelage/docker/docker.container.daemon.feature) | Run docker container in daemon mode
66
+ tau [docker container login](features/takelage/docker/docker.container.login.feature) | Log in to latest local docker container
67
+ tau [docker container clean](features/takelage/docker/docker.container.clean.feature) | Remove all docker containers
68
+ tau [docker container prune](features/takelage/docker/docker.container.prune.feature) | Remove orphaned docker containers
69
+ tau [docker image check outdated](features/takelage/docker/docker.image.check.outdated.feature) | Check if a docker image is outdated
70
+ tau [docker image tag check local](features/takelage/docker/docker.image.tag.check.local.feature) [TAG] | Check if local docker image [TAG] exists
71
+ tau [docker image tag check remote](features/takelage/docker/docker.image.tag.check.remote.feature) [TAG] | Check if remote docker image [TAG] exists
72
+ tau [docker image tag latest local](features/takelage/docker/docker.image.tag.latest.local.feature) | Print latest local docker image tag
73
+ tau [docker image tag latest remote](features/takelage/docker/docker.image.tag.latest.remote.feature) | Print latest remote docker image tag
74
+ tau [docker image tag list local](features/takelage/docker/docker.image.tag.list.local.feature) | Print local docker image tags
75
+ tau [docker image tag list remote](features/takelage/docker/docker.image.tag.list.remote.feature) | Print remote docker image tags
76
+ tau [docker image update](features/takelage/docker/docker.image.update.feature) | Get latest remote docker container
77
+ tau [docker socket host](features/takelage/docker/docker.socket.host.feature) | Print docker socket host ip address
78
+ tau [docker socket scheme](features/takelage/docker/docker.socket.scheme.feature) | Print docker socket scheme
79
+ tau [docker socket start](features/takelage/docker/docker.socket.start.feature) | Start sockets for docker container
80
+ tau [docker socket stop](features/takelage/docker/docker.socket.stop.feature) | Stop sockets for docker container
81
+ tau [git check clean](features/takelage/git/git.check.clean.feature) | Check if the git workspace is clean
82
+ tau [git check master](features/takelage/git/git.check.master.feature) | Check if we are on the git master branch
83
+ tau [git check workspace](features/takelage/git/git.check.workspace.feature) | Check if a git workspace exists
84
+ tau [info project active](features/takelage/info/info.project.active.feature) | Print active project info
85
+ tau [info project main](features/takelage/info/info.project.main.feature) | Print main project info
86
+ tau [info project private](features/takelage/info/info.project.private.feature) | Print private project info
87
+ tau [self config active](features/takelage/self/self.config.active.feature) | Print active takelage configuration
88
+ tau [self config default](features/takelage/self/self.config.default.feature) | Print takelage default configuration
89
+ tau [self config home](features/takelage/self/self.config.home.feature) | Print takelage home config file configuration
90
+ tau [self config project](features/takelage/self/self.config.project.feature) | Print takelage project config file configuration
91
+ tau [self list](features/takelage/self/self.list.feature) | List all commands
92
+ tau [self version](features/takelage/self/self.version.feature) | Print tau semantic version number
93
+ tau config | Alias for tau [self config active](features/takelage/self/self.config.active.feature)
94
+ tau copy [DIR] [SCOPE] | Alias for tau [bit clipboard copy](features/takelage/bit/bit.clipboard.copy.feature)
95
+ tau list | Alias for tau [self list](features/takelage/self/self.list.feature)
96
+ tau login | Alias for tau [docker container login](features/takelage/docker/docker.container.login.feature)
97
+ tau clean | Alias for tau [docker container clean](features/takelage/docker/docker.container.clean.feature)
98
+ tau paste [COMPONENT] [DIR] | Alias for tau [bit clipboard paste](features/takelage/bit/bit.clipboard.paste.feature)
99
+ tau project | Alias for tau [info project active](features/takelage/info/info.project.active.feature)
100
+ tau pull | Alias for tau [bit clipboard pull](features/takelage/bit/bit.clipboard.pull.feature)
101
+ tau prune | Alias for tau [docker container prune](features/takelage/docker/docker.container.prune.feature)
102
+ tau push | Alias for tau [bit clipboard push](features/takelage/bit/bit.clipboard.push.feature)
103
+ tau update | Alias for tau [docker image update](features/takelage/docker/docker.image.update.feature)
104
+ tau version | Alias for tau [self version](features/takelage/self/self.version.feature)
105
+
106
+ **Warning: *tau update* will call *docker image prune* and remove all dangling images!**
107
+
108
+ ## Configuration
109
+
110
+ ### Configuration Files
111
+
112
+ *takelage-cli* uses three different YAML configuration files
113
+ which have different precedences.
114
+ They are merged to an active configuration during runtime
115
+ which can be inspected with
116
+ *tau [self config active](features/takelage/self/self.config.active.feature)*
117
+ or *tau config*.
118
+
119
+ | Filename | Precedence | Description |
120
+ | -------- | ---------- | ----------- |
121
+ | *default.yml* | lowest | Shipped with *takelage-cli*. Sets defaults where applicable. |
122
+ | *~/.takelage.yml* | normal | User-wide configuration file in your home directory. This is your normal custom configuration file. |
123
+ | *takelage.yml* | highest | Project-specific configuration file next to your main Rakefile. Some projects need special configuration. |
124
+
125
+ ### Configuration Examples
126
+
127
+ - You should add the following configuration items in your *~/.takelage.yml*
128
+ if you want to use a private bit remote server:
129
+
130
+ ```yaml
131
+ ---
132
+ bit_remote: 'ssh://bit@bit.example.com:222:/bit'
133
+ bit_ssh: 'ssh -p 222 bit@bit.example.com'
134
+ ```
135
+
136
+ - By default, takelage uses bright prompt colors which are best viewed on a
137
+ dark background. If you prefer a light background (or want less bright colors)
138
+ you can add an option to your *~/.takelage.yml*:
139
+
140
+ ```yaml
141
+ ---
142
+ docker_daynight: 'day'
143
+ ```
144
+
145
+ - If you want to pin a specific docker tag for one of your projects
146
+ then create an *takelage.yml* file with:
147
+
148
+ ```yaml
149
+ ---
150
+ docker_tag: '1.2.3'
151
+ ```
152
+
153
+ - The cucumber tests make use of an *~/.takelage.yml*
154
+ to overwrite defaults like:
155
+
156
+ ```yaml
157
+ ---
158
+ docker_repo: takelage-mock
159
+ ```
160
+
161
+ Furthermore, every external command can be reconfigured.
162
+
163
+ ### Project Files
164
+
165
+ *tau* reads two different YAML project files
166
+ which have different precedences.
167
+ They are merged to an active configuration during runtime
168
+ which can be inspected with
169
+ *tau [info project active](features/takelage/info/info.project.active.feature)*
170
+ or *tau project*.
171
+
172
+ | Default filename | Config key | Precedence | Description |
173
+ | -------- | ---------- | ---------- | ----------- |
174
+ | *project.yml* | info_project_main | normal | Main project file. |
175
+ | *private/project.yml* | info_project_private | highest | Private project file. Should be in *.gitignore*. |
176
+
177
+ ### Bash Completion
178
+
179
+ Add this to your [bash startup files](https://www.gnu.org/software/bash/manual/html_node/Bash-Startup-Files.html):
180
+
181
+ ```bash
182
+ source <(tau completion bash)
183
+ ```
184
+
185
+ ### Software Tests
186
+
187
+ *takelage-cli* ships with
188
+ [cucumber](https://github.com/cucumber/cucumber) ruby tests.
189
+ It uses cucumber's
190
+ [aruba](https://github.com/cucumber/aruba) extension and especially its
191
+ [filesystem](https://relishapp.com/cucumber/aruba/v/0-11-0/docs/filesystem)
192
+ library.
193
+
194
+ *takelage-cli* [deploys](https://docs.docker.com/registry/deploying/)
195
+ a private docker
196
+ [registry](https://hub.docker.com/_/registry)
197
+ to conduct end-to-end tests of *tau docker* commands.
198
+ The registry exposes port 5005.
199
+ You need to whitelist it in your host's docker engine configuration:
200
+
201
+ ```json
202
+ {
203
+ "insecure-registries": [
204
+ "host.docker.internal:5005"
205
+ ]
206
+ }
207
+ ```
208
+
209
+ *takelage-cli* deploys a
210
+ *[bitboard](https://hub.docker.com/r/takelage/bitboard)*
211
+ server created with
212
+ *[takelage-bit](https://github.com/geospin-takelage/takelage-bit)*
213
+ to end-to-end test the *tau bit* commands.
data/bin/tau ADDED
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ require 'takelage'
5
+ Fylla.load('tau')
6
+ Takelage::CLI.start
@@ -0,0 +1,3 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'takelage'
@@ -0,0 +1,230 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'docker_registry2'
4
+ require 'etc'
5
+ require 'fileutils'
6
+ require 'fylla'
7
+ require 'json'
8
+ require 'logger'
9
+ require 'rake'
10
+ require 'singleton'
11
+ require 'socket'
12
+ require 'thor'
13
+ require 'timeout'
14
+ require 'version_sorter'
15
+ require 'yaml'
16
+
17
+ require_relative 'takelage/lib/logging'
18
+ require_relative 'takelage/lib/subcmd'
19
+ require_relative 'takelage/lib/system'
20
+ require_relative 'takelage/lib/config'
21
+ require_relative 'takelage/lib/project'
22
+
23
+ require_relative 'takelage/git/check/clean'
24
+ require_relative 'takelage/git/check/master'
25
+ require_relative 'takelage/git/check/workspace'
26
+ require_relative 'takelage/git/check/cli'
27
+ require_relative 'takelage/git/cli'
28
+ require_relative 'takelage/bit/check/workspace'
29
+ require_relative 'takelage/bit/check/cli'
30
+ require_relative 'takelage/bit/scope/add'
31
+ require_relative 'takelage/bit/scope/inbit'
32
+ require_relative 'takelage/bit/scope/list'
33
+ require_relative 'takelage/bit/scope/new'
34
+ require_relative 'takelage/bit/scope/cli'
35
+ require_relative 'takelage/bit/clipboard/lib'
36
+ require_relative 'takelage/bit/clipboard/copy'
37
+ require_relative 'takelage/bit/clipboard/paste'
38
+ require_relative 'takelage/bit/clipboard/pull'
39
+ require_relative 'takelage/bit/clipboard/push'
40
+ require_relative 'takelage/bit/clipboard/cli'
41
+ require_relative 'takelage/bit/cli'
42
+ require_relative 'takelage/completion/cli'
43
+ require_relative 'takelage/docker/check/running'
44
+ require_relative 'takelage/docker/check/cli'
45
+ require_relative 'takelage/docker/socket/lib'
46
+ require_relative 'takelage/docker/socket/host'
47
+ require_relative 'takelage/docker/socket/scheme'
48
+ require_relative 'takelage/docker/socket/start'
49
+ require_relative 'takelage/docker/socket/stop'
50
+ require_relative 'takelage/docker/socket/cli'
51
+ require_relative 'takelage/docker/image/tag/list/local'
52
+ require_relative 'takelage/docker/image/tag/list/remote'
53
+ require_relative 'takelage/docker/image/tag/list/cli'
54
+ require_relative 'takelage/docker/image/tag/latest/local'
55
+ require_relative 'takelage/docker/image/tag/latest/remote'
56
+ require_relative 'takelage/docker/image/tag/latest/cli'
57
+ require_relative 'takelage/docker/image/tag/check/local'
58
+ require_relative 'takelage/docker/image/tag/check/remote'
59
+ require_relative 'takelage/docker/image/tag/check/cli'
60
+ require_relative 'takelage/docker/image/tag/cli'
61
+ require_relative 'takelage/docker/image/check/outdated'
62
+ require_relative 'takelage/docker/image/check/cli'
63
+ require_relative 'takelage/docker/image/update'
64
+ require_relative 'takelage/docker/image/cli'
65
+ require_relative 'takelage/docker/container/check/existing'
66
+ require_relative 'takelage/docker/container/check/network'
67
+ require_relative 'takelage/docker/container/check/orphaned'
68
+ require_relative 'takelage/docker/container/check/cli'
69
+ require_relative 'takelage/docker/container/lib'
70
+ require_relative 'takelage/docker/container/command'
71
+ require_relative 'takelage/docker/container/daemon'
72
+ require_relative 'takelage/docker/container/login'
73
+ require_relative 'takelage/docker/container/clean'
74
+ require_relative 'takelage/docker/container/prune'
75
+ require_relative 'takelage/docker/container/cli'
76
+ require_relative 'takelage/docker/cli'
77
+ require_relative 'takelage/info/project/cli'
78
+ require_relative 'takelage/info/cli'
79
+ require_relative 'takelage/self/config/cli'
80
+ require_relative 'takelage/self/list'
81
+ require_relative 'takelage/self/cli'
82
+
83
+ # Facilitate the takelage devops workflow.
84
+ module Takelage
85
+ # takelage
86
+ class CLI < Thor
87
+ include LoggingModule
88
+ include SystemModule
89
+ include ConfigModule
90
+ include ProjectModule
91
+
92
+ check_unknown_options!
93
+
94
+ # @return [String] bash completion code
95
+ attr_reader :bash_fylla
96
+
97
+ option :loglevel,
98
+ aliases: 'l',
99
+ default: 'INFO',
100
+ desc: 'One of: FATAL, ERROR, WARN, INFO, DEBUG'
101
+ # Initialize takelage cli.
102
+ def initialize(args = [], local_options = {}, configuration = {})
103
+ # Initialize thor parent class
104
+ super args, local_options, configuration
105
+
106
+ # Initialize global singleton log
107
+ initialize_logging options[:loglevel].to_s.upcase
108
+
109
+ # Initialize global singleton config
110
+ initialize_config
111
+
112
+ # Initialize global singleton project
113
+ initialize_project
114
+
115
+ # prepare for the worst
116
+ @docker_daemon_running = false
117
+
118
+ # fylla bash completion code
119
+ @bash_fylla = Fylla.bash_completion self
120
+ end
121
+
122
+ #
123
+ # Subcommands
124
+ #
125
+
126
+ desc 'bit [COMMAND] ', 'Manage bit'
127
+ subcommand 'bit', Bit
128
+
129
+ desc 'completion [COMMAND] ', 'Print shell completion code'
130
+ subcommand 'completion', Completion
131
+
132
+ desc 'docker [COMMAND] ', 'Manage docker containers'
133
+ subcommand 'docker', Docker
134
+
135
+ desc 'git [COMMAND] ', 'Manage git'
136
+ subcommand 'git', Git
137
+
138
+ desc 'info [COMMAND] ', 'Get information'
139
+ subcommand 'info', Info
140
+
141
+ desc 'self [COMMAND] ', 'Manage takelage tools'
142
+ subcommand 'self', Self
143
+
144
+ #
145
+ # Top-level commands
146
+ #
147
+
148
+ desc 'config', 'Alias for tau self config active'
149
+ # takelage config: {takelage::SelfConfig#active}
150
+ def config
151
+ Takelage::SelfConfig.new.active
152
+ end
153
+
154
+ desc 'copy [DIR] [SCOPE]', 'Alias for tau bit clipboard copy'
155
+ # takelage copy: {takelage::BitClipboard#copy}
156
+ def copy(dir_or_file, scope)
157
+ Takelage::BitClipboard.new.copy dir_or_file, scope
158
+ end
159
+
160
+ desc 'project', 'Alias for tau info project active'
161
+ # takelage project: {takelage::InfoProject#active}
162
+ def project
163
+ Takelage::InfoProject.new.active
164
+ end
165
+
166
+ desc 'login', 'Alias for tau docker container login'
167
+ # takelage login: {takelage::DockerContainer#login}
168
+ def login
169
+ Takelage::DockerContainer.new.login
170
+ end
171
+
172
+ desc 'list', 'Alias for tau self list'
173
+ # takelage version: {takelage::Self#list}
174
+ def list
175
+ Takelage::Self.new.list
176
+ end
177
+
178
+ desc 'clean', 'Alias for tau docker container clean'
179
+ # takelage clean: {takelage::DockerContainer#clean}
180
+ def clean
181
+ Takelage::DockerContainer.new.clean
182
+ end
183
+
184
+ desc 'paste [COMPONENT] [DIR]', 'Alias for tau bit clipboard paste'
185
+ # takelage paste: {takelage::BitClipboard#paste}
186
+ def paste(cid, dir)
187
+ Takelage::BitClipboard.new.paste cid, dir
188
+ end
189
+
190
+ desc 'pull', 'Alias for tau bit clipboard pull'
191
+ # takelage pull: {takelage::BitClipboard#pull}
192
+ def pull
193
+ Takelage::BitClipboard.new.pull
194
+ end
195
+
196
+ desc 'prune', 'Alias for tau docker container prune'
197
+ # takelage prune: {takelage::DockerContainer#prune}
198
+ def prune
199
+ Takelage::DockerContainer.new.prune
200
+ end
201
+
202
+ desc 'push', 'Alias for tau bit clipboard push'
203
+ # takelage push: {takelage::BitClipboard#push}
204
+ def push
205
+ Takelage::BitClipboard.new.push
206
+ end
207
+
208
+ desc 'update', 'Alias for tau docker image update'
209
+ # takelage update: {takelage::DockerImage#update}
210
+ def update
211
+ Takelage::DockerImage.new.update
212
+ end
213
+
214
+ desc 'version', 'Alias for tau self version'
215
+ # takelage version: {takelage::Self#version}
216
+ def version
217
+ Takelage::Self.new.version
218
+ end
219
+
220
+ #
221
+ # Administrative functions
222
+ #
223
+
224
+ # Behave as expected by correctly reporting failure in exit status.
225
+ # See https://github.com/erikhuda/thor/wiki/Making-An-Executable
226
+ def self.exit_on_failure?
227
+ true
228
+ end
229
+ end
230
+ end