Skip to content

Instantly share code, notes, and snippets.

View costa's full-sized avatar

Costa Shapiro costa

View GitHub Profile
@costa
costa / git_helper.rb
Created July 18, 2024 05:03
Git-based "report-skip-retry" RSpec helper for detailing code version releases and more efficient testing -- just `require` it in your spec_helper.rb
require 'git'
module GitHelper
class << self
attr_accessor :logger
attr_accessor :git_logger
def record!(example, result, time:)
@costa
costa / manual_helper.rb
Created July 18, 2024 04:49
Manual (e.g. human-terminal-based) RSpec helper; requires https://github.com/JEG2/highline/issues/273 -- just `require` it in your spec_helper.rb
module ManualHelper
MANUAL_OPERATOR_PRESENT =
ENV['MANUAL_OPERATOR_PRESENT'].to_s !~ /^(0|no?|f(alse)?)?$/i
HighLine.add_to_color_scheme(
manual: [:yellow, :on_black],
explain: [:grey],
demand: [:bold, :white],
prompt: [:green]
@costa
costa / integ_spec.rb
Created June 29, 2024 14:51
drv/icloud's formal specification (with RSpec, excerpt) -- a part of self server system
# ...definitions...
describe "REST API" do
# ...
context "when authenticated, with a sample video" do
# ...setup...
describe 'PUT /media/YYYY/MM/DD/IMG_NNNN.MOV' do
it "downloads media (a video) if it doesn't exist" do
expect(File.exist? video_path).not_to be
rest_put({}, "media/#{@media_path}")
expect_in_time 30 do # NOTE the file just started to download
@costa
costa / integ_spec.rb
Created June 29, 2024 14:23
vlog-youtuber's formal specification (with RSpec, excerpt)
# ...definitions...
describe "Automated publishing" do
# ...setup...
it "should happen whenever .pub.video is comitted to 'log' git repo" do
expect((channel_ids = api_get).length).to eq 1
expect(youtube_channel_url = api_get(channel_ids[0])[:pub_url].to_s).not_to be_empty
Dir.chdir LOG_PROJ_DIR do
sample_pub_video_path = File.join(TODAY_DATE_PATH, 'chang-wash-fun.pub.video')
sample_pub_ffmprb_path = File.join(TODAY_DATE_PATH, 'chang-wash-fun.pub.ffmprb')
sample_pub_video_text =
@costa
costa / integ_spec.rb
Created June 29, 2024 12:39
icloud-vlogger's formal specification (with RSpec, excerpt)
# ...definitions...
describe "Automated vlogging" do
# ...setup...
it "should happen whenever iCloud has a new *relevant* video" do
Dir.chdir LOG_PROJ_DIR do
before_dir = Dir.children(TODAY_DATE_DIR) rescue []
expect(expected_pub_url = ask("Enter the (\"channel\") URL for publishing")).not_to be_empty
puts RQRCode::QRCode.new(expected_pub_url).as_ansi
expect(ask "Now, shoot your best (very short, please) video with your (stock) iSome device:\n" +
"at the end of the video, point and focus its camera on the QR above (publishing URL).\n" +
@costa
costa / Dockerfile
Created June 22, 2024 13:16
Shim component for NATS Streaming (XpoLog input)
FROM python:3.9
WORKDIR /stan-xpolog
ADD requirements.txt .
RUN pip install -r requirements.txt
ADD . .
ENV PORT=80
@costa
costa / docker-compose.yml
Created June 15, 2024 18:42
primitively deploying containerized XpoLog: https://www.xplg.com/log-management
version: '2.1'
services:
xpolog:
build: .
@costa
costa / Dockerfile
Created June 15, 2024 18:32
primitively containerizing XpoLog: https://www.xplg.com/log-management
FROM debian:bookworm
RUN apt update && apt install -y curl
WORKDIR /tmp
RUN curl -O "https://xdn.xplg.com/downloads/xpolog/GA/linux/XpoLogCenterSetup-64.bin.gz" && gunzip XpoLogCenterSetup-64.bin.gz && chmod a+x XpoLogCenterSetup-64.bin
RUN yes '' | ./XpoLogCenterSetup-64.bin
WORKDIR /root
EXPOSE 30303
@costa
costa / integ_specs.rb
Last active March 11, 2024 13:05
The principal excerpts of the "Lively Video Reporting" system core comps' integ specs
describe "Automated publishing" do # NOTE incl. drv/youtube integration
# ...setup...
it "should happen whenever .pub.video is comitted to 'log' git repo" do
Dir.chdir log_repo_work_dir do
sample_pub_video_path = File.join(today_date_path, 'just-testing.pub.video')
sample_pub_video_text = # NOTE straight outta ../README.md
<<EOF
Chang Wash Fun, winter 2022, Chiang Mai, Thailand
src:
# NOTE re: deployment
# - with self server (running on any VM from any provider):
# $ @@ dev docker-compose up --remove-orphans
# and then:
# $ @@ ^dev # will securely tunnel WUI (:3000) to http://localhost:16623
# - with docker-compose configured otherwise:
# # well, you must know how to run this in your environment then, see below
version: '2.1'
services:
chat: