Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
1764 commits
Select commit Hold shift + click to select a range
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
d3ec623
feat(cisco/dna_spaces): skip validation as JWT is not signed correctly
stakach May 15, 2023
696b2e0
chore(shard.lock): bump versions
stakach May 16, 2023
95ab60c
feat: add docs workflow
stakach May 16, 2023
2934a25
chore(README): update documentation links
stakach May 17, 2023
c8f3048
fix(meet): project screen control in joining modes
stakach May 25, 2023
7ae561a
fix(esc_vp21): ensure power target not cleared early
stakach May 25, 2023
12e14a3
fix(esc_vp21): ignore nil values on power_target
stakach May 25, 2023
9183cdb
fix(esc_vp21): improve power state tracking
stakach May 25, 2023
f5c382f
fix(esc_vp21): separate power state from power status
stakach May 25, 2023
74ed1eb
fix(esc_vp21): refactor power state checking
stakach May 25, 2023
25c6166
fix(esc_vp21): fix compiling
stakach May 25, 2023
a546973
fix(esc_vp21): change some priorities and expose state
stakach May 25, 2023
a473e6b
fix(esc_vp21): use power_actual to store state
stakach May 25, 2023
4b32276
feat(bookings): add support for resource subscriptions (#447)
stakach May 29, 2023
fa5a9fc
fix(calendar_common): compilation issues
stakach May 29, 2023
9508adf
fix(place/bookings): graph API subscriptions max expiry
stakach May 30, 2023
16057e0
fix(gobright/location_service): fix case where booking has no owner
stakach May 30, 2023
d232084
chore(shard.lock): bump calendar
stakach May 30, 2023
3b28399
chore(shard.lock): bump calendar
stakach May 30, 2023
275883f
fix(gobright/api): include organizer and attendees
stakach Jun 1, 2023
002c9c4
fix(gobright/location_service): bookings map_id exposed properly
stakach Jun 1, 2023
ca6ccf4
chore(shard.lock): bump place calendar
stakach Jun 6, 2023
46699bb
feat(place/calendar_common): add support for ical_uid filtering
stakach Jun 8, 2023
c65ec99
feat(place/calendar_common): add get_event helper method
stakach Jun 8, 2023
cbce0bc
Update the functionality with additional endpoints (#449)
grkek Jun 26, 2023
f8fd3d7
Feat/25 live pro/space id body param (#450)
MarioFavalliR Jun 26, 2023
7d82c2b
feat(approval): event/booking approval driver PPT-518 (#448)
chillfox Jun 26, 2023
aad98d0
Feat/25live/space reservations endpoint (#452)
MarioFavalliR Jul 3, 2023
3d6f7c8
feat(bookings): improve memory usage
stakach Jul 4, 2023
50b8aa2
chore(shard.lock): bump deps
stakach Jul 4, 2023
57896e9
fix(booking_approval): #approve_event (#454)
chillfox Jul 5, 2023
a4d1943
chore(place\bookings): additional debug logs for notify events
stakach Jul 5, 2023
c4f2d6d
chore(place\bookings): debug logs for notify events
stakach Jul 5, 2023
02cf663
fix(place\bookings): notify events can be batched
stakach Jul 5, 2023
126e31d
fix(place\bookings): sync changes to notification settings
stakach Jul 5, 2023
88fa1f0
feat(place/bookings): distribute polling more effectively
stakach Jul 5, 2023
79355aa
fix(kontakt_io): sensors might not have a location
stakach Jul 6, 2023
d782bc7
feat(place/bookings): use new notifications channels
stakach Jul 7, 2023
200e78f
fix(bookings): improve subscription management
stakach Jul 7, 2023
d31a673
chore(bookings): remove staff api change notification hook
stakach Jul 12, 2023
3029a91
fix(area_management): add support for 3rd party desk bookings
stakach Jul 12, 2023
efc4fda
fix(area_management): ignore bookings that don't have a map_id set
stakach Jul 13, 2023
312748b
chore(desks_websocket): debug output for response parsing failures
stakach Jul 17, 2023
8c11a23
fix(models): booking status doesn't always return the key data
stakach Jul 17, 2023
2bf6b41
fix(desks_websocket): don't disconnect on failed WS command
stakach Jul 17, 2023
ba384b9
feat(lenel/openaccess): add lookup_cardholderS : [] (#456)
w-le Jul 17, 2023
8b85aec
feat(place/bookings): remove redundant setting
stakach Jul 17, 2023
8b49dc3
fix(place\bookings): ensure we ignore invalid secrets
stakach Jul 17, 2023
8696c78
fix: invalid accessor use leading to compilation errors
stakach Jul 19, 2023
ff0dbcb
fix(place/bookings): prevent overlapping ad-hoc bookings
stakach Jul 24, 2023
cefe8b3
fix(place/bookings): cannot decline an active meeting
stakach Jul 24, 2023
2dd3898
chore(shard.lock): bump calendar version
stakach Jul 24, 2023
679ecd4
fix(place/bookings): book_now in_use check
stakach Jul 24, 2023
babf6df
fix(cisco/dna_spaces): yaml type confusion parsing tenant_id
stakach Jul 25, 2023
687166e
fix(place/bookings): prevent potential type confusion in YAML settings
stakach Jul 25, 2023
f294e36
fix(place/bookings): prevent type confusion in YAML settings
stakach Jul 25, 2023
0dc45b9
fix(place/booking): prevent type confusion errors
stakach Jul 25, 2023
3f5c1d0
chore(demo/display): add a test helper
stakach Jul 26, 2023
d521085
chore(shard.lock): bump driver
stakach Jul 26, 2023
8b975b7
chore(shard.lock): revert driver change
stakach Jul 26, 2023
7651063
fix(place/bookings): radically reduce subscription lifetime
stakach Jul 31, 2023
58f613f
fix(place/bookings): rate limit forced subscription renewal
stakach Jul 31, 2023
465b38f
fix(gobright): add other pagination methods
stakach Aug 1, 2023
57b685e
fix(gobright): paging count should be optional
stakach Aug 1, 2023
89205f3
fix(releezme/api): auth domain is a setting not hardcoded (#457)
w-le Aug 3, 2023
f85c5cb
feat(vecos\releezme_locations): add name to id mappings
stakach Aug 3, 2023
45c888e
feat(place/staff-api): implement bookings query pagination
stakach Aug 13, 2023
01c05f3
chore(vecos/releezme): fix format
stakach Aug 13, 2023
0144fa1
feat(place/bookings): add owner to booking in app permissions
stakach Aug 14, 2023
56a654e
fix(staff_api): prevent possible infinite loop
stakach Aug 18, 2023
5fad3b0
fix(staff-api): stop fetching bookings if more than 10k returned
stakach Aug 18, 2023
b30412e
feat(staff-api): fail fast if misconfigured
stakach Aug 18, 2023
1a1c94d
fix(gallagher): short name is limited to 16 chars
stakach Aug 20, 2023
7134e46
feat(booking_approver): improve logging and add fallback
stakach Aug 22, 2023
ffe9fab
feat(user_group_mappings): added a sync all users
stakach Aug 22, 2023
584eb00
feat(user_group_mappings): return a list of users that could not be m…
stakach Aug 22, 2023
14ed4a7
fix(user_group_mappings): filter users by authority
stakach Aug 22, 2023
ce65117
fix(booking_approver): query should pass unix time
stakach Aug 22, 2023
959c3de
feat(smtp): add support for reply-to header
stakach Aug 23, 2023
88ba572
fix(booking_approver): simplify filters so updates are not skipped
stakach Aug 23, 2023
c63dfbd
fix(booking-approval): check for bookings in the next 8 weeks
stakach Aug 24, 2023
de45f6b
fix(booking_approver): ensure we don't have an update loop
stakach Aug 24, 2023
dde4c75
fix(booking_aprover): ignore cancelled bookings
stakach Aug 24, 2023
f2f99a4
fix(survey_mailer): make sent nilable (#458)
chillfox Aug 25, 2023
f710ad7
fix(gobright): apply desk mappings when locating users
stakach Aug 29, 2023
f3a39fa
feat(bookings): add a min and max ad-hoc duration
stakach Sep 4, 2023
6274f0a
feat(meraki/mqtt): add line crossing counts
stakach Sep 4, 2023
ee3bb20
feat(meraki/mqtt): reset line counts once a day
stakach Sep 4, 2023
129508c
feat(globalcache): Add projector screen logic driver (#459)
w-le Sep 6, 2023
e6bf6b4
feat: add enable_end_meeting_button status
stakach Sep 18, 2023
98caf3e
feat(visitor_mailer): don't email staff as guests
stakach Sep 22, 2023
35a767d
fix(visitor_mailer): downcase guest email
stakach Sep 22, 2023
71f2ba2
fix(placeos/visitor-mailer): determine host name with calendar driver…
w-le Sep 22, 2023
ab9a5ae
feat(placeos/room-events): add list_users func (#461)
w-le Sep 22, 2023
0230e9c
fix(mulesoft): change default ssl settings (#342)
chillfox Sep 22, 2023
c7de061
fix(gallagher): don't fail if doors endpoint unavaialble
stakach Sep 23, 2023
b9d10ff
feat(bookings): add an last_event_notification hook
stakach Sep 26, 2023
78872aa
feat(place/bookings): prevent millisecond unix times
stakach Sep 29, 2023
e73ea45
feat(bookings): allow early check-in
stakach Oct 2, 2023
4466fc0
fix(johnson control) send command headers (#455)
MarioFavalliR Oct 3, 2023
14a6cba
feat(microsoft/graph): new driver for direct ms graph api calls (#410)
w-le Oct 3, 2023
f3449d5
Add Customer endpoint to the Stripe API (#364)
grkek Oct 3, 2023
6f32611
chore: crystal tool format and shards update
stakach Oct 3, 2023
0d9cf5d
feat(keycloak): add keycloak rest api
stakach Oct 3, 2023
86f5017
feat(keycloak): work with passed in token
stakach Oct 4, 2023
9a21320
fix(bookings): ensure we're monitoring the correct sub id [PPT-871]
stakach Oct 6, 2023
fbe6bb6
feat(floorsense): improve error response
stakach Oct 12, 2023
53ed30e
chore(shard.lock): driver version
stakach Oct 12, 2023
def9588
feat(place/llm): implement LLM driver interaction framework
stakach Oct 13, 2023
d3ac196
feat: add example LLM chat capability
stakach Oct 13, 2023
28921a9
fix(place/llm): migrate specs to updated interface
stakach Oct 13, 2023
3474f42
feat(place/llm): expose new_chat via bindings
stakach Oct 17, 2023
b680fba
feat(place/llm): update to LLM interface
stakach Oct 18, 2023
4a53733
feat(place/llm): use status instead of function calls
stakach Oct 18, 2023
9c8ab27
feat(llm/schedule): initial work on user schedules
stakach Oct 18, 2023
c481f43
feat(llm/schedule): add some debugging
stakach Oct 18, 2023
06cc420
feat(llm/schedule): add common calendaring tasks
stakach Oct 19, 2023
5ae08e1
fix(llm/schedule): ensure starting and ending times are set
stakach Oct 19, 2023
d5bd9b1
fix(llm/schedule): ensure starting and ending times are set
stakach Oct 19, 2023
abf2015
chore(llm/schedule): provide debugging
stakach Oct 19, 2023
198386c
chore(llm/schedule): improve debugging
stakach Oct 19, 2023
46846b4
fix(llm/schedule): attempt to resolve event creation
stakach Oct 19, 2023
171880e
fix(llm/schedule): attempt to resolve event creation
stakach Oct 19, 2023
dff1eb9
fix(llm/schedule): allow conference type to be nil
stakach Oct 19, 2023
40353e3
chore(llm/schedule): simplify schedules
stakach Oct 19, 2023
a7ea776
feat(llm/schedule): restructure schedules
stakach Oct 19, 2023
5c953f6
feat(llm/schedule): tweak event creation
stakach Oct 19, 2023
10042bf
fix(llm/schedule): ensure timezone set on start and end times
stakach Oct 19, 2023
cd89fed
fix(llm/schedule): ensure timezone on start and end times
stakach Oct 19, 2023
016e8e4
fix(llm/schedule): updating a meeting to be all day
stakach Oct 19, 2023
c712fda
feat(llm/schedule): add directory lookup for staff members
stakach Oct 19, 2023
e544ae4
fix(llm/schedule): clarify date formats
stakach Oct 19, 2023
3479389
feat(gobright/api): add GET spaces/state request (#465)
w-le Oct 20, 2023
8743bb1
feat(setup_breakdown): add event setup/breakdown driver (#464)
chillfox Oct 23, 2023
f395908
fix(EventSetupBreakdownTime): class name (#466)
chillfox Oct 23, 2023
1043c30
feat(delta/api): add debug
grkek Oct 23, 2023
9e4bd40
fix(delta/api): auth header
grkek Oct 23, 2023
0967072
feat(delta/api): more debug
w-le Oct 23, 2023
353fcf5
chore(delta/api): Accept header
grkek Oct 23, 2023
8736c28
chore(shard.lock): bump driver dep
stakach Oct 23, 2023
e45278d
chore(delta/api): update request path
stakach Oct 23, 2023
c8140b7
Revert "chore(delta/api): update request path"
stakach Oct 23, 2023
55b4e04
feat(shard.lock): bump driver version
stakach Oct 23, 2023
bd7c161
feat(event_setup_breakdown): add event ids to setup/breakdown event b…
chillfox Oct 24, 2023
374bcad
refactor(setup_breakdown_time): change how metadata is updated (#471)
chillfox Oct 25, 2023
f3a5277
refactor(setup_breakdown_time): change how canclled events work (#472)
chillfox Oct 25, 2023
b327182
refactor(setup_breakdown_time): remove setup/breakdown events when ti…
chillfox Oct 25, 2023
c2ff885
'refactor(setup_breakdown_time): use the calendar driver instead of t…
chillfox Oct 25, 2023
e54ae29
refactor(setup_breakdown_time): change event start/end time type (#475)
chillfox Oct 25, 2023
cc9042d
refactor(setup_breakdown_time): change calendar_id (#476)
chillfox Oct 25, 2023
e97d5f4
refactor(setup_breakdown_time): change calendar_id (#477)
chillfox Oct 25, 2023
fb8a30d
feat(visitor_mailer): add template for guest checkin [PPT-985]
stakach Oct 25, 2023
9a2c1da
feat(staff-api): make booking type optional in query_bookings
stakach Oct 25, 2023
e03335e
fix(calendar): update office365 library
stakach Oct 26, 2023
4750318
fix(event_setup_breakdown_time): add attendees to setup/breakdown eve…
chillfox Oct 26, 2023
1936863
fix(event_setup_breakdown_time): skip when no changes (#479)
chillfox Oct 26, 2023
f8e5bc9
chore(event_setup_breakdown_time): capture errors in signal handler
stakach Oct 26, 2023
67721d4
fix(event_setup_breakdown_time): skip when no changes (#480)
chillfox Oct 26, 2023
34dd8f0
fix(shard.lock): bump driver version
stakach Oct 26, 2023
3eb9488
chore(place/meet): fix spec
stakach Oct 26, 2023
25f4833
feat(place/bookings): auto check-in book now
stakach Oct 31, 2023
bf141f4
chore(place/visitor_mailer): crystal tool format
stakach Oct 31, 2023
ec7309b
fix(delta): PROJ-428 Convert ValueProperty class fields from mandator…
grkek Oct 31, 2023
c6d8cd3
fix(delta): PROJ-428 Add missing fields to Delta ValueProperty (#482)
grkek Oct 31, 2023
d97941d
feat(place/llm): add workplace helper
stakach Oct 31, 2023
750d45b
fix(llm/workplace): my bookings
stakach Nov 1, 2023
dd8ac78
fix(llm/workplace): my bookings param type
stakach Nov 1, 2023
fc87101
fix(llm/workplace): add debugging and add additional checks
stakach Nov 1, 2023
ada61d0
fix(llm/workplace): improve capability prompt
stakach Nov 1, 2023
43d20f5
fix(llm/workplace): debug metadata response
stakach Nov 1, 2023
29b20b2
feat(llm/workplace): ensure desk exists for booking
stakach Nov 1, 2023
c2564c6
fix(llm/workplace): ensure level exists for booking
stakach Nov 1, 2023
075fad5
fix(llm/workplace): levels function was not exposed
stakach Nov 1, 2023
f27ede2
fix(llm/workplace): ensure desks are returned properly
stakach Nov 1, 2023
28c94f7
fix(llm): reduce the token count
stakach Nov 1, 2023
21840c9
fix(llm/workplace): properly sample the desks
stakach Nov 1, 2023
0fa40e0
fix(llm/workplace): features to be downcased
stakach Nov 1, 2023
6aeeda8
chore(deps): bump actions/checkout from 3 to 4 (#460)
dependabot[bot] Nov 3, 2023
d272a10
feat: Cloud build service integration related updated to build.yml (#…
naqvis Nov 3, 2023
bdc6a72
fix(visitor_mailer): send checked in to host
stakach Nov 9, 2023
0ba4f87
feat(bookings): notify on end_meeting
stakach Nov 9, 2023
b63b220
fix(visitor_mailer): add option to disable event visitors emails
stakach Nov 13, 2023
da120b6
fix(cisco/dnaspaces): timestamp where no position is provided
stakach Nov 21, 2023
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
ef335eb
chore(deps): bump actions/upload-artifact from 3 to 4
dependabot[bot] Dec 18, 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"
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 }}

134 changes: 134 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,134 @@
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 }}
CRYSTAL_VERSION: ${{ matrix.crystal }}
- name: Upload failure logs
if: ${{ failure() }}
uses: actions/upload-artifact@v4
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 }}
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@v4
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