Skip to content

Instantly share code, notes, and snippets.

Yoav Lavi yoav-lavi

Block or report user

Report or block yoav-lavi

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
@yoav-lavi
yoav-lavi / store.test.js
Created Oct 15, 2019
Tests for store.js
View store.test.js
const createStore = importModule('store');
const { describe } = importModule('test');
const store = createStore('store-test');
await describe('Store', async test => {
const key = 'key';
const value = 'value';
await test('Saves and retrieves a value', async () => {
store.set(key, value);
@yoav-lavi
yoav-lavi / store.js
Last active Oct 13, 2019
A key value store for Scriptable
View store.js
module.exports = storeName => {
const files = FileManager.iCloud();
const documents = files.documentsDirectory();
const stores = `${documents}/stores`;
const store = `${stores}/${storeName}`;
if (!files.isDirectory(stores)) {
files.createDirectory(stores);
}
@yoav-lavi
yoav-lavi / test.js
Created Oct 13, 2019
Scriptable describe + test
View test.js
exports.describe = async (name, callback) => {
const output = [];
const test = async (name, callback) => {
const testStartTime = Date.now();
const testResult = await callback();
const testTime =
Date.now() - testStartTime;
output.push(
`${name} (${testTime}ms): ${
testResult ? '' : ''
View require.js
// Variables used by Scriptable.
// These must be at the very top of the file. Do not edit.
// icon-color: green; icon-glyph: file-code;
const getModule = importModule("getModule");
const documentDirectory = FileManager.iCloud().documentsDirectory();
module.exports = async ({ moduleName, url, forceDownload = false }) => {
if (moduleExists(moduleName) && !forceDownload) {
return importModule(moduleName);
View getString.js
// Variables used by Scriptable.
// These must be at the very top of the file. Do not edit.
// icon-color: green; icon-glyph: file-code;
module.exports = async ({ url, headers = {} }) => {
const request = new Request(url);
request.method = methods.get;
request.headers = {
...headers
};
return await request.loadString();
View getModule.js
// Variables used by Scriptable.
// These must be at the very top of the file. Do not edit.
// icon-color: green; icon-glyph: file-code;
const getString = importModule('getString');
const documentDirectory = FileManager.iCloud().documentsDirectory();
const header = `// Variables used by Scriptable.
// These must be at the very top of the file. Do not edit.
// icon-color: deep-gray; icon-glyph: file-code;`;
@yoav-lavi
yoav-lavi / requests.js
Created Apr 20, 2019
request module for Scriptable
View requests.js
// Variables used by Scriptable.
// These must be at the very top of the file. Do not edit.
// icon-color: green; icon-glyph: file-code;
module.exports = {
post: async ({ url, body, headers = {} }) => {
const request = new Request(url);
request.body = JSON.stringify(body);
request.method = methods.post;
request.headers = {
...defaultHeaders,
@yoav-lavi
yoav-lavi / Load.ps1
Created Apr 30, 2018
A spinner for PowerShell
View Load.ps1
function Load {
param([scriptblock]$function,
[string]$Label)
$job = Start-Job -ScriptBlock $function
$symbols = @("⣾⣿", "⣽⣿", "⣻⣿", "⢿⣿", "⡿⣿", "⣟⣿", "⣯⣿", "⣷⣿",
"⣿⣾", "⣿⣽", "⣿⣻", "⣿⢿", "⣿⡿", "⣿⣟", "⣿⣯", "⣿⣷")
$i = 0;
while ($job.State -eq "Running") {
$symbol = $symbols[$i]
@yoav-lavi
yoav-lavi / Elevate.ps1
Created Apr 30, 2018
Elevation function for PowerShell scripts
View Elevate.ps1
function Elevate {
Param ($Path)
if (-Not ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] 'Administrator') `
-And [int](Get-CimInstance -Class Win32_OperatingSystem | Select-Object -ExpandProperty BuildNumber) -ge 6000)
{
$CommandLine = "-File `"$Path`""
Start-Process -FilePath PowerShell.exe -Verb Runas -ArgumentList $CommandLine
Exit
}
}
@yoav-lavi
yoav-lavi / Remote Debugger (System).bat
Last active Dec 20, 2018
Run VS2017 remote debugger as the system session, even if no prerequisites are installed
View Remote Debugger (System).bat
@echo off
:: BatchGotAdmin
:-------------------------------------
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
if '%errorlevel%' NEQ '0' (
echo Requesting administrative privileges...
goto UACPrompt
) else ( goto gotAdmin )
:UACPrompt
echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
You can’t perform that action at this time.