shack_kit 0.1.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.
@@ -0,0 +1,6 @@
1
+ module ShackKit
2
+ GEM_ROOT = File.dirname __dir__
3
+ end
4
+
5
+ require 'shack_kit/version'
6
+ require 'shack_kit/data/base'
@@ -0,0 +1,35 @@
1
+ require 'fileutils'
2
+ require 'sqlite3'
3
+ require 'sequel'
4
+
5
+ module ShackKit
6
+ module Data
7
+ DATA_DIR = ENV["HOME"] + "/.shack_kit"
8
+ MIGRATIONS_DIR = ShackKit::GEM_ROOT + "/db/migrations"
9
+ SOURCES_DIR = ShackKit::GEM_ROOT + "/db/sources"
10
+ DB_FILE = DATA_DIR + "/shack_kit.db"
11
+ DB = Sequel.sqlite(DB_FILE)
12
+ CALLSIGN_REGEX = /\A([A-Z]{1,2}|[0-9][A-Z])([0-9])/
13
+
14
+ class << self
15
+ def db_setup
16
+ FileUtils.mkpath(DATA_DIR)
17
+ SQLite3::Database.new(DB_FILE) unless File.file?(DB_FILE)
18
+ schema_update
19
+ end
20
+
21
+ def schema_update
22
+ Sequel.extension :migration
23
+ Sequel::Migrator.run(DB, MIGRATIONS_DIR)
24
+ end
25
+
26
+ def db_load
27
+ SOTACalls.update
28
+ SPCalls.update
29
+ end
30
+ end
31
+ end
32
+ end
33
+
34
+ require 'shack_kit/data/sota_calls'
35
+ require 'shack_kit/data/sp_calls'
@@ -0,0 +1,19 @@
1
+ module ShackKit
2
+ module Data
3
+ class SOTACalls
4
+ def self.update(source_file=SOURCES_DIR+"/masterSOTA.scp")
5
+ calls = DB[:sota_calls]
6
+ calls.delete
7
+ File.foreach(source_file) do |line|
8
+ callsign = line.strip
9
+ calls.insert(callsign: callsign) if callsign =~ CALLSIGN_REGEX
10
+ end
11
+ calls.count
12
+ end
13
+
14
+ def self.include?(callsign)
15
+ DB[:sota_calls].where(callsign: callsign).count > 0
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,37 @@
1
+ require 'simple-spreadsheet'
2
+
3
+ module ShackKit
4
+ module Data
5
+ class SPCalls
6
+ SOURCE_SHEETS = %w(Indywidualne Kluby)
7
+
8
+ def self.update(source_file=SOURCES_DIR+"/201511\ -\ RA2WWW_ok.xls")
9
+ calls = DB[:sp_calls]
10
+ calls.delete
11
+ xls = SimpleSpreadsheet::Workbook.read(source_file)
12
+ SOURCE_SHEETS.each do |sheet_name|
13
+ sheet_index = xls.sheets.index(sheet_name)
14
+ xls.selected_sheet = xls.sheets[sheet_index]
15
+ xls.first_row.upto(xls.last_row) do |row|
16
+ next if xls.cell(row,1) == "nazwa_uke"
17
+ calls.insert(
18
+ callsign: xls.cell(row, 4),
19
+ station_type: sheet_name == "Kluby" ? 'club' : 'individual',
20
+ uke_branch: xls.cell(row, 1),
21
+ licence_number: xls.cell(row, 2),
22
+ valid_until: xls.cell(row, 3),
23
+ licence_category: xls.cell(row, 5),
24
+ tx_power: xls.cell(row, 6).to_i,
25
+ station_location: xls.cell(row, sheet_name == "Kluby" ? 20 : 7)
26
+ )
27
+ end
28
+ end
29
+ calls.count
30
+ end
31
+
32
+ def self.check(callsign)
33
+ DB[:sp_calls].where(callsign: callsign).first
34
+ end
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,3 @@
1
+ module ShackKit
2
+ VERSION = "0.1.1"
3
+ end
@@ -0,0 +1,37 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'shack_kit/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "shack_kit"
8
+ spec.version = ShackKit::VERSION
9
+ spec.authors = ["Marcin Bajer"]
10
+ spec.email = ["bajer@tigana.pl"]
11
+
12
+ spec.summary = "Set of HAM radio tools packaged by SQ9OZM"
13
+ spec.description = "currently limited to SP and SOTA-related stuff"
14
+ spec.homepage = "https://github.com/rrrodrigo/shack_kit"
15
+ spec.license = "MIT"
16
+
17
+ # Prevent pushing this gem to RubyGems.org by setting 'allowed_push_host', or
18
+ # delete this section to allow pushing this gem to any host.
19
+ if spec.respond_to?(:metadata)
20
+ spec.metadata['allowed_push_host'] = "https://rubygems.org"
21
+ else
22
+ raise "RubyGems 2.0 or newer is required to protect against public gem pushes."
23
+ end
24
+
25
+ spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
26
+ spec.bindir = "exe"
27
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
28
+ spec.require_paths = ["lib"]
29
+
30
+ spec.add_development_dependency 'bundler', '~> 1.10'
31
+ spec.add_development_dependency 'rake', '~> 10.0'
32
+ spec.add_development_dependency 'minitest', '~> 5'
33
+ spec.add_development_dependency 'irbtools', '~> 2'
34
+ spec.add_runtime_dependency 'sqlite3', '~> 1.3', '>= 1.3.3'
35
+ spec.add_runtime_dependency 'sequel', '~> 4', '>= 4.28'
36
+ spec.add_runtime_dependency 'simple-spreadsheet', '~> 0.4', '>= 0.4.1'
37
+ end
metadata ADDED
@@ -0,0 +1,181 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: shack_kit
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.1
5
+ platform: ruby
6
+ authors:
7
+ - Marcin Bajer
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2015-11-27 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.10'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.10'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '10.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '10.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: minitest
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '5'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '5'
55
+ - !ruby/object:Gem::Dependency
56
+ name: irbtools
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '2'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '2'
69
+ - !ruby/object:Gem::Dependency
70
+ name: sqlite3
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '1.3'
76
+ - - ">="
77
+ - !ruby/object:Gem::Version
78
+ version: 1.3.3
79
+ type: :runtime
80
+ prerelease: false
81
+ version_requirements: !ruby/object:Gem::Requirement
82
+ requirements:
83
+ - - "~>"
84
+ - !ruby/object:Gem::Version
85
+ version: '1.3'
86
+ - - ">="
87
+ - !ruby/object:Gem::Version
88
+ version: 1.3.3
89
+ - !ruby/object:Gem::Dependency
90
+ name: sequel
91
+ requirement: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - "~>"
94
+ - !ruby/object:Gem::Version
95
+ version: '4'
96
+ - - ">="
97
+ - !ruby/object:Gem::Version
98
+ version: '4.28'
99
+ type: :runtime
100
+ prerelease: false
101
+ version_requirements: !ruby/object:Gem::Requirement
102
+ requirements:
103
+ - - "~>"
104
+ - !ruby/object:Gem::Version
105
+ version: '4'
106
+ - - ">="
107
+ - !ruby/object:Gem::Version
108
+ version: '4.28'
109
+ - !ruby/object:Gem::Dependency
110
+ name: simple-spreadsheet
111
+ requirement: !ruby/object:Gem::Requirement
112
+ requirements:
113
+ - - "~>"
114
+ - !ruby/object:Gem::Version
115
+ version: '0.4'
116
+ - - ">="
117
+ - !ruby/object:Gem::Version
118
+ version: 0.4.1
119
+ type: :runtime
120
+ prerelease: false
121
+ version_requirements: !ruby/object:Gem::Requirement
122
+ requirements:
123
+ - - "~>"
124
+ - !ruby/object:Gem::Version
125
+ version: '0.4'
126
+ - - ">="
127
+ - !ruby/object:Gem::Version
128
+ version: 0.4.1
129
+ description: currently limited to SP and SOTA-related stuff
130
+ email:
131
+ - bajer@tigana.pl
132
+ executables: []
133
+ extensions: []
134
+ extra_rdoc_files: []
135
+ files:
136
+ - ".gitignore"
137
+ - ".ruby-gemset"
138
+ - ".ruby-version"
139
+ - ".travis.yml"
140
+ - Gemfile
141
+ - LICENSE.txt
142
+ - README.md
143
+ - Rakefile
144
+ - bin/console
145
+ - bin/setup
146
+ - db/migrations/001_create_sota_calls.rb
147
+ - db/migrations/002_create_sp_calls.rb
148
+ - db/sources/201511 - RA2WWW_ok.xls
149
+ - db/sources/masterSOTA.scp
150
+ - lib/shack_kit.rb
151
+ - lib/shack_kit/data/base.rb
152
+ - lib/shack_kit/data/sota_calls.rb
153
+ - lib/shack_kit/data/sp_calls.rb
154
+ - lib/shack_kit/version.rb
155
+ - shack_kit.gemspec
156
+ homepage: https://github.com/rrrodrigo/shack_kit
157
+ licenses:
158
+ - MIT
159
+ metadata:
160
+ allowed_push_host: https://rubygems.org
161
+ post_install_message:
162
+ rdoc_options: []
163
+ require_paths:
164
+ - lib
165
+ required_ruby_version: !ruby/object:Gem::Requirement
166
+ requirements:
167
+ - - ">="
168
+ - !ruby/object:Gem::Version
169
+ version: '0'
170
+ required_rubygems_version: !ruby/object:Gem::Requirement
171
+ requirements:
172
+ - - ">="
173
+ - !ruby/object:Gem::Version
174
+ version: '0'
175
+ requirements: []
176
+ rubyforge_project:
177
+ rubygems_version: 2.4.5.1
178
+ signing_key:
179
+ specification_version: 4
180
+ summary: Set of HAM radio tools packaged by SQ9OZM
181
+ test_files: []