bigsister 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a50534c33ddfd8a24515e6541a2f253e2e85f0d01386b5dd7ed1700be3aa45a8
4
- data.tar.gz: 7079aa5b42b2b1d8ebb3e79a4636ff52b43b7631710fb9275f2c08b69410fe70
3
+ metadata.gz: 801cec260afc76e68534a6eb2a927af3ded0e4a3127b87288cc7129ca11fb643
4
+ data.tar.gz: ee112f0f35496f9c96271e57774c9cbb814a704d2d97f5bba7f59b156fbf99b3
5
5
  SHA512:
6
- metadata.gz: '08b2de6a443be21dbae3cb96d06782a5847d63ce5df45818a5df2badc6032a2fa0a47827e39f5d3703e64cd0fec5c3d2dc083ccf338c3ade69805ad3daaf466c'
7
- data.tar.gz: 3d04fccc1494aa208549c2cc65a0c2acf76f8317b70cb131adb1b8e67589bcfce129b76277ca2b12d8e0b820ebabc2804271b6251842dfd3eac80dba099da424
6
+ metadata.gz: cab071a5a1faf95f92221df55e7bcef07b75ee8220d241572a4fc624a2b150d2260882802ed2d1e8032e0ac54974ee72d18bd4f188968080b5d70d3b8f7699c0
7
+ data.tar.gz: 82720dfdfcb3d29abbd233f8ad0c2a51a6b2e0e3b12b289d485366c3a206baf6bc9712f01cdbb632fb747f1eabb88f8d5852aab25d0c73b214228ab39b2ae0f4
@@ -0,0 +1,49 @@
1
+ monitor:
2
+ - type: local
3
+ path: /Users/paul
4
+ - type: springcm
5
+ path: /Human Resources Records
6
+ credentials:
7
+ client_id: client_id
8
+ client_secret: client_secret
9
+ data_center: data_center
10
+ generate:
11
+ - type: csv
12
+ path: ./detail.csv
13
+ format: detail
14
+ mode: write
15
+ include:
16
+ - directories
17
+ - files
18
+ columns:
19
+ - title: Timestamp
20
+ type: timestamp
21
+ - title: Path
22
+ type: path
23
+ - title: File Size
24
+ type: size
25
+ - title: File Type
26
+ type: type
27
+ - title: Created
28
+ type: created_at
29
+ - title: Modified
30
+ type: modified_at
31
+ - title: Customer
32
+ type: literal
33
+ value: KHSD
34
+ - type: csv
35
+ path: ./summary.csv
36
+ format: summary
37
+ mode: append
38
+ include:
39
+ - directories
40
+ - files
41
+ columns:
42
+ - title: Timestamp
43
+ type: timestamp
44
+ - title: File Count
45
+ type: file_count
46
+ - title: Directory Count
47
+ type: directory_count
48
+ - title: File Size
49
+ type: file_size
@@ -5,3 +5,11 @@ cache: bundler
5
5
  rvm:
6
6
  - 2.5.1
7
7
  before_install: gem install bundler -v 2.0.2
8
+ before_script:
9
+ - curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
10
+ - chmod +x ./cc-test-reporter
11
+ - ./cc-test-reporter before-build
12
+ script:
13
+ - bundle exec rspec
14
+ after_script:
15
+ - ./cc-test-reporter after-build --exit-code $TRAVIS_TEST_RESULT
@@ -4,4 +4,10 @@ All notable changes to BigSister will be documented in this file.
4
4
 
5
5
  ## [Unreleased]
6
6
 
7
- [Unreleased]: https://github.com/paulholden2/bigsister/compare/0.1.0...HEAD
7
+ ## [0.1.1] - Nov 8, 2019
8
+ ### Added
9
+ * Basic Application object
10
+ * CLI tool
11
+
12
+ [Unreleased]: https://github.com/paulholden2/bigsister/compare/0.1.1...HEAD
13
+ [0.1.1]: https://github.com/paulholden2/bigsister/releases/tag/0.1.1
data/README.md CHANGED
@@ -1,5 +1,7 @@
1
1
  # BigSister
2
2
 
3
+ [![Build Status](https://travis-ci.org/paulholden2/bigsister.svg?branch=master)](https://travis-ci.org/paulholden2/bigsister) [![Maintainability](https://api.codeclimate.com/v1/badges/5c5e63e8a1c0f3830129/maintainability)](https://codeclimate.com/github/paulholden2/bigsister/maintainability) [![Test Coverage](https://api.codeclimate.com/v1/badges/5c5e63e8a1c0f3830129/test_coverage)](https://codeclimate.com/github/paulholden2/bigsister/test_coverage)
4
+
3
5
  A gem for generating reports on the contents of local and remote files for monitoring purposes. Above-board monitoring purposes.
4
6
 
5
7
  ## Installation
@@ -21,7 +23,7 @@ Or install it yourself as:
21
23
  ## Usage
22
24
 
23
25
  ```ruby
24
- $> bigsister
26
+ $ bigsister
25
27
  ```
26
28
 
27
29
  ## Development
@@ -28,8 +28,10 @@ Gem::Specification.new do |spec|
28
28
  spec.require_paths = ["lib"]
29
29
 
30
30
  spec.add_dependency "springcm-sdk", "~> 0.3"
31
+ spec.add_dependency "os", "~> 1.0"
31
32
 
32
33
  spec.add_development_dependency "bundler", "~> 2.0"
33
34
  spec.add_development_dependency "rake", "~> 10.0"
34
35
  spec.add_development_dependency "rspec", "~> 3.0"
36
+ spec.add_development_dependency "simplecov", "~> 0.17"
35
37
  end
@@ -0,0 +1,15 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "bundler/setup"
4
+ require "bigsister"
5
+ require "bigsister/application"
6
+ require "springcm-sdk"
7
+
8
+ begin
9
+ application = BigSister::Application.new
10
+ application.run
11
+ rescue BigSister::Error => e
12
+ puts "ERROR: #{e.message}"
13
+ rescue Springcm::Error => e
14
+ puts e.inspect
15
+ end
@@ -2,5 +2,22 @@ require "bigsister/version"
2
2
 
3
3
  module BigSister
4
4
  class Error < StandardError
5
+ def initialize(exception)
6
+ @exception = exception
7
+ end
8
+
9
+ def message
10
+ @exception
11
+ end
12
+
13
+ def inspect
14
+ %(#<#{self.class} @exception=#{@exception}>)
15
+ end
16
+ end
17
+
18
+ class NoConfigurationFound < Error
19
+ def initialize(checked_paths)
20
+ super("No configuration files found. Looked in: #{checked_paths.join(', ')}")
21
+ end
5
22
  end
6
23
  end
@@ -0,0 +1,32 @@
1
+ require "os"
2
+ require "yaml"
3
+ require "bigsister/configuration"
4
+
5
+ module BigSister
6
+ class Application
7
+ DEFAULT_CONFIG_PATHS = ["./.bigsister.yml", "~/.bigsister/config.yml"].freeze
8
+
9
+ attr_reader :config
10
+
11
+ def initialize(opts = {})
12
+ @config_paths = opts[:config_paths] || DEFAULT_CONFIG_PATHS
13
+
14
+ load_config!
15
+ end
16
+
17
+ def run
18
+ end
19
+
20
+ private
21
+
22
+ def load_config!
23
+ yaml = @config_paths.map { |path|
24
+ File.exists?(path) && YAML.load(File.open(path).read)
25
+ }.select(&:itself).first
26
+ if yaml.nil?
27
+ raise BigSister::NoConfigurationFound.new(@config_paths)
28
+ end
29
+ @config = Configuration.new(yaml)
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,53 @@
1
+ require "bigsister/monitors/local"
2
+ require "bigsister/monitors/springcm"
3
+
4
+ module BigSister
5
+ class Configuration
6
+ MONITOR_TYPES = %w(local springcm).freeze
7
+
8
+ attr_reader :monitors
9
+
10
+ def initialize(data)
11
+ @monitors = []
12
+ @config_errors = []
13
+
14
+ load_monitoring(data)
15
+ end
16
+
17
+ def valid?
18
+ @config_errors.empty?
19
+ end
20
+
21
+ private
22
+
23
+ def load_monitoring(data)
24
+ @monitoring = data.fetch("monitor", [])
25
+ if @monitoring.empty?
26
+ config_error("No monitoring locations configured")
27
+ end
28
+ @monitoring.each_with_index { |location, i|
29
+ # Validate monitoring type
30
+ type = location.fetch("type", nil)
31
+ if type.nil?
32
+ config_error("No monitoring type specified for location #{i}")
33
+ elsif !MONITOR_TYPES.include?(type)
34
+ config_error("Invalid monitoring type specified for location #{i}")
35
+ else
36
+ @monitors.push(load_monitor(type, location, i))
37
+ end
38
+ }
39
+ end
40
+
41
+ def load_monitor(type, location, i)
42
+ if type == "local"
43
+ BigSister::LocalMonitor.new(location, i)
44
+ elsif type == "springcm"
45
+ BigSister::SpringcmMonitor.new(location, i)
46
+ end
47
+ end
48
+
49
+ def config_error(message)
50
+ @config_errors.push(message)
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,14 @@
1
+ module BigSister
2
+ class Monitor
3
+ def initialize(location, id)
4
+ @location = location
5
+ @id = id
6
+ end
7
+
8
+ def summary
9
+ end
10
+
11
+ def detail
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,6 @@
1
+ require "bigsister/monitor"
2
+
3
+ module BigSister
4
+ class LocalMonitor < BigSister::Monitor
5
+ end
6
+ end
@@ -0,0 +1,6 @@
1
+ require "bigsister/monitor"
2
+
3
+ module BigSister
4
+ class SpringcmMonitor < BigSister::Monitor
5
+ end
6
+ end
@@ -1,3 +1,3 @@
1
1
  module BigSister
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.1"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bigsister
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Paul Holden
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-11-07 00:00:00.000000000 Z
11
+ date: 2019-11-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: springcm-sdk
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0.3'
27
+ - !ruby/object:Gem::Dependency
28
+ name: os
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '1.0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '1.0'
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: bundler
29
43
  requirement: !ruby/object:Gem::Requirement
@@ -66,13 +80,29 @@ dependencies:
66
80
  - - "~>"
67
81
  - !ruby/object:Gem::Version
68
82
  version: '3.0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: simplecov
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '0.17'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '0.17'
69
97
  description:
70
98
  email:
71
99
  - pholden@stria.com
72
- executables: []
100
+ executables:
101
+ - bigsister
73
102
  extensions: []
74
103
  extra_rdoc_files: []
75
104
  files:
105
+ - ".bigsister.yml"
76
106
  - ".gitignore"
77
107
  - ".rspec"
78
108
  - ".travis.yml"
@@ -84,7 +114,13 @@ files:
84
114
  - bigsister.gemspec
85
115
  - bin/console
86
116
  - bin/setup
117
+ - exe/bigsister
87
118
  - lib/bigsister.rb
119
+ - lib/bigsister/application.rb
120
+ - lib/bigsister/configuration.rb
121
+ - lib/bigsister/monitor.rb
122
+ - lib/bigsister/monitors/local.rb
123
+ - lib/bigsister/monitors/springcm.rb
88
124
  - lib/bigsister/version.rb
89
125
  homepage: https://github.com/paulholden2/bigsister
90
126
  licenses: