From cfa462f4fda23bafcf40f56c65b94b266409215b Mon Sep 17 00:00:00 2001 From: Mitchell Stanley Date: Tue, 30 Jul 2019 16:03:09 +0100 Subject: [PATCH 01/29] Update lodash dependency --- package.json | 3 ++- yarn.lock | 5 +++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 4bc4293..068336f 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,8 @@ "dependencies": { "cross-env": "^5.2.0", "laravel-mix": "^4.0.15", - "tailwindcss": "^1.0.1" + "tailwindcss": "^1.0.1", + "lodash": "^4.17.13" }, "scripts": { "dev": "yarn run development", diff --git a/yarn.lock b/yarn.lock index be70f4e..e932145 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3668,6 +3668,11 @@ lodash@^4.17.11, lodash@^4.17.5: resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d" integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg== +lodash@^4.17.13: + version "4.17.15" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" + integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== + loglevel@^1.6.1: version "1.6.1" resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.1.tgz#e0fc95133b6ef276cdc8887cdaf24aa6f156f8fa" From bd9f52c369731e455797790af9a2b2586494025f Mon Sep 17 00:00:00 2001 From: Mitchell Stanley Date: Tue, 30 Jul 2019 16:03:23 +0100 Subject: [PATCH 02/29] Start of new snippet form --- src/snipline_cli/commands/web.cr | 12 ++++++++++ src/snipline_cli/templates/index.ecr | 10 ++++++-- src/snipline_cli/templates/layout.ecr | 2 +- src/snipline_cli/templates/snippets/new.ecr | 26 +++++++++++++++++++++ 4 files changed, 47 insertions(+), 3 deletions(-) create mode 100644 src/snipline_cli/templates/snippets/new.ecr diff --git a/src/snipline_cli/commands/web.cr b/src/snipline_cli/commands/web.cr index a12289a..3a7fe70 100644 --- a/src/snipline_cli/commands/web.cr +++ b/src/snipline_cli/commands/web.cr @@ -24,6 +24,18 @@ module SniplineCli # env.set "snippets", snippets render "src/snipline_cli/templates/index.ecr", "src/snipline_cli/templates/layout.ecr" end + + get "/snippets/new" do + # env.set "snippets", snippets + render "src/snipline_cli/templates/snippets/new.ecr", "src/snipline_cli/templates/layout.ecr" + end + + post "/snippets" do + # env.set "snippets", snippets + # render "src/snipline_cli/templates/snippets/new.ecr", "src/snipline_cli/templates/layout.ecr" + "Test" + end + get "/app.css" do |env| env.response.content_type = "text/css" file = Services::FileStorage.get("css/app.css") diff --git a/src/snipline_cli/templates/index.ecr b/src/snipline_cli/templates/index.ecr index aeacc32..de815fe 100644 --- a/src/snipline_cli/templates/index.ecr +++ b/src/snipline_cli/templates/index.ecr @@ -1,4 +1,9 @@ - +Create Snippet \ No newline at end of file diff --git a/src/snipline_cli/templates/layout.ecr b/src/snipline_cli/templates/layout.ecr index bd72201..2d83558 100644 --- a/src/snipline_cli/templates/layout.ecr +++ b/src/snipline_cli/templates/layout.ecr @@ -6,7 +6,7 @@ - + <%= content %> diff --git a/src/snipline_cli/templates/snippets/new.ecr b/src/snipline_cli/templates/snippets/new.ecr new file mode 100644 index 0000000..9fbb6ae --- /dev/null +++ b/src/snipline_cli/templates/snippets/new.ecr @@ -0,0 +1,26 @@ +
+

Snipline

+ Cancel +
+

New Snippet

+
+
+ +
+
+ +
+
+ +
+ +
From be7dc2ebe20173374b9c21bbff35a37c9bd48d0f Mon Sep 17 00:00:00 2001 From: Mitchell Stanley Date: Fri, 9 Aug 2019 16:03:41 +0100 Subject: [PATCH 03/29] Parsing new snippet form --- src/snipline_cli/commands/web.cr | 21 +++++++++++++-- src/snipline_cli/models/snippet.cr | 3 +++ src/snipline_cli/models/snippet_attribute.cr | 3 +++ .../append_snippet_to_local_storage.cr | 13 +++++++++ .../services/sync_snippet_to_snipline.cr | 13 +++++++++ src/snipline_cli/templates/snippets/new.ecr | 27 ++++++++++++------- 6 files changed, 68 insertions(+), 12 deletions(-) create mode 100644 src/snipline_cli/services/append_snippet_to_local_storage.cr create mode 100644 src/snipline_cli/services/sync_snippet_to_snipline.cr diff --git a/src/snipline_cli/commands/web.cr b/src/snipline_cli/commands/web.cr index 3a7fe70..1f23723 100644 --- a/src/snipline_cli/commands/web.cr +++ b/src/snipline_cli/commands/web.cr @@ -30,10 +30,27 @@ module SniplineCli render "src/snipline_cli/templates/snippets/new.ecr", "src/snipline_cli/templates/layout.ecr" end - post "/snippets" do + post "/snippets" do |env| + snippet_params = env.params.body + puts snippet_params.inspect + snippet_attributes = SnippetAttribute.new( + name: snippet_params["name"], + real_command: snippet_params["real_command"], + documentation: snippet_params["documentation"], + is_pinned: false, + snippet_alias: nil, + tags: [] of String + ) + + if snippet_params.fetch_all("sync").includes?("true") + snippet = SniplineCli::Services::SyncSnippetToSnipline.handle(snippet_attributes) + else + snippet = Snippet.new(id: nil, type: "snippet", attributes: snippet_attributes) + end + SniplineCli::Services::AppendSnippetToLocalStorage.handle(snippet) # env.set "snippets", snippets # render "src/snipline_cli/templates/snippets/new.ecr", "src/snipline_cli/templates/layout.ecr" - "Test" + "Success" end get "/app.css" do |env| diff --git a/src/snipline_cli/models/snippet.cr b/src/snipline_cli/models/snippet.cr index 59e0c40..b8896ed 100644 --- a/src/snipline_cli/models/snippet.cr +++ b/src/snipline_cli/models/snippet.cr @@ -8,6 +8,9 @@ module SniplineCli attributes: SnippetAttribute, }) + def initialize(@id : String | Nil, @type : String, @attributes : SnippetAttribute) + end + def snippet_alias attributes.snippet_alias end diff --git a/src/snipline_cli/models/snippet_attribute.cr b/src/snipline_cli/models/snippet_attribute.cr index ed287a9..326827c 100644 --- a/src/snipline_cli/models/snippet_attribute.cr +++ b/src/snipline_cli/models/snippet_attribute.cr @@ -21,5 +21,8 @@ module SniplineCli @[JSON::Field(key: "tags")] property tags : Array(String) + + def initialize(@name : String, @real_command : String, @documentation : String | Nil, @is_pinned : Bool, @snippet_alias : String | Nil, @tags : Array(String)) + end end end diff --git a/src/snipline_cli/services/append_snippet_to_local_storage.cr b/src/snipline_cli/services/append_snippet_to_local_storage.cr new file mode 100644 index 0000000..ee4ab53 --- /dev/null +++ b/src/snipline_cli/services/append_snippet_to_local_storage.cr @@ -0,0 +1,13 @@ +require "json" + +module SniplineCli::Services + # For saving Snippets locally. + class AppendSnippetToLocalStorage + # Takes an array of snippets and saves them to the `snippet.json` file. + def self.handle(snippet) + puts "TODO: Appending..." + end + end +end + + diff --git a/src/snipline_cli/services/sync_snippet_to_snipline.cr b/src/snipline_cli/services/sync_snippet_to_snipline.cr new file mode 100644 index 0000000..5f334d8 --- /dev/null +++ b/src/snipline_cli/services/sync_snippet_to_snipline.cr @@ -0,0 +1,13 @@ +require "json" + +module SniplineCli::Services + # For saving Snippets locally. + class SyncSnippetToSnipline + # Takes an array of snippets and saves them to the `snippet.json` file. + def self.handle(snippet_attributes) + puts "TODO: Syncing..." + Snippet.new(id: nil, type: "snippet", attributes: snippet_attributes) + end + end +end + diff --git a/src/snipline_cli/templates/snippets/new.ecr b/src/snipline_cli/templates/snippets/new.ecr index 9fbb6ae..9682595 100644 --- a/src/snipline_cli/templates/snippets/new.ecr +++ b/src/snipline_cli/templates/snippets/new.ecr @@ -3,23 +3,30 @@ Cancel

New Snippet

-
+
-
-
-
+
+ +
+
From 55f005bb5a120e21e24015861f40127dafa12719 Mon Sep 17 00:00:00 2001 From: Mitchell Stanley Date: Fri, 9 Aug 2019 16:12:43 +0100 Subject: [PATCH 04/29] Storing new snippets locally --- src/snipline_cli/services/append_snippet_to_local_storage.cr | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/snipline_cli/services/append_snippet_to_local_storage.cr b/src/snipline_cli/services/append_snippet_to_local_storage.cr index ee4ab53..3515ac9 100644 --- a/src/snipline_cli/services/append_snippet_to_local_storage.cr +++ b/src/snipline_cli/services/append_snippet_to_local_storage.cr @@ -5,7 +5,10 @@ module SniplineCli::Services class AppendSnippetToLocalStorage # Takes an array of snippets and saves them to the `snippet.json` file. def self.handle(snippet) - puts "TODO: Appending..." + snippets = SniplineCli::Services::LoadSnippets.run + snippets << snippet + SniplineCli::Services::StoreSnippets.new.store(snippets.to_json) + return end end end From d431b54f27a564813c074055fb6615de7d922729 Mon Sep 17 00:00:00 2001 From: Mitchell Stanley Date: Mon, 12 Aug 2019 16:14:00 +0100 Subject: [PATCH 05/29] Happy path for creating snippets --- .../models/snippet_data_wrapper.cr | 5 ++++ src/snipline_cli/services/snipline_api.cr | 23 +++++++++++++++++++ .../services/sync_snippet_to_snipline.cr | 3 ++- 3 files changed, 30 insertions(+), 1 deletion(-) diff --git a/src/snipline_cli/models/snippet_data_wrapper.cr b/src/snipline_cli/models/snippet_data_wrapper.cr index d1c8084..0fa2ae1 100644 --- a/src/snipline_cli/models/snippet_data_wrapper.cr +++ b/src/snipline_cli/models/snippet_data_wrapper.cr @@ -6,4 +6,9 @@ module SniplineCli data: Array(Snippet), }) end + class SingleSnippetDataWrapper + JSON.mapping({ + data: Snippet, + }) + end end diff --git a/src/snipline_cli/services/snipline_api.cr b/src/snipline_cli/services/snipline_api.cr index b954611..2433015 100644 --- a/src/snipline_cli/services/snipline_api.cr +++ b/src/snipline_cli/services/snipline_api.cr @@ -15,6 +15,29 @@ module SniplineCli::Services ) yield resp.body end + + def create(snippet : Snippet) + config = SniplineCli.config + resp = Crest.post( + "#{config.get("api.url")}/snippets", + headers: { + # "Accept" => "application/vnd.api+json", + "Authorization" => "Bearer #{config.get("api.token")}", + }, + form: { + # data: { + :name => snippet.name, + :real_command => snippet.real_command, + :documentation => snippet.documentation, + :alias => snippet.snippet_alias, + :is_pinned => snippet.is_pinned.to_s, + # :tags => snippet.tags + # } + } + ) + # Snippet.from_json(resp.body) + SingleSnippetDataWrapper.from_json(resp.body).data + end end class SniplineApiTest diff --git a/src/snipline_cli/services/sync_snippet_to_snipline.cr b/src/snipline_cli/services/sync_snippet_to_snipline.cr index 5f334d8..4e0ca56 100644 --- a/src/snipline_cli/services/sync_snippet_to_snipline.cr +++ b/src/snipline_cli/services/sync_snippet_to_snipline.cr @@ -6,7 +6,8 @@ module SniplineCli::Services # Takes an array of snippets and saves them to the `snippet.json` file. def self.handle(snippet_attributes) puts "TODO: Syncing..." - Snippet.new(id: nil, type: "snippet", attributes: snippet_attributes) + snippet = Snippet.new(id: nil, type: "snippet", attributes: snippet_attributes) + SniplineApi.new.create(snippet) end end end From dbc84dbe2c600650e53f885347e3807768335746 Mon Sep 17 00:00:00 2001 From: Mitchell Stanley Date: Mon, 12 Aug 2019 16:22:47 +0100 Subject: [PATCH 06/29] Add pin and alias to create proccess --- src/snipline_cli/commands/web.cr | 4 ++-- src/snipline_cli/templates/index.ecr | 4 +++- src/snipline_cli/templates/snippets/new.ecr | 15 ++++++++++++++- 3 files changed, 19 insertions(+), 4 deletions(-) diff --git a/src/snipline_cli/commands/web.cr b/src/snipline_cli/commands/web.cr index 1f23723..1d7f718 100644 --- a/src/snipline_cli/commands/web.cr +++ b/src/snipline_cli/commands/web.cr @@ -37,8 +37,8 @@ module SniplineCli name: snippet_params["name"], real_command: snippet_params["real_command"], documentation: snippet_params["documentation"], - is_pinned: false, - snippet_alias: nil, + is_pinned: (snippet_params["is_pinned"] == "true") ? true : false, + snippet_alias: snippet_params["alias"], tags: [] of String ) diff --git a/src/snipline_cli/templates/index.ecr b/src/snipline_cli/templates/index.ecr index de815fe..b0cac5f 100644 --- a/src/snipline_cli/templates/index.ecr +++ b/src/snipline_cli/templates/index.ecr @@ -19,4 +19,6 @@ <% end %> -Create Snippet \ No newline at end of file + \ No newline at end of file diff --git a/src/snipline_cli/templates/snippets/new.ecr b/src/snipline_cli/templates/snippets/new.ecr index 9682595..8abb52a 100644 --- a/src/snipline_cli/templates/snippets/new.ecr +++ b/src/snipline_cli/templates/snippets/new.ecr @@ -17,11 +17,24 @@
-
+
+
+
+ +

New Snippet

+ <% if success %> +
+ <%= success %> +
+ <% end %> + <% if error %> +
+ <%= error %> +
+ <% end %>