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.
- checksums.yaml +7 -0
- data/LICENSE +674 -0
- data/README.md +213 -0
- data/bin/tau +6 -0
- data/lib/Thorfile +3 -0
- data/lib/takelage.rb +230 -0
- data/lib/takelage/bit/check/cli.rb +23 -0
- data/lib/takelage/bit/check/workspace.rb +37 -0
- data/lib/takelage/bit/cli.rb +15 -0
- data/lib/takelage/bit/clipboard/cli.rb +73 -0
- data/lib/takelage/bit/clipboard/copy.rb +140 -0
- data/lib/takelage/bit/clipboard/lib.rb +132 -0
- data/lib/takelage/bit/clipboard/paste.rb +57 -0
- data/lib/takelage/bit/clipboard/pull.rb +37 -0
- data/lib/takelage/bit/clipboard/push.rb +37 -0
- data/lib/takelage/bit/scope/add.rb +55 -0
- data/lib/takelage/bit/scope/cli.rb +74 -0
- data/lib/takelage/bit/scope/inbit.rb +13 -0
- data/lib/takelage/bit/scope/list.rb +41 -0
- data/lib/takelage/bit/scope/new.rb +44 -0
- data/lib/takelage/completion/cli.rb +24 -0
- data/lib/takelage/default.yml +68 -0
- data/lib/takelage/docker/check/cli.rb +23 -0
- data/lib/takelage/docker/check/running.rb +23 -0
- data/lib/takelage/docker/cli.rb +18 -0
- data/lib/takelage/docker/container/check/cli.rb +57 -0
- data/lib/takelage/docker/container/check/existing.rb +31 -0
- data/lib/takelage/docker/container/check/network.rb +31 -0
- data/lib/takelage/docker/container/check/orphaned.rb +31 -0
- data/lib/takelage/docker/container/clean.rb +39 -0
- data/lib/takelage/docker/container/cli.rb +114 -0
- data/lib/takelage/docker/container/command.rb +33 -0
- data/lib/takelage/docker/container/daemon.rb +13 -0
- data/lib/takelage/docker/container/lib.rb +160 -0
- data/lib/takelage/docker/container/login.rb +46 -0
- data/lib/takelage/docker/container/prune.rb +30 -0
- data/lib/takelage/docker/image/check/cli.rb +39 -0
- data/lib/takelage/docker/image/check/outdated.rb +40 -0
- data/lib/takelage/docker/image/cli.rb +44 -0
- data/lib/takelage/docker/image/tag/check/cli.rb +48 -0
- data/lib/takelage/docker/image/tag/check/local.rb +42 -0
- data/lib/takelage/docker/image/tag/check/remote.rb +38 -0
- data/lib/takelage/docker/image/tag/cli.rb +15 -0
- data/lib/takelage/docker/image/tag/latest/cli.rb +57 -0
- data/lib/takelage/docker/image/tag/latest/local.rb +20 -0
- data/lib/takelage/docker/image/tag/latest/remote.rb +25 -0
- data/lib/takelage/docker/image/tag/list/cli.rb +53 -0
- data/lib/takelage/docker/image/tag/list/local.rb +19 -0
- data/lib/takelage/docker/image/tag/list/remote.rb +28 -0
- data/lib/takelage/docker/image/update.rb +33 -0
- data/lib/takelage/docker/socket/cli.rb +75 -0
- data/lib/takelage/docker/socket/host.rb +25 -0
- data/lib/takelage/docker/socket/lib.rb +88 -0
- data/lib/takelage/docker/socket/scheme.rb +63 -0
- data/lib/takelage/docker/socket/start.rb +34 -0
- data/lib/takelage/docker/socket/stop.rb +55 -0
- data/lib/takelage/git/check/clean.rb +46 -0
- data/lib/takelage/git/check/cli.rb +49 -0
- data/lib/takelage/git/check/master.rb +26 -0
- data/lib/takelage/git/check/workspace.rb +33 -0
- data/lib/takelage/git/cli.rb +9 -0
- data/lib/takelage/info/cli.rb +9 -0
- data/lib/takelage/info/project/cli.rb +56 -0
- data/lib/takelage/lib/config.rb +114 -0
- data/lib/takelage/lib/logging.rb +47 -0
- data/lib/takelage/lib/project.rb +69 -0
- data/lib/takelage/lib/subcmd.rb +16 -0
- data/lib/takelage/lib/system.rb +104 -0
- data/lib/takelage/self/cli.rb +43 -0
- data/lib/takelage/self/config/cli.rb +82 -0
- data/lib/takelage/self/list.rb +30 -0
- data/lib/takelage/version +1 -0
- metadata +298 -0
data/README.md
ADDED
@@ -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
data/lib/Thorfile
ADDED
data/lib/takelage.rb
ADDED
@@ -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
|