Skip to content

Commit

Permalink
doc: update readme for s3hub
Browse files Browse the repository at this point in the history
  • Loading branch information
nao1215 committed Dec 29, 2023
1 parent 0024711 commit ce1dacd
Show file tree
Hide file tree
Showing 11 changed files with 261 additions and 16 deletions.
8 changes: 7 additions & 1 deletion Makefile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
.PHONY: build test clean changelog tools help docker generate
.PHONY: build test clean changelog tools help docker generate gif

S3HUB = s3hub
VERSION = $(shell git describe --tags --abbrev=0)
Expand Down Expand Up @@ -31,10 +31,16 @@ tools: ## Install dependency tools
$(GO_INSTALL) github.com/Songmu/ghch/cmd/ghch@latest
$(GO_INSTALL) github.com/nao1215/hottest@latest
$(GO_INSTALL) github.com/google/wire/cmd/wire@latest
$(GO_INSTALL) github.com/charmbracelet/vhs@latest

generate: ## Generate code from templates
$(GO) generate ./...

gif: docker ## Generate gif image
vhs < doc/img/vhs/s3hub-mb.tape
vhs < doc/img/vhs/s3hub-ls.tape
vhs < doc/img/vhs/s3hub-rm-all.tape

docker: ## Start docker (localstack)
docker compose up -d

Expand Down
14 changes: 14 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,20 @@ The rainbow project is a toolset for managing AWS resources. This project consis
|:--|:--|:--|:--|
|[s3hub](./doc/s3hub/README.md)|||user-friendly s3 management tool|

### s3hub example
#### Create a bucket(s)
![create_bucket](./doc/img/s3hub-mb.gif)

#### List buckets
![ls_bucket](./doc/img/s3hub-ls.gif)

#### Remove a bucket with all objects
![rm_bucket](./doc/img/s3hub-rm-all.gif)

#### Interactive mode
![interactive_mode](./doc/img/s3hub-interactive.gif)



## Template List
[WIP]
Expand Down
File renamed without changes.
Binary file added doc/img/s3hub-interactive.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added doc/img/s3hub-ls.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added doc/img/s3hub-mb.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added doc/img/s3hub-rm-all.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
69 changes: 69 additions & 0 deletions doc/img/vhs/s3hub-ls.tape
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
# VHS documentation
#
# Output:
# Output <path>.gif Create a GIF output at the given <path>
# Output <path>.mp4 Create an MP4 output at the given <path>
# Output <path>.webm Create a WebM output at the given <path>
#
# Require:
# Require <string> Ensure a program is on the $PATH to proceed
#
# Settings:
# Set FontSize <number> Set the font size of the terminal
# Set FontFamily <string> Set the font family of the terminal
# Set Height <number> Set the height of the terminal
# Set Width <number> Set the width of the terminal
# Set LetterSpacing <float> Set the font letter spacing (tracking)
# Set LineHeight <float> Set the font line height
# Set LoopOffset <float>% Set the starting frame offset for the GIF loop
# Set Theme <json|string> Set the theme of the terminal
# Set Padding <number> Set the padding of the terminal
# Set Framerate <number> Set the framerate of the recording
# Set PlaybackSpeed <float> Set the playback speed of the recording
# Set MarginFill <file|#000000> Set the file or color the margin will be filled with.
# Set Margin <number> Set the size of the margin. Has no effect if MarginFill isn't set.
# Set BorderRadius <number> Set terminal border radius, in pixels.
# Set WindowBar <string> Set window bar type. (one of: Rings, RingsRight, Colorful, ColorfulRight)
# Set WindowBarSize <number> Set window bar size, in pixels. Default is 40.
# Set TypingSpeed <time> Set the typing speed of the terminal. Default is 50ms.
#
# Sleep:
# Sleep <time> Sleep for a set amount of <time> in seconds
#
# Type:
# Type[@<time>] "<characters>" Type <characters> into the terminal with a
# <time> delay between each character
#
# Keys:
# Escape[@<time>] [number] Press the Escape key
# Backspace[@<time>] [number] Press the Backspace key
# Delete[@<time>] [number] Press the Delete key
# Insert[@<time>] [number] Press the Insert key
# Down[@<time>] [number] Press the Down key
# Enter[@<time>] [number] Press the Enter key
# Space[@<time>] [number] Press the Space key
# Tab[@<time>] [number] Press the Tab key
# Left[@<time>] [number] Press the Left Arrow key
# Right[@<time>] [number] Press the Right Arrow key
# Up[@<time>] [number] Press the Up Arrow key
# Down[@<time>] [number] Press the Down Arrow key
# PageUp[@<time>] [number] Press the Page Up key
# PageDown[@<time>] [number] Press the Page Down key
# Ctrl+<key> Press the Control key + <key> (e.g. Ctrl+C)
#
# Display:
# Hide Hide the subsequent commands from the output
# Show Show the subsequent commands in the output

Output doc/img/s3hub-ls.gif

Require s3hub

Set Shell "bash"
Set FontSize 26
Set Width 1500
Set Height 400

Type "export AWS_PROFILE=localstack" Sleep 200ms Enter
Type "s3hub ls" Sleep 500ms Enter
Sleep 5s
69 changes: 69 additions & 0 deletions doc/img/vhs/s3hub-mb.tape
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
# VHS documentation
#
# Output:
# Output <path>.gif Create a GIF output at the given <path>
# Output <path>.mp4 Create an MP4 output at the given <path>
# Output <path>.webm Create a WebM output at the given <path>
#
# Require:
# Require <string> Ensure a program is on the $PATH to proceed
#
# Settings:
# Set FontSize <number> Set the font size of the terminal
# Set FontFamily <string> Set the font family of the terminal
# Set Height <number> Set the height of the terminal
# Set Width <number> Set the width of the terminal
# Set LetterSpacing <float> Set the font letter spacing (tracking)
# Set LineHeight <float> Set the font line height
# Set LoopOffset <float>% Set the starting frame offset for the GIF loop
# Set Theme <json|string> Set the theme of the terminal
# Set Padding <number> Set the padding of the terminal
# Set Framerate <number> Set the framerate of the recording
# Set PlaybackSpeed <float> Set the playback speed of the recording
# Set MarginFill <file|#000000> Set the file or color the margin will be filled with.
# Set Margin <number> Set the size of the margin. Has no effect if MarginFill isn't set.
# Set BorderRadius <number> Set terminal border radius, in pixels.
# Set WindowBar <string> Set window bar type. (one of: Rings, RingsRight, Colorful, ColorfulRight)
# Set WindowBarSize <number> Set window bar size, in pixels. Default is 40.
# Set TypingSpeed <time> Set the typing speed of the terminal. Default is 50ms.
#
# Sleep:
# Sleep <time> Sleep for a set amount of <time> in seconds
#
# Type:
# Type[@<time>] "<characters>" Type <characters> into the terminal with a
# <time> delay between each character
#
# Keys:
# Escape[@<time>] [number] Press the Escape key
# Backspace[@<time>] [number] Press the Backspace key
# Delete[@<time>] [number] Press the Delete key
# Insert[@<time>] [number] Press the Insert key
# Down[@<time>] [number] Press the Down key
# Enter[@<time>] [number] Press the Enter key
# Space[@<time>] [number] Press the Space key
# Tab[@<time>] [number] Press the Tab key
# Left[@<time>] [number] Press the Left Arrow key
# Right[@<time>] [number] Press the Right Arrow key
# Up[@<time>] [number] Press the Up Arrow key
# Down[@<time>] [number] Press the Down Arrow key
# PageUp[@<time>] [number] Press the Page Up key
# PageDown[@<time>] [number] Press the Page Down key
# Ctrl+<key> Press the Control key + <key> (e.g. Ctrl+C)
#
# Display:
# Hide Hide the subsequent commands from the output
# Show Show the subsequent commands in the output

Output doc/img/s3hub-mb.gif

Require s3hub

Set Shell "bash"
Set FontSize 20
Set Width 900
Set Height 300

Type "export AWS_PROFILE=localstack" Sleep 200ms Enter
Type "s3hub mb s3hub-s3-bucket-example" Sleep 500ms Enter
Sleep 5s
69 changes: 69 additions & 0 deletions doc/img/vhs/s3hub-rm-all.tape
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
# VHS documentation
#
# Output:
# Output <path>.gif Create a GIF output at the given <path>
# Output <path>.mp4 Create an MP4 output at the given <path>
# Output <path>.webm Create a WebM output at the given <path>
#
# Require:
# Require <string> Ensure a program is on the $PATH to proceed
#
# Settings:
# Set FontSize <number> Set the font size of the terminal
# Set FontFamily <string> Set the font family of the terminal
# Set Height <number> Set the height of the terminal
# Set Width <number> Set the width of the terminal
# Set LetterSpacing <float> Set the font letter spacing (tracking)
# Set LineHeight <float> Set the font line height
# Set LoopOffset <float>% Set the starting frame offset for the GIF loop
# Set Theme <json|string> Set the theme of the terminal
# Set Padding <number> Set the padding of the terminal
# Set Framerate <number> Set the framerate of the recording
# Set PlaybackSpeed <float> Set the playback speed of the recording
# Set MarginFill <file|#000000> Set the file or color the margin will be filled with.
# Set Margin <number> Set the size of the margin. Has no effect if MarginFill isn't set.
# Set BorderRadius <number> Set terminal border radius, in pixels.
# Set WindowBar <string> Set window bar type. (one of: Rings, RingsRight, Colorful, ColorfulRight)
# Set WindowBarSize <number> Set window bar size, in pixels. Default is 40.
# Set TypingSpeed <time> Set the typing speed of the terminal. Default is 50ms.
#
# Sleep:
# Sleep <time> Sleep for a set amount of <time> in seconds
#
# Type:
# Type[@<time>] "<characters>" Type <characters> into the terminal with a
# <time> delay between each character
#
# Keys:
# Escape[@<time>] [number] Press the Escape key
# Backspace[@<time>] [number] Press the Backspace key
# Delete[@<time>] [number] Press the Delete key
# Insert[@<time>] [number] Press the Insert key
# Down[@<time>] [number] Press the Down key
# Enter[@<time>] [number] Press the Enter key
# Space[@<time>] [number] Press the Space key
# Tab[@<time>] [number] Press the Tab key
# Left[@<time>] [number] Press the Left Arrow key
# Right[@<time>] [number] Press the Right Arrow key
# Up[@<time>] [number] Press the Up Arrow key
# Down[@<time>] [number] Press the Down Arrow key
# PageUp[@<time>] [number] Press the Page Up key
# PageDown[@<time>] [number] Press the Page Down key
# Ctrl+<key> Press the Control key + <key> (e.g. Ctrl+C)
#
# Display:
# Hide Hide the subsequent commands from the output
# Show Show the subsequent commands in the output

Output doc/img/s3hub-rm-all.gif

Require s3hub

Set Shell "bash"
Set FontSize 26
Set Width 1200
Set Height 600

Type "export AWS_PROFILE=localstack" Sleep 200ms Enter
Type "s3hub rm test-bucket-on-localstack --force" Sleep 500ms Enter
Sleep 10s
48 changes: 33 additions & 15 deletions doc/s3hub/README.md
Original file line number Diff line number Diff line change
@@ -1,39 +1,45 @@
## s3hub - user-friendly s3 management tool
> [!IMPORTANT]
> Not implemented yet.
The s3hub command provides following features:
- Create a bucket
- List buckets
- List contents of a bucket
- Copy files to a bucket
- Delete contents from a bucket
- Delete a bucket
- [x] Create a bucket
- [x] List buckets
- [ ] List contents of a bucket
- [ ] Copy files to a bucket
- [x] Delete contents from a bucket
- [x] Delete a bucket
- [ ] Interactive mode

## How to install
```shell
go install github.com/nao1215/rainbow/cmd/s3hub@latest
```

## How to use
S3hub operates without requiring the 's3://' protocol to be added to the bucket name.
The s3hub command allows you to specify a profile as an option, but it is more user-friendly to use the `AWS_PROFILE` environment variable. S3hub operates without requiring the 's3://' protocol to be added to the bucket name.

### Create a bucket(s)

```shell
s3hub mb ${YOUR_BUCKET_NAME}
```

![create_bucket](../img/s3hub-mb.gif)


### List buckets
```shell
s3hub ls
```

![ls_bucket](../img/s3hub-ls.gif)

### List contents of a bucket
```shell
s3hub ls ${YOUR_BUCKET_NAME}
```

> [!IMPORTANT]
> Not implemented yet.
### Copy files to a bucket
From local to S3:
```shell
Expand All @@ -45,24 +51,36 @@ From S3 to local:
s3hub cp ${YOUR_BUCKET_NAME} ${YOUR_FILE_PATH}
```

### Delete contents from a bucket
If you want to delete a specific file(s), use the following command:
> [!IMPORTANT]
> Not implemented yet.
### Delete a object from a bucket
If you want to delete a specific object, use the following command:
```shell
s3hub rm ${CONTENT_PATH_IN_BUCKET}
s3hub rm ${CONTENT_PATH_IN_BUCKET}/${S3_KEY}
```

If you want to delete all contents in a bucket, use the wildcard:
```shell
s3hub rm ${YOUR_BUCKET_NAME}/*
```

### Delete a bucket(s)
### Delete a bucket with objects
When the number of S3 objects is large, we parallelize the deletion process to enhance speed.
```shell
s3hub rm --recursive ${YOUR_BUCKET_NAME}
```

![delete_bucket](../img/s3hub-rm-all.gif)


### Interactive mode
You can use the interactive mode by omitting the arguments.
```shell
s3hub
```
```

![interactive_mode](../img/s3hub-interactive.gif)

> [!IMPORTANT]
> Not implemented yet.

0 comments on commit ce1dacd

Please sign in to comment.