diff options
| author | matthieu <matthieu@developershouse.xyz> | 2021-09-03 22:17:51 +0400 | 
|---|---|---|
| committer | matthieu <matthieu@developershouse.xyz> | 2021-09-03 22:17:51 +0400 | 
| commit | c1b170dfec41937fbc4ca14e90de768ec176fec0 (patch) | |
| tree | ca3b6f0128850a5ec52548119ec4d7b2151da579 | |
| parent | 3ef87c0b6cac546d74d1e37b13bfbac3c8504305 (diff) | |
sync project
| -rw-r--r-- | .github/workflows/bazel-build.yml | 49 | ||||
| -rw-r--r-- | .gitignore | 8 | ||||
| -rw-r--r-- | LICENSE | 402 | ||||
| -rw-r--r-- | TODO.md | 26 | ||||
| -rw-r--r-- | novactl/cmd/init.go | 178 | ||||
| -rw-r--r-- | novactl/lib/vesion.go | 10 | ||||
| -rw-r--r-- | novactl/main.go | 26 | ||||
| -rw-r--r-- | novalet/BUILD.bazel | 22 | ||||
| -rw-r--r-- | novalet/lib/BUILD.bazel | 12 | ||||
| -rw-r--r-- | novalet/lib/internal_transporter.go | 37 | ||||
| -rw-r--r-- | novalet/lib/nats_standalone.go | 19 | ||||
| -rw-r--r-- | novalet/main.go | 16 | ||||
| -rw-r--r-- | ratelimiter/proto/nova.ratelimit.v1.proto | 76 | 
13 files changed, 363 insertions, 518 deletions
diff --git a/.github/workflows/bazel-build.yml b/.github/workflows/bazel-build.yml deleted file mode 100644 index 3de7dfa..0000000 --- a/.github/workflows/bazel-build.yml +++ /dev/null @@ -1,49 +0,0 @@ -# This is a basic workflow to help you get started with Actions
 -
 -name: Build
 -
 -# Controls when the workflow will run
 -on:
 -  push:
 -  # Allows you to run this workflow manually from the Actions tab
 -  workflow_dispatch:
 -# A workflow run is made up of one or more jobs that can run sequentially or in parallel
 -jobs:
 -  # This workflow contains a single job called "build"
 -  build:
 -    strategy:
 -      fail-fast: false
 -      matrix:
 -        os: [ubuntu-latest, macos-latest, windows-latest]
 -    # The type of runner that the job will run on
 -    runs-on: ${{ matrix.os }}
 -    # Steps represent a sequence of tasks that will be executed as part of the job
 -    steps:
 -      # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
 -      - uses: actions/checkout@v2
 -      - name: Setup Bazelisk
 -        # You may pin to the exact commit or the version.
 -        # uses: bazelbuild/setup-bazelisk@2351cf5a7584ce72638fbce7c22e5128a5fcd5b2
 -        uses: bazelbuild/setup-bazelisk@v1.0.1
 -        with:
 -          # The Bazelisk version to download (if necessary) and use. Supports semver spec and ranges.
 -          bazelisk-version: 1.x # optional, default is 1.x
 -           # Used to query bazelisk releases.  Since there's a default, this is typically not supplied by the user.
 -          token: ${{ github.token }}
 -      # Runs a single command using the runners shell
 -      - name: Mount bazel cache  # Optional
 -        uses: actions/cache@v2
 -        with:
 -          path: "~/.cache/bazel"
 -          key: bazel-${{ matrix.os }}
 -      # Runs a set of commands using the runners shell
 -      - name: Execute build script
 -        shell: bash
 -        run: |
 -           bazel build //:package
 -
 -      - name: Bazel artifacts
 -        uses: actions/upload-artifact@v2
 -        with:
 -          name: all-${{ matrix.os }}
 -          path: bazel-bin*/**/*
 @@ -1,4 +1,4 @@ -bazel-*
 -.bazelrc
 -.vscode
 -ratelimiter/target
 +bazel-* +.bazelrc +.vscode +ratelimiter/target @@ -1,201 +1,201 @@ -                                 Apache License
 -                           Version 2.0, January 2004
 -                        http://www.apache.org/licenses/
 -
 -   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
 -
 -   1. Definitions.
 -
 -      "License" shall mean the terms and conditions for use, reproduction,
 -      and distribution as defined by Sections 1 through 9 of this document.
 -
 -      "Licensor" shall mean the copyright owner or entity authorized by
 -      the copyright owner that is granting the License.
 -
 -      "Legal Entity" shall mean the union of the acting entity and all
 -      other entities that control, are controlled by, or are under common
 -      control with that entity. For the purposes of this definition,
 -      "control" means (i) the power, direct or indirect, to cause the
 -      direction or management of such entity, whether by contract or
 -      otherwise, or (ii) ownership of fifty percent (50%) or more of the
 -      outstanding shares, or (iii) beneficial ownership of such entity.
 -
 -      "You" (or "Your") shall mean an individual or Legal Entity
 -      exercising permissions granted by this License.
 -
 -      "Source" form shall mean the preferred form for making modifications,
 -      including but not limited to software source code, documentation
 -      source, and configuration files.
 -
 -      "Object" form shall mean any form resulting from mechanical
 -      transformation or translation of a Source form, including but
 -      not limited to compiled object code, generated documentation,
 -      and conversions to other media types.
 -
 -      "Work" shall mean the work of authorship, whether in Source or
 -      Object form, made available under the License, as indicated by a
 -      copyright notice that is included in or attached to the work
 -      (an example is provided in the Appendix below).
 -
 -      "Derivative Works" shall mean any work, whether in Source or Object
 -      form, that is based on (or derived from) the Work and for which the
 -      editorial revisions, annotations, elaborations, or other modifications
 -      represent, as a whole, an original work of authorship. For the purposes
 -      of this License, Derivative Works shall not include works that remain
 -      separable from, or merely link (or bind by name) to the interfaces of,
 -      the Work and Derivative Works thereof.
 -
 -      "Contribution" shall mean any work of authorship, including
 -      the original version of the Work and any modifications or additions
 -      to that Work or Derivative Works thereof, that is intentionally
 -      submitted to Licensor for inclusion in the Work by the copyright owner
 -      or by an individual or Legal Entity authorized to submit on behalf of
 -      the copyright owner. For the purposes of this definition, "submitted"
 -      means any form of electronic, verbal, or written communication sent
 -      to the Licensor or its representatives, including but not limited to
 -      communication on electronic mailing lists, source code control systems,
 -      and issue tracking systems that are managed by, or on behalf of, the
 -      Licensor for the purpose of discussing and improving the Work, but
 -      excluding communication that is conspicuously marked or otherwise
 -      designated in writing by the copyright owner as "Not a Contribution."
 -
 -      "Contributor" shall mean Licensor and any individual or Legal Entity
 -      on behalf of whom a Contribution has been received by Licensor and
 -      subsequently incorporated within the Work.
 -
 -   2. Grant of Copyright License. Subject to the terms and conditions of
 -      this License, each Contributor hereby grants to You a perpetual,
 -      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
 -      copyright license to reproduce, prepare Derivative Works of,
 -      publicly display, publicly perform, sublicense, and distribute the
 -      Work and such Derivative Works in Source or Object form.
 -
 -   3. Grant of Patent License. Subject to the terms and conditions of
 -      this License, each Contributor hereby grants to You a perpetual,
 -      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
 -      (except as stated in this section) patent license to make, have made,
 -      use, offer to sell, sell, import, and otherwise transfer the Work,
 -      where such license applies only to those patent claims licensable
 -      by such Contributor that are necessarily infringed by their
 -      Contribution(s) alone or by combination of their Contribution(s)
 -      with the Work to which such Contribution(s) was submitted. If You
 -      institute patent litigation against any entity (including a
 -      cross-claim or counterclaim in a lawsuit) alleging that the Work
 -      or a Contribution incorporated within the Work constitutes direct
 -      or contributory patent infringement, then any patent licenses
 -      granted to You under this License for that Work shall terminate
 -      as of the date such litigation is filed.
 -
 -   4. Redistribution. You may reproduce and distribute copies of the
 -      Work or Derivative Works thereof in any medium, with or without
 -      modifications, and in Source or Object form, provided that You
 -      meet the following conditions:
 -
 -      (a) You must give any other recipients of the Work or
 -          Derivative Works a copy of this License; and
 -
 -      (b) You must cause any modified files to carry prominent notices
 -          stating that You changed the files; and
 -
 -      (c) You must retain, in the Source form of any Derivative Works
 -          that You distribute, all copyright, patent, trademark, and
 -          attribution notices from the Source form of the Work,
 -          excluding those notices that do not pertain to any part of
 -          the Derivative Works; and
 -
 -      (d) If the Work includes a "NOTICE" text file as part of its
 -          distribution, then any Derivative Works that You distribute must
 -          include a readable copy of the attribution notices contained
 -          within such NOTICE file, excluding those notices that do not
 -          pertain to any part of the Derivative Works, in at least one
 -          of the following places: within a NOTICE text file distributed
 -          as part of the Derivative Works; within the Source form or
 -          documentation, if provided along with the Derivative Works; or,
 -          within a display generated by the Derivative Works, if and
 -          wherever such third-party notices normally appear. The contents
 -          of the NOTICE file are for informational purposes only and
 -          do not modify the License. You may add Your own attribution
 -          notices within Derivative Works that You distribute, alongside
 -          or as an addendum to the NOTICE text from the Work, provided
 -          that such additional attribution notices cannot be construed
 -          as modifying the License.
 -
 -      You may add Your own copyright statement to Your modifications and
 -      may provide additional or different license terms and conditions
 -      for use, reproduction, or distribution of Your modifications, or
 -      for any such Derivative Works as a whole, provided Your use,
 -      reproduction, and distribution of the Work otherwise complies with
 -      the conditions stated in this License.
 -
 -   5. Submission of Contributions. Unless You explicitly state otherwise,
 -      any Contribution intentionally submitted for inclusion in the Work
 -      by You to the Licensor shall be under the terms and conditions of
 -      this License, without any additional terms or conditions.
 -      Notwithstanding the above, nothing herein shall supersede or modify
 -      the terms of any separate license agreement you may have executed
 -      with Licensor regarding such Contributions.
 -
 -   6. Trademarks. This License does not grant permission to use the trade
 -      names, trademarks, service marks, or product names of the Licensor,
 -      except as required for reasonable and customary use in describing the
 -      origin of the Work and reproducing the content of the NOTICE file.
 -
 -   7. Disclaimer of Warranty. Unless required by applicable law or
 -      agreed to in writing, Licensor provides the Work (and each
 -      Contributor provides its Contributions) on an "AS IS" BASIS,
 -      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
 -      implied, including, without limitation, any warranties or conditions
 -      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
 -      PARTICULAR PURPOSE. You are solely responsible for determining the
 -      appropriateness of using or redistributing the Work and assume any
 -      risks associated with Your exercise of permissions under this License.
 -
 -   8. Limitation of Liability. In no event and under no legal theory,
 -      whether in tort (including negligence), contract, or otherwise,
 -      unless required by applicable law (such as deliberate and grossly
 -      negligent acts) or agreed to in writing, shall any Contributor be
 -      liable to You for damages, including any direct, indirect, special,
 -      incidental, or consequential damages of any character arising as a
 -      result of this License or out of the use or inability to use the
 -      Work (including but not limited to damages for loss of goodwill,
 -      work stoppage, computer failure or malfunction, or any and all
 -      other commercial damages or losses), even if such Contributor
 -      has been advised of the possibility of such damages.
 -
 -   9. Accepting Warranty or Additional Liability. While redistributing
 -      the Work or Derivative Works thereof, You may choose to offer,
 -      and charge a fee for, acceptance of support, warranty, indemnity,
 -      or other liability obligations and/or rights consistent with this
 -      License. However, in accepting such obligations, You may act only
 -      on Your own behalf and on Your sole responsibility, not on behalf
 -      of any other Contributor, and only if You agree to indemnify,
 -      defend, and hold each Contributor harmless for any liability
 -      incurred by, or claims asserted against, such Contributor by reason
 -      of your accepting any such warranty or additional liability.
 -
 -   END OF TERMS AND CONDITIONS
 -
 -   APPENDIX: How to apply the Apache License to your work.
 -
 -      To apply the Apache License to your work, attach the following
 -      boilerplate notice, with the fields enclosed by brackets "[]"
 -      replaced with your own identifying information. (Don't include
 -      the brackets!)  The text should be enclosed in the appropriate
 -      comment syntax for the file format. We also recommend that a
 -      file or class name and description of purpose be included on the
 -      same "printed page" as the copyright notice for easier
 -      identification within third-party archives.
 -
 -   Copyright 2021 Developer's House
 -
 -   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.
 +                                 Apache License +                           Version 2.0, January 2004 +                        http://www.apache.org/licenses/ + +   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +   1. Definitions. + +      "License" shall mean the terms and conditions for use, reproduction, +      and distribution as defined by Sections 1 through 9 of this document. + +      "Licensor" shall mean the copyright owner or entity authorized by +      the copyright owner that is granting the License. + +      "Legal Entity" shall mean the union of the acting entity and all +      other entities that control, are controlled by, or are under common +      control with that entity. For the purposes of this definition, +      "control" means (i) the power, direct or indirect, to cause the +      direction or management of such entity, whether by contract or +      otherwise, or (ii) ownership of fifty percent (50%) or more of the +      outstanding shares, or (iii) beneficial ownership of such entity. + +      "You" (or "Your") shall mean an individual or Legal Entity +      exercising permissions granted by this License. + +      "Source" form shall mean the preferred form for making modifications, +      including but not limited to software source code, documentation +      source, and configuration files. + +      "Object" form shall mean any form resulting from mechanical +      transformation or translation of a Source form, including but +      not limited to compiled object code, generated documentation, +      and conversions to other media types. + +      "Work" shall mean the work of authorship, whether in Source or +      Object form, made available under the License, as indicated by a +      copyright notice that is included in or attached to the work +      (an example is provided in the Appendix below). + +      "Derivative Works" shall mean any work, whether in Source or Object +      form, that is based on (or derived from) the Work and for which the +      editorial revisions, annotations, elaborations, or other modifications +      represent, as a whole, an original work of authorship. For the purposes +      of this License, Derivative Works shall not include works that remain +      separable from, or merely link (or bind by name) to the interfaces of, +      the Work and Derivative Works thereof. + +      "Contribution" shall mean any work of authorship, including +      the original version of the Work and any modifications or additions +      to that Work or Derivative Works thereof, that is intentionally +      submitted to Licensor for inclusion in the Work by the copyright owner +      or by an individual or Legal Entity authorized to submit on behalf of +      the copyright owner. For the purposes of this definition, "submitted" +      means any form of electronic, verbal, or written communication sent +      to the Licensor or its representatives, including but not limited to +      communication on electronic mailing lists, source code control systems, +      and issue tracking systems that are managed by, or on behalf of, the +      Licensor for the purpose of discussing and improving the Work, but +      excluding communication that is conspicuously marked or otherwise +      designated in writing by the copyright owner as "Not a Contribution." + +      "Contributor" shall mean Licensor and any individual or Legal Entity +      on behalf of whom a Contribution has been received by Licensor and +      subsequently incorporated within the Work. + +   2. Grant of Copyright License. Subject to the terms and conditions of +      this License, each Contributor hereby grants to You a perpetual, +      worldwide, non-exclusive, no-charge, royalty-free, irrevocable +      copyright license to reproduce, prepare Derivative Works of, +      publicly display, publicly perform, sublicense, and distribute the +      Work and such Derivative Works in Source or Object form. + +   3. Grant of Patent License. Subject to the terms and conditions of +      this License, each Contributor hereby grants to You a perpetual, +      worldwide, non-exclusive, no-charge, royalty-free, irrevocable +      (except as stated in this section) patent license to make, have made, +      use, offer to sell, sell, import, and otherwise transfer the Work, +      where such license applies only to those patent claims licensable +      by such Contributor that are necessarily infringed by their +      Contribution(s) alone or by combination of their Contribution(s) +      with the Work to which such Contribution(s) was submitted. If You +      institute patent litigation against any entity (including a +      cross-claim or counterclaim in a lawsuit) alleging that the Work +      or a Contribution incorporated within the Work constitutes direct +      or contributory patent infringement, then any patent licenses +      granted to You under this License for that Work shall terminate +      as of the date such litigation is filed. + +   4. Redistribution. You may reproduce and distribute copies of the +      Work or Derivative Works thereof in any medium, with or without +      modifications, and in Source or Object form, provided that You +      meet the following conditions: + +      (a) You must give any other recipients of the Work or +          Derivative Works a copy of this License; and + +      (b) You must cause any modified files to carry prominent notices +          stating that You changed the files; and + +      (c) You must retain, in the Source form of any Derivative Works +          that You distribute, all copyright, patent, trademark, and +          attribution notices from the Source form of the Work, +          excluding those notices that do not pertain to any part of +          the Derivative Works; and + +      (d) If the Work includes a "NOTICE" text file as part of its +          distribution, then any Derivative Works that You distribute must +          include a readable copy of the attribution notices contained +          within such NOTICE file, excluding those notices that do not +          pertain to any part of the Derivative Works, in at least one +          of the following places: within a NOTICE text file distributed +          as part of the Derivative Works; within the Source form or +          documentation, if provided along with the Derivative Works; or, +          within a display generated by the Derivative Works, if and +          wherever such third-party notices normally appear. The contents +          of the NOTICE file are for informational purposes only and +          do not modify the License. You may add Your own attribution +          notices within Derivative Works that You distribute, alongside +          or as an addendum to the NOTICE text from the Work, provided +          that such additional attribution notices cannot be construed +          as modifying the License. + +      You may add Your own copyright statement to Your modifications and +      may provide additional or different license terms and conditions +      for use, reproduction, or distribution of Your modifications, or +      for any such Derivative Works as a whole, provided Your use, +      reproduction, and distribution of the Work otherwise complies with +      the conditions stated in this License. + +   5. Submission of Contributions. Unless You explicitly state otherwise, +      any Contribution intentionally submitted for inclusion in the Work +      by You to the Licensor shall be under the terms and conditions of +      this License, without any additional terms or conditions. +      Notwithstanding the above, nothing herein shall supersede or modify +      the terms of any separate license agreement you may have executed +      with Licensor regarding such Contributions. + +   6. Trademarks. This License does not grant permission to use the trade +      names, trademarks, service marks, or product names of the Licensor, +      except as required for reasonable and customary use in describing the +      origin of the Work and reproducing the content of the NOTICE file. + +   7. Disclaimer of Warranty. Unless required by applicable law or +      agreed to in writing, Licensor provides the Work (and each +      Contributor provides its Contributions) on an "AS IS" BASIS, +      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or +      implied, including, without limitation, any warranties or conditions +      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A +      PARTICULAR PURPOSE. You are solely responsible for determining the +      appropriateness of using or redistributing the Work and assume any +      risks associated with Your exercise of permissions under this License. + +   8. Limitation of Liability. In no event and under no legal theory, +      whether in tort (including negligence), contract, or otherwise, +      unless required by applicable law (such as deliberate and grossly +      negligent acts) or agreed to in writing, shall any Contributor be +      liable to You for damages, including any direct, indirect, special, +      incidental, or consequential damages of any character arising as a +      result of this License or out of the use or inability to use the +      Work (including but not limited to damages for loss of goodwill, +      work stoppage, computer failure or malfunction, or any and all +      other commercial damages or losses), even if such Contributor +      has been advised of the possibility of such damages. + +   9. Accepting Warranty or Additional Liability. While redistributing +      the Work or Derivative Works thereof, You may choose to offer, +      and charge a fee for, acceptance of support, warranty, indemnity, +      or other liability obligations and/or rights consistent with this +      License. However, in accepting such obligations, You may act only +      on Your own behalf and on Your sole responsibility, not on behalf +      of any other Contributor, and only if You agree to indemnify, +      defend, and hold each Contributor harmless for any liability +      incurred by, or claims asserted against, such Contributor by reason +      of your accepting any such warranty or additional liability. + +   END OF TERMS AND CONDITIONS + +   APPENDIX: How to apply the Apache License to your work. + +      To apply the Apache License to your work, attach the following +      boilerplate notice, with the fields enclosed by brackets "[]" +      replaced with your own identifying information. (Don't include +      the brackets!)  The text should be enclosed in the appropriate +      comment syntax for the file format. We also recommend that a +      file or class name and description of purpose be included on the +      same "printed page" as the copyright notice for easier +      identification within third-party archives. + +   Copyright 2021 Developer's House + +   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. @@ -1,14 +1,14 @@ -# Todo
 -
 -## GitHub
 -
 -- PR and Issue template
 -- Contributing GUIDE
 -
 -### Readme
 -
 -- Features
 -- Explaination of each components
 -- How to use (dev, prod)
 -- Contributing
 +# Todo + +## GitHub + +- PR and Issue template +- Contributing GUIDE + +### Readme + +- Features +- Explaination of each components +- How to use (dev, prod) +- Contributing  - Sponsor?
\ No newline at end of file diff --git a/novactl/cmd/init.go b/novactl/cmd/init.go index ff796c6..07bd6e7 100644 --- a/novactl/cmd/init.go +++ b/novactl/cmd/init.go @@ -1,89 +1,89 @@ -package cmd
 -
 -import (
 -	"fmt"
 -	"io/fs"
 -	"io/ioutil"
 -	"os"
 -	"path/filepath"
 -	"strings"
 -
 -	"github.com/TwinProduction/go-color"
 -	"github.com/go-git/go-git/v5"
 -	"github.com/spf13/cobra"
 -)
 -
 -var (
 -	InitializeCommand = &cobra.Command{
 -		Use:   "init",
 -		Short: "Initialize a newnova based project",
 -		Run:   initNovaRepo,
 -	}
 -)
 -
 -func initNovaRepo(cmd *cobra.Command, args []string) {
 -	url := "https://github.com/libgit2/git2go.git"
 -	path := ""
 -	name := "test"
 -
 -	if name == "" {
 -		fmt.Print(
 -			color.Ize(color.Red, "A name must be specified"),
 -		)
 -		return
 -	}
 -
 -	if path == "" {
 -		path = fmt.Sprintf("./%s", name)
 -	}
 -	cw, err := os.Getwd()
 -	if err != nil {
 -		return
 -	}
 -	path = filepath.Join(cw, path)
 -
 -	fmt.Println(
 -		color.Ize(color.Green, fmt.Sprintf("Initializing a new nova project at %s", path)),
 -	)
 -	fmt.Println(
 -		color.Ize(color.Gray, fmt.Sprintf("Using the %s template", url)),
 -	)
 -
 -	// clone the repo
 -	_, err = git.PlainClone(path, false, &git.CloneOptions{
 -		URL:      url,
 -		Progress: os.Stdout,
 -	})
 -
 -	if err != nil {
 -		fmt.Println(
 -			color.Ize(color.Red, fmt.Sprintf("Failed to initialize the repository: %s", err.Error())),
 -		)
 -		return
 -	}
 -
 -	fmt.Println(
 -		color.Ize(color.Green, "Cloned the repository..."),
 -	)
 -
 -	filepath.WalkDir(path, func(path string, d fs.DirEntry, err error) error {
 -		if d.IsDir() || err != nil {
 -			return nil
 -		}
 -
 -		read, err := ioutil.ReadFile(path)
 -		if err != nil {
 -
 -		}
 -		content := strings.ReplaceAll(string(read), "%PROJECT%", name)
 -
 -		err = ioutil.WriteFile(path, []byte(content), 0)
 -
 -		if err != nil {
 -			return err
 -		}
 -		return nil
 -	})
 -
 -	err = os.RemoveAll(filepath.Join(path, ".git"))
 -}
 +package cmd + +import ( +	"fmt" +	"io/fs" +	"io/ioutil" +	"os" +	"path/filepath" +	"strings" + +	"github.com/TwinProduction/go-color" +	"github.com/go-git/go-git/v5" +	"github.com/spf13/cobra" +) + +var ( +	InitializeCommand = &cobra.Command{ +		Use:   "init", +		Short: "Initialize a newnova based project", +		Run:   initNovaRepo, +	} +) + +func initNovaRepo(cmd *cobra.Command, args []string) { +	url := "https://github.com/libgit2/git2go.git" +	path := "" +	name := "test" + +	if name == "" { +		fmt.Print( +			color.Ize(color.Red, "A name must be specified"), +		) +		return +	} + +	if path == "" { +		path = fmt.Sprintf("./%s", name) +	} +	cw, err := os.Getwd() +	if err != nil { +		return +	} +	path = filepath.Join(cw, path) + +	fmt.Println( +		color.Ize(color.Green, fmt.Sprintf("Initializing a new nova project at %s", path)), +	) +	fmt.Println( +		color.Ize(color.Gray, fmt.Sprintf("Using the %s template", url)), +	) + +	// clone the repo +	_, err = git.PlainClone(path, false, &git.CloneOptions{ +		URL:      url, +		Progress: os.Stdout, +	}) + +	if err != nil { +		fmt.Println( +			color.Ize(color.Red, fmt.Sprintf("Failed to initialize the repository: %s", err.Error())), +		) +		return +	} + +	fmt.Println( +		color.Ize(color.Green, "Cloned the repository..."), +	) + +	filepath.WalkDir(path, func(path string, d fs.DirEntry, err error) error { +		if d.IsDir() || err != nil { +			return nil +		} + +		read, err := ioutil.ReadFile(path) +		if err != nil { + +		} +		content := strings.ReplaceAll(string(read), "%PROJECT%", name) + +		err = ioutil.WriteFile(path, []byte(content), 0) + +		if err != nil { +			return err +		} +		return nil +	}) + +	err = os.RemoveAll(filepath.Join(path, ".git")) +} diff --git a/novactl/lib/vesion.go b/novactl/lib/vesion.go index 2d18ea9..9aba179 100644 --- a/novactl/lib/vesion.go +++ b/novactl/lib/vesion.go @@ -1,5 +1,5 @@ -package lib
 -
 -const (
 -	VERSION = "0.0.1"
 -)
 +package lib + +const ( +	VERSION = "0.0.1" +) diff --git a/novactl/main.go b/novactl/main.go index 7261b68..35ee73d 100644 --- a/novactl/main.go +++ b/novactl/main.go @@ -1,13 +1,13 @@ -package main
 -
 -import (
 -	"github.com/discordnova/nova/novactl/cmd"
 -	"github.com/spf13/cobra"
 -)
 -
 -func main() {
 -	rootCommand := &cobra.Command{Use: "app"}
 -	rootCommand.AddCommand(cmd.VersionCommand)
 -	rootCommand.AddCommand(cmd.InitializeCommand)
 -	rootCommand.Execute()
 -}
 +package main + +import ( +	"github.com/discordnova/nova/novactl/cmd" +	"github.com/spf13/cobra" +) + +func main() { +	rootCommand := &cobra.Command{Use: "app"} +	rootCommand.AddCommand(cmd.VersionCommand) +	rootCommand.AddCommand(cmd.InitializeCommand) +	rootCommand.Execute() +} diff --git a/novalet/BUILD.bazel b/novalet/BUILD.bazel deleted file mode 100644 index ba72f56..0000000 --- a/novalet/BUILD.bazel +++ /dev/null @@ -1,22 +0,0 @@ -load("@io_bazel_rules_go//go:def.bzl", "go_binary", "go_library") -load("@bazel_tools//tools/build_defs/pkg:pkg.bzl", "pkg_tar") - -go_library( -    name = "novalet_lib", -    srcs = ["main.go"], -    importpath = "github.com/discordnova/nova/novalet", -    visibility = ["//visibility:private"], -) - -go_binary( -    name = "novalet", -    embed = [":novalet_lib"], -    visibility = ["//visibility:public"], -) - -pkg_tar( -    name = "novalet_pkg", -    srcs = [":novalet"], -    mode = "0755", -    visibility = ["//visibility:public"], -) diff --git a/novalet/lib/BUILD.bazel b/novalet/lib/BUILD.bazel deleted file mode 100644 index 9655784..0000000 --- a/novalet/lib/BUILD.bazel +++ /dev/null @@ -1,12 +0,0 @@ -load("@io_bazel_rules_go//go:def.bzl", "go_library") - -go_library( -    name = "lib", -    srcs = ["internal_transporter.go"], -    importpath = "github.com/discordnova/nova/novalet/lib", -    visibility = ["//visibility:public"], -    deps = [ -        "//common/gateway", -        "@com_github_rs_zerolog//log", -    ], -) diff --git a/novalet/lib/internal_transporter.go b/novalet/lib/internal_transporter.go deleted file mode 100644 index 87e708e..0000000 --- a/novalet/lib/internal_transporter.go +++ /dev/null @@ -1,37 +0,0 @@ -package lib - -import ( -	"github.com/discordnova/nova/common/gateway" -	"github.com/rs/zerolog/log" -) - -type InternalTransporter struct { -	pullChannel chan []byte -	pushChannel chan gateway.PushData -} - -// NewRabbitMqTransporter creates a rabbitmq transporter using a given url -func NewInternalTransporter() (gateway.Transporter, error) { -	log.Info().Msg("using the memory transporter") - -	pullChannel, pushChannel := make(chan []byte), make(chan gateway.PushData) - -	go func() { -		for { -			// TODO(matthieu): Implement push channel for the internal transporter. -			<-pushChannel -		} -	}() - -	return &InternalTransporter{ -		pullChannel: pullChannel, -		pushChannel: pushChannel, -	}, nil -} - -func (t InternalTransporter) PushChannel() chan gateway.PushData { -	return t.pushChannel -} -func (t InternalTransporter) PullChannel() chan []byte { -	return t.pullChannel -} diff --git a/novalet/lib/nats_standalone.go b/novalet/lib/nats_standalone.go deleted file mode 100644 index ec8c50d..0000000 --- a/novalet/lib/nats_standalone.go +++ /dev/null @@ -1,19 +0,0 @@ -package lib
 -
 -import (
 -	stand "github.com/nats-io/nats-streaming-server/server"
 -)
 -
 -type NatsStandalone struct {
 -	streamingServer *stand.StanServer
 -}
 -
 -func NewNatsStandalone() *NatsStandalone {
 -	server, err := stand.RunServer("standalone_server")
 -	if err != nil {
 -		panic("failed to start the server")
 -	}
 -	return &NatsStandalone{
 -		streamingServer: server,
 -	}
 -}
 diff --git a/novalet/main.go b/novalet/main.go deleted file mode 100644 index b54711d..0000000 --- a/novalet/main.go +++ /dev/null @@ -1,16 +0,0 @@ -package main
 -
 -import (
 -	websocketLib "github.com/discordnova/nova/gateway/lib/gateway"
 -	"github.com/discordnova/nova/novalet/lib"
 -)
 -
 -func main() {
 -	go lib.NewNatsStandalone()
 -	transporter, _ := lib.NewInternalTransporter()
 -	websocket := websocketLib.NewGateway(websocketLib.GatewayConnectorOptions{
 -		Transporter: transporter,
 -	})
 -
 -	go websocket.Start()
 -}
 diff --git a/ratelimiter/proto/nova.ratelimit.v1.proto b/ratelimiter/proto/nova.ratelimit.v1.proto index b9a0d36..5f06392 100644 --- a/ratelimiter/proto/nova.ratelimit.v1.proto +++ b/ratelimiter/proto/nova.ratelimit.v1.proto @@ -1,39 +1,39 @@ -// How does this works ?
 -// Every request, the proxy (envoy) requests the rate-limiting service if
 -// the requested route bucket or global rate-limit is hit.
 -
 -syntax = "proto3";
 -package nova.ratelimit.v1;
 -
 -// The reponse of a RatelimitRequest, it includes the status of the reponse and
 -// the bucket informations.
 -message RatelimitResponse {
 -    enum Status {
 -        OK                  = 0;
 -        RATELIMITED         = 1;
 -        GLOBAL_RATELIMITED  = 2;
 -    }
 -    Status status = 1;
 -    bool   updateAsked = 2;
 -}
 -
 -// Requests the ratelimit status of a route request, it also takes the 
 -// indentifiables of the request in question.
 -message RatelimitRequest {
 -    string          routeName       = 1;
 -    repeated string indentifiables  = 2;
 -}
 -
 -// Used when "updateAsked" is sed to true
 -// this means the bucket is unknown to the ratelimit server.
 -message CreateBucketData {
 -    RatelimitRequest request    = 1;
 -    int32 limit                 = 2;
 -    int32 remaining             = 3;
 -    int32 reset                 = 4;
 -}
 -
 -service RatelimitService {
 -    rpc GetRatelimitStatus (RatelimitRequest)   returns (RatelimitResponse);
 -    rpc CreateBucket       (CreateBucketData)   returns (CreateBucketData);
 +// How does this works ? +// Every request, the proxy (envoy) requests the rate-limiting service if +// the requested route bucket or global rate-limit is hit. + +syntax = "proto3"; +package nova.ratelimit.v1; + +// The reponse of a RatelimitRequest, it includes the status of the reponse and +// the bucket informations. +message RatelimitResponse { +    enum Status { +        OK                  = 0; +        RATELIMITED         = 1; +        GLOBAL_RATELIMITED  = 2; +    } +    Status status = 1; +    bool   updateAsked = 2; +} + +// Requests the ratelimit status of a route request, it also takes the  +// indentifiables of the request in question. +message RatelimitRequest { +    string          routeName       = 1; +    repeated string indentifiables  = 2; +} + +// Used when "updateAsked" is sed to true +// this means the bucket is unknown to the ratelimit server. +message CreateBucketData { +    RatelimitRequest request    = 1; +    int32 limit                 = 2; +    int32 remaining             = 3; +    int32 reset                 = 4; +} + +service RatelimitService { +    rpc GetRatelimitStatus (RatelimitRequest)   returns (RatelimitResponse); +    rpc CreateBucket       (CreateBucketData)   returns (CreateBucketData);  }
\ No newline at end of file  | 
