Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
1574 commits
Select commit Hold shift + click to select a range
153b0ca
chore(leviton): add debugging to acquisuite driver (#381)
camreeves Nov 7, 2022
7a7edd9
fix(sony\camera\visca): zoom position on preset recall
stakach Nov 7, 2022
f398cd5
feat(aver/cam520_pro): add aver cam520 driver
stakach Nov 7, 2022
f81141b
chore(aver/cam520_pro): add additional logging
stakach Nov 7, 2022
8108177
fix(aver/cam520_pro): add before_request for setting auth header
stakach Nov 7, 2022
ed229e3
chore(aver/cam520_pro): log the request path
stakach Nov 7, 2022
d8757b6
fix(aver/cam520_pro): fix hostname when not running a spec
stakach Nov 7, 2022
f49f895
feat(infosilem/mock): add mock driver for testing RoomSchedule
w-le Nov 7, 2022
68194fa
fix(infosilem/mock): args for bookings func
w-le Nov 7, 2022
8b991a9
fix(infosilem/mock): bookings? response
w-le Nov 7, 2022
56fe697
fix(leviton): small webhook fixes (#382)
camreeves Nov 7, 2022
d99e441
fix(aver/cam520_pro): http requests shouldn't use the websocket port
stakach Nov 8, 2022
266d38f
fix(aver/cam520_pro): save presets
stakach Nov 8, 2022
3fe34ec
fix(aver/cam520_pro): any stop command will stop movement
stakach Nov 8, 2022
9b21a2a
Revert "fix(aver/cam520_pro): any stop command will stop movement"
stakach Nov 8, 2022
896b199
chore(aver/cam520_pro): debug body data
stakach Nov 8, 2022
d3e18dd
fix(aver/cam520_pro): compare absolute values when moving
stakach Nov 8, 2022
336476b
feat(crestron/nvx): add virtual switcher
stakach Nov 9, 2022
0995ab4
Test merge for Cisco ISE
grkek Nov 9, 2022
ab13a3d
fix(aver/cam520_pro): ensure presets are exposed on load
stakach Nov 9, 2022
4263795
fix: camera presets status
stakach Nov 9, 2022
1efa02e
feat(place/http_pinger): add curl helper
stakach Nov 15, 2022
046baba
fix(event_attendance_recorder): ensure no concurrent state updates
stakach Nov 15, 2022
ee18146
feat: add kramer RC8 touch pad driver
stakach Nov 17, 2022
b0571f2
chore(event_attendance_recorder): remove old state log output
stakach Nov 17, 2022
07663e8
fix(place\calendar_common): prevent rate limiter error
stakach Nov 17, 2022
e493eab
fix(place\calendar_common): prevent rate limiter error
stakach Nov 17, 2022
5bdfefb
chore(juniper\mist_websocket): update default WS API
stakach Nov 17, 2022
140d151
feat(juniper\mist_websocket): add some debugging logs
stakach Nov 17, 2022
5e4a7a1
fix(juniper\mist_websocket): different host for REST API requests
stakach Nov 17, 2022
8ca76d7
chore(juniper/mist): fix spec
stakach Nov 24, 2022
bb90d11
fix(juniper\mist_models): mark optional map fields
stakach Nov 24, 2022
fe3ef5a
fix(juniper\mist_models): mark optional client fields
stakach Nov 24, 2022
515b264
fix(juniper\mist_models): fix accuracy
stakach Nov 24, 2022
374b19f
feat(gallagher\rest_api): implement DoorSecurity interface (#386)
stakach Nov 24, 2022
f642661
fix(gallagher\rest_api): use update URL in responses
stakach Nov 24, 2022
df3395b
fix(gallagher\rest_api): may not be using PDFs
stakach Nov 24, 2022
a42f678
fix(gallagher\rest_api): ids are strings
stakach Nov 24, 2022
7241eb9
chore(rhombus\security_interop): add some debugging output
stakach Nov 24, 2022
493f30c
feat(gallagher\rest_api): add some helpful requests
stakach Nov 24, 2022
614dd7d
feat(interface/door_security): allow for custom channel
stakach Nov 25, 2022
8be8b2b
feat(place/visitor_mailer): add option for sending reminder emails
stakach Nov 30, 2022
e2e3381
fix(place/staff_api): zones parents request
stakach Dec 1, 2022
b62fe12
chore(shard.yml): bump version
stakach Dec 8, 2022
90d8e7e
fix(juniper/mist_websocket): data is not always provided
stakach Dec 8, 2022
1701329
feat: add room control sensor shutdown helper
stakach Dec 9, 2022
0298b3c
fix(crestron/occupancy_sensor): expose a sensor interface compatible …
stakach Dec 12, 2022
26f951f
feat(cisco/ise): support ISE REST API v3.1
grkek Dec 13, 2022
c44337a
fix(placeos/staff-api): query_guests
w-le Dec 13, 2022
05f7dcb
fix(visitor_mailer): time format for query_guests
w-le Dec 13, 2022
2189074
fix(placeos/visitor_mailer): zones param of query_guests
w-le Dec 13, 2022
9e83e78
fix(placeos/visitor_mailer): building zone var
w-le Dec 13, 2022
0694251
fix(placeos/visitor_mailer): building_zone safe accessor
w-le Dec 13, 2022
46d9df9
fix(placeos/visitor_mailer): building_zone var ref
w-le Dec 13, 2022
f7ba8b9
fix(Cisco/ise): Exclude optional fields from the Internal User model …
grkek Dec 14, 2022
465d630
fix(cisco/ise): remove custom attributes from ISE (#401)
grkek Dec 14, 2022
5f19067
chore(place/bookings): add function to get calendar id
stakach Dec 15, 2022
38166de
feat(cisco/room_kit): implement sensor interface
stakach Dec 16, 2022
98fc6ef
fix(place/booking_notifier): don't notify unless approved
stakach Dec 16, 2022
72033db
fix(place/booking_notifier): only send email once booking is approved
stakach Dec 16, 2022
7e42391
feat(place/booking_notifier): send cancelled emails
stakach Dec 16, 2022
2f3267e
chore(cisco/room_kit): add useful defaults
stakach Dec 16, 2022
db3ae57
fix(event_attendance_recorder): ensure no negative values
stakach Dec 16, 2022
cca3f38
feat(lenel/openaccess): reader searching, raw lookup, event paginatio…
w-le Dec 18, 2022
8f92c96
feat(place/visitor_mailer): add option to disable qr
stakach Jan 8, 2023
93fe3b5
chore: refactor router
stakach Jan 10, 2023
1b769cf
chore(leviton): Set debugging to info level to persist in logs (#407)
camreeves Jan 10, 2023
9f0c9bd
feat(cisco/dna_spaces): add sensor interface
stakach Jan 12, 2023
7aac4a0
feat(place/bookings): allow filtering sensors by mac
stakach Jan 12, 2023
94f8e35
fix(cisco/dna_spaces): sensor queries
stakach Jan 13, 2023
a489191
fix(cisco/dna_spaces): add units to sensor data
stakach Jan 13, 2023
e0dba24
feat(place/area_management): support transforming sensor units
stakach Jan 13, 2023
3677fc6
fix(place/bookings): sensor data could be Int in older crystal versions
stakach Jan 17, 2023
0eb8357
feat(survey): send invitation emails (#399)
chillfox Jan 18, 2023
10a495a
feat(cisco/meraki): add support for wired desk tracking (#412)
stakach Jan 18, 2023
a8db24d
feat(placeos/mailers): ISE network creds in Event and Booking emails …
w-le Jan 18, 2023
0d8cee5
fix(meraki_locations): mac can be nil on a port
stakach Jan 19, 2023
f3813ca
fix(meraki_locations): return desk locations using building zone
stakach Jan 19, 2023
25febd2
fix(meraki_locations): ensure level_id is set on port status
stakach Jan 19, 2023
5fe0578
feat(meraki_locations): notify area management on port status changes
stakach Jan 19, 2023
34dd0e6
feat(survey_mailer): provide survey_id to template (#413)
chillfox Jan 19, 2023
71a5efc
feat(event_attendance_recorder): at a debounce setting
stakach Jan 19, 2023
a6279ca
chore: crystal tool format
stakach Jan 19, 2023
3056976
fix(placeos/booking_notifier): optional polling. rm unneeded wifi cre…
w-le Jan 19, 2023
6448f68
fix(cisco/ise): reference user by name instead of email (#415)
w-le Jan 20, 2023
b09bd8c
feat: Add identity groups to creation/update methods of the internal …
grkek Jan 20, 2023
624b532
feat(placeos/mailers): add groups for created network users
w-le Jan 22, 2023
c90b9ed
fix(placeos/visitor_mailer): timezone setting
w-le Jan 22, 2023
e27ac62
feat(crestron/nvx_tx): expose the audio stream session name
stakach Jan 23, 2023
2e0db71
feat(crestron/virtual_switcher): add audio switching layer
stakach Jan 23, 2023
e28e087
fix(crestron/virtual_switcher): lookup audio layer as required
stakach Jan 23, 2023
d2f486c
fix(webex/instant_connect): update driver endpoints
stakach Jan 24, 2023
1f6f655
fix(webex/instant_connect): revert API call changes
stakach Jan 24, 2023
f88cb07
fix(webex/instant_connect): be flexible about payload content
stakach Jan 24, 2023
302074e
fix(placeos/mailers): password for new network users
w-le Jan 24, 2023
937b785
Merge branch 'master' of github.com:PlaceOS/drivers
w-le Jan 24, 2023
605d558
feat(visitor_mailer): multiple templates (#417)
chillfox Jan 24, 2023
7fe1aa4
fix(cisco/dna_spaces): improve location search when no map available
stakach Jan 24, 2023
1e9b8db
fix(event_attendance_recorder): delay initial value
stakach Jan 25, 2023
7e1452d
feat(place/bookings): add options to hide details
stakach Jan 30, 2023
c7f3495
fix(leviton): allow for gzip decompression in log files (#411)
camreeves Jan 30, 2023
b235440
feat(qsc/q_sys_control): add support for percentage based faders
stakach Jan 31, 2023
a2e80a2
feat(qsc/q_sys_control): expose history data
stakach Jan 31, 2023
0d15ab8
fix(place/staff_api): add nil defaults to get_survey_invites
stakach Feb 1, 2023
06d40cf
fix(survey_mailer): update sent status (#420)
chillfox Feb 1, 2023
091eafd
fix(staff_api): check sent for not nil in #get_survey_invites (#421)
chillfox Feb 1, 2023
04c08d2
fix(event_attendance_recorder): ensure counts reset if metadata save …
stakach Feb 5, 2023
1c93ef7
chore(shard.lock): bump place driver
stakach Feb 6, 2023
9c96f95
chore(shard.lock): bump driver version
stakach Feb 6, 2023
72d58d7
chore(shard.lock): bump versions
stakach Feb 7, 2023
e9d00d6
chore(cisco/dna_spaces): update default values
stakach Feb 7, 2023
e24f099
fix(cisco/dna_spaces): map_id is used for grouping results
stakach Feb 8, 2023
2b68a6e
feat: add auto desk checkin helper
stakach Feb 8, 2023
74a18a3
fix(leviton): ensure right file is unzipped (#425)
camreeves Feb 8, 2023
ad06b36
feat(area_management): add area capacity to areas
stakach Feb 9, 2023
93cf126
fix(leviton): update data format (#426)
camreeves Feb 9, 2023
3307757
fix(acquisuite): rstrip new line chars from result
stakach Feb 9, 2023
608801f
fix(leviton): update webhook logging to warn and output b64 before de…
camreeves Feb 13, 2023
1132b3f
feat(bookings): expose some fields for analytics
stakach Feb 14, 2023
f906c39
fix(bookings): all_day_event flag reversed
stakach Feb 14, 2023
c11793c
feat(desk_bookings_locations): add duration for analytics
stakach Feb 14, 2023
522993e
feat(area_management): add a summary of desk bookings
stakach Feb 14, 2023
501b20d
test(staff_api): #get_survey_invites (#430)
chillfox Feb 14, 2023
50651d6
feat(survey): dedupe emails (#432)
chillfox Feb 15, 2023
0501b75
feat(acquisuite): add timestamp hint
stakach Feb 15, 2023
c64ba55
feat(webex/instant_connect): add webex guest JWT
stakach Feb 16, 2023
f7aef6b
fix(docker-compose): update redis and install-shards image to multi-a…
naqvis Feb 16, 2023
debf062
feat: add health chat rooms (#431)
stakach Feb 20, 2023
2593643
feat(visitor_mailor): all day event time PPT-107 (#424)
chillfox Feb 21, 2023
e9d51fd
fix(chat/health): don't raise if not recently disconnected
stakach Feb 21, 2023
42ab588
feat(leviton/acquisuite): persist last error to help with debugging
stakach Feb 22, 2023
614b09e
feat(password_generator): [PPT-90] add configurable password generato…
chillfox Feb 23, 2023
4844d9d
fix(crestron/nvx_rx): don't downcase stream names
stakach Feb 23, 2023
9dcbbc0
fix(crestron/nvx_rx): compilation issue
stakach Feb 23, 2023
3b4c1a5
feat(chat/health_rooms): add room summaries
stakach Feb 26, 2023
96525b6
fix(chat/health_rooms): room summary wait time
stakach Feb 26, 2023
b076cf9
fix(chat/health_rooms): wait time update check
stakach Feb 26, 2023
2566ad2
feat(chat/health_rooms_models): add text chat only flag to participants
stakach Feb 27, 2023
48a908c
feat: add samsung reduced mdc protocol display
stakach Feb 27, 2023
8dac15d
feat(samsung/reduced_mdc_protocol): add whiteboard clear function
stakach Feb 28, 2023
9468051
feat(chat/health_rooms): implement user exit signal
stakach Feb 28, 2023
96aa0e0
feat(harness): ensure code & images are up to date
stakach Feb 28, 2023
b267157
fix(meraki/dashboard): webhook response code
stakach Feb 28, 2023
e045fdc
feat(place/area_management): obtain building id from system config
stakach Mar 1, 2023
f30a5ce
fix(chat/health_rooms): ensure users are cleaned up
stakach Mar 1, 2023
6dae862
feat(bookings): add ended at field for simplified analytics
stakach Mar 2, 2023
7e55593
feat(chat/health_rooms): provide empty arrays when chat ends
stakach Mar 6, 2023
ad5e71e
fix(leviton): ensure config list is loaded from settings (#435)
camreeves Mar 6, 2023
9671b2d
feat: add johnson_controls metasys
stakach Mar 6, 2023
8f4f01f
fix(place/event_mailer): saving of state event metadata (#436)
w-le Mar 7, 2023
5083f89
feat(crestron/cres_next): added WS manual send function
stakach Mar 7, 2023
720fb49
Merge branch 'master' of https://github.com/PlaceOS/drivers
stakach Mar 7, 2023
62b876e
fix(crestron\nvx_rx): use websocket update method
stakach Mar 7, 2023
d10f4b5
feat(crestron/virtual_switcher): add support for muting outputs
stakach Mar 7, 2023
842c60e
revert(cisco/ise/guest): left for client compatibility
stakach Mar 7, 2023
9458ea6
chore(cisco/ise/guest): rename to avoid history clash
stakach Mar 7, 2023
aa9701a
feat: add globalcache ir (#437)
w-le Mar 7, 2023
86f321f
fix(levtion): allow for null values in readings (#438)
camreeves Mar 8, 2023
f95a407
fix(leviton): Allow for readings to use the correct datatype (#439)
camreeves Mar 8, 2023
b4f3667
fix(globalcache/ir_tv): add a delay between IR commands
w-le Mar 10, 2023
d9bbf3c
chore(globalcache/ir_tv): expose ir commands
w-le Mar 10, 2023
f423242
feat(place/bookings): add host_override option
stakach Mar 14, 2023
70dc930
feat(place/staff-api): add metadata query function
stakach Mar 14, 2023
fc04349
feat(staff_api): add get_event function
stakach Mar 15, 2023
d9a4d75
fix(place/calendar): rate limiter fiber exit
stakach Mar 16, 2023
263deab
chore: fix generation of crystal docs
stakach Mar 16, 2023
d95f896
limit meetings to 4 hours of age
stakach Mar 16, 2023
0db6777
fix(health_rooms): disconnection validation check
stakach Mar 17, 2023
8a009d8
feat(chat/health_rooms): save and restore state on update / recovery
stakach Mar 19, 2023
7fb95dd
fix(place/meet): lighting independent setting
stakach Mar 21, 2023
2f60330
chore: bump driver lighting interface
stakach Mar 21, 2023
5a14558
feat(philips/dynet_text): add generic data send
stakach Mar 21, 2023
4b30b31
feat(philips/dynalite): add link_area function
stakach Mar 21, 2023
499debd
fix(philips\dynalite): fix join byte
stakach Mar 21, 2023
489b401
feat(philips/dynalite): improve unlink area
stakach Mar 21, 2023
d954bb6
feat(place/meet): improve light linking
stakach Mar 21, 2023
3d3f931
fix(place/bookings): potential for inaccurate status flag
stakach Mar 21, 2023
c35f989
feat(place/staff_api): add ical_uid param to metadata patching
stakach Mar 22, 2023
ecd561e
fix(infosilem/room_schedule): current_event_attendees = 0 instead of …
w-le Mar 22, 2023
1346da8
Add Vecos driver PPT-73 (#440)
grkek Mar 23, 2023
939a852
Add GoBright driver PPT-35 (#428)
grkek Mar 23, 2023
8a6ac5e
feat(gobright): simplify driver
stakach Mar 30, 2023
1881b4b
chore(shard.lock): bump versions
stakach Mar 30, 2023
352d058
fix(gobright/api): invalidate token if unauthorised response
stakach Mar 30, 2023
789a9b6
fix(gobright/api): spaces request can support multiple types
stakach Mar 30, 2023
533967a
fix(gobright/api): don't filter types by default
stakach Mar 30, 2023
c709629
feat: add GoBright location service
stakach Mar 30, 2023
bcf9940
fix(gobright/api): spaces request to return space object
stakach Mar 30, 2023
ce0662f
fix(gobright/api): live occupancy requires a location id
stakach Mar 30, 2023
885f235
fix(gobright/locations): return unoccupied spaces
stakach Mar 30, 2023
18fe645
feat(place/chat): add entry notifications (#442)
stakach Mar 31, 2023
a261d98
chore(health_rooms): add debugging log output
stakach Mar 31, 2023
fc90359
chore(health_rooms): add debugging helper
stakach Mar 31, 2023
a1b086b
chore(health_rooms): expose internals in debugging helper
stakach Mar 31, 2023
6c16113
fix(health_rooms): notification metadata extraction
stakach Mar 31, 2023
4dcc5e8
chore(health_rooms): load notification settings when inspecting
stakach Mar 31, 2023
15bd2e3
feat(gobright/api): add bookings
stakach Apr 3, 2023
9fa47a8
feat(gobright/api): allow data in response to be null
stakach Apr 3, 2023
55b2308
fix(gobright/api): response might return data or items
stakach Apr 3, 2023
b089c2b
feat(gobright/location): include bookings in occupied status
stakach Apr 3, 2023
a752760
fix(releezme/vecos): don't require an external library
stakach Apr 4, 2023
169be4d
feat(releezme/vecos): implement required sections of the API
stakach Apr 4, 2023
ff887e4
feat(bookings): add disable_book_now_host binding
stakach Apr 4, 2023
9a7330b
chore: rename releezme to vecos
stakach Apr 4, 2023
d1b48ee
chore(vecos): crystal tool format
stakach Apr 4, 2023
488100f
feat(vecos/releezme): fix nullable fields
stakach Apr 4, 2023
05b8b9b
fix(gobright): not all spaces have a location id
stakach Apr 4, 2023
760e15e
feat(vecos/releezme): implement lockers interface
stakach Apr 5, 2023
cf69a69
fix(vecos/releezme): update models
stakach Apr 5, 2023
66ac33b
feat(vecos/releezme): implement location services
stakach Apr 6, 2023
c958a68
fix(vecos\releezme_locations): update floor mappings key
stakach Apr 6, 2023
c78bb5a
fix: unique keys for location services
stakach Apr 6, 2023
3ba838f
fix(vecos\releezme_locations): change floor mapping key
stakach Apr 6, 2023
23ca3a2
chore(shard.lock): bump version
stakach Apr 6, 2023
fec2bd4
feat(vecos/releezme_locations): skip fetching user if using email as id
stakach Apr 6, 2023
5177d23
fix(vecos/releezme_locations): skip fetching user if using email as id
stakach Apr 6, 2023
65280aa
chore: update lockers interface
stakach Apr 7, 2023
2b803ad
feat: add open ai chatgpt support
stakach Apr 8, 2023
ddb9f23
fix(open_ai/gpt): listing available models
stakach Apr 8, 2023
16d4fe3
feat(open_ai/gpt): make org optional and record usage stats
stakach Apr 9, 2023
0ba10d2
feat: add voice control template for LLM usage
stakach Apr 11, 2023
f5f20a6
feat(open_ai/voice_control): provide access to status data
stakach Apr 11, 2023
8bcd8af
fix(place/meet): default mute feedback is audio_mute
stakach Apr 12, 2023
7f99bdf
chore(shard.lock): bump driver version
stakach Apr 12, 2023
4657e61
fix(nec/display): resolve some common issues
stakach Apr 12, 2023
8539cb4
chore(nec/display): add some debug logging
stakach Apr 12, 2023
cc39b8f
fix(nec/display): multiple lengths for save response
stakach Apr 12, 2023
06148a0
Add 25Live Pro driver PPT-106 (#441)
grkek Apr 12, 2023
61f04fd
chore(shard.lock): bump driver version
stakach Apr 14, 2023
14dfddd
fix(place/desk_bookings_locations): filter on location type
stakach Apr 14, 2023
9074094
chore(placeos/booking_checkin_helper): clearer func names for auto ca…
w-le Apr 14, 2023
39ca011
fix(floorsense/desks_websocket): poll to detect dead socket
stakach Apr 18, 2023
5afc71d
feat(nec/display): fix volume and mute feedback
stakach Apr 19, 2023
5679019
chore(place/booking_checin_helper): comment only
w-le Apr 19, 2023
15518d1
feat(gobright/location_service): add support for desk bookings
stakach Apr 19, 2023
f1d5cb4
chore(shard.lock): bump versions
stakach Apr 20, 2023
d3ad553
Bump items per page from 10 to 100 for 25 Live Pro API (#443)
grkek Apr 21, 2023
ea9b5d9
Finish Delta driver (#444)
grkek Apr 21, 2023
4e45d60
feat: add zencontrol classic tpi
stakach Apr 26, 2023
341c311
feat: add zencontrol using advanced TPI
stakach Apr 26, 2023
3fcdc5f
chore(shard.lock): bump versions
stakach May 1, 2023
95890fb
feat(place/bookings): custom config for exposing data
stakach May 2, 2023
6895639
feat(desk_bookings_locations): can add custom keys
stakach May 2, 2023
0827e7c
chore(place\bookings): fix code comment
stakach May 2, 2023
bf3ccc4
fix(lenel): may not have an email
stakach May 2, 2023
e5b53ba
fix(leviton): add SUCCESS to body of responses (#445)
camreeves May 8, 2023
c8b22ee
fix(amber_tech): can return a N/A state value
stakach May 9, 2023
b7c456f
chore(shard.lock): bump deps
stakach May 9, 2023
cfe3c6a
Add the switcher
grkek May 9, 2023
aa1487c
Update Kramer, add switchable interface
grkek May 30, 2023
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"
42 changes: 42 additions & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
name: Build and Publish Drivers
on:
push:
branches: [master]

env:
CRYSTAL_VERSION: 1.4.1

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

# 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 }}
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 }}
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@v3
- 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:
- 1.3.2
- 1.4.1
include:
- stable: false
crystal: nightly
steps:
- id: changes
uses: trilom/file-changes-action@v1.2.4
with:
output: ' '
- uses: actions/checkout@v3
- 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 }}
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:
- 1.3.2
- 1.4.1
include:
- stable: false
crystal: nightly
steps:
- uses: actions/checkout@v3

- 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 }}
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
14 changes: 11 additions & 3 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,6 +1,14 @@
doc
lib
*.dwarf
*.rdb
.DS_Store
.crystal
.shards
app
*.dwarf
bin
doc
docs
binaries
lib
.logs
repositories/*
src
File renamed without changes.
1 change: 0 additions & 1 deletion .travis.yml

This file was deleted.

16 changes: 16 additions & 0 deletions .vscode/launch.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
{
"version": "0.2.0",
"configurations": [
{
"name": "Debug",
"type": "gdb",
"request": "launch",
"target": "./bin/test-harness",
"cwd": "${workspaceRoot}",
"preLaunchTask": "Compile",
"setupCommands": [
{ "text": "-gdb-set follow-fork-mode child" }
]
}
]
}
Loading