Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
1988 commits
Select commit Hold shift + click to select a range
69c7425
fix(cisco/dnaspaces): fix timestamp adjustments
stakach Nov 21, 2023
296cd5f
chore: remove driver
stakach Nov 21, 2023
66c99d4
chore(buid.yml): added env var to use nightly build tag
naqvis Nov 21, 2023
22a7025
feat(delta): simplify API driver
stakach Nov 28, 2023
9dc48c5
fix(harness): fix shell command to invoke build cli (#484)
naqvis Nov 29, 2023
fb3efc6
feat(delta): add uno next sensor interface
stakach Nov 29, 2023
e4e55de
fix(delta): not all devices have a display name
stakach Nov 29, 2023
990cb38
fix(delta): JSON key name incorrect
stakach Nov 29, 2023
6249e06
fix(delta): values stored as strings
stakach Nov 29, 2023
a483509
fix(delta): sensors not in use return blank values
stakach Nov 29, 2023
e96673e
fix(delta): sensor data is sometimes a string sometimes an int
stakach Nov 29, 2023
1355205
fix(llm/workplace): booking ids are integers
stakach Nov 30, 2023
2acf71b
feat(llm/workplace): improve responses with level names
stakach Nov 30, 2023
24edf4b
fix(workplace): level id is optional
stakach Nov 30, 2023
f5f9da8
fix(schedule): provide more hints when looking up staff
stakach Nov 30, 2023
7dbc2af
fix(llm/workplace): relative booking bug
stakach Nov 30, 2023
e85c61b
fix(llm/schedule): encourage GPT not to guess details
stakach Nov 30, 2023
8f7854c
feat(llm): allow offsets and dates to be used
stakach Nov 30, 2023
28a339d
feat(workplace): add date option to more functions
stakach Nov 30, 2023
76a6d54
chore(ci): changed crystal version to latest (#485)
naqvis Nov 30, 2023
f36e40c
feat(place/meet): allow routing a camera input to multiple outputs
stakach Nov 30, 2023
9e61185
feat(delta): uno_next track particles
stakach Nov 30, 2023
cf6a6ce
fix(crestron/virtual_switcher): switch only the selected layers
stakach Nov 30, 2023
20c09bc
feat(place/meet): add join_lockout_secondary config
stakach Dec 4, 2023
44ed7e4
feat(place/meet): add config to hide the join button
stakach Dec 4, 2023
3bf77a7
feat(place/room_booking_approval): Add an alternative driver which ch…
w-le Dec 19, 2023
ebe5ed6
feat(place/room_booking_approval): optionally assume the last attende…
w-le Dec 19, 2023
9fb0360
chore(place/room_booking_approval): Support permissions not required …
w-le Dec 19, 2023
0eae74b
feat: push event notifications to staff-api
stakach Dec 19, 2023
f2ede3f
feat: tweak add some status feedback
stakach Dec 19, 2023
6c0338d
chore: crystal tool format
stakach Dec 19, 2023
b41764c
chore(staff-api): add some debug logging
stakach Dec 20, 2023
e4f2699
fix(bookings): json payload on push events
stakach Dec 20, 2023
d93b12a
chore(placeos/room_booking_approval_alt): assume_last_attendee_is_roo…
w-le Dec 20, 2023
36ad166
feat(placeos/room_booking_approval_alt1): customisable host notificat…
w-le Dec 20, 2023
76125e3
feat(placeos/room_booking_approval_alt1): support BOTH methods of det…
w-le Jan 5, 2024
cfe81cc
feat(clipsal/cbus): port lighting driver
stakach Jan 5, 2024
7f0bd44
feat(knx/baos): add KNX BAOS lighting driver
stakach Jan 30, 2024
46d8eb3
chore: crystal tool format
stakach Jan 30, 2024
a368f6d
feat(embedia/control_point): add driver
stakach Jan 30, 2024
4351cdf
feat(3m/displays): add display
stakach Jan 31, 2024
ba77b52
feat(place/bookings): default image to system [PPT-1173]
stakach Feb 5, 2024
2b639d6
feat(tv_one/corio_master): add driver
stakach Feb 6, 2024
851f709
feat(planar/clarity_matrix): add driver
stakach Feb 7, 2024
69e8851
feat(visitor_mailer): location zone customisable [PPT-1193]
stakach Feb 8, 2024
0435c60
fix(area_management): hydrate sensor where level is unknown
stakach Feb 8, 2024
12aaf26
feat(extron/usb_extender_plus): add endpoint driver
stakach Feb 8, 2024
71efcd9
chore: format and spec runner update
stakach Feb 8, 2024
c5f92d4
feat(usb_extender_plus/virtual_switcher): add driver
stakach Feb 9, 2024
f68bc09
fix(extron\usb_extender_plus\virtual_switcher): add spec
stakach Feb 12, 2024
65e2989
chore(place/area_management): expose internals
stakach Feb 12, 2024
af70abe
Feat/placeos/rbp remote logging (#487)
w-le Feb 14, 2024
0c20436
chore(shard.lock): bump crystal client
stakach Feb 15, 2024
5530c13
fix(shard.lock): placeos models and client versions
stakach Feb 15, 2024
32b7a53
feat(auto_release): [PPT-1154] auto release bookings for absent users…
chillfox Feb 15, 2024
330fa06
feat(place/meet): add set_microphone helper
stakach Mar 7, 2024
e596175
chore(delta/api): add skip and max result params
stakach Mar 11, 2024
8aec8ba
feat(delta/api): paginate list devices
stakach Mar 11, 2024
b2ccc21
fix(delta/api): pagination is unreliable
stakach Mar 11, 2024
212326d
fix(delta/api): handle empty response
stakach Mar 11, 2024
8535392
chore(delta/api): request 1000 results at a time
stakach Mar 11, 2024
fdf6688
feat(locations): add building zone override
stakach Mar 12, 2024
e570660
fix: add sensor modifiers to types
stakach Mar 13, 2024
6309543
feat(visitor_mailer): add campus support [PPT-1286]
stakach Mar 19, 2024
56790f2
feat(area_management): support campus locations
stakach Mar 20, 2024
6f3c5fa
fix(area_management): ensure no variable confusion
stakach Mar 20, 2024
44f1f9a
feat(visitor_mailer): share campus setting with area management
stakach Mar 20, 2024
bb8ae5f
fix(area_management): building tags incorrect on campus
stakach Mar 20, 2024
0acaf22
feat(llm/schedule): provide hints for common mistakes
stakach Mar 21, 2024
14f000a
fix(llm/workplace): clarify function use
stakach Mar 21, 2024
c793780
fix(llm/workplace): improve desk management
stakach Mar 21, 2024
838f34c
fix(gallagher/rest_api): remove card in update
stakach Mar 26, 2024
96321bf
fix(bookings): always decline events
stakach Apr 1, 2024
2dd45e2
fix(delta): unonext data via manager
stakach Apr 3, 2024
0bc7ae9
fix(delta/uno_next): use a cache
stakach Apr 3, 2024
83e6e46
fix(delta/uno_next): air quality data
stakach Apr 3, 2024
00e8e89
fix(delta): fix pagination
stakach Apr 3, 2024
515c7c1
fix(delta/uno_next): fix compilation
stakach Apr 3, 2024
b6e869e
fix(delta/uno_next): memory leak
stakach Apr 5, 2024
b519ab5
feat(delta/zen_pir): add PIR driver
stakach Apr 5, 2024
d60642d
chore(delta/zen): expose an area_id
stakach Apr 8, 2024
a9ae839
fix(delta/zen): add area_id field
stakach Apr 8, 2024
2522c19
fix(delta/uno_next): ensure object index exists
stakach Apr 8, 2024
54a0b64
chore(delta/uno_next): simplify caching
stakach Apr 11, 2024
b753288
Add UbiPark driver according to the specified documents (#490)
grkek Apr 12, 2024
64cbac7
feat(vergesense/location_service): don't notify updates by default
stakach Apr 16, 2024
7eaaffd
chore: disable build service in certain workflows
stakach Apr 23, 2024
3b18c77
feat(inner_range/integriti): add driver (#491)
stakach Apr 24, 2024
3fb05b5
feat(inner_range/integriti): add permission group query
stakach Apr 24, 2024
2818b1f
fix(inner_range/integriti): return user information in card queries
stakach Apr 24, 2024
6986ed0
feat(floorsense): add settings configuration routes
stakach Apr 29, 2024
69d80a6
feat(kontakt_io/kio_cloud): add simple telemetry querying
stakach Apr 30, 2024
4609d0c
feat(kontakt_io/kio_cloud): try and obtain up to date telemetary
stakach Apr 30, 2024
689300f
fix(kontakt_io/kio_cloud): telemetry query
stakach Apr 30, 2024
3a8d5ff
fix(kontakt_io/kio_cloud): time ordering
stakach Apr 30, 2024
1dbcc85
fix(rhombus/security_mock): static door ids
stakach May 2, 2024
10c1db3
feat(kontakt_io): add support for PIR sensors
stakach May 6, 2024
811753f
feat(visitor_mailer): [PPT-1214] add group-event template (#494)
chillfox May 7, 2024
925a314
feat(staff-api): add system_settings query
stakach May 8, 2024
bfe53b2
feat(kontakt_io): collect map room_ids to map_ids
stakach May 8, 2024
b301255
feat(optergy): add p864 driver
stakach May 14, 2024
8834303
fix(optergy): add security to write methods
stakach May 14, 2024
d1dac0b
fix(optergy): default generic name
stakach May 14, 2024
72f5dda
chore(optergy): add some debugging
stakach May 14, 2024
1597085
fix(optery): add content-type headers
stakach May 14, 2024
ded2afe
feat(inner_range/integriti): add bool support for fields
stakach May 15, 2024
7bde3d3
feat(inner_range/integriti): add bool support for fields
stakach May 15, 2024
1b7fa95
fix(cisco/dna_spaces): retry interval is now 2 seconds
stakach May 16, 2024
7cc11da
fix(cisco/dna_spaces): ensure only a single event stream
stakach May 16, 2024
cbe5b65
feat(place/calendar): add pagination to users query
stakach May 24, 2024
e83a735
feat(place/calendar): expose a next_page link
stakach May 25, 2024
fa542ae
feat(place/calendar): add pagination to group members
stakach May 27, 2024
9c9cfa2
fix(place/calendar): office365 users list
stakach May 29, 2024
adfa71b
fix(place/calendar): group membership response
stakach May 29, 2024
21e94e9
chore(place/calendar_spec): add helpful description
stakach May 30, 2024
4634a57
fix(auto_release): [PPT-1392] early release (#496)
chillfox May 31, 2024
8047a94
test(survey): remove temporary fix as staff-api has been fixed (#492)
chillfox Jun 3, 2024
b2f3a32
fix(auto_release): [PPT-1392] correct selection of bookings for relea…
chillfox Jun 3, 2024
7c9d8fb
feat(inner_range/integriti): add custom field support
stakach Jun 3, 2024
b633904
fix(inner_range/integriti): user permission request should not be a s…
stakach Jun 3, 2024
c571f3c
feat(PPT-1303): Update Smartalock with the locker interface (#495)
grkek Jun 3, 2024
f81962a
feat(inner_range/integriti_user_sync): add sync driver
stakach Jun 3, 2024
ec88e49
fix(inner_range\integriti): work around integriti bug
stakach Jun 3, 2024
00476ac
fix(auto_release): [PPT-1155] only release after (#498)
chillfox Jun 4, 2024
f353773
fix(inner_range\integriti_user_sync): ensure users created with a low…
stakach Jun 4, 2024
ba064c3
fix(inner_range/integriti_user_sync): remove integriti group not ad g…
stakach Jun 4, 2024
7d0cb5d
feat(workplace_subscriptions): add generic workplace push events
stakach Jun 5, 2024
cd1faac
fix(workplace_subscriptions): format and protected methods
stakach Jun 5, 2024
2d62dbf
feat(inner_range\integriti_user_sync): subscribe to membership changes
stakach Jun 5, 2024
4629e1d
feat(place/calendar): add email support for group fetch
stakach Jun 5, 2024
bb9ace2
fix(inner_range\integriti_user_sync): fetching group id
stakach Jun 5, 2024
f9d92c2
feat(inner_range\integriti_user_sync): sync on group membership change
stakach Jun 5, 2024
7c66acd
feat(lutron): add room logic (#501)
w-le Jun 5, 2024
cb67682
feat(siemens/desigo): add room logic (#500)
w-le Jun 5, 2024
538e17a
fix(inner_range/integriti_user_sync): debounce MS events
stakach Jun 5, 2024
f12cdfe
fix(inner_range/integriti_user_sync): debounce MS events
stakach Jun 5, 2024
9d32f64
fix(inner_range/integriti_user_sync): sync on missed events too
stakach Jun 5, 2024
2c3183b
feat(integriti_hid_virtual_pass): add driver for requesting a card
stakach Jun 5, 2024
c95d3d8
fix(auto_release): [PPT-1392] flip time comparrison for time_after (#…
chillfox Jun 10, 2024
8960e97
fix(auto_release): handle prefered time crossing midnight in utc, cor…
chillfox Jun 11, 2024
1b11c9e
fix(auto_release): only disable auto_release if both time_before and …
chillfox Jun 11, 2024
d41828a
fix(auto_release): use #enabled? for all enabled checks (#505)
chillfox Jun 12, 2024
75a69d3
feat(place/parking/locations): add driver
stakach Jun 17, 2024
df26648
fix(parking/locations): add specs
stakach Jun 18, 2024
7f553ed
fix(parking/locations): only query for bookings in parking zones
stakach Jun 18, 2024
c66faa0
feat(place/meet): add current_routes helper
stakach Jun 19, 2024
6476545
feat(kaiterra/logic): add driver (#506)
stakach Jun 20, 2024
cc1aadd
chore(shard.lock): bump deps
stakach Jun 20, 2024
b024420
chore(siemens/desigo): bump dependency
stakach Jun 20, 2024
8d62252
chore: bump deps and format
stakach Jun 20, 2024
9a15244
feat(floorsense/desks_websocket): implement desk control interface
stakach Jun 20, 2024
7dd1c55
feat(desk/control): add helper
stakach Jun 20, 2024
47a9059
feat(williams_av/wave_cast_fm): add random join code helper
stakach Jun 20, 2024
c8c803f
chore(shard.lock): bump deps
stakach Jun 21, 2024
e8014f3
chore(williams_av/wave_cast_fm): add a comment
stakach Jun 21, 2024
c1e349c
chore(shard.lock): add support for client certificates
stakach Jun 24, 2024
fdcdd33
feat(auto_release): [PPT-1416] use building timezone for work hours (…
chillfox Jun 28, 2024
9869f94
chore(shard.lock): update shards (#509)
chillfox Jun 28, 2024
7b447b4
doc(staff_api): update comment (to cause a new compile with updated s…
chillfox Jun 28, 2024
7eb8c03
fix(kramer/rc_308_panel): set button state for triggers
stakach Jul 4, 2024
879aa9c
fix(kramer/rc_308_panel): remove btn query
stakach Jul 4, 2024
13135c4
chore(demo/display): make a UDP driver
stakach Jul 10, 2024
01378a0
feat(williams_av/wave_cast_fm): add multichannel support
stakach Jul 15, 2024
934f873
feat(bookings): double check presence status before prompting
stakach Jul 15, 2024
13303bf
fix(place/booking_check_in_helper): ensure failsafe works
stakach Jul 16, 2024
2af7a8b
feat: add crystal 1.13 support
stakach Jul 16, 2024
b6996ae
chore(floorsense/bookings_sync): crystal 1.13 support
stakach Jul 16, 2024
3a343ef
chore(williams_av/wave_cast_fm): docs
stakach Jul 18, 2024
b5bebbb
feat(knx): add UDP tunnelling driver
stakach Jul 19, 2024
0f9f10d
fix(knx/udp_tunnel): bump deps
stakach Jul 19, 2024
cc15281
feat: add some direct write methods
stakach Jul 22, 2024
e7334f4
chore(knx/udp_tunnel): add additional logging
stakach Jul 22, 2024
1111289
fix(knx/udp_tunnel): improve connection logic
stakach Jul 22, 2024
46f4cdf
fix(knx/udp_tunnel): parsing header type on received
stakach Jul 23, 2024
3e62c68
feat(knx/udp_tunnel): add support for multiple IP addresses
stakach Jul 23, 2024
858f24d
feat(knx/udp_tunnel): clean up ready for production
stakach Jul 23, 2024
b08a2bf
feat(knx/lighting): add driver
stakach Jul 23, 2024
c9b6d72
feat(knx/lighting): add support for one bit addresses
stakach Jul 23, 2024
a1317e0
fix(knx/udp_tunnel): add additional header options
stakach Jul 24, 2024
e7b4a4a
chore(knx/udp_tunnel): fix default flags
stakach Jul 24, 2024
85b690f
fix(knx/udp_tunnel): ensure updates don't overlap
stakach Jul 24, 2024
3ccdc39
chore(demo/room_sensor): output area counts
stakach Jul 31, 2024
fd1fe37
feat(place/location_services): add building level searches to locations
stakach Jul 31, 2024
6bcffcd
feat: add volume up and down to displays
stakach Jul 31, 2024
45ac9b4
fix(kontakt_io/kio_cloud): break up sensor queries
stakach Aug 5, 2024
7818a25
feat(kontakt_io/kio_cloud): retry failed sensor queries
stakach Aug 5, 2024
460c24f
fix(knx/udp_tunnel): prevent type confusion with float values
stakach Aug 12, 2024
78852e8
chore(kontakt_io/kio_cloud): provide more details on error
stakach Aug 12, 2024
6729a2b
fix(kontakt_io/kio_cloud): reduce telemetry query further
stakach Aug 12, 2024
2cb6432
fix(kontakt_io/sensor_service): use area location for rooms
stakach Aug 12, 2024
a27fa3c
fix(floorsense/desks_websocket): revert connect-proxy version
stakach Aug 12, 2024
83347fc
fix(knx/upd_tunnel): writing zero values
stakach Aug 12, 2024
dbb292a
chore(shard.lock): updated connect-proxy lib
stakach Aug 13, 2024
662a860
feat(floorsense/desks_websocket): add support for http_uri_override
stakach Aug 14, 2024
1e76d75
feat(place/meet): add voice control support
stakach Aug 15, 2024
57aba6b
fix(place/meet): route_input output existing check
stakach Aug 15, 2024
bd19669
fix(place/meet): automatically power on system when switching
stakach Aug 15, 2024
e9f68f7
fix(place/meet): inform about power control of meeting
stakach Aug 16, 2024
9541608
chore(shard.lock): bump driver version
stakach Aug 18, 2024
a10db09
feat(philips/hue): add hue lighting control
stakach Aug 19, 2024
d2783eb
feat(place/meet): improve llm audio control
stakach Aug 19, 2024
26945b0
fix(place/staff-api): prevent possible infinite loop
stakach Aug 19, 2024
4db0e06
fix(place/meet): improve routing / presentation llm commands
stakach Aug 19, 2024
b5f917f
fix(hue): list resources properly
stakach Aug 20, 2024
0f4c1a6
chore(place/meet): add flag for voice control
stakach Aug 27, 2024
4fd8c33
fix(kontakt_io/kio_cloud): provide a default seconds since motion value
stakach Aug 27, 2024
17ac075
feat(gallagher): add support for zone overrides
stakach Aug 27, 2024
553eb86
feat(gallagher/zone_schedule): add driver
stakach Aug 27, 2024
c6fb0d6
chore(meet): update hints
stakach Aug 28, 2024
1d98690
fix(inner_range/integriti): pagination and user filtering
stakach Aug 29, 2024
30e1a0a
fix(inner_range/integriti): correctly parse next page
stakach Aug 29, 2024
9b954d4
fix(place/calendar): group member pagination
stakach Aug 29, 2024
d138962
feat(floorsense): update booking sync
stakach Aug 29, 2024
386081d
fix(place/visitor_mailer): improve visibility
stakach Aug 29, 2024
2e3bf5a
feat(auto_release): [PPT-1483] multiple same day time blocks (#513)
chillfox Aug 29, 2024
d5816f5
fix(juniper/mist): pixels_per_meter is optional
stakach Sep 2, 2024
ad296d8
fix(juniper/mist_websocket): websocket payload format
stakach Sep 2, 2024
6c4662a
fix(juniper/mist): websocket splits stats and location
stakach Sep 2, 2024
20c9a37
fix(juniper/mist): ensure last updated time is maintained
stakach Sep 2, 2024
d228502
fix(juniper/mist): needs to make level requests in sync
stakach Sep 2, 2024
586a994
fix(juniper/mist): ensure correct type
stakach Sep 2, 2024
2eb778a
fix(juniper/mist): spec passing
stakach Sep 2, 2024
642356f
chore(juniper/mist): don't save clients to redis directly
stakach Sep 2, 2024
21b0305
feat(juniper/mist): reduce the amount of data sent to redis
stakach Sep 2, 2024
3fae2ae
fix(qsc/q_sys_remote): don't expect reply for no-op
stakach Sep 3, 2024
4791257
chore(inner_range/integriti): add request debug logging
stakach Sep 9, 2024
91b6d04
feat(inner_range/integriti): add support for temporary access
stakach Sep 9, 2024
dcdfa87
feat(inner_range/integriti): card creation and user allocations
stakach Sep 9, 2024
ecde75e
fix(inner_range/integriti): cards use ID attribute for updates
stakach Sep 10, 2024
1d87585
feat(inner_range/integriti): query card formats
stakach Sep 10, 2024
f4bc53a
feat(inner_range\integriti): improve data returned in card lookup
stakach Sep 10, 2024
1d7921e
fix(inner_range/integriti): return card data
stakach Sep 10, 2024
9e813bf
fix(inner_range/integriti): can't filter by card id
stakach Sep 10, 2024
d42f0fd
feat(optergy/p864): implement sensor interface
stakach Sep 10, 2024
79f2f69
fix(optergy/p864): sensor status feedback
stakach Sep 10, 2024
869c22b
fix(optergy/p864): sensor mac
stakach Sep 10, 2024
8f261c8
fix(axiom/room_logic): support additional "Locked" statuses
w-le Sep 10, 2024
9d12930
fix(qsc/q_sys_remote): fader feedback
stakach Sep 11, 2024
21a8263
fix(axiom/room_logic): fix count of locked doors
w-le Sep 11, 2024
18efcc9
fix(axiom/room_logic): locked door count
w-le Sep 11, 2024
b68d835
feat(inner_range/integriti): add guest building access
stakach Sep 12, 2024
8f9f2aa
fix(inner_range/integriti): guest access management
stakach Sep 12, 2024
98b8d43
fix(inner_range/integriti): modify result parsing
stakach Sep 12, 2024
52a22f4
fix(inner_range/integriti): time format
stakach Sep 12, 2024
fe5057e
fix(inner_range/integriti): revoke_access
stakach Sep 12, 2024
fd921c7
fix(inner_range/integriti): use cards query to obtain card data
stakach Sep 12, 2024
cf64491
fix(inner_range/integriti): revoke_guest_access
stakach Sep 13, 2024
39f8177
feat(integriti): add guest_access_configured? method
stakach Sep 13, 2024
8a1d010
feat(place/visitor_mailer): provide a QR code for building access
stakach Sep 13, 2024
64cb97a
fix compile error
stakach Sep 13, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
61 changes: 61 additions & 0 deletions .ameba.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
Excluded:
- repositories/**/*.cr

Lint/DebugCalls:
Excluded:
- drivers/**/*_spec.cr

# NOTE: These should all be reviewed on an individual basis to see if their
# complexity can be reasonably reduced.
Metrics/CyclomaticComplexity:
Description: Disallows methods with a cyclomatic complexity higher than `MaxComplexity`
MaxComplexity: 10
Excluded:
- drivers/helvar/net.cr
- drivers/mulesoft/booking_api.cr
- drivers/samsung/displays/mdc_protocol.cr
- drivers/cisco/dna_spaces.cr
- drivers/cisco/meraki/dashboard.cr
- drivers/cisco/switch/snooping_catalyst.cr
- drivers/gantner/relaxx/protocol_json.cr
- drivers/place/bookings.cr
- drivers/place/area_management.cr
- drivers/place/smtp.cr
- drivers/hitachi/projector/cp_tw_series_basic.cr
- drivers/panasonic/projector/nt_control.cr
- drivers/lumens/dc193.cr
Enabled: false
Severity: Convention

Lint/UselessAssign:
Description: Disallows useless variable assignments
# NOTE: Not enabled due to the extremely large hit count.
# Discussion with driver authors on whether this pattern is intended.
Enabled: false
Severity: Warning

Style/VerboseBlock:
Description: Identifies usage of collapsible single expression blocks.
ExcludeCallsWithBlock: false
ExcludeMultipleLineBlocks: true
ExcludeOperators: false
ExcludePrefixOperators: false
ExcludeSetters: true
Enabled: false
Severity: Convention

Style/VariableNames:
Description: Enforces variable names to be in underscored case
# NOTE: Not enabled due to the extremely large hit count.
# Discussion with driver authors on whether this pattern is intended.
Enabled: false
Severity: Convention

# NOTE: These appear to be triggered by assignment in case expressions, could be an ameba bug
Lint/ShadowingOuterLocalVar:
Description: Disallows the usage of the same name as outer local variables for block
or proc arguments.
Excluded:
- drivers/cisco/switch/snooping_catalyst.cr
Enabled: true
Severity: Warning
33 changes: 33 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
---
name: Bug report
about: Create a report to help us improve
title: 'Bug: A concise description of the behaviour'
labels: bug
assignees: ''

---

**Describe the bug**

A clear and concise description of what the bug is.

**To Reproduce**

Steps to reproduce the behaviour or a minimal code snippet that demonstrates the behaviour.

**Expected behaviour**

A clear and concise description of what you expected to happen.

**Screenshots or a paste of terminal output**

If applicable, add screenshots to help explain your problem.

**Versions (please complete the following information):**

- Output of `$ crystal version`
- Driver version [e.g. 3.x]

**Additional context**

Add any other context about the problem here.
20 changes: 20 additions & 0 deletions .github/ISSUE_TEMPLATE/driver_migration.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
---
name: Driver Migration
about: Migrate existing Ruby Engine Driver to Crystal
title: 'Driver Migration: Migrate existing Ruby driver'
labels: driver
assignees: ''

---

**Driver to be Migrated**

Information about the driver to be migrated.

**Link to Existing Driver**

Link to existing Driver on Ruby Drivers Repo.

**Additional context**

Add any other context about the problem here.
32 changes: 32 additions & 0 deletions .github/ISSUE_TEMPLATE/driver_request.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
---
name: Driver Request
about: Request a new driver to be created
title: 'Driver Request: Information required to create a new driver'
labels: driver
assignees: ''

---

**Driver Type**

Logic/Device/SSH/Websocket

**Manufacturer**

Manufacturer of device, software or service

**Model/Service**

Model or Service

**Link to or Attach Device API or Protocol**

If applicable, add screenshots to help explain your problem.

**Describe any desired functionality**

- Control all aspects of device

**Additional context**

Add any other context about the driver request here.
24 changes: 24 additions & 0 deletions .github/ISSUE_TEMPLATE/feature_request.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
---
name: Feature request
about: Suggest an idea for this project
title: 'RFC: Concise description of desired feature'
labels: ''
assignees: ''

---

**Is your feature request related to a problem? Please describe.**

A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

**Describe the solution you'd like**

A clear and concise description of what you want to happen.

**Describe alternatives you've considered**

A clear and concise description of any alternative solutions or features you've considered.

**Additional context**

Add any other context or screenshots about the feature request here.
6 changes: 6 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
version: 2
updates:
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "weekly"
48 changes: 48 additions & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
name: Build and Publish Drivers
on:
push:
branches: [master]

env:
CRYSTAL_VERSION: latest
PLACE_BUILD_TAG: nightly

jobs:
build:
name: Build
runs-on: ubuntu-latest
environment: Build
steps:
- uses: actions/checkout@v4

# Binary Cache Logic
#############################################################################################

- uses: actions/cache@v3
with:
path: binaries
key: drivers-${{ env.CRYSTAL_VERSION }}-${{ github.run_id }}
restore-keys: drivers-${{ env.CRYSTAL_VERSION }}-

#############################################################################################

- uses: FranzDiebold/github-env-vars-action@v2 # https://github.com/github/feedback/discussions/5251
- name: Build Drivers
run: |
./harness build \
--discover \
--strict-driver-info \
--repository-uri https://github.com/${{ github.repository }} \
--repository-path ./repositories/local \
--ref ${{ github.sha }} \
--branch ${{ github.ref_name }}
env:
CRYSTAL_VERSION: ${{ env.CRYSTAL_VERSION }}
AWS_S3_BUCKET: ${{ secrets.AWS_S3_BUCKET }}
AWS_SECRET: ${{ secrets.AWS_SECRET }}
AWS_KEY: ${{ secrets.AWS_KEY }}
AWS_REGION: ${{ secrets.AWS_REGION }}
# CLOUD_BUILD_SERVER: CLOUD_BUILD_SERVICE_ROOT_ENDPOINT
# GIT_TOKEN: GIT_TOKEN_FOR_PRIVATE_REPO_IF_REQUIRED
PLACE_BUILD_TAG: ${{ env.PLACE_BUILD_TAG }}
BUILD_SERVICE_DISABLED: false
136 changes: 136 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,136 @@
name: CI

on:
push:
branches: [master]
pull_request:
branches: [master]
schedule:
- cron: "0 6 * * 1"

env:
PARALLEL_TESTS: 10
PARALLEL_BUILDS: 2

jobs:
docs:
if: false # Temporarily disable as docs just _do not work_ for a driver
name: "Crystal Docs"
runs-on: ubuntu-latest
continue-on-error: true
container: crystallang/crystal
steps:
- uses: actions/checkout@v4
- name: Install Shards
run: shards install --ignore-crystal-version
- name: Docs
run: crystal docs

style:
name: "Style"
uses: PlaceOS/.github/.github/workflows/crystal-style.yml@main

subset-report:
name: "Subset Report - crystal: ${{ matrix.crystal }}, stable: ${{ matrix.stable }}"
runs-on: ubuntu-latest
continue-on-error: ${{ !matrix.stable }}
strategy:
fail-fast: false
matrix:
stable: [true]
crystal:
- latest
include:
- stable: false
crystal: nightly
steps:
- id: changes
uses: trilom/file-changes-action@v1.2.4
with:
output: ' '
- uses: actions/checkout@v4
- name: Cache shards
uses: actions/cache@v3
with:
path: lib
key: ${{ hashFiles('shard.lock') }}
- name: Driver Report
# Skip subset report if dependencies have changed
if: ${{ !contains(steps.changes.outputs.files, 'shard.yml') && !contains(steps.changes.outputs.files, 'shard.lock') }}
run: |
./harness \
report \
--verbose \
--tests=${{ env.PARALLEL_TESTS }} \
--builds=${{ env.PARALLEL_BUILDS }} \
${{ steps.changes.outputs.files }}
env:
AWS_S3_BUCKET: ${{ secrets.AWS_S3_BUCKET }}
AWS_REGION: ${{ secrets.AWS_REGION }}
BUILD_SERVICE_DISABLED: true
CRYSTAL_VERSION: ${{ matrix.crystal }}
- name: Upload failure logs
if: ${{ failure() }}
uses: actions/upload-artifact@v3
with:
name: logs-${{ matrix.crystal }}-${{ github.sha }}
path: .logs/*.log

full-report:
name: "Full Report - crystal: ${{ matrix.crystal }}, stable: ${{ matrix.stable }}"
needs: subset-report
runs-on: ubuntu-latest
continue-on-error: ${{ !matrix.stable }}
strategy:
fail-fast: false
matrix:
stable: [true]
crystal:
- latest
include:
- stable: false
crystal: nightly
steps:
- uses: actions/checkout@v4

- name: Cache shards
uses: actions/cache@v3
with:
path: lib
key: ${{ hashFiles('shard.lock') }}

# Binary Cache Logic
#############################################################################################

- uses: actions/cache@v3
with:
path: binaries
key: drivers-${{ env.CRYSTAL_VERSION }}-${{ github.run_id }}
restore-keys: drivers-${{ env.CRYSTAL_VERSION }}-

#############################################################################################

- name: Driver Report
run: |
./harness \
report \
--verbose \
--tests=${{ env.PARALLEL_TESTS }} \
--builds=${{ env.PARALLEL_BUILDS }}
env:
AWS_S3_BUCKET: ${{ secrets.AWS_S3_BUCKET }}
AWS_REGION: ${{ secrets.AWS_REGION }}
BUILD_SERVICE_DISABLED: false
CRYSTAL_VERSION: ${{ matrix.crystal }}
- name: Show build container logs
if: ${{ failure() }}
run: docker-compose logs build
- name: Show drivers container logs
if: ${{ failure() }}
run: docker-compose logs drivers
- name: Upload failure logs
if: ${{ failure() }}
uses: actions/upload-artifact@v3
with:
name: logs-${{ matrix.crystal }}-${{ github.sha }}
path: .logs/*.log
24 changes: 24 additions & 0 deletions .github/workflows/docs.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
name: Deploy docs

on:
push:
branches: [ master ]

jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- uses: crystal-lang/install-crystal@v1
with:
crystal: latest
- name: "Install shards"
run: shards install --skip-postinstall --skip-executables
- name: "Generate docs"
run: crystal docs
- name: Deploy to GitHub Pages
uses: peaceiris/actions-gh-pages@v3
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./docs
Loading