Ecosyste.ms: OpenCollective

An open API service for software projects hosted on Open Collective.

GLab [Archived]

Archived: An open-source GitLab command line tool bringing GitLab's cool features to your command line
Collective - Host: opensource - https://opencollective.com/glab - Website: https://glab.rtfd.io - Code: https://github.com/profclems/glab

Merge pull request #424 from maxice8/fix-deepsource-woes

Fix deepsource woes

github.com/profclems/glab - 78bc1f436d96a7c6f4b4419b6c04a914d46fc442 authored about 4 years ago by Clement Sam <[email protected]>
fix(internal/glrepo/resolver): check for 'head' not 'head:'

preivous one missed `glab-resolved = head`

github.com/profclems/glab - 33e94c35507973c43a0042ba5df1f0d75094c728 authored about 4 years ago by Leo <[email protected]>
refactor(internal/config/config_file): fix directory permissions

https://deepsource.io/gh/profclems/glab/run/038a4af3-c4d4-41ee-9272-81b12a2bb6e7/go/GSC-G301/

github.com/profclems/glab - bb6663205e05a271d831bad9ee472b5841a8a22b authored about 4 years ago by Leo <[email protected]>
refactor(pkg/surveyext): replace string length check with idiomatic

https://deepsource.io/gh/profclems/glab/run/038a4af3-c4d4-41ee-9272-81b12a2bb6e7/go/CRT-A0004/

github.com/profclems/glab - c8de7569c66051b9f928bd5f10e03b8124df2cb4 authored about 4 years ago by Leo <[email protected]>
refactor(cmd/gen-docs): fix string length check

https://deepsource.io/gh/profclems/glab/run/038a4af3-c4d4-41ee-9272-81b12a2bb6e7/go/CRT-A0004/

github.com/profclems/glab - 65d85b4c57571e4bc0cf3a4668a2acaba84a8920 authored about 4 years ago by Leo <[email protected]>
feat(cmd/gen-docs): fix directory permissions and unused variable

https://deepsource.io/gh/profclems/glab/run/038a4af3-c4d4-41ee-9272-81b12a2bb6e7/go/GSC-G301/
ht...

github.com/profclems/glab - b0f45afc966a645f0622657877488cebb3610340 authored about 4 years ago by Leo <[email protected]>
refactor(internal/glrepo/resolver): use an index loop to avoid copying

https://deepsource.io/gh/profclems/glab/run/038a4af3-c4d4-41ee-9272-81b12a2bb6e7/go/CRT-P0006/

github.com/profclems/glab - d62fec00e4ccc6b5a14914aad789a8be91aef97a authored about 4 years ago by Leo <[email protected]>
refactor(commands/ci): pass context.Context as first argument

From: https://golang.org/pkg/context/

Do not store Contexts inside a struct type; instead, pass...

github.com/profclems/glab - 6732be6166e7cf1773cda9a73e8c55b564762e70 authored about 4 years ago by Leo <[email protected]>
refactor(commands/mr/create): rewrite nested if block with else-if

https://deepsource.io/gh/profclems/glab/run/038a4af3-c4d4-41ee-9272-81b12a2bb6e7/go/CRT-A0011/

github.com/profclems/glab - 36bcf294f01f3716b50402035e663e442b6dd590 authored about 4 years ago by Leo <[email protected]>
refactor(cmd/gen-docs): replace .Replace(... -1) with .ReplaceAll

https://deepsource.io/gh/profclems/glab/run/038a4af3-c4d4-41ee-9272-81b12a2bb6e7/go/CRT-A0010/

github.com/profclems/glab - 819e1102f1196e2c1f6ef231d29ec7d9f11cfbbe authored about 4 years ago by Leo <[email protected]>
refactor(pkg/prompt): replace function literals

Function literals that only call a single function, without making any
other changes to the valu...

github.com/profclems/glab - 16efd4368df8bff32b6bb4689071e9b09aad1329 authored about 4 years ago by Leo <[email protected]>
refactor(commands/issue/board/view): remove unused variable

github.com/profclems/glab - 4a2e9d1dc179d11ea1c6cf4dec036c12488c7458 authored about 4 years ago by Leo <[email protected]>
refactor(commands/project/archive): replace .Replace(...-1) with helper

https://deepsource.io/gh/profclems/glab/run/038a4af3-c4d4-41ee-9272-81b12a2bb6e7/go/CRT-A0010/

github.com/profclems/glab - 94e0813b165b93061c23029b73e77306b6d7ca90 authored about 4 years ago by Leo <[email protected]>
refactor(commands/api/http): rewrite switch single if statement

https://deepsource.io/gh/profclems/glab/run/038a4af3-c4d4-41ee-9272-81b12a2bb6e7/go/CRT-A0014/

github.com/profclems/glab - 81f3869385139d4310ffb730323ae72b3fe349c9 authored about 4 years ago by Leo <[email protected]>
Merge pull request #427 from maxice8/fix-github-template

fix(ISSUE_TEMPLATE/feature_request): turn explanation into comments

github.com/profclems/glab - 2968c167b9f5fbf11645ae81610280b995df98c4 authored about 4 years ago by Clement Sam <[email protected]>
fix(ISSUE_TEMPLATE/feature_request): turn explanation into comments

Instead of forcing the user to delete these when making a feature
request, turn them into commen...

github.com/profclems/glab - 483108d5686c18b5a1398c5d67abc89dc38bc460 authored about 4 years ago by Leo <[email protected]>
feat(commands/issue/create): add --yes|-y flag to skip confirmation

github.com/profclems/glab - 898a13464dc1434a98773f6cd5fd40b77a7e9059 authored about 4 years ago by Leo <[email protected]>
feat(commands/mr/create): add --yes|-y flag to skip confirmation

github.com/profclems/glab - 9a5f2515ce3211cdf88c6289187087a43933c362 authored about 4 years ago by Leo <[email protected]>
feat(commands/cmdutils): add initial value of NoAction

This fixes a nasty bug where our mr_create and issue_create code was
using this to skip confirma...

github.com/profclems/glab - 4f5d1d440d8119a7a39a84918cd5a063c24b10d2 authored about 4 years ago by Leo <[email protected]>
Update README.md

github.com/profclems/glab - ac7709a3c5668a7c9628b52035db17a55cd55a39 authored about 4 years ago by Clement Sam <[email protected]>
chore: fix release workflow

github.com/profclems/glab - e268484a1276870190dd67a28b261803ab1fff80 authored about 4 years ago by Clement Sam <[email protected]>
chore: remove scoop and brew releases from workflow

Both scoop and homebrew packages are now in the official repos so
we do not need to self-host them

github.com/profclems/glab - 85251a44d2e0f9bbd6034fee8fce77b40d478186 authored about 4 years ago by Clement Sam <[email protected]>
chore: add changelog.md to .gitignore

The gorelease workflow fails due to the changes made to the changelog

github.com/profclems/glab - 4d8c12225bcdc7149d3ad7fd7d4ae964cf18ee1e authored about 4 years ago by Clement Sam <[email protected]>
docs(update): latest

github.com/profclems/glab - 54ed8557062cbea5c1ece4f55b16bbf1f184bd67 authored about 4 years ago by github-actions <[email protected]>
chore: fix release workflow

github.com/profclems/glab - 0ceaedea764524b199ae54945abf1fb4ef00c177 authored about 4 years ago by Clement Sam <[email protected]>
Merge pull request #420 from maxice8/glab-missing-newline

fix(commands/mr/close): print newline

github.com/profclems/glab - ee0a13b2a3b5261b8ecaa3ee727713178eed206b authored about 4 years ago by Clement Sam <[email protected]>
Merge branch 'trunk' into glab-missing-newline

github.com/profclems/glab - c11bb0ad8ab72bbef0f7c515d904b48180edc322 authored about 4 years ago by Clement Sam <[email protected]>
Merge pull request #418 from maxice8/glab-create-mr

fix(commands/mr/create): create merge request against headRepo

github.com/profclems/glab - 48438380a060c696dd87c08a9dc3aa12485ca388 authored about 4 years ago by Clement Sam <[email protected]>
fix(commands/mr/close): print newline

github.com/profclems/glab - 4390c37a3d1ec0b23afad721340352c0e450f0e6 authored about 4 years ago by Leo <[email protected]>
fix(commands/mr/create): create merge request against headRepo

it is absolutely necessary that we create it against the headRepo,
otherwise it will fail.

See:...

github.com/profclems/glab - 1764aee82cf42d72a5f0e22d28dc7bb31763a339 authored about 4 years ago by Leo <[email protected]>
Merge pull request #410 from maxice8/glab-resolved-head

glab-resolved = {base|head} support

github.com/profclems/glab - 4449510808972472536ecc5a807f1946da0d60d8 authored about 4 years ago by Clement Sam <[email protected]>
Merge branch 'trunk' into glab-resolved-head

github.com/profclems/glab - 09146910b5c2225aaae12a218ac557966ed60d63 authored about 4 years ago by Clement Sam <[email protected]>
Merge pull request #416 from maxice8/glab-set-upstream

feat(commands/mr/create): fix logic for setting upstream branch

github.com/profclems/glab - c941ebb2e73d8de837eca79abbb5f0c4909a0407 authored about 4 years ago by Clement Sam <[email protected]>
feat(commands/mr/create): create namespaced remote if none exists

github.com/profclems/glab - 7de3846a76742eb658c7c0545df806d30f73963d authored about 4 years ago by Leo <[email protected]>
tests(commands/mr/create): remove tests for removed function

github.com/profclems/glab - 02fc1ec3692a06c445e2f2dc4288ad7923366fb0 authored about 4 years ago by Leo <[email protected]>
refactor(commands/mr/create): remove unused function

github.com/profclems/glab - 108e9950ff999eb4adbf8ade16ed3267aa68416e authored about 4 years ago by Leo <[email protected]>
feat(commands/mr/create): fix logic for setting upstream branch

github.com/profclems/glab - 6385c63ebad0819663009d509d21bb66aebe68b2 authored about 4 years ago by Leo <[email protected]>
fix(commands/mr/create): compare Commits with base repo

github.com/profclems/glab - e02d4d35ea8ac6c9e8bc8479eda5e2899ea320bc authored about 4 years ago by Leo <[email protected]>
feat(commands/mr/create): deprecate --target-project

users can use -R|--repo instead

github.com/profclems/glab - 73e83a6d68ac6d155b6078db2cbab4a3f45a5202 authored about 4 years ago by Leo <[email protected]>
refactor(commands/mr/create): rename BaseProject to SourceProject

since TargetProject is being used to refer to what Project the Merge
Request will target it is b...

github.com/profclems/glab - 7de0260fec000e3b0c490af7a7fcd767bf0f1c73 authored about 4 years ago by Leo <[email protected]>
feat(commands/mr/create): split headRepoRemote and baseRepoRemote

use them were appropriate, when dealing with labels we want to deal with
the baseRepo (target), ...

github.com/profclems/glab - fdccfce8fa134ea98c52f690f45700cb0279f0ce authored about 4 years ago by Leo <[email protected]>
feat(commands/mr/create): use headRepo where applicable

github.com/profclems/glab - 0fb61e03de11b250215ca7bcaca7922d99daf54e authored about 4 years ago by Leo <[email protected]>
feat(commands/mr/create): override HeadRepo when -H is used

github.com/profclems/glab - 8e0b5aba04627f2ee4d94eb02fb4111b1fde1e57 authored about 4 years ago by Leo <[email protected]>
feat(commands/mr/create): add HeadRepo field to CreateOpts

github.com/profclems/glab - fa8f848226a6d35e10aff3528cb641086daa889f authored about 4 years ago by Leo <[email protected]>
feat(command/mr/create): add helper functions for headRepo handling

resolvedHeadRepo is taken from resolvedBaseRepo used in root, it is mr
create specific as it is ...

github.com/profclems/glab - 367e5067c990d052f0106b22ce8c457d4baf367d authored about 4 years ago by Leo <[email protected]>
feat(internal/glrepo/resolver): add HeadRepo function

github.com/profclems/glab - a3c75dc8b5ba3c329e6cb01afd839b3f6a9f34e6 authored about 4 years ago by Leo <[email protected]>
Merge pull request #414 from maxice8/rework-base-repo

Rework BaseRepo from internal.glrepo.resolver

github.com/profclems/glab - d3be4fa805ebfdd2e760ea1f1c2af69bb0649e53 authored about 4 years ago by Clement Sam <[email protected]>
feat(internal/glrepo/resolver.go): write resolutions with base: prefix

github.com/profclems/glab - 08d656f1f9bf2d90a1f3b4b85f41daf3d7d80a64 authored about 4 years ago by Leo <[email protected]>
refactor(internal/glrepo/resolver): remove unnecessary local copy

Now that our for-loop is looping over indexes and not values, it doesn't
store the value in an a...

github.com/profclems/glab - 5e0f85746db9535344eb0020363b7d312ba3a3e2 authored about 4 years ago by Leo <[email protected]>
refactor(internal/glrepo/resolver): loop over indexes not values

values are costly to loop over when the given value is big like
*gitlab.Project{}, so loop over ...

github.com/profclems/glab - ad314870f6d6d64e4abc0011e0b626df5b3029de authored about 4 years ago by Leo <[email protected]>
feat(internal/glrepo/resolver): handle remoteless resolutions

for backwards compatibility

github.com/profclems/glab - 7dd6244b037afdde43e0d3e9344cf297e7895ddb authored about 4 years ago by Leo <[email protected]>
feat(internal/glrepo/resolver): only use resolutions with base: prefix

github.com/profclems/glab - 2c6f12362ac2c6efc9fa53d403d52de20e7a7f8c authored about 4 years ago by Leo <[email protected]>
Merge pull request #413 from maxice8/glab-dont-set-upstream

fix: set tracking branch only if not set

github.com/profclems/glab - 2ba00f04afafaeafc4bc6c5deddcd040c6e2207e authored about 4 years ago by Clement Sam <[email protected]>
test(commands/mr/create): fix tests

git.Push no longer runs with --set-upstream so adjust for the new
expected output

github.com/profclems/glab - 6031ecd8e0af5c6f2b09647277b7c22cfa8a997f authored about 4 years ago by Leo <[email protected]>
feat(commands/mr/create): set tracking remote if none is set

Don't push to tracking remote, there is a legitimate usecase that some
tracking remotes point to...

github.com/profclems/glab - 7e431d9fbd1cfaaed37ae409ac30916bd6993216 authored about 4 years ago by Leo <[email protected]>
refactor(internal/git): Split Push into SetUpstream

github.com/profclems/glab - 9eba25bc3de197318336596222d6f7a16760ff5d authored about 4 years ago by Leo <[email protected]>
Merge pull request #409 from profclems/dependabot/go_modules/github.com/otiai10/copy-1.4.1

github.com/profclems/glab - c0e026e2797c3fd249bd39c1394207986ef7a504 authored about 4 years ago by dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Merge branch 'trunk' into dependabot/go_modules/github.com/otiai10/copy-1.4.1

github.com/profclems/glab - 2debb0fc4def2e142846846774bc069f0b6015b8 authored about 4 years ago by Clement Sam <[email protected]>
Merge pull request #412 from profclems/profclems-patch-2

docs(readme): use official scoop main bucket

github.com/profclems/glab - 7c1b7c421f80d8eb91e811ffa7a1a14590db2729 authored about 4 years ago by Clement Sam <[email protected]>
docs(readme): use official scoop main bucket

Finally what I have been waiting for has been merged.
`glab` is now in the scoop main bucket h...

github.com/profclems/glab - d73a1454a1122cad64216508cee7f8a513e09d5a authored about 4 years ago by Clement Sam <[email protected]>
Merge pull request #411 from profclems/feat-mr-and-issue-submit-options

feat: provide submit options for `mr create` and `issue create`

github.com/profclems/glab - 0c0f1333f924f64546183f4a415feca7ecab5874 authored about 4 years ago by Clement Sam <[email protected]>
fix antipattern

https://deepsource.io/gh/profclems/glab/run/a58b2e14-4d0e-4a12-a735-c4ea1a8c685f/go/CRT-A0011

github.com/profclems/glab - 1e7ac7395673f9047cc4d25cf7c3e9e4e473753f authored about 4 years ago by Clement Sam <[email protected]>
add ask stubber to test

github.com/profclems/glab - 01d97f6fb215132d3d11a884bc744ceb135bff65 authored about 4 years ago by Clement Sam <[email protected]>
feat(cmd/issue/create): add submit options

github.com/profclems/glab - d427bceda1daa7149ab0422e5c95f095f8b2129a authored about 4 years ago by Clement Sam <[email protected]>
feat: provide submit options for `mr create` and `issue create`

Provide submit options to allow users either submit the MR via the CLI or continue in browser or...

github.com/profclems/glab - d322895294779e71873b4c1ae5c1edfe1b684a25 authored about 4 years ago by Clement Sam <[email protected]>
chore(deps): bump github.com/otiai10/copy from 1.4.0 to 1.4.1

Bumps [github.com/otiai10/copy](https://github.com/otiai10/copy) from 1.4.0 to 1.4.1.
- [Release...

github.com/profclems/glab - 50b59be225c8ef91593e2a23bd169ae17fe2b888 authored about 4 years ago by dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Merge pull request #408 from profclems/fix-tracking-br-mr-create

fix tracking br mr create

github.com/profclems/glab - 1f9d621f7fb6d9b2ef52dbaf3c94be0b973807da authored about 4 years ago by Clement Sam <[email protected]>
linting

github.com/profclems/glab - 7c09e7509b6a644ba3d86517369d160246eb58ee authored about 4 years ago by Clement Sam <[email protected]>
fix(cmd/mr/create): avoid resetting tracking branch if set

glab does git push using the remote that the base repo (glab-resolved) points to.
In order to so...

github.com/profclems/glab - e65c7d4a84edeea53a2ead8e9fb4269ca82e893e authored about 4 years ago by Clement Sam <[email protected]>
Merge pull request #404 from maxice8/merge-request-by-repo

feat(commands/mr/create): add --repo support for --target-project

github.com/profclems/glab - 6ffb1be89fe2f9928b2af2ae0ac2b05627171611 authored about 4 years ago by Clement Sam <[email protected]>
feat(commands/mr/create): add --repo support for --target-project

one can now use something like `--target-project alpine/aports`
to set the target of the project...

github.com/profclems/glab - 770cfa5524ddcbb15d2f5431d6ee6077a6574382 authored about 4 years ago by Leo <[email protected]>
Merge pull request #401 from maxice8/unlock-discussion

Unlock discussion

github.com/profclems/glab - d118ca79599a13ae65ef674f0e99d80188cc223e authored about 4 years ago by Clement Sam <[email protected]>
fix(commands/issue/update): check flag conflicts before anything

github.com/profclems/glab - 714f456d79ff94e58f49e9ad2888b1b604f64ad7 authored about 4 years ago by Leo <[email protected]>
feat(commands/mr/update): add --unlock-discussion flag

acts as the opposite of --lock-discussion

github.com/profclems/glab - d4a3550942c2c14f24b2a3914cd725ec6aebb232 authored about 4 years ago by Leo <[email protected]>
feat(commands/issue/update): add --unlock-discussion flag

acts as the opposite of --lock-discussion

github.com/profclems/glab - 90377f19883e35e476b9213156b0be818d06346b authored about 4 years ago by Leo <[email protected]>
chore(deps): bump github.com/otiai10/copy from 1.3.0 to 1.4.0 (#399)

Bumps [github.com/otiai10/copy](https://github.com/otiai10/copy) from 1.3.0 to 1.4.0.
- [Releas...

github.com/profclems/glab - f6476ebdcd8c127ffe4eaf31ad3f1daaab01ec29 authored about 4 years ago by dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Merge pull request #392 from solidnerd/patch-1

chore: add alpine package support

github.com/profclems/glab - 5c486e9610a5d7d0774af3cc87bf256fdb0b4ac8 authored about 4 years ago by Clement Sam <[email protected]>
docs(readme): add alpine heading to toc

github.com/profclems/glab - 2e44af215b686b97742e5e1ee28c5f4321a630eb authored about 4 years ago by Clement Sam <[email protected]>
chore: add alpine package support

Signed-off-by: solidnerd <[email protected]>

github.com/profclems/glab - 2164ddbe4488d4416a9e633da3649554fcc80f88 authored about 4 years ago by Niclas Mietz <[email protected]>
Merge pull request #396 from maxice8/issue-is-confidential

feat(cmd/issue/update): add --public and --confidential flags

github.com/profclems/glab - 4d2b2c0280441291431f69090c1679bcdddbb798 authored about 4 years ago by Clement Sam <[email protected]>
feat(cmd/issue/update): add --public and --confidential flags

they allow making an issue public or confidential, as documented by
GitLab here[1] and in their ...

github.com/profclems/glab - 835252c4bb069c16f011e06954c5f00126ba0614 authored about 4 years ago by Leo <[email protected]>
Merge pull request #398 from maxice8/issue-missing-newline

fix(command/issue/update): add missing newline to Fprintf call

github.com/profclems/glab - b498dc794ec547b09907c70a352257cc0cf9b913 authored about 4 years ago by Clement Sam <[email protected]>
fix(internal/glrepo/resolver): use address of local copy of gitlab.Project (#394)

Using pointers from a for-loop trigger a very interesting bug,
imagine this case:

Remotes:
...

github.com/profclems/glab - 5114b24e4f571806763305208567cfb155405743 authored about 4 years ago by maxice8 <[email protected]>
fix(command/issue/update): add missing newline to Fprintf call

github.com/profclems/glab - 4e1430d3d5709cefbb81c8fadb7288f17a55abda authored about 4 years ago by Leo <[email protected]>
Merge pull request #387 from maxice8/suceed-actually

feat(cmd/mr/merge): show different message when merging after pipeline success

github.com/profclems/glab - 837c202a6bba36ffc1def1f5547fddac412f6097 authored about 4 years ago by Clement Sam <[email protected]>
feat(cmd/mr/merge): show different message when merging after pipeline success

Check if we were given when-pipeline-succeeds and print 'Will merge when
pipeline succeeds'

Thi...

github.com/profclems/glab - c14afdc902eb35c40bcc01b8680c44e65c465c19 authored about 4 years ago by Leo <[email protected]>
Merge pull request #381 from maxice8/default-to

fix(cmd/mr/merge): don't print Default to true as Cobra already does

github.com/profclems/glab - 8d686be727f44bdb13d65de47fd40d7429b4bb78 authored about 4 years ago by Clement Sam <[email protected]>
fix(cmd/mr/merge): don't print Default to true as Cobra already does

$ glab mr merge --help | grep -- 'Default to'
--when-pipeline-succeeds Merge only when pipelin...

github.com/profclems/glab - 0c9ea5bf8c32ff9e1953fd0ed355b45863d0958f authored about 4 years ago by Leo <[email protected]>
Merge pull request #363 from profclems/test-fix-test

test: fix tests

github.com/profclems/glab - 0c3ff7e879067f197023c88ea7bbb0e16d560337 authored about 4 years ago by Clement Sam <[email protected]>
fix trace test

github.com/profclems/glab - b1959e8e155cbc209a36b060de3264b2a73dc486 authored about 4 years ago by Clement Sam <[email protected]>
fix trace test

github.com/profclems/glab - fd88c1cc3bab9556597e5166be45a84487b46928 authored about 4 years ago by Clement Sam <[email protected]>
fix final tests

github.com/profclems/glab - bd5c89c37c4bebc0f1ca94e64f5e7e999cbcdbb4 authored about 4 years ago by Clement Sam <[email protected]>
fix lint errors

github.com/profclems/glab - f916c67516d2ab976bc61efc200212006287a8f1 authored about 4 years ago by Clement Sam <[email protected]>
fix remaining tests

github.com/profclems/glab - 934d9c5870d27d7e4c78bc76ea48820045c1dead authored about 4 years ago by Clement Sam <[email protected]>
test: fix ci trace test

github.com/profclems/glab - f6ecee7e93da0da1f8d9bf324ca9c285c327db15 authored about 4 years ago by Clement Sam <[email protected]>
test: fix ci lint test

github.com/profclems/glab - 53c93fde911597488a103a211b9a4a7c968f4b72 authored about 4 years ago by Clement Sam <[email protected]>
ci: remove only

github.com/profclems/glab - e7f9feac6ca85e7b869309c570506f23f323b8cb authored about 4 years ago by Clement Sam <[email protected]>
test: fix tests

github.com/profclems/glab - 7671fe38088c286759f93fa11c74525f40e022c4 authored about 4 years ago by Clement Sam <[email protected]>
Merge pull request #380 from profclems/ch-pipeline-command

feat: move 'pipeline ci' command to ci

github.com/profclems/glab - 185e736cece3c535248768a04ce957d7b88f0093 authored about 4 years ago by Clement Sam <[email protected]>