From f0b5385dd1bfbd5e8b21bd5eefddde7ab622d990 Mon Sep 17 00:00:00 2001 From: Julius de Bruijn Date: Fri, 4 Feb 2022 16:27:51 +0100 Subject: [PATCH] Publish scripts --- .gitignore | 2 +- Cargo.lock | 136 ++++++++++++++++++++++++++++++++++++++++++++ Cargo.toml | 5 +- flake.lock | 67 ++++++++++++++++++++++ flake.nix | 91 +++++++++++++++++++++++++++++ package.json | 16 ++++++ rust-toolchain.toml | 5 ++ src/ado.rs | 1 + src/jdbc.rs | 1 + src/utils.rs | 6 +- 10 files changed, 325 insertions(+), 5 deletions(-) create mode 100644 Cargo.lock create mode 100644 flake.lock create mode 100644 flake.nix create mode 100644 package.json create mode 100644 rust-toolchain.toml diff --git a/.gitignore b/.gitignore index b75a144..a85db23 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,4 @@ target/ tmp/ -Cargo.lock .DS_Store +result diff --git a/Cargo.lock b/Cargo.lock new file mode 100644 index 0000000..2975071 --- /dev/null +++ b/Cargo.lock @@ -0,0 +1,136 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "bumpalo" +version = "3.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4a45a46ab1f2412e53d3a0ade76ffad2025804294569aae387231a0cd6e0899" + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "connection-string" +version = "0.1.14" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "js-sys" +version = "0.3.56" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a38fc24e30fd564ce974c02bf1d337caddff65be6cc4735a1f7eab22a7440f04" +dependencies = [ + "wasm-bindgen", +] + +[[package]] +name = "lazy_static" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" + +[[package]] +name = "log" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51b9bbe6c47d51fc3e1a9b945965946b4c44142ab8792c50835a980d362c2710" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "proc-macro2" +version = "1.0.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7342d5883fbccae1cc37a2353b09c87c9b0f3afd73f5fb9bba687a1f733b029" +dependencies = [ + "unicode-xid", +] + +[[package]] +name = "quote" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "864d3e96a899863136fc6e99f3d7cae289dafe43bf2c5ac19b70df7210c0a145" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "syn" +version = "1.0.86" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a65b3f4ffa0092e9887669db0eae07941f023991ab58ea44da8fe8e2d511c6b" +dependencies = [ + "proc-macro2", + "quote", + "unicode-xid", +] + +[[package]] +name = "unicode-xid" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3" + +[[package]] +name = "wasm-bindgen" +version = "0.2.79" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25f1af7423d8588a3d840681122e72e6a24ddbcb3f0ec385cac0d12d24256c06" +dependencies = [ + "cfg-if", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.79" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b21c0df030f5a177f3cba22e9bc4322695ec43e7257d865302900290bcdedca" +dependencies = [ + "bumpalo", + "lazy_static", + "log", + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.79" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f4203d69e40a52ee523b2529a773d5ffc1dc0071801c87b3d270b471b80ed01" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.79" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa8a30d46208db204854cadbb5d4baf5fcf8071ba5bf48190c3e59937962ebc" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.79" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d958d035c4438e28c70e4321a2911302f10135ce78a9c7834c0cab4123d06a2" diff --git a/Cargo.toml b/Cargo.toml index 8cc097c..18d6ee3 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -19,10 +19,13 @@ authors = [ wasm-opt = ["-Oz", "--enable-mutable-globals"] [target.'cfg(target_arch = "wasm32")'.dependencies] -wasm-bindgen = "0.2" +wasm-bindgen = "=0.2.79" js-sys = "0.3.56" [dev-dependencies] [lib] crate-type = ["cdylib", "lib"] + +[profile.release] +lto = true diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..0006f81 --- /dev/null +++ b/flake.lock @@ -0,0 +1,67 @@ +{ + "nodes": { + "flake-utils": { + "locked": { + "lastModified": 1642700792, + "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "846b2ae0fc4cc943637d3d1def4454213e203cba", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1643805626, + "narHash": "sha256-AXLDVMG+UaAGsGSpOtQHPIKB+IZ0KSd9WS77aanGzgc=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "554d2d8aa25b6e583575459c297ec23750adb6cb", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "flake-utils": "flake-utils", + "nixpkgs": "nixpkgs", + "rust-overlay": "rust-overlay" + } + }, + "rust-overlay": { + "inputs": { + "flake-utils": [ + "flake-utils" + ], + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1643941258, + "narHash": "sha256-uHyEuICSu8qQp6adPTqV33ajiwoF0sCh+Iazaz5r7fo=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "674156c4c2f46dd6a6846466cb8f9fee84c211ca", + "type": "github" + }, + "original": { + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..9b9f32f --- /dev/null +++ b/flake.nix @@ -0,0 +1,91 @@ +{ + description = "ADO.net and JDBC Connection String Parser."; + + inputs = { + flake-utils.url = "github:numtide/flake-utils"; + nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; + rust-overlay = { + url = "github:oxalica/rust-overlay"; + inputs.nixpkgs.follows = "nixpkgs"; + inputs.flake-utils.follows = "flake-utils"; + }; + }; + + outputs = { self, nixpkgs, flake-utils, rust-overlay }: + flake-utils.lib.eachDefaultSystem (system: let + overlays = [ (import rust-overlay) ]; + pkgs = import nixpkgs { inherit system overlays; }; + rust = pkgs.rust-bin.fromRustupToolchainFile ./rust-toolchain.toml; + inherit (pkgs) wasm-bindgen-cli rustPlatform nodejs; + in { + defaultPackage = rustPlatform.buildRustPackage { + name = "connection-string"; + src = builtins.path { path = ./.; name = "connection-string"; }; + + cargoLock = { + lockFile = ./Cargo.lock; + }; + + nativeBuildInputs = [ rust wasm-bindgen-cli nodejs ]; + + buildPhase = '' + RUST_BACKTRACE=1 + cargo build --release --target=wasm32-unknown-unknown + echo 'Creating out dir...' + mkdir -p $out/src; + echo 'Copying package.json...' + cp ./package.json $out/; + echo 'Copying README.md...' + cp README.md $out/; + echo 'Generating node module...' + wasm-bindgen \ + --target nodejs \ + --out-dir $out/src \ + target/wasm32-unknown-unknown/release/connection_string.wasm; + ''; + checkPhase = "echo 'Check phase: skipped'"; + installPhase = "echo 'Install phase: skipped'"; + }; + + packages = { + cargo = { + type = "app"; + program = "${rust}/bin/cargo"; + }; + + # Takes the new package version as first and only argument, and updates package.json + updatePackageVersion = pkgs.writeShellScriptBin "updateNpmPackageVersion" '' + ${pkgs.jq}/bin/jq ".version = \"$1\"" package.json > /tmp/package.json + rm package.json + cp /tmp/package.json package.json + sed -i "s/^version\ =.*$/version = \"$1\"/" Cargo.toml + ''; + publishRust = pkgs.writeShellScriptBin "publishRust" '' + ${rust}/bin/cargo publish + ''; + publishJavascript = pkgs.writeShellScriptBin "publishRust" '' + ${nodejs}/bin/npm publish ./result --access public --tag latest + ''; + npm = { + type = "app"; + program = "${nodejs}/bin/npm"; + }; + wasm-bindgen = { + type = "app"; + program = "${wasm-bindgen-cli}/bin/wasm-bindgen"; + }; + syncWasmBindgenVersions = pkgs.writeShellScriptBin "updateWasmBindgenVersion" '' + echo 'Syncing wasm-bindgen version in crate with that of the installed CLI...' + sed -i "s/^wasm-bindgen\ =.*$/wasm-bindgen = \"=${wasm-bindgen-cli.version}\"/" Cargo.toml + ''; + }; + devShell = pkgs.mkShell { + nativeBuildInputs = [ pkgs.bashInteractive ]; + buildInputs = with pkgs; [ + nodePackages.prisma + nodePackages.npm + nodejs-slim + ]; + }; + }); +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..91dff5a --- /dev/null +++ b/package.json @@ -0,0 +1,16 @@ +{ + "name": "@pimeys/connection-string", + "version": "0.1.14", + "description": "A parser for ADO.net and JDBC connection strings", + "main": "src/connection_string.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": { + "type": "git", + "url": "https://github.com/prisma/connection-string" + }, + "author": "Prisma", + "license": "MIT OR Apache-2.0", + "homepage": "https://github.com/prisma/connection-string" +} diff --git a/rust-toolchain.toml b/rust-toolchain.toml new file mode 100644 index 0000000..e58edcb --- /dev/null +++ b/rust-toolchain.toml @@ -0,0 +1,5 @@ +[toolchain] +channel = "stable" +components = [] +targets = [ "wasm32-unknown-unknown" ] +profile = "default" diff --git a/src/ado.rs b/src/ado.rs index 01a167b..cb6852c 100644 --- a/src/ado.rs +++ b/src/ado.rs @@ -164,6 +164,7 @@ fn read_ident(lexer: &mut Lexer) -> crate::Result { #[derive(Debug, Clone)] struct Token { kind: TokenKind, + #[allow(dead_code)] // for future use... loc: Location, } diff --git a/src/jdbc.rs b/src/jdbc.rs index 1ffc469..11a2ae9 100644 --- a/src/jdbc.rs +++ b/src/jdbc.rs @@ -351,6 +351,7 @@ impl Location { /// A pair of `Location` and `TokenKind`. #[derive(Debug, Clone)] struct Token { + #[allow(dead_code)] // for future use... loc: Location, kind: TokenKind, } diff --git a/src/utils.rs b/src/utils.rs index 08b63b1..56001ca 100644 --- a/src/utils.rs +++ b/src/utils.rs @@ -20,14 +20,14 @@ macro_rules! ensure { #[macro_export] macro_rules! bail { ($msg:literal) => { - return Err($crate::Error::new($msg.into())); + return Err($crate::Error::new($msg.into())) }; ($msg:expr) => { - return Err($crate::Error::new($msg.into())); + return Err($crate::Error::new($msg.into())) }; ($fmt:expr, $($arg:tt)*) => { - return Err($crate::Error::new(&*format!($fmt, $($arg)*))); + return Err($crate::Error::new(&*format!($fmt, $($arg)*))) }; }