shack_kit 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -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: []