Initial commit
There is nothing here yet, just boilerplate code -_-
This commit is contained in:
commit
0041771955
17
.bazelrc
Normal file
17
.bazelrc
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
# SPDX-FileCopyrightText: 2023 Hoang Nguyen <folliekazetani@protonmail.com>
|
||||||
|
#
|
||||||
|
# SPDX-License-Identifier: CC0-1.0
|
||||||
|
|
||||||
|
# TODO: remove this once Bazel 7 is released
|
||||||
|
common --enable_bzlmod
|
||||||
|
|
||||||
|
# Use these by passing `--config=ci` to Bazel's command argument
|
||||||
|
common:ci --color=no
|
||||||
|
common:ci --show_timestamps
|
||||||
|
common:ci --noshow_progress --noshow_loading_progress
|
||||||
|
build:ci --verbose_failures
|
||||||
|
build:ci --sandbox_debug
|
||||||
|
test:ci --test_output=errors
|
||||||
|
|
||||||
|
# Private configuration
|
||||||
|
try-import %workspace%/.bazelrc.local
|
5
.bazelversion
Normal file
5
.bazelversion
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
# SPDX-FileCopyrightText: 2023 Hoang Nguyen <folliekazetani@protonmail.com>
|
||||||
|
#
|
||||||
|
# SPDX-License-Identifier: CC0-1.0
|
||||||
|
|
||||||
|
6.4.0
|
20
.editorconfig
Normal file
20
.editorconfig
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
# SPDX-FileCopyrightText: 2023 Hoang Nguyen <folliekazetani@protonmail.com>
|
||||||
|
#
|
||||||
|
# SPDX-License-Identifier: CC0-1.0
|
||||||
|
|
||||||
|
root = true
|
||||||
|
|
||||||
|
[*]
|
||||||
|
tab_width = 2
|
||||||
|
indent_size = 2
|
||||||
|
indent_style = space
|
||||||
|
charset = utf-8
|
||||||
|
end_of_line = lf
|
||||||
|
insert_final_newline = true
|
||||||
|
trim_trailing_whitespace = true
|
||||||
|
|
||||||
|
[{*.go,*.cue,*.sh}]
|
||||||
|
indent_style = tab
|
||||||
|
|
||||||
|
[*.bazel]
|
||||||
|
indent_size = 4
|
10
.gitignore
vendored
Normal file
10
.gitignore
vendored
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
# SPDX-FileCopyrightText: 2023 Hoang Nguyen <folliekazetani@protonmail.com>
|
||||||
|
#
|
||||||
|
# SPDX-License-Identifier: CC0-1.0
|
||||||
|
|
||||||
|
# Bazel's result symlinks
|
||||||
|
/bazel-*
|
||||||
|
/.bazelrc.local
|
||||||
|
|
||||||
|
# Nix's output
|
||||||
|
/result
|
60
.golangci.toml
Normal file
60
.golangci.toml
Normal file
|
@ -0,0 +1,60 @@
|
||||||
|
# SPDX-FileCopyrightText: 2023 Hoang Nguyen <folliekazetani@protonmail.com>
|
||||||
|
#
|
||||||
|
# SPDX-License-Identifier: CC0-1.0
|
||||||
|
|
||||||
|
[linters]
|
||||||
|
disable-all = true
|
||||||
|
enable = [
|
||||||
|
"bodyclose",
|
||||||
|
"dogsled",
|
||||||
|
"dupl",
|
||||||
|
"errcheck",
|
||||||
|
"exhaustive",
|
||||||
|
"exportloopref",
|
||||||
|
"funlen",
|
||||||
|
"goconst",
|
||||||
|
"gofumpt",
|
||||||
|
"goimports",
|
||||||
|
"gomnd",
|
||||||
|
"goprintffuncname",
|
||||||
|
"gosec",
|
||||||
|
"gosimple",
|
||||||
|
"govet",
|
||||||
|
"ineffassign",
|
||||||
|
"lll",
|
||||||
|
"misspell",
|
||||||
|
"nakedret",
|
||||||
|
"noctx",
|
||||||
|
"nolintlint",
|
||||||
|
"revive",
|
||||||
|
"staticcheck",
|
||||||
|
"stylecheck",
|
||||||
|
"typecheck",
|
||||||
|
"unconvert",
|
||||||
|
"unparam",
|
||||||
|
"unused",
|
||||||
|
"whitespace",
|
||||||
|
]
|
||||||
|
|
||||||
|
[linters-settings]
|
||||||
|
[linters-settings.errcheck]
|
||||||
|
check-type-assertions = true
|
||||||
|
[linters-settings.funlen]
|
||||||
|
lines = 100
|
||||||
|
statements = 50
|
||||||
|
[linters-settings.gofumpt]
|
||||||
|
extra-rules = true
|
||||||
|
[linters-settings.goimports]
|
||||||
|
local-prefixes = "gitlab.com/FollieHiyuki/cuelumi"
|
||||||
|
[linters-settings.govet]
|
||||||
|
check-shadowing = true
|
||||||
|
[linters-settings.misspell]
|
||||||
|
locale = "US"
|
||||||
|
[linters-settings.nolintlint]
|
||||||
|
require-explanation = true
|
||||||
|
|
||||||
|
[output]
|
||||||
|
sort-results = true
|
||||||
|
|
||||||
|
[run]
|
||||||
|
timeout = "15m"
|
15
.neoconf.json
Normal file
15
.neoconf.json
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
{
|
||||||
|
"lspconfig": {
|
||||||
|
"gopls": {
|
||||||
|
"gopls.env": {
|
||||||
|
"GOPACKAGESDRIVER": "./tools/gopackagesdriver.sh"
|
||||||
|
},
|
||||||
|
"gopls.directoryFilters": [
|
||||||
|
"-bazel-bin",
|
||||||
|
"-bazel-out",
|
||||||
|
"-bazel-testlogs",
|
||||||
|
"-bazel-cuelumi"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
3
.neoconf.json.license
Normal file
3
.neoconf.json.license
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
SPDX-FileCopyrightText: 2023 Hoang Nguyen <folliekazetani@protonmail.com>
|
||||||
|
|
||||||
|
SPDX-License-Identifier: CC0-1.0
|
8
BUILD.bazel
Normal file
8
BUILD.bazel
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
# SPDX-FileCopyrightText: 2023 Hoang Nguyen <folliekazetani@protonmail.com>
|
||||||
|
#
|
||||||
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
|
|
||||||
|
load("@gazelle//:def.bzl", "gazelle")
|
||||||
|
|
||||||
|
# gazelle:prefix gitlab.com/FollieHiyuki/cuelumi
|
||||||
|
gazelle(name = "gazelle")
|
201
LICENSES/Apache-2.0.txt
Normal file
201
LICENSES/Apache-2.0.txt
Normal file
|
@ -0,0 +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 [yyyy] [name of copyright owner]
|
||||||
|
|
||||||
|
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.
|
121
LICENSES/CC0-1.0.txt
Normal file
121
LICENSES/CC0-1.0.txt
Normal file
|
@ -0,0 +1,121 @@
|
||||||
|
Creative Commons Legal Code
|
||||||
|
|
||||||
|
CC0 1.0 Universal
|
||||||
|
|
||||||
|
CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE
|
||||||
|
LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN
|
||||||
|
ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS
|
||||||
|
INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES
|
||||||
|
REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS
|
||||||
|
PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM
|
||||||
|
THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED
|
||||||
|
HEREUNDER.
|
||||||
|
|
||||||
|
Statement of Purpose
|
||||||
|
|
||||||
|
The laws of most jurisdictions throughout the world automatically confer
|
||||||
|
exclusive Copyright and Related Rights (defined below) upon the creator
|
||||||
|
and subsequent owner(s) (each and all, an "owner") of an original work of
|
||||||
|
authorship and/or a database (each, a "Work").
|
||||||
|
|
||||||
|
Certain owners wish to permanently relinquish those rights to a Work for
|
||||||
|
the purpose of contributing to a commons of creative, cultural and
|
||||||
|
scientific works ("Commons") that the public can reliably and without fear
|
||||||
|
of later claims of infringement build upon, modify, incorporate in other
|
||||||
|
works, reuse and redistribute as freely as possible in any form whatsoever
|
||||||
|
and for any purposes, including without limitation commercial purposes.
|
||||||
|
These owners may contribute to the Commons to promote the ideal of a free
|
||||||
|
culture and the further production of creative, cultural and scientific
|
||||||
|
works, or to gain reputation or greater distribution for their Work in
|
||||||
|
part through the use and efforts of others.
|
||||||
|
|
||||||
|
For these and/or other purposes and motivations, and without any
|
||||||
|
expectation of additional consideration or compensation, the person
|
||||||
|
associating CC0 with a Work (the "Affirmer"), to the extent that he or she
|
||||||
|
is an owner of Copyright and Related Rights in the Work, voluntarily
|
||||||
|
elects to apply CC0 to the Work and publicly distribute the Work under its
|
||||||
|
terms, with knowledge of his or her Copyright and Related Rights in the
|
||||||
|
Work and the meaning and intended legal effect of CC0 on those rights.
|
||||||
|
|
||||||
|
1. Copyright and Related Rights. A Work made available under CC0 may be
|
||||||
|
protected by copyright and related or neighboring rights ("Copyright and
|
||||||
|
Related Rights"). Copyright and Related Rights include, but are not
|
||||||
|
limited to, the following:
|
||||||
|
|
||||||
|
i. the right to reproduce, adapt, distribute, perform, display,
|
||||||
|
communicate, and translate a Work;
|
||||||
|
ii. moral rights retained by the original author(s) and/or performer(s);
|
||||||
|
iii. publicity and privacy rights pertaining to a person's image or
|
||||||
|
likeness depicted in a Work;
|
||||||
|
iv. rights protecting against unfair competition in regards to a Work,
|
||||||
|
subject to the limitations in paragraph 4(a), below;
|
||||||
|
v. rights protecting the extraction, dissemination, use and reuse of data
|
||||||
|
in a Work;
|
||||||
|
vi. database rights (such as those arising under Directive 96/9/EC of the
|
||||||
|
European Parliament and of the Council of 11 March 1996 on the legal
|
||||||
|
protection of databases, and under any national implementation
|
||||||
|
thereof, including any amended or successor version of such
|
||||||
|
directive); and
|
||||||
|
vii. other similar, equivalent or corresponding rights throughout the
|
||||||
|
world based on applicable law or treaty, and any national
|
||||||
|
implementations thereof.
|
||||||
|
|
||||||
|
2. Waiver. To the greatest extent permitted by, but not in contravention
|
||||||
|
of, applicable law, Affirmer hereby overtly, fully, permanently,
|
||||||
|
irrevocably and unconditionally waives, abandons, and surrenders all of
|
||||||
|
Affirmer's Copyright and Related Rights and associated claims and causes
|
||||||
|
of action, whether now known or unknown (including existing as well as
|
||||||
|
future claims and causes of action), in the Work (i) in all territories
|
||||||
|
worldwide, (ii) for the maximum duration provided by applicable law or
|
||||||
|
treaty (including future time extensions), (iii) in any current or future
|
||||||
|
medium and for any number of copies, and (iv) for any purpose whatsoever,
|
||||||
|
including without limitation commercial, advertising or promotional
|
||||||
|
purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each
|
||||||
|
member of the public at large and to the detriment of Affirmer's heirs and
|
||||||
|
successors, fully intending that such Waiver shall not be subject to
|
||||||
|
revocation, rescission, cancellation, termination, or any other legal or
|
||||||
|
equitable action to disrupt the quiet enjoyment of the Work by the public
|
||||||
|
as contemplated by Affirmer's express Statement of Purpose.
|
||||||
|
|
||||||
|
3. Public License Fallback. Should any part of the Waiver for any reason
|
||||||
|
be judged legally invalid or ineffective under applicable law, then the
|
||||||
|
Waiver shall be preserved to the maximum extent permitted taking into
|
||||||
|
account Affirmer's express Statement of Purpose. In addition, to the
|
||||||
|
extent the Waiver is so judged Affirmer hereby grants to each affected
|
||||||
|
person a royalty-free, non transferable, non sublicensable, non exclusive,
|
||||||
|
irrevocable and unconditional license to exercise Affirmer's Copyright and
|
||||||
|
Related Rights in the Work (i) in all territories worldwide, (ii) for the
|
||||||
|
maximum duration provided by applicable law or treaty (including future
|
||||||
|
time extensions), (iii) in any current or future medium and for any number
|
||||||
|
of copies, and (iv) for any purpose whatsoever, including without
|
||||||
|
limitation commercial, advertising or promotional purposes (the
|
||||||
|
"License"). The License shall be deemed effective as of the date CC0 was
|
||||||
|
applied by Affirmer to the Work. Should any part of the License for any
|
||||||
|
reason be judged legally invalid or ineffective under applicable law, such
|
||||||
|
partial invalidity or ineffectiveness shall not invalidate the remainder
|
||||||
|
of the License, and in such case Affirmer hereby affirms that he or she
|
||||||
|
will not (i) exercise any of his or her remaining Copyright and Related
|
||||||
|
Rights in the Work or (ii) assert any associated claims and causes of
|
||||||
|
action with respect to the Work, in either case contrary to Affirmer's
|
||||||
|
express Statement of Purpose.
|
||||||
|
|
||||||
|
4. Limitations and Disclaimers.
|
||||||
|
|
||||||
|
a. No trademark or patent rights held by Affirmer are waived, abandoned,
|
||||||
|
surrendered, licensed or otherwise affected by this document.
|
||||||
|
b. Affirmer offers the Work as-is and makes no representations or
|
||||||
|
warranties of any kind concerning the Work, express, implied,
|
||||||
|
statutory or otherwise, including without limitation warranties of
|
||||||
|
title, merchantability, fitness for a particular purpose, non
|
||||||
|
infringement, or the absence of latent or other defects, accuracy, or
|
||||||
|
the present or absence of errors, whether or not discoverable, all to
|
||||||
|
the greatest extent permissible under applicable law.
|
||||||
|
c. Affirmer disclaims responsibility for clearing rights of other persons
|
||||||
|
that may apply to the Work or any use thereof, including without
|
||||||
|
limitation any person's Copyright and Related Rights in the Work.
|
||||||
|
Further, Affirmer disclaims responsibility for obtaining any necessary
|
||||||
|
consents, permissions or other rights required for any use of the
|
||||||
|
Work.
|
||||||
|
d. Affirmer understands and acknowledges that Creative Commons is not a
|
||||||
|
party to this document and has no duty or obligation with respect to
|
||||||
|
this CC0 or use of the Work.
|
39
MODULE.bazel
Normal file
39
MODULE.bazel
Normal file
|
@ -0,0 +1,39 @@
|
||||||
|
# SPDX-FileCopyrightText: 2023 Hoang Nguyen <folliekazetani@protonmail.com>
|
||||||
|
#
|
||||||
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
|
|
||||||
|
module(
|
||||||
|
name = "cuelumi",
|
||||||
|
version = "0.0.0",
|
||||||
|
)
|
||||||
|
|
||||||
|
# TODO: enable when `rules_nixpkgs_go` is published and stablized (https://github.com/tweag/rules_nixpkgs/issues/181)
|
||||||
|
# bazel_dep(name = "rules_nixpkgs_core", version = "0.10.0")
|
||||||
|
#
|
||||||
|
# nix_repo = use_extension("@rules_nixpkgs_core//extentions:repository.bzl", "nix_repo")
|
||||||
|
# nix_repo.file(
|
||||||
|
# name = "nixpkgs",
|
||||||
|
# file = "//:nixpkgs.nix",
|
||||||
|
# file_deps = ["//:flake.lock"],
|
||||||
|
# )
|
||||||
|
# use_repo(nix_repo, "nixpkgs")
|
||||||
|
|
||||||
|
# TODO: enable `nogo` linters (doesn't support bzlmod yet)
|
||||||
|
# Ref: https://github.com/bazelbuild/rules_go/issues/3529
|
||||||
|
bazel_dep(name = "rules_go", version = "0.43.0")
|
||||||
|
|
||||||
|
# FIXME: temporarily use the Go SDK from host, until we have rules_nixpkgs_go
|
||||||
|
go_sdk = use_extension("@rules_go//go:extensions.bzl", "go_sdk")
|
||||||
|
go_sdk.host()
|
||||||
|
|
||||||
|
bazel_dep(name = "gazelle", version = "0.34.0")
|
||||||
|
|
||||||
|
go_deps = use_extension("@gazelle//:extensions.bzl", "go_deps")
|
||||||
|
go_deps.from_file(go_mod = "//:go.mod")
|
||||||
|
use_repo(go_deps)
|
||||||
|
|
||||||
|
# Expose the generated CUE files as Bazel inputs, so other modules can use them
|
||||||
|
bazel_dep(name = "rules_cue", version = "0.4.2")
|
||||||
|
|
||||||
|
cue = use_extension("@rules_cue//cue:extensions.bzl", "cue")
|
||||||
|
cue.download(version = "v0.6.0")
|
32
README.adoc
Normal file
32
README.adoc
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
// SPDX-FileCopyrightText: 2023 Hoang Nguyen <folliekazetani@protonmail.com>
|
||||||
|
//
|
||||||
|
// SPDX-License-Identifier: Apache-2.0
|
||||||
|
|
||||||
|
= Cuelumi
|
||||||
|
|
||||||
|
This project generates CUE schemas for Pulumi providers, based on `+schema.json+` files published with their source code. These CUE schema files are intended to be used with https://github.com/pulumi/pulumi-yaml[Pulumi's YAML language provider], when one wants to write resource definitions using CUE instead of YAML.
|
||||||
|
|
||||||
|
See link:./examples[examples/] directory for some use cases.
|
||||||
|
|
||||||
|
== Providers
|
||||||
|
|
||||||
|
Except link:./providers/pulumi[`+pulumi+`] package, which implements base schema for `+Pulumi.yaml+` file, all CUE packages inside link:./providers[providers/] directory are auto-generated. See link:./tools/pulumi-schemas/providers.toml[providers.toml] file for the full list of providers and their JSON schema sources.
|
||||||
|
|
||||||
|
== Reference
|
||||||
|
|
||||||
|
* https://www.pulumi.com/docs/languages-sdks/yaml/yaml-language-reference/[Pulumi's YAML specs]
|
||||||
|
* https://www.pulumi.com/docs/using-pulumi/pulumi-packages/schema/#pulumi-package-schema[Pulumi's package schema]
|
||||||
|
|
||||||
|
== Credits
|
||||||
|
|
||||||
|
Existing projects, which inspires me to create this one:
|
||||||
|
|
||||||
|
* https://github.com/tweag/tf-ncl[tf-ncl]
|
||||||
|
* https://github.com/tnarg/cue_terraform[cue_terraform]
|
||||||
|
|
||||||
|
== Roadmap
|
||||||
|
|
||||||
|
Things to implement (yeah, there are a lot \^-\^)
|
||||||
|
|
||||||
|
* [ ] Use https://github.com/tweag/rules_nixpkgs[rules_nixpkgs]
|
||||||
|
* [ ] Ditch `+go.mod+` file and `+golangci-lint+` (solely rely on `+nogo+` and GOPACKAGEDIRVER)
|
10
cue.mod/BUILD.bazel
Normal file
10
cue.mod/BUILD.bazel
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
# SPDX-FileCopyrightText: 2023 Hoang Nguyen <folliekazetani@protonmail.com>
|
||||||
|
#
|
||||||
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
|
|
||||||
|
load("@rules_cue//cue:cue.bzl", "cue_module")
|
||||||
|
|
||||||
|
cue_module(
|
||||||
|
name = "cuelumi",
|
||||||
|
visibility = ["//visibility:public"],
|
||||||
|
)
|
5
cue.mod/module.cue
Normal file
5
cue.mod/module.cue
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
// SPDX-FileCopyrightText: 2023 Hoang Nguyen <folliekazetani@protonmail.com>
|
||||||
|
//
|
||||||
|
// SPDX-License-Identifier: Apache-2.0
|
||||||
|
|
||||||
|
module: "gitlab.com/FollieHiyuki/cuelumi"
|
18
examples/time/BUILD.bazel
Normal file
18
examples/time/BUILD.bazel
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
# SPDX-FileCopyrightText: 2023 Hoang Nguyen <folliekazetani@protonmail.com>
|
||||||
|
#
|
||||||
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
|
|
||||||
|
load("@rules_cue//cue:cue.bzl", "cue_consolidated_files")
|
||||||
|
|
||||||
|
# This target creates a Pulumi.yaml file suitable for pulumi CLI to use
|
||||||
|
cue_consolidated_files(
|
||||||
|
name = "Pulumi",
|
||||||
|
srcs = [
|
||||||
|
"main.cue",
|
||||||
|
],
|
||||||
|
module = "//cue.mod:cuelumi",
|
||||||
|
output_format = "yaml",
|
||||||
|
deps = [
|
||||||
|
"//providers/pulumi",
|
||||||
|
],
|
||||||
|
)
|
15
examples/time/main.cue
Normal file
15
examples/time/main.cue
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
// SPDX-FileCopyrightText: 2023 Hoang Nguyen <folliekazetani@protonmail.com>
|
||||||
|
//
|
||||||
|
// SPDX-License-Identifier: Apache-2.0
|
||||||
|
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"gitlab.com/FollieHiyuki/cuelumi/providers/pulumi"
|
||||||
|
)
|
||||||
|
|
||||||
|
name: pulumi.#Name & "cuelumi-examples"
|
||||||
|
|
||||||
|
runtime: pulumi.#Runtime & "yaml"
|
||||||
|
|
||||||
|
description: pulumi.#Description & "Example Pulumi project using CUE"
|
99
flake.lock
Normal file
99
flake.lock
Normal file
|
@ -0,0 +1,99 @@
|
||||||
|
{
|
||||||
|
"nodes": {
|
||||||
|
"flake-compat": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1696426674,
|
||||||
|
"narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
|
||||||
|
"owner": "edolstra",
|
||||||
|
"repo": "flake-compat",
|
||||||
|
"rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "edolstra",
|
||||||
|
"repo": "flake-compat",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flake-utils": {
|
||||||
|
"inputs": {
|
||||||
|
"systems": "systems"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1701680307,
|
||||||
|
"narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=",
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"rev": "4022d587cbbfd70fe950c1e2083a02621806a725",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1701718080,
|
||||||
|
"narHash": "sha256-6ovz0pG76dE0P170pmmZex1wWcQoeiomUZGggfH9XPs=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "2c7f3c0fb7c08a0814627611d9d7d45ab6d75335",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "nixos-unstable",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-compat": "flake-compat",
|
||||||
|
"flake-utils": "flake-utils",
|
||||||
|
"nixpkgs": "nixpkgs",
|
||||||
|
"treefmt-nix": "treefmt-nix"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"systems": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1681028828,
|
||||||
|
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"treefmt-nix": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1701958734,
|
||||||
|
"narHash": "sha256-3h3EH1FXQkIeAuzaWB+nK0XK54uSD46pp+dMD3gAcB4=",
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "treefmt-nix",
|
||||||
|
"rev": "e8cea581dd2b7c9998c1e6662db2c1dc30e7fdb0",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "treefmt-nix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": "root",
|
||||||
|
"version": 7
|
||||||
|
}
|
3
flake.lock.license
Normal file
3
flake.lock.license
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
SPDX-FileCopyrightText: 2023 Hoang Nguyen <folliekazetani@protonmail.com>
|
||||||
|
|
||||||
|
SPDX-License-Identifier: CC0-1.0
|
70
flake.nix
Normal file
70
flake.nix
Normal file
|
@ -0,0 +1,70 @@
|
||||||
|
# SPDX-FileCopyrightText: 2023 Hoang Nguyen <folliekazetani@protonmail.com>
|
||||||
|
#
|
||||||
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
|
|
||||||
|
{
|
||||||
|
inputs = {
|
||||||
|
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
||||||
|
flake-utils.url = "github:numtide/flake-utils";
|
||||||
|
|
||||||
|
treefmt-nix = {
|
||||||
|
url = "github:numtide/treefmt-nix";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
|
||||||
|
flake-compat = {
|
||||||
|
url = "github:edolstra/flake-compat";
|
||||||
|
flake = false;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
outputs = { self, nixpkgs, flake-utils, treefmt-nix, ... }:
|
||||||
|
flake-utils.lib.eachDefaultSystem
|
||||||
|
(system:
|
||||||
|
let
|
||||||
|
inherit (nixpkgs) lib;
|
||||||
|
pkgs = import nixpkgs { inherit system; };
|
||||||
|
|
||||||
|
treefmtEval = treefmt-nix.lib.evalModule pkgs ./treefmt.nix;
|
||||||
|
|
||||||
|
apps = {
|
||||||
|
# Wrap bazel with `nix run .#bazel`, for convenience
|
||||||
|
inherit (pkgs) bazel;
|
||||||
|
|
||||||
|
# Run `go mod tidy` then update BUILD.bazel files
|
||||||
|
gazelle = let bazel = "${pkgs.bazel}/bin/bazel"; in
|
||||||
|
pkgs.writeShellScriptBin "gazelle-update" ''
|
||||||
|
${bazel} run @rules_go//go -- mod tidy -v
|
||||||
|
${bazel} run //:gazelle
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
in
|
||||||
|
{
|
||||||
|
apps = lib.mapAttrs
|
||||||
|
(_: value:
|
||||||
|
flake-utils.lib.mkApp { drv = value; })
|
||||||
|
apps;
|
||||||
|
|
||||||
|
formatter = treefmtEval.config.build.wrapper;
|
||||||
|
|
||||||
|
checks = {
|
||||||
|
treefmt = treefmtEval.config.build.check self;
|
||||||
|
license = pkgs.writeShellScriptBin "reuse-lint" ''
|
||||||
|
${pkgs.reuse}/bin/reuse lint
|
||||||
|
'';
|
||||||
|
golangci-lint = with pkgs; writeShellApplication {
|
||||||
|
name = "golangci-lint";
|
||||||
|
runtimeInputs = [ go ];
|
||||||
|
text = ''
|
||||||
|
${golangci-lint}/bin/golangci-lint run
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
devShells.default = with pkgs; mkShellNoCC {
|
||||||
|
name = "cuelumi-dev-shell";
|
||||||
|
inputsFrom = [ treefmtEval.config.build.devShell ];
|
||||||
|
packages = [ bazel ];
|
||||||
|
};
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
7
go.mod
Normal file
7
go.mod
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
// SPDX-FileCopyrightText: 2023 Hoang Nguyen <folliekazetani@protonmail.com>
|
||||||
|
//
|
||||||
|
// SPDX-License-Identifier: CC0-1.0
|
||||||
|
|
||||||
|
module gitlab.com/FollieHiyuki/cuelumi
|
||||||
|
|
||||||
|
go 1.21.5
|
16
nixpkgs.nix
Normal file
16
nixpkgs.nix
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
# SPDX-FileCopyrightText: 2023 Hoang Nguyen <folliekazetani@protonmail.com>
|
||||||
|
#
|
||||||
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
|
|
||||||
|
# NOTE: this file is used solely to register <nixpkgs> into `rules_nixpkgs`
|
||||||
|
let
|
||||||
|
lock = builtins.fromJSON (builtins.readFile ./flake.lock);
|
||||||
|
src = lock.nodes.nixpkgs.locked;
|
||||||
|
nixpkgs =
|
||||||
|
assert src.type == "github";
|
||||||
|
fetchTarball {
|
||||||
|
url = "https://github.com/${src.owner}/${src.repo}/archive/${src.rev}.tar.gz";
|
||||||
|
sha256 = src.narHash;
|
||||||
|
};
|
||||||
|
in
|
||||||
|
import nixpkgs
|
14
providers/pulumi/BUILD.bazel
Normal file
14
providers/pulumi/BUILD.bazel
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
# SPDX-FileCopyrightText: 2023 Hoang Nguyen <folliekazetani@protonmail.com>
|
||||||
|
#
|
||||||
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
|
|
||||||
|
load("@rules_cue//cue:cue.bzl", "cue_instance")
|
||||||
|
|
||||||
|
cue_instance(
|
||||||
|
name = "pulumi",
|
||||||
|
srcs = [
|
||||||
|
"main.cue",
|
||||||
|
],
|
||||||
|
ancestor = "//cue.mod:cuelumi",
|
||||||
|
visibility = ["//visibility:public"],
|
||||||
|
)
|
14
providers/pulumi/main.cue
Normal file
14
providers/pulumi/main.cue
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
// SPDX-FileCopyrightText: 2023 Hoang Nguyen <folliekazetani@protonmail.com>
|
||||||
|
//
|
||||||
|
// SPDX-License-Identifier: Apache-2.0
|
||||||
|
|
||||||
|
// This package implements schema for the base Pulumi.yaml file.
|
||||||
|
// It extends https://github.com/SchemaStore/schemastore/blob/master/src/schemas/json/pulumi.json with support for pulumi-yaml definitions.
|
||||||
|
// Ref: https://www.pulumi.com/docs/languages-sdks/yaml/yaml-language-reference/
|
||||||
|
package pulumi
|
||||||
|
|
||||||
|
#Name: string
|
||||||
|
|
||||||
|
#Runtime: string
|
||||||
|
|
||||||
|
#Description: string
|
16
shell.nix
Normal file
16
shell.nix
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
# SPDX-FileCopyrightText: 2023 Hoang Nguyen <folliekazetani@protonmail.com>
|
||||||
|
#
|
||||||
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
|
|
||||||
|
let
|
||||||
|
lock = builtins.fromJSON (builtins.readFile ./flake.lock);
|
||||||
|
src = lock.nodes.flake-compat.locked;
|
||||||
|
|
||||||
|
flake-compat =
|
||||||
|
assert src.type == "github";
|
||||||
|
fetchTarball {
|
||||||
|
url = "https://github.com/${src.owner}/${src.repo}/archive/${src.rev}.tar.gz";
|
||||||
|
sha256 = src.narHash;
|
||||||
|
};
|
||||||
|
in
|
||||||
|
(import flake-compat { src = ./.; }).shellNix
|
18
tools/cue-pulumi-gen/BUILD.bazel
Normal file
18
tools/cue-pulumi-gen/BUILD.bazel
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
# SPDX-FileCopyrightText: 2023 Hoang Nguyen <folliekazetani@protonmail.com>
|
||||||
|
#
|
||||||
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
|
|
||||||
|
load("@rules_go//go:def.bzl", "go_binary", "go_library")
|
||||||
|
|
||||||
|
go_library(
|
||||||
|
name = "cue-pulumi-gen_lib",
|
||||||
|
srcs = ["main.go"],
|
||||||
|
importpath = "gitlab.com/FollieHiyuki/cuelumi/tools/cue-pulumi-gen",
|
||||||
|
visibility = ["//visibility:private"],
|
||||||
|
)
|
||||||
|
|
||||||
|
go_binary(
|
||||||
|
name = "cue-pulumi-gen",
|
||||||
|
embed = [":cue-pulumi-gen_lib"],
|
||||||
|
visibility = ["//visibility:public"],
|
||||||
|
)
|
13
tools/cue-pulumi-gen/main.go
Normal file
13
tools/cue-pulumi-gen/main.go
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
/*
|
||||||
|
* SPDX-FileCopyrightText: 2023 Hoang Nguyen <folliekazetani@protonmail.com>
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
package main
|
||||||
|
|
||||||
|
import "fmt"
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
fmt.Println("Hello")
|
||||||
|
}
|
8
tools/gopackagesdriver.sh
Executable file
8
tools/gopackagesdriver.sh
Executable file
|
@ -0,0 +1,8 @@
|
||||||
|
#!/usr/bin/env nix
|
||||||
|
#! nix shell nixpkgs#bash nixpkgs#bazel --command bash
|
||||||
|
|
||||||
|
# SPDX-FileCopyrightText: 2023 Hoang Nguyen <folliekazetani@protonmail.com>
|
||||||
|
#
|
||||||
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
|
|
||||||
|
exec bazel run -- @rules_go//go/tools/gopackagesdriver "$@"
|
18
tools/pulumi-schemas/BUILD.bazel
Normal file
18
tools/pulumi-schemas/BUILD.bazel
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
# SPDX-FileCopyrightText: 2023 Hoang Nguyen <folliekazetani@protonmail.com>
|
||||||
|
#
|
||||||
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
|
|
||||||
|
load("@rules_go//go:def.bzl", "go_binary", "go_library")
|
||||||
|
|
||||||
|
go_library(
|
||||||
|
name = "pulumi-schemas_lib",
|
||||||
|
srcs = ["main.go"],
|
||||||
|
importpath = "gitlab.com/FollieHiyuki/cuelumi/tools/pulumi-schemas",
|
||||||
|
visibility = ["//visibility:private"],
|
||||||
|
)
|
||||||
|
|
||||||
|
go_binary(
|
||||||
|
name = "pulumi-schemas",
|
||||||
|
embed = [":pulumi-schemas_lib"],
|
||||||
|
visibility = ["//visibility:public"],
|
||||||
|
)
|
13
tools/pulumi-schemas/main.go
Normal file
13
tools/pulumi-schemas/main.go
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
/*
|
||||||
|
* SPDX-FileCopyrightText: 2023 Hoang Nguyen <folliekazetani@protonmail.com>
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
package main
|
||||||
|
|
||||||
|
import "fmt"
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
fmt.Println("Hello")
|
||||||
|
}
|
4
tools/pulumi-schemas/providers.toml
Normal file
4
tools/pulumi-schemas/providers.toml
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
# SPDX-FileCopyrightText: 2023 Hoang Nguyen <folliekazetani@protonmail.com>
|
||||||
|
#
|
||||||
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
|
|
22
treefmt.nix
Normal file
22
treefmt.nix
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
# SPDX-FileCopyrightText: 2023 Hoang Nguyen <folliekazetani@protonmail.com>
|
||||||
|
#
|
||||||
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
|
|
||||||
|
_: {
|
||||||
|
projectRootFile = "flake.lock";
|
||||||
|
|
||||||
|
programs = builtins.listToAttrs (
|
||||||
|
builtins.map
|
||||||
|
(x: {
|
||||||
|
name = x;
|
||||||
|
value.enable = true;
|
||||||
|
})
|
||||||
|
[
|
||||||
|
"buildifier"
|
||||||
|
# "cue" # https://github.com/cue-lang/cue/issues/2523
|
||||||
|
"gofumpt"
|
||||||
|
"nixpkgs-fmt"
|
||||||
|
"statix"
|
||||||
|
]
|
||||||
|
);
|
||||||
|
}
|
Loading…
Reference in a new issue