You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/about/roadmap.md
+4-2Lines changed: 4 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,12 +1,14 @@
1
1
# Roadmap & release history
2
2
3
-
What we're planning to do. Only includes minor and major releases, patch releases only fix errors, meaning they aren't planned, as our plan and hope is to write errorless code (which we'll never do, but we'll try our best to get as close as possible to that).
3
+
What we're planning to do. Only includes minor and major releases, patch releases only fix errors, meaning they aren't really planned, as our plan and hope is to write errorless code (which we'll never do, but we'll try our best to get as close as possible to that).
4
4
5
5
We'll expand (and rarely, but not impossibly, shrink) this roadmap as we make progress and/or change our plans.
6
6
7
7
This page also lists all minor and major releases since 2.X. Patches aren't listed, and most bugfixes aren't included (as we don't "plan" to fix bugs).
8
8
9
-
## 5.X (Upcoming)
9
+
**Patch releases are made on a weekly basis, and feature releases are made on a monthly basis.** You can check more info in [our release schedule document here](https://github.com/FuckingNode/FuckingNode/blob/master/RELEASE_SCHEDULE.md).
10
+
11
+
## 5.X (Released)
10
12
11
13
-[x] Improve `setup`.
12
14
-[x] Add more setups (LICENSEs, gitignores, etc...).
Copy file name to clipboardExpand all lines: docs/learn/errors.md
+44-33Lines changed: 44 additions & 33 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,21 +1,21 @@
1
1
# Error codes
2
2
3
-
Maybe you want to make a tool that automates our automation tool, or maybe you're just too lazy to read the error message. However, most (if not all) possible exceptions that abort execution are called "FknErrors" (internal name, shown to you), and include a readable, identifiable error code. These are all listed here, with a brief explanation of their meaning.
3
+
Maybe you want to make a tool that automates our automation tool, or maybe you're just too lazy to read the error message. However, most (if not all) possible exceptions that abort execution are called "FknErrors", and include a readable, identifiable error code. These are all listed here, with a brief explanation of their meaning.
4
4
5
5
They follow this convention:
6
6
7
7
```ts
8
8
// IF IT'S TWO PARTS
9
9
CATEGORY__ERROR
10
10
// IF IT'S THREE PARTS
11
-
CATEGORY__COMPONENT_ERROR
11
+
CATEGORY__COMPONENT__ERROR
12
12
```
13
13
14
14
For example, `Env__NoPkgFile` (category:`Environment`, error:`NoPackageFile`).
15
15
16
16
---
17
17
18
-
## Operating system category [Os]
18
+
## Operating system [Os]
19
19
20
20
Errors caused by the underlying OS.
21
21
@@ -38,7 +38,7 @@ It's most often caused by either:
38
38
- The entity indeed not existing (perhaps you had a typo).
39
39
- On Windows, `echo 'hi'` or `Write-Output 'hi'` don't exist, `cmd echo 'hi'` or `powershell Write-Output 'hi'`. If you want to use Windows shell command you need to explicitly call a shell executable (preferably PowerShell). Blame it on Microsoft, not us.
40
40
41
-
## File system category [Fs]
41
+
## File system [Fs]
42
42
43
43
Errors related to the filesystem.
44
44
@@ -66,31 +66,47 @@ Happens whenever we ask for a DIRECTORY yet you give us a path that points to a
66
66
67
67
Usually happens with kickstart. You provided a path that is _not_ empty, but _has to_ be empty. Thus, we demand emptying of the directory.
68
68
69
-
## Git category [Git]
69
+
## Configuration [Cfg]
70
+
71
+
Errors related to configuration.
72
+
73
+
### Invalid CmdKey
74
+
75
+
`Cfg__InvalidCmdK`
76
+
77
+
[Cmds](../manual/fknode-yaml.md#cmdsets) require to start with a key character, either `~`, `$`, `=`, or `<`. If the first character of a Cmd is not any of those, this error throws.
78
+
79
+
## Git [Git]
70
80
71
81
Errors related to Git operations.
72
82
73
83
### No branch
74
84
75
-
> `Git__NoBranch`
85
+
`Git__NoBranch`
76
86
77
87
Happens when the user specifies a branch that does indeed not exist.
78
88
79
89
### No branch at all
80
90
81
-
> `Git__NoBranchAA`
91
+
`Git__NoBranchAA`
82
92
83
93
Happens when there's no branches at all. Git repos are supposed to always have a branch, so it is very unlikely - and if it happens it's most likely a bug.
84
94
85
-
### Unknown Errors
95
+
### Forbidden commit
86
96
87
-
All errors in this category are `Git__UE__[ACTION]`, which can be `IsRepo`, `Push`, or `Commit`. Any unexpected error when performing any of these actions for any project will trigger a Task category `FknError`.
97
+
`Git__Forbidden`
88
98
89
-
If unclear, `Git__UE__IsRepo` fires if an error happens trying to determine if a directory is a Git repo.
99
+
Happens when a forbidden file, like `.env`, is committed. These should be in your `gitignore`, but if for some reason they weren't there, FuckingNode disallows committing them.
90
100
91
-
A completely unknown error will fire `Git__UE` with no specified action.
101
+
As of now, forbidden files are: `".env", ".env.local", ".sqlite", ".db", "node_modules", ".bak"`
92
102
93
-
## Environment category [Env]
103
+
### Other errors
104
+
105
+
There are many Git errors, one for each operation FuckingNode may perform. Except for the above, these are considered obvious to understand, + they always include an error message mentioning the exact Git command that caused the failure together with its output.
106
+
107
+
To not spend too much time writing documentation they've been omitted.
108
+
109
+
## Environment [Env]
94
110
95
111
Errors related to environments; not in the sense of env variables, but in the sense of "project environments". That's how we refer to the structure we make of each of your projects in order to work with it.
96
112
@@ -110,7 +126,7 @@ A "project" doesn't have the file that makes it a project (`package.json`, `Carg
110
126
111
127
`Env__PkgFileUnparsable`
112
128
113
-
If your package file is plain invalid (invalid JSON in a `package.json` file for example) or lacks the `name`field, we consider it unparsable.
129
+
If a project's package file is plain invalid (invalid JSON in a `package.json` file for example) or lacks critical information (like `name`in `package.json` or `go` in `go.mod`), we consider it unparsable and throw this error.
114
130
115
131
### Cannot determine env
116
132
@@ -124,52 +140,43 @@ Differentiating between npm, pnpm, Yarn, Bun, Deno, Rust, or Go projects, or no
124
140
125
141
_The name's a bit of a joke, but_ this error happens when the same project has two or more lockfiles. Lockfiles are our main tool to determine the "state" (env) of your project; your project is not Schrödinger's cat and shouldn't be in several states at the same time.
126
142
127
-
## Task category [Task]
143
+
## Task [Task]
128
144
129
-
All errors in this category are `Task__[TASK TYPE]`, which can be `Release`, `Commit`, `Launch`, `Update`, `Lint`, `Pretty`, or `Build`. Any unexpected error when running any of these tasks for any project will trigger a Task category `FknError`.
145
+
All errors in this category are `Task__[TASK TYPE]`, which can be `Release`, `Commit`, `Launch`, `Update`, `Lint`, `Pretty`, or `Build`. Any unexpected error when running any of these tasks for any project will trigger a Task category error.
130
146
131
-
## Parameter category [Param]
147
+
## Parameter [Param]
132
148
133
-
All errors in this category are `Param__[PARAM TYPE]Invalid`, which can be `Target`, `CIntensity`, `Setup`, `Ver`, `GitTarget`, `GitTargetAlias`, or `Whatever` for anything else. When running a command that requires parameters (`fkstart <GIT TARGET>`, `fksetup <SETUP>`, and so on...), any missing or invalid parameter will trigger a Task category `FknError`.
149
+
All errors in this category are `Param__[PARAM TYPE]Invalid`, which can be `Target`, `CIntensity`, `Setup`, `Ver`, `GitTarget`, `GitTargetAlias`, or `Whatever` for anything else. When running a command that requires parameters (`fkstart <GIT TARGET>`, `fksetup <SETUP>`, and so on...), any missing or invalid parameter will trigger a Task category error.
134
150
135
151
If unclear, `Ver` refers to "version" (for the `fkrelease` command), `CIntensity` refers to "cleaner intensity", and both `GitTarget` and `GitTargetAlias` refer to the kickstart parameter, respectively referring to Git URLs and Git aliases.
136
152
137
-
## Interop category [Interop]
153
+
## Interop [Interop]
138
154
139
-
All errors in this category are `Interop__[ACTION TYPE]Unable`, which can be `Publish`, `Migrate`, or `JSRun`. Attempting to use a feature in a platform where it's unsupported (most likely Cargo or Go) will trigger a Task category `FknError`.
155
+
All errors in this category are `Interop__[ACTION TYPE]Unable`, which can be `Publish`, `Migrate`, or `JSRun`. Attempting to use a feature in a platform where it's unsupported (most likely Cargo or Go) will trigger a Task category error.
140
156
141
157
If unclear, `JSRunUnable` means trying to define a task that would go like `npm run X` for Cargo or Go - you cannot do "JS-like run" with these two.
142
158
143
159
## Internal errors
144
160
145
161
Errors that are probably our fault for writing bad code. These errors are extremely unlikely to appear, but they're worth documenting.
146
162
147
-
### Non existent app path
148
-
149
-
`Internal__NonexistentAppPath`
150
-
151
-
Almost impossible, unless we make a mistake and don't realize until release. Happens if somewhere in the code we reference a path to an internal config file that doesn't exist.
152
-
153
-
### Improper assignment
154
-
155
-
`Internal__ImproperAssignment`
156
-
157
-
Happens if the CLI attempts to proceed with actions that are unsupported with the current project environment. Technically an Interop error should take precedence, making this nonexistent, but sometimes the TS compiler won't shut up, so this error is a thing.
158
-
159
163
### Invalid embedded file
160
164
161
165
`Internal__InvalidEmbedded`
162
166
163
-
If a developer references a file embedded within the binary that's indeed not embedded within the binary, this error happens.
167
+
If FuckingNode references a file embedded within the binary that's indeed not embedded within the binary, this error happens.
164
168
165
169
### Lazy
166
170
167
171
`Internal__Lazy`
168
172
169
-
If we're lazy to implement a feature but want to quickly make a release for whatever reason, instead of removing references to the feature we'll show this error, indicating we were indeed lazy to implement it. As of now it's impossible (no code leads to it), but as we get bigger ideas for major releases you MIGHT get to see it once.
173
+
More casual way to call a "NotImplemented" error. If we're lazy to finish a feature or can't finish it on time to fullfil our [release schedule](https://github.com/FuckingNode/FuckingNode/blob/master/RELEASE_SCHEDULE.md), instead of removing references to the feature we'll make it trigger this error, indicating we were indeed lazy to implement it.
170
174
171
175
## External errors
172
176
177
+
!!! warning
178
+
This category will be removed by version 5.1, and these errors will be moved somewhere else.
179
+
173
180
Errors that depend on something external.
174
181
175
182
### Publish
@@ -180,8 +187,12 @@ When doing a release, if your package manager's publish command fails, this erro
180
187
181
188
### Setting / Favorite IDE
182
189
190
+
`External__Setting__FavIde`
191
+
183
192
If you changed your favorite IDE to something unsupported, then got us to attempt to launch it, this happens. You cannot directly set this setting to something invalid, you'd have to manually edit the config file - making this an "external" error.
184
193
185
194
### Project / Not found
186
195
196
+
`External__Proj__NotFound`
197
+
187
198
If a project from your list isn't found (in the sense of the filepath not being found), this error happens. You cannot add a project that doesn't exist unless modifying the config file; or adding one that does exist, then moving the directory - making this an "external" error too.
Copy file name to clipboardExpand all lines: docs/manual/fknode-yaml.md
+4-4Lines changed: 4 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -195,21 +195,21 @@ someCmd:
195
195
- <powershell -c 'echo foo'
196
196
```
197
197
198
-
They're an array of special strings / objects with a special prefix indicating type of Cmd. The type modifies the command by prefixing it before execution. Cmd type prefixes are:
198
+
They're an array of special strings (or objects) with a key prefix indicating type of Cmd. The type modifies the command by prefixing it before execution. Cmd keys are:
199
199
200
-
| Cmd type prefix | Cmd type | Behavior |
200
+
| Cmd key | Cmd type | Behavior |
201
201
| :--- | :--- | ---: |
202
202
| `~` | **SHELL SCRIPT** | Auto-prefixes with `powershell -c` on Windows and `bash -c` on macOS/Linux. |
203
203
| `$` | **PROJECT SCRIPT** | Auto-prefixes with your runtime’s script run prefix (e.g. `npm run`, `deno task`). |
204
204
| `=` | **PROJECT FILE** | Auto-prefixes with your runtime’s file run prefix. |
205
205
| `<` | **RAW EXEC** | Doesn't auto-prefix. Use this for manually invoking other programs. |
206
206
207
-
For cross-platform scripting, you can use a `{ msft: Cmd, posix: Cmd }`, where MSFT runs on Windows and POSIX runs on macOS and Linux. Each Cmd needs to be prefixed. FuckingNode won't check if they're a different Cmd type whatsoever.
207
+
For cross-platform scripting, you can use a `{ msft: Cmd, posix: Cmd }`, where MSFT runs on Windows and POSIX runs on macOS and Linux. Each Cmd needs to be prefixed with a key (they don't need to be the same).
208
208
209
209
It's something like this:
210
210
211
211
```yaml
212
-
{ msft: ~Write-Host 'Ran from Windows!', posix: ~echo 'Ran from Linux/macOS!' }
212
+
{ msft: ~Write-Host 'Hi from Windows!', posix: ~echo 'Hi from Linux/macOS!' }
0 commit comments