barruun 0.1.2 → 0.1.6

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b40d405d04ce967216dc4c25caa14508492e6ba01186498b0aa936402f500462
4
- data.tar.gz: 83f9e2dd29e7978ca8e1c70517ccb8e51e2088a456b3caa0659fba1d7180061e
3
+ metadata.gz: 687ee635c9dd48bbdef5a5aa4d9e41e6b7d527c93da7f67a197c5a41f2458384
4
+ data.tar.gz: '068eb03f2e78b5ee3df8ad20ee3eae5e69af6f84af0fc70b9c5494e738bf5af9'
5
5
  SHA512:
6
- metadata.gz: 25daa66e59e6952a409dd201854505366ea626d44d2c924213888f6464f368becf936c3fa616ca8d236960f8d321fe35d57ff44affbce74217bbb092c95fd591
7
- data.tar.gz: ec560ce503e8b6fcabb55dfd16672c508e28b38deb6ed75c729c73c6174f4c44fed8ac93f2fcef0e2438669de7fb9c0d7b2856bdd0df0a3e44594a04a69bfc67
6
+ metadata.gz: a7722426c4de439a7159db04d4f30fd2035c521455e2c3b210c1ae75cddaff59c2bf21be687db230141d325e27049523eecc12cd71c205c4411e61033913399c
7
+ data.tar.gz: 50cdc30a34cfe43d59b9d0c38141c4d0dfd15b90e9caacfa092bbd20932b5e806528c606f622c485594bbaf84425f5a1a8ba80434b61e673a0e7ada95ba97cd7
data/Gemfile.lock CHANGED
@@ -1,25 +1,13 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- barruun (0.1.2)
5
- active_hash
4
+ barruun (0.1.6)
6
5
  thor (~> 1.1)
7
6
 
8
7
  GEM
9
8
  remote: https://rubygems.org/
10
9
  specs:
11
- active_hash (3.1.0)
12
- activesupport (>= 5.0.0)
13
- activesupport (7.0.1)
14
- concurrent-ruby (~> 1.0, >= 1.0.2)
15
- i18n (>= 1.6, < 2)
16
- minitest (>= 5.1)
17
- tzinfo (~> 2.0)
18
- concurrent-ruby (1.1.9)
19
10
  diff-lcs (1.5.0)
20
- i18n (1.8.11)
21
- concurrent-ruby (~> 1.0)
22
- minitest (5.15.0)
23
11
  power_assert (1.1.7)
24
12
  rake (13.0.6)
25
13
  rspec (3.10.0)
@@ -39,8 +27,6 @@ GEM
39
27
  rspec (>= 2.14)
40
28
  rspec-support (3.10.3)
41
29
  thor (1.2.1)
42
- tzinfo (2.0.4)
43
- concurrent-ruby (~> 1.0)
44
30
  webrick (1.7.0)
45
31
  yard (0.9.27)
46
32
  webrick (~> 1.7.0)
data/README.md CHANGED
@@ -62,6 +62,21 @@ bucket-level: 'on'
62
62
  location: us-central1
63
63
  ```
64
64
 
65
+ ### BigQuery
66
+
67
+ ```
68
+ Commands:
69
+ barruun bigquery dataset [FILEPATH] # Create dataset
70
+ barruun bigquery help [COMMAND] # Describe subcommands or one specific subcommand
71
+ ```
72
+
73
+ #### Dataset
74
+
75
+ ```yaml
76
+ name: foobar
77
+ location: asia-northeast1
78
+ ```
79
+
65
80
  ## Development
66
81
 
67
82
  After checking out the repo, run `bin/setup` to install dependencies. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
data/barruun.gemspec CHANGED
@@ -12,7 +12,7 @@ Gem::Specification.new do |spec|
12
12
  "
13
13
  spec.description = "Barruun is a simple tool for Infrastructure as Code of Google Cloud Platform using `gcloud` command.
14
14
  "
15
- spec.required_ruby_version = ">= 2.6.0"
15
+ spec.required_ruby_version = ">= 2.5.0"
16
16
 
17
17
  spec.metadata["source_code_uri"] = "https://github.com/colorfulcompany/barruun"
18
18
 
@@ -26,5 +26,4 @@ Gem::Specification.new do |spec|
26
26
  spec.require_paths = ["lib"]
27
27
 
28
28
  spec.add_runtime_dependency "thor", "~> 1.1"
29
- spec.add_runtime_dependency "active_hash"
30
29
  end
data/lib/barruun/cli.rb CHANGED
@@ -2,16 +2,23 @@ require "thor"
2
2
 
3
3
  module Barruun
4
4
  class StorageCommand < Thor
5
- desc "bucket [FILEPATH]", "Create or update bucket"
5
+ desc "bucket [FILEPATH]", "Create bucket"
6
6
  def bucket(file_path)
7
- Barruun::Storage::Bucket.new(file_path).call
7
+ Barruun::Managers::Storage::Bucket.new(file_path).call
8
8
  end
9
9
  end
10
10
 
11
11
  class LoggingCommand < Thor
12
- desc "sink [FILEPATH]", "Create or update sink"
12
+ desc "sink [FILEPATH]", "Create sink"
13
13
  def sink(file_path)
14
- Barruun::Logging::Sink.new(file_path).call
14
+ Barruun::Managers::Logging::Sink.new(file_path).call
15
+ end
16
+ end
17
+
18
+ class BigqueryCommand < Thor
19
+ desc "dataset [FILEPATH]", "Create dataset"
20
+ def sink(file_path)
21
+ Barruun::Managers::Bigquery::Dataset.new(file_path).call
15
22
  end
16
23
  end
17
24
 
@@ -22,5 +29,6 @@ module Barruun
22
29
 
23
30
  register(StorageCommand, 'storage', 'storage <command>', 'Manage Cloud Storage')
24
31
  register(LoggingCommand, 'logging', 'logging <command>', 'Manage Cloud Logging')
32
+ register(BigqueryCommand, 'bigquery', 'bigquery <command>', 'Manage BigQuery')
25
33
  end
26
34
  end
@@ -0,0 +1,19 @@
1
+ module Barruun
2
+ module Configurations
3
+ module Bigquery
4
+ class Dataset
5
+ def initialize(hash)
6
+ @hash = hash
7
+ end
8
+
9
+ def name
10
+ @hash["name"]
11
+ end
12
+
13
+ def options
14
+ @hash.reject { |k| ["name"].include?(k) }
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
@@ -1,10 +1,16 @@
1
1
  module Barruun
2
- module Logging
3
- class Sink
4
- class Config
2
+ module Configurations
3
+ module Logging
4
+ class Sink
5
+ class ProjectIDNotProvidedError < RuntimeError; end
6
+
5
7
  def initialize(hash, project_id = ENV["PROJECT_ID"])
6
8
  @hash = hash
7
9
  @project_id = project_id
10
+
11
+ if @project_id.nil?
12
+ raise ProjectIDNotProvidedError, "Project ID not provided"
13
+ end
8
14
  end
9
15
 
10
16
  def name
@@ -1,7 +1,7 @@
1
1
  module Barruun
2
- module Storage
3
- class Bucket
4
- class Config
2
+ module Configurations
3
+ module Storage
4
+ class Bucket
5
5
  def initialize(hash)
6
6
  @hash = hash
7
7
  end
@@ -0,0 +1,20 @@
1
+ require_relative "../../configurations/bigquery/dataset"
2
+ require_relative "../utils"
3
+
4
+ module Barruun
5
+ module Managers
6
+ module Bigquery
7
+ class Dataset
8
+ include Barruun::Managers::Utils
9
+
10
+ def create
11
+ `bq #{location_string} mk --dataset #{options_string(@config.options)} #{@config.name}`
12
+ end
13
+
14
+ def exist?
15
+ `bq ls`.include?(@config.name)
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,20 @@
1
+ require_relative "../../configurations/logging/sink"
2
+ require_relative "../utils"
3
+
4
+ module Barruun
5
+ module Managers
6
+ module Logging
7
+ class Sink
8
+ include Barruun::Managers::Utils
9
+
10
+ def create
11
+ `gcloud logging sinks create #{@config.name} #{@config.destination} #{options_string(@config.options)}`
12
+ end
13
+
14
+ def exist?
15
+ `gcloud logging sinks list --filter='name: #{@config.name}'`.include?(@config.name)
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,20 @@
1
+ require_relative "../../configurations/storage/bucket"
2
+ require_relative "../utils"
3
+
4
+ module Barruun
5
+ module Managers
6
+ module Storage
7
+ class Bucket
8
+ include Barruun::Managers::Utils
9
+
10
+ def create
11
+ `gcloud alpha storage buckets create #{options_string(@config.options)} #{@config.name}`
12
+ end
13
+
14
+ def exist?
15
+ `gcloud alpha storage buckets list --filter='name: #{@config.name}'`.include?(@config.name)
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,32 @@
1
+ require "yaml"
2
+
3
+ module Barruun
4
+ module Managers
5
+ module Utils
6
+ def self.included(obj)
7
+ obj.const_set('ConfigFileLoadError', Class.new(RuntimeError))
8
+ end
9
+
10
+ def initialize(file_path, config_klass = Object.const_get("#{self.class.name.gsub("Managers", "Configurations")}"))
11
+ @file_path = file_path
12
+ if !File.exists?(@file_path)
13
+ raise self.class::ConfigFileLoadError, "Error loading config file: #{file_path}"
14
+ end
15
+ @config = config_klass.new(YAML.load_file(file_path))
16
+ end
17
+
18
+ def call
19
+ if exist?
20
+ puts "#{self.class.name} #{@config.name} already exists. Nothing to do."
21
+ else
22
+ puts "#{self.class.name} #{@config.name} not found."
23
+ create
24
+ end
25
+ end
26
+
27
+ def options_string(options)
28
+ options.map { |k, v| "--#{k}=#{v}" }.compact.join(" ")
29
+ end
30
+ end
31
+ end
32
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Barruun
4
- VERSION = "0.1.2"
4
+ VERSION = "0.1.6"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: barruun
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - cc-kawakami
@@ -24,20 +24,6 @@ dependencies:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '1.1'
27
- - !ruby/object:Gem::Dependency
28
- name: active_hash
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - ">="
32
- - !ruby/object:Gem::Version
33
- version: '0'
34
- type: :runtime
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - ">="
39
- - !ruby/object:Gem::Version
40
- version: '0'
41
27
  description: 'Barruun is a simple tool for Infrastructure as Code of Google Cloud
42
28
  Platform using `gcloud` command.
43
29
 
@@ -60,11 +46,13 @@ files:
60
46
  - exe/barruun
61
47
  - lib/barruun.rb
62
48
  - lib/barruun/cli.rb
63
- - lib/barruun/logging/sink.rb
64
- - lib/barruun/logging/sink/config.rb
65
- - lib/barruun/storage/bucket.rb
66
- - lib/barruun/storage/bucket/config.rb
67
- - lib/barruun/utils.rb
49
+ - lib/barruun/configurations/bigquery/dataset.rb
50
+ - lib/barruun/configurations/logging/sink.rb
51
+ - lib/barruun/configurations/storage/bucket.rb
52
+ - lib/barruun/managers/bigquery/dataset.rb
53
+ - lib/barruun/managers/logging/sink.rb
54
+ - lib/barruun/managers/storage/bucket.rb
55
+ - lib/barruun/managers/utils.rb
68
56
  - lib/barruun/version.rb
69
57
  homepage:
70
58
  licenses: []
@@ -78,7 +66,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
78
66
  requirements:
79
67
  - - ">="
80
68
  - !ruby/object:Gem::Version
81
- version: 2.6.0
69
+ version: 2.5.0
82
70
  required_rubygems_version: !ruby/object:Gem::Requirement
83
71
  requirements:
84
72
  - - ">="
@@ -1,18 +0,0 @@
1
- require_relative "./sink/config"
2
- require_relative "../utils"
3
-
4
- module Barruun
5
- module Logging
6
- class Sink
7
- include Barruun::Utils
8
-
9
- def create
10
- `gcloud logging sinks create #{@config.name} #{@config.destination} #{options_string}`
11
- end
12
-
13
- def exist?
14
- `gcloud logging sinks list --filter='name: #{@config.name}'`.include?(@config.name)
15
- end
16
- end
17
- end
18
- end
@@ -1,18 +0,0 @@
1
- require_relative "./bucket/config"
2
- require_relative "../utils"
3
-
4
- module Barruun
5
- module Storage
6
- class Bucket
7
- include Barruun::Utils
8
-
9
- def create
10
- system("gcloud alpha storage buckets create #{options_string} #{@config.name}")
11
- end
12
-
13
- def exist?
14
- `gcloud alpha storage buckets list --filter='name: #{@config.name}'`.include?(@config.name)
15
- end
16
- end
17
- end
18
- end
data/lib/barruun/utils.rb DELETED
@@ -1,23 +0,0 @@
1
- require "yaml"
2
-
3
- module Barruun
4
- module Utils
5
- def initialize(file_path, config_klass = self.class::Config)
6
- @file_path = file_path
7
- @config = config_klass.new(YAML.load_file(file_path))
8
- end
9
-
10
- def call
11
- if exist?
12
- puts "#{self.class.name} #{@config.name} already exists. Nothing to do."
13
- else
14
- puts "#{self.class.name} #{@config.name} not found."
15
- create
16
- end
17
- end
18
-
19
- def options_string
20
- @config.options.map { |k, v| "--#{k}=#{v}" }.compact.join(" ")
21
- end
22
- end
23
- end