From 8f9c532d8d8a02e2581498504b2e4907e4baff4a Mon Sep 17 00:00:00 2001 From: Richard Newman Date: Fri, 6 Jan 2017 17:16:50 -0800 Subject: [PATCH 1/9] Remove old JS code; we can bring it back if we want it. --- js/.babelrc | 27 ------ js/addon/.babelrc | 6 -- js/addon/CREDITS | 3 - js/addon/build.sh | 3 - js/addon/package.json | 23 ----- js/addon/release/README.md | 2 - js/addon/release/data/datomish-48.png | Bin 1082 -> 0 bytes js/addon/release/package.json | 15 --- js/addon/release/run.sh | 1 - js/addon/src/index.js | 92 ------------------- js/addon/src/wrapper.prefix | 4 - js/addon/webpack.config.js | 21 ----- js/test/js/tests.js | 126 -------------------------- js/test/v1.db | Bin 753664 -> 0 bytes 14 files changed, 323 deletions(-) delete mode 100644 js/.babelrc delete mode 100644 js/addon/.babelrc delete mode 100644 js/addon/CREDITS delete mode 100755 js/addon/build.sh delete mode 100644 js/addon/package.json delete mode 100644 js/addon/release/README.md delete mode 100644 js/addon/release/data/datomish-48.png delete mode 100644 js/addon/release/package.json delete mode 100755 js/addon/release/run.sh delete mode 100644 js/addon/src/index.js delete mode 100644 js/addon/src/wrapper.prefix delete mode 100644 js/addon/webpack.config.js delete mode 100644 js/test/js/tests.js delete mode 100644 js/test/v1.db diff --git a/js/.babelrc b/js/.babelrc deleted file mode 100644 index d707934a..00000000 --- a/js/.babelrc +++ /dev/null @@ -1,27 +0,0 @@ -{ - "env": { - "production": { - "presets": ["react", "react-optimize"] - }, - "development": { - "presets": ["react"] - }, - "test": { - "presets": ["react"] - } - }, - "only": [ - "test/js/**" - ], - "plugins": [ - "transform-es2015-destructuring", - "transform-es2015-parameters", - "transform-es2015-modules-commonjs", - "transform-async-to-generator", - "transform-object-rest-spread", - "transform-class-properties", - "transform-runtime" - ], - "sourceMaps": "inline", - "retainLines": true -} diff --git a/js/addon/.babelrc b/js/addon/.babelrc deleted file mode 100644 index a0dc53f5..00000000 --- a/js/addon/.babelrc +++ /dev/null @@ -1,6 +0,0 @@ -{ - "presets": ["es2015"], - "plugins": [ - "transform-async-to-generator" - ] -} diff --git a/js/addon/CREDITS b/js/addon/CREDITS deleted file mode 100644 index 359a4f89..00000000 --- a/js/addon/CREDITS +++ /dev/null @@ -1,3 +0,0 @@ -Icon file is "Line Graph" by Cris Dobbins, from The Noun Project. - -https://thenounproject.com/term/line-graph/145324/ diff --git a/js/addon/build.sh b/js/addon/build.sh deleted file mode 100755 index 925bc6c3..00000000 --- a/js/addon/build.sh +++ /dev/null @@ -1,3 +0,0 @@ -cp ../target/release-browser/datomish.js release/ -node_modules/.bin/webpack -p -cat src/wrapper.prefix built/index.js > release/index.js diff --git a/js/addon/package.json b/js/addon/package.json deleted file mode 100644 index c2e4d9f0..00000000 --- a/js/addon/package.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "name": "datomish-example", - "version": "1.0.0", - "description": "A test add-on for Datomish and Firefox.", - "main": "index.js", - "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" - }, - "author": "", - "license": "MPL-2.0", - "devDependencies": { - "babel": "^6.5.2", - "babel-cli": "^6.14.0", - "babel-core": "^6.14.0", - "babel-loader": "^6.2.5", - "babel-plugin-transform-async-to-generator": "^6.8.0", - "babel-preset-es2015": "^6.14.0", - "webpack": "^1.13.2" - }, - "dependencies": { - "babel-polyfill": "^6.13.0" - } -} diff --git a/js/addon/release/README.md b/js/addon/release/README.md deleted file mode 100644 index 85643d4f..00000000 --- a/js/addon/release/README.md +++ /dev/null @@ -1,2 +0,0 @@ -#Datomish Test -An example add-on that loads Datomish on top of Sqlite.jsm. \ No newline at end of file diff --git a/js/addon/release/data/datomish-48.png b/js/addon/release/data/datomish-48.png deleted file mode 100644 index 42b9cb678787a5dd3a81dd86bebd51c225fc3447..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1082 zcmeAS@N?(olHy`uVBq!ia0vp^20*OG!2%?YTn~BNn{1`6_P!I zd>I(3)EF2VS{N990fib~Fffz?HNHwHx@oI*`2amCO38HbXa+=a^?Od zuz0ZMqN)1HO>;NZrWl>vHD~kHXHR`5s3&Tra853Ik~U4jd*a(| z+EH6x*Gx>0H)irP1Vb!|n#=IvQ50jN=s@+Ii>~!5NhimFC z!`4rJwAcFq<*v%Jq!Dt;(-iz$1ROMK*Nd#mVQIYJML|wahgLeY~_ztej>ulIvgW8r#D@5?;qnVm~!@J%mqIO_EBezdUo z8S6uzKJHpPQNO}&*VSJ}mU7<~3g0W^e7h@{eaemnr=O{4e`zh;t=l)lpQTM^Qg==@ zZ`P#ge*d;e&fguqQ%n8m-u&LB8;r{K#*2qGz?7V1?Qt zdEf=*?4!Azac&33yd<+RV=8vjpz z#$l)3Kb}TEog^V#exNoi`aR=$&CvD6k6-j`@R}Rf*wT{MzpUzaebvviWqYkfcCT=L zFS_S1SJ;N8|04gG7`AFGkO-LQ0L)9OC9V-ADTyViR>?)FK#IZ0z|c(Bz*5)1EX2^< v%EZhH#5K1vFt8E*Jr_koZhlH;S|t_@rVtG^3nKRbH86O(`njxgN@xNAGvwj5 diff --git a/js/addon/release/package.json b/js/addon/release/package.json deleted file mode 100644 index 6a190546..00000000 --- a/js/addon/release/package.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "title": "Datomish Test", - "name": "datomish-test", - "version": "0.0.1", - "description": "An example add-on that loads Datomish on top of Sqlite.jsm.", - "main": "index.js", - "author": "Richard Newman ", - "engines": { - "firefox": ">=48.0a1" - }, - "license": "MPL-2.0", - "keywords": [ - "jetpack" - ] -} diff --git a/js/addon/release/run.sh b/js/addon/release/run.sh deleted file mode 100755 index 40114394..00000000 --- a/js/addon/release/run.sh +++ /dev/null @@ -1 +0,0 @@ -jpm run -b /Applications/FirefoxNightly.app/ diff --git a/js/addon/src/index.js b/js/addon/src/index.js deleted file mode 100644 index d0cb6142..00000000 --- a/js/addon/src/index.js +++ /dev/null @@ -1,92 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - http://creativecommons.org/publicdomain/zero/1.0/ */ - -var self = require("sdk/self"); -var buttons = require('sdk/ui/button/action'); -var tabs = require('sdk/tabs'); - -var datomish = require("datomish.js"); - -var schema = { - "name": "pages", - "attributes": [ - {"name": "page/url", - "type": "string", - "cardinality": "one", - "unique": "identity", - "doc": "A page's URL."}, - {"name": "page/title", - "type": "string", - "cardinality": "one", - "fulltext": true, - "doc": "A page's title."}, - {"name": "page/content", - "type": "string", - "cardinality": "one", // Simple for now. - "fulltext": true, - "doc": "A snapshot of the page's content. Should be plain text."}, - ] -}; - -async function initDB(path) { - let db = await datomish.open(path); - await db.ensureSchema(schema); - return db; -} - -async function findURLs(db) { - let query = `[:find ?page ?url ?title :in $ :where [?page :page/url ?url][(get-else $ ?page :page/title "") ?title]]`; - let options = new Object(); - options["limit"] = 10; - return datomish.q(db.db(), query, options); -} - -async function findPagesMatching(db, string) { - let query = - `[:find ?url ?title - :in $ ?str - :where - [(fulltext $ :any ?str) [[?page]]] - [?page :page/url ?url] - [(get-else $ ?page :page/title "") ?title]]`; - return datomish.q(db.db(), query, {"limit": 10, "inputs": {"str": string}}); -} - -async function savePage(db, url, title, content) { - let datom = {"db/id": 55, "page/url": url}; - if (title) { - datom["page/title"] = title; - } - if (content) { - datom["page/content"] = content; - } - let txResult = await db.transact([datom]); - return txResult; -} - -async function handleClick(state) { - let db = await datomish.open("/tmp/testing.db"); - await db.ensureSchema(schema); - - let txResult = await savePage(db, tabs.activeTab.url, tabs.activeTab.title, "Content goes here"); - - console.log("Transaction returned " + JSON.stringify(txResult)); - console.log("Transaction instant: " + txResult.txInstant); - - let results = await findURLs(db); - results = results.map(r => r[1]); - - console.log("Query results: " + JSON.stringify(results)); - - let pages = await findPagesMatching(db, "goes"); - - console.log("Pages: " + JSON.stringify(pages)); - await db.close(); -} - -var button = buttons.ActionButton({ - id: "datomish-save", - label: "Save Page", - icon: "./datomish-48.png", - onClick: handleClick -}); diff --git a/js/addon/src/wrapper.prefix b/js/addon/src/wrapper.prefix deleted file mode 100644 index f69c8236..00000000 --- a/js/addon/src/wrapper.prefix +++ /dev/null @@ -1,4 +0,0 @@ -// Monkeypatch. -var { setTimeout } = require("sdk/timers"); -this.setTimeout = setTimeout; - diff --git a/js/addon/webpack.config.js b/js/addon/webpack.config.js deleted file mode 100644 index f82bede4..00000000 --- a/js/addon/webpack.config.js +++ /dev/null @@ -1,21 +0,0 @@ - -module.exports = { - entry: ['babel-polyfill', './src/index.js'], - output: { - filename: 'built/index.js' - }, - target: 'webworker', - externals: { - 'datomish.js': 'commonjs datomish.js', - 'sdk/self': 'commonjs sdk/self', - 'sdk/ui/button/action': 'commonjs sdk/ui/button/action', - 'sdk/tabs': 'commonjs sdk/tabs' - }, - module: { - loaders: [{ - test: /\.js?$/, - exclude: /(node_modules)|(wrapper.prefix)/, - loader: 'babel' - }] - } -} diff --git a/js/test/js/tests.js b/js/test/js/tests.js deleted file mode 100644 index 6cd92536..00000000 --- a/js/test/js/tests.js +++ /dev/null @@ -1,126 +0,0 @@ -/* Copyright 2016 Mozilla - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use - * this file except in compliance with the License. You may obtain a copy of the - * License at http://www.apache.org/licenses/LICENSE-2.0 - * Unless required by applicable law or agreed to in writing, software distributed - * under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR - * CONDITIONS OF ANY KIND, either express or implied. See the License for the - * specific language governing permissions and limitations under the License. - */ - -var datomish = require("../../target/release-node/datomish.js"); - -var schema = { - "name": "pages", - "attributes": [ - {"name": "page/url", - "type": "string", - "cardinality": "one", - "unique": "identity", - "doc": "A page's URL."}, - {"name": "page/title", - "type": "string", - "cardinality": "one", - "doc": "A page's title."} - ] -}; - -async function testOpen() { - // Open a database. - let path = "/tmp/testing" + Date.now() + ".db"; - console.log("Opening " + path); - let db = await datomish.open(path); - - // Make sure we have our current schema. - await db.ensureSchema(schema); - - // Add some data. Note that we use a temporary ID (the real ID - // will be assigned by Datomish). - let txResult = await db.transact([ - {"db/id": datomish.tempid(), - "page/url": "https://mozilla.org/", - "page/title": "Mozilla"} - ]); - - console.log("Transaction returned " + JSON.stringify(txResult)); - console.log("Transaction instant: " + txResult.txInstant); - - // A simple query. - let results = await db.q("[:find [?url ...] :in $ :where [?e :page/url ?url]]"); - console.log("Known URLs: " + JSON.stringify(results)); - - // Let's extend our schema. In the real world this would typically happen - // across releases. - schema.attributes.push({"name": "page/visitedAt", - "type": "instant", - "cardinality": "many", - "doc": "A visit to the page."}); - await db.ensureSchema(schema); - - // Now we can make assertions with the new vocabulary about existing - // entities. - // Note that we simply let Datomish find which page we're talking about by - // URL -- the URL is a unique property -- so we just use a tempid again. - await db.transact([ - {"db/id": datomish.tempid(), - "page/url": "https://mozilla.org/", - "page/visitedAt": new Date()} - ]); - - // When did we most recently visit this page? - let date = (await db.q( - `[:find (max ?date) . - :in $ ?url - :where - [?page :page/url ?url] - [?page :page/visitedAt ?date]]`, - {"inputs": {"url": "https://mozilla.org/"}})); - console.log("Most recent visit: " + date); - - // Add some more data about a couple of pages. - let start = Date.now(); - let lr = datomish.tempid(); - let reddit = datomish.tempid(); - let res = await db.transact([ - {"db/id": reddit, - "page/url": "http://reddit.com/", - "page/title": "Reddit", - "page/visitedAt": new Date(start)}, - {"db/id": lr, - "page/url": "https://longreads.com/", - "page/title": "Longreads: The best longform stories on the web", - "page/visitedAt": (new Date(start + 100))}, - - // Two visits each. - {"db/id": lr, - "page/visitedAt": (new Date(start + 200))}, - {"db/id": reddit, - "page/visitedAt": (new Date(start + 300))} - ]); - - // These are our new persistent IDs. We can use these directly in later - // queries or transactions - lr = res.tempid(lr); - reddit = res.tempid(reddit); - console.log("Persistent IDs are " + lr + ", " + reddit + "."); - - // A query with a limit and order-by. Because we limit to 2, and order - // by most recent visit date first, we won't get mozilla.org in our results. - let recent = await db.q( - `[:find ?url (max ?date) - :in $ - :where - [?page :page/url ?url] - [?page :page/visitedAt ?date]]`, - {"limit": 2, "order-by": [["_max_date", "desc"]]}); - - console.log("Recently visited: " + JSON.stringify(recent)); - - // Close: we're done! - await db.close(); -} - -testOpen() -.then((r) => console.log("Done.")) -.catch((e) => console.log("Failure: " + e.stack)); diff --git a/js/test/v1.db b/js/test/v1.db deleted file mode 100644 index e76cdbfda87d09205a3a32e05a5c7bf1035ac261..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 753664 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 From 76b5a5e43bb8f0038738154d2dbd750607722cb3 Mon Sep 17 00:00:00 2001 From: Richard Newman Date: Fri, 6 Jan 2017 17:20:00 -0800 Subject: [PATCH 2/9] Rename to Project Mentat (build). --- Cargo.toml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 5fc8c42b..cd10544b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,18 +1,18 @@ [package] -name = "datomish" +name = "mentat" version = "0.4.0" authors = ["Richard Newman ", "Nicholas Alexander "] [dependencies] rusqlite = "0.8.0" -[dependencies.datomish-query-parser] +[dependencies.mentat-query-parser] path = "query-parser" [dev-dependencies] -[dev-dependencies.datomish-cli] +[dev-dependencies.mentat-cli] path = "cli" [[bin]] -name = "datomish-cli" -path = "cli/src/main.rs" \ No newline at end of file +name = "mentat-cli" +path = "cli/src/main.rs" From 7f3347981c5637bcdcccf82908ce67fd7acc4d61 Mon Sep 17 00:00:00 2001 From: Richard Newman Date: Fri, 6 Jan 2017 17:16:15 -0800 Subject: [PATCH 3/9] Rename to Project Mentat (docs). --- CONTRIBUTING.md | 8 ++++---- README.md | 30 +++++++++++++++--------------- 2 files changed, 19 insertions(+), 19 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 2f84292e..05bd945f 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,4 +1,4 @@ -# How to contribute to Datomish +# How to contribute to Project Mentat This project is very new, so we'll probably revise these guidelines. Please comment on a bug before putting significant effort in, if you'd like to @@ -29,10 +29,10 @@ Signed-off-by: Random J Developer ## Example -* Fork this repo at [github.com/mozilla/datomish](https://github.com/mozilla/datomish#fork-destination-box). +* Fork this repo at [github.com/mozilla/mentat](https://github.com/mozilla/mentat#fork-destination-box). * Clone your fork locally. Make sure you use the correct clone URL. ``` -git clone git@github.com:YOURNAME/datomish.git +git clone git@github.com:YOURNAME/mentat.git ``` Check your remotes: ``` @@ -40,7 +40,7 @@ git remote --verbose ``` Make sure you have an upstream remote defined: ``` -git remote add upstream https://github.com/mozilla/datomish +git remote add upstream https://github.com/mozilla/mentat ``` * Create a new branch to start working on a bug or feature: diff --git a/README.md b/README.md index 42ef7246..da77064b 100644 --- a/README.md +++ b/README.md @@ -1,15 +1,15 @@ -# Datomish +# Project Mentat -Datomish is a persistent, embedded knowledge base. It draws heavily on [DataScript](https://github.com/tonsky/datascript) and [Datomic](http://datomic.com). +Project Mentat is a persistent, embedded knowledge base. It draws heavily on [DataScript](https://github.com/tonsky/datascript) and [Datomic](http://datomic.com). -The first version of Datomish [was written in ClojureScript](https://github.com/mozilla/datomish/tree/master), targeting both Node (on top of `promise_sqlite`) and Firefox (on top of `Sqlite.jsm`). It also works in pure Clojure on the JVM on top of `jdbc-sqlite`. +The first version of Project Mentat, named Datomish, [was written in ClojureScript](https://github.com/mozilla/mentat/tree/master), targeting both Node (on top of `promise_sqlite`) and Firefox (on top of `Sqlite.jsm`). It also works in pure Clojure on the JVM on top of `jdbc-sqlite`. The name was changed to avoid confusion with [Datomic](http://datomic.com). -This branch is for rewriting Datomish in Rust, giving us a smaller compiled output, better performance, more type safety, better tooling, and easier deployment into Firefox and mobile platforms. +This branch is for rewriting Mentat in Rust, giving us a smaller compiled output, better performance, more type safety, better tooling, and easier deployment into Firefox and mobile platforms. ## Motivation -Datomish is intended to be a flexible relational (not key-value, not document-oriented) store that doesn't leak its storage schema to users, and doesn't make it hard to grow its domain schema and run arbitrary queries. +Mentat is intended to be a flexible relational (not key-value, not document-oriented) store that doesn't leak its storage schema to users, and doesn't make it hard to grow its domain schema and run arbitrary queries. Our short-term goal is to build a system that, as the basis for a User Agent Service, can support multiple [Tofino](https://github.com/mozilla/tofino) UX experiments without having a storage engineer do significant data migration, schema work, or revving of special-purpose endpoints. @@ -20,9 +20,9 @@ By abstracting away the storage schema, and by exposing change listeners outside DataScript asks the question: "What if creating a database would be as cheap as creating a Hashmap?" -Datomish is not interested in that. Instead, it's strongly interested in persistence and performance, with very little interest in immutable databases/databases as values or throwaway use. +Mentat is not interested in that. Instead, it's strongly interested in persistence and performance, with very little interest in immutable databases/databases as values or throwaway use. -One might say that Datomish's question is: "What if an SQLite database could store arbitrary relations, for arbitrary consumers, without them having to coordinate an up-front storage-level schema?" +One might say that Mentat's question is: "What if an SQLite database could store arbitrary relations, for arbitrary consumers, without them having to coordinate an up-front storage-level schema?" (Note that [domain-level schemas are very valuable](http://martinfowler.com/articles/schemaless/).) @@ -30,9 +30,9 @@ Another possible question would be: "What if we could bake some of the concepts Some thought has been given to how databases as values — long-term references to a snapshot of the store at an instant in time — could work in this model. It's not impossible; it simply has different performance characteristics. -Just like DataScript, Datomish speaks Datalog for querying and takes additions and retractions as input to a transaction. Unlike DataScript, Datomish's API is asynchronous. +Just like DataScript, Mentat speaks Datalog for querying and takes additions and retractions as input to a transaction. Unlike DataScript, Mentat's API is asynchronous. -Unlike DataScript, Datomish exposes free-text indexing, thanks to SQLite. +Unlike DataScript, Mentat exposes free-text indexing, thanks to SQLite. ## Comparison to Datomic @@ -41,14 +41,14 @@ Datomic is a server-side, enterprise-grade data storage system. Datomic has a be Many of these design decisions are inapplicable to deployed desktop software; indeed, the use of multiple JVM processes makes Datomic's use in a small desktop app, or a mobile device, prohibitive. -Datomish is designed for embedding, initially in an Electron app ([Tofino](https://github.com/mozilla/tofino)). It is less concerned with exposing consistent database states outside transaction boundaries, because that's less important here, and dropping some of these requirements allows us to leverage SQLite itself. +Mentat is designed for embedding, initially in an Electron app ([Tofino](https://github.com/mozilla/tofino)). It is less concerned with exposing consistent database states outside transaction boundaries, because that's less important here, and dropping some of these requirements allows us to leverage SQLite itself. ## Comparison to SQLite SQLite is a traditional SQL database in most respects: schemas conflate semantic, structural, and datatype concerns; the main interface with the database is human-first textual queries; sparse and graph-structured data are 'unnatural', if not always inefficient; experimenting with and evolving data models are error-prone and complicated activities; and so on. -Datomish aims to offer many of the advantages of SQLite — single-file use, embeddability, and good performance — while building a more relaxed and expressive data model on top. +Mentat aims to offer many of the advantages of SQLite — single-file use, embeddability, and good performance — while building a more relaxed and expressive data model on top. ## Contributing @@ -78,7 +78,7 @@ To run tests use: cargo test # Run tests for the query-parser folder -cargo test -p datomish-query-parser +cargo test -p mentat-query-parser ```` To start the cli use: @@ -87,15 +87,15 @@ To start the cli use: cargo run ```` -For most `cargo` commands you can pass the `-p` argument to run the command just on that package. By convention, the package name will be "datomish-directory-name". So, `cargo build -p datomish-cli` will build just the "cli" folder. +For most `cargo` commands you can pass the `-p` argument to run the command just on that package. By convention, the package name will be "mentat-directory-name". So, `cargo build -p mentat-cli` will build just the "cli" folder. ## License -Datomish is currently licensed under the Apache License v2.0. See the `LICENSE` file for details. +Project Mentat is currently licensed under the Apache License v2.0. See the `LICENSE` file for details. ## SQLite dependencies -Datomish uses partial indices, which are available in SQLite 3.8.0 and higher. +Mentat uses partial indices, which are available in SQLite 3.8.0 and higher. It also uses FTS4, which is [a compile time option](http://www.sqlite.org/fts3.html#section_2). From 7a4c75ba4480040b843ec9755909573f8ef73577 Mon Sep 17 00:00:00 2001 From: Richard Newman Date: Fri, 6 Jan 2017 17:19:21 -0800 Subject: [PATCH 4/9] Rename to Project Mentat (src). --- src/lib.rs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index e259b8d8..ae434424 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -8,18 +8,18 @@ // CONDITIONS OF ANY KIND, either express or implied. See the License for the // specific language governing permissions and limitations under the License. -extern crate datomish_query_parser; +extern crate mentat_query_parser; extern crate rusqlite; use rusqlite::Connection; pub fn get_name() -> String { - return String::from("datomish"); + return String::from("mentat"); } // Just an example of using a dependency pub fn get_parser_name() -> String { - return datomish_query_parser::get_name(); + return mentat_query_parser::get_name(); } // Will ultimately not return the sqlite connection directly @@ -33,6 +33,6 @@ mod tests { #[test] fn can_import_parser() { - assert_eq!(String::from("datomish-query-parser"), get_parser_name()); + assert_eq!(String::from("mentat-query-parser"), get_parser_name()); } -} \ No newline at end of file +} From 3af0d479aaf2f467627685ffbcb4e72749cd713d Mon Sep 17 00:00:00 2001 From: Richard Newman Date: Fri, 6 Jan 2017 17:19:29 -0800 Subject: [PATCH 5/9] Rename to Project Mentat (cli). --- cli/Cargo.toml | 6 +++--- cli/README.md | 2 +- cli/src/main.rs | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/cli/Cargo.toml b/cli/Cargo.toml index 83950fb8..b53e1e5f 100644 --- a/cli/Cargo.toml +++ b/cli/Cargo.toml @@ -1,7 +1,7 @@ [package] -name = "datomish-cli" +name = "mentat-cli" version = "0.0.1" [dependencies] -[dependencies.datomish] - path = "../" \ No newline at end of file +[dependencies.mentat] + path = "../" diff --git a/cli/README.md b/cli/README.md index b067eb15..0ac97748 100644 --- a/cli/README.md +++ b/cli/README.md @@ -1,3 +1,3 @@ -# datomish-cli +# mentat-cli Note: this isn't actually doing anything and is just a placeholder to get the project structure in place. diff --git a/cli/src/main.rs b/cli/src/main.rs index 861e8670..9ac6a22d 100644 --- a/cli/src/main.rs +++ b/cli/src/main.rs @@ -9,11 +9,11 @@ // specific language governing permissions and limitations under the License. use std::env; -extern crate datomish; +extern crate mentat; // This is just a placeholder to get the project structure in place. fn main() { - println!("Loaded {}", datomish::get_name()); + println!("Loaded {}", mentat::get_name()); let args: Vec = env::args().collect(); println!("I got {:?} arguments: {:?}.", args.len() - 1, &args[1..]); From 84f468ce411d2b3ce36b4e8b1ccaed731ec31af0 Mon Sep 17 00:00:00 2001 From: Richard Newman Date: Fri, 6 Jan 2017 17:19:36 -0800 Subject: [PATCH 6/9] Rename to Project Mentat (tests). --- tests/external_test.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/external_test.rs b/tests/external_test.rs index 13c65dee..88d49967 100644 --- a/tests/external_test.rs +++ b/tests/external_test.rs @@ -8,7 +8,7 @@ // CONDITIONS OF ANY KIND, either express or implied. See the License for the // specific language governing permissions and limitations under the License. -extern crate datomish; +extern crate mentat; #[test] fn can_import_sqlite() { @@ -20,7 +20,7 @@ fn can_import_sqlite() { data: Option> } - let conn = datomish::get_connection(); + let conn = mentat::get_connection(); conn.execute("CREATE TABLE person ( id INTEGER PRIMARY KEY, From a665926fe6f8330de499ab6b8e67674a67ad439f Mon Sep 17 00:00:00 2001 From: Richard Newman Date: Fri, 6 Jan 2017 17:19:46 -0800 Subject: [PATCH 7/9] Rename to Project Mentat (query-parser). --- query-parser/Cargo.toml | 4 ++-- query-parser/src/lib.rs | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/query-parser/Cargo.toml b/query-parser/Cargo.toml index a17d9c6c..b170385c 100644 --- a/query-parser/Cargo.toml +++ b/query-parser/Cargo.toml @@ -1,3 +1,3 @@ [package] -name = "datomish-query-parser" -version = "0.0.1" \ No newline at end of file +name = "mentat-query-parser" +version = "0.0.1" diff --git a/query-parser/src/lib.rs b/query-parser/src/lib.rs index 952491a8..4589b6b8 100644 --- a/query-parser/src/lib.rs +++ b/query-parser/src/lib.rs @@ -10,7 +10,7 @@ // This file is just a stub pub fn get_name() -> String { - return String::from("datomish-query-parser"); + return String::from("mentat-query-parser"); } #[cfg(test)] @@ -19,6 +19,6 @@ mod tests { #[test] fn it_works() { - assert_eq!(String::from("datomish-query-parser"), get_name()); + assert_eq!(String::from("mentat-query-parser"), get_name()); } -} \ No newline at end of file +} From b9c439bd00d5b2b25047789e55628ad006957f1c Mon Sep 17 00:00:00 2001 From: Richard Newman Date: Fri, 6 Jan 2017 17:31:01 -0800 Subject: [PATCH 8/9] Use underscores for crate names. --- Cargo.toml | 6 +++--- README.md | 4 ++-- cli/Cargo.toml | 2 +- query-parser/Cargo.toml | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index cd10544b..b897cbcc 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -6,13 +6,13 @@ authors = ["Richard Newman ", "Nicholas Alexander Date: Fri, 6 Jan 2017 17:24:45 -0800 Subject: [PATCH 9/9] Fix Travis. --- .travis.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 23396e14..eb808d4a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,5 +2,5 @@ language: rust script: - cargo build --verbose - cargo test --verbose - - cargo test --verbose -p datomish-query-parser - - cargo test --verbose -p datomish-cli \ No newline at end of file + - cargo test --verbose -p mentat_query_parser + - cargo test --verbose -p mentat_cli