{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":573496341,"defaultBranch":"main","name":"TTPForge","ownerLogin":"facebookincubator","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2022-12-02T15:47:28.000Z","ownerAvatar":"https://github.com/avatars/u/19538647?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1723238712.0","currentOid":""},"activityList":{"items":[{"before":"89340044f488ec140c12c9fd3851453c20a2b905","after":"854023ed16389ac9ddb661a89dd2c12e34146d61","ref":"refs/heads/main","pushedAt":"2024-08-27T14:48:52.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"facebook-github-bot","name":"Facebook Community Bot","path":"/facebook-github-bot","primaryAvatarUrl":"https://github.com/avatars/u/6422482?s=80&v=4"},"commit":{"message":"Create all directories before creating a new file (#511)\n\nSummary:\nFrom the golang 1.23 os/file.go\n```\n// Flags to OpenFile wrapping those of the underlying system. Not all\n// flags may be implemented on a given system.\nconst (\n\t// Exactly one of O_RDONLY, O_WRONLY, or O_RDWR must be specified.\n\tO_RDONLY int = syscall.O_RDONLY // open the file read-only.\n\tO_WRONLY int = syscall.O_WRONLY // open the file write-only.\n\tO_RDWR int = syscall.O_RDWR // open the file read-write.\n\t// The remaining values may be or'ed in to control behavior.\n\tO_APPEND int = syscall.O_APPEND // append data to the file when writing.\n\tO_CREATE int = syscall.O_CREAT // create a new file if none exists.\n\tO_EXCL int = syscall.O_EXCL // used with O_CREATE, file must not exist.\n\tO_SYNC int = syscall.O_SYNC // open for synchronous I/O.\n\tO_TRUNC int = syscall.O_TRUNC // truncate regular writable file when opened.\n)\n```\n\nWhich makes me think that we might want to call MkdirAll function before creating a file\n\nPull Request resolved: https://github.com/facebookincubator/TTPForge/pull/511\n\nResolves https://github.com/facebookincubator/TTPForge/issues/506\n\nDifferential Revision: D61658174\n\nfbshipit-source-id: b0352f44335f19773854170df787292676cf5a8e","shortMessageHtmlLink":"Create all directories before creating a new file (#511)"}},{"before":"4499933bdcc8228cc98809587c85f14a331a9bbb","after":"89340044f488ec140c12c9fd3851453c20a2b905","ref":"refs/heads/main","pushedAt":"2024-08-22T19:53:26.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"facebook-github-bot","name":"Facebook Community Bot","path":"/facebook-github-bot","primaryAvatarUrl":"https://github.com/avatars/u/6422482?s=80&v=4"},"commit":{"message":"Unify the way ttpforge executes files or scripts (#510)\n\nSummary:\nPull Request resolved: https://github.com/facebookincubator/TTPForge/pull/510\n\nTo reduce duplication and ensure similar execution behavior for different TTP step types.\n\nReviewed By: CrimsonK1ng\n\nDifferential Revision: D61657101\n\nfbshipit-source-id: 8c3ec616eaa3879f32c46d4db049126aae2d89d8","shortMessageHtmlLink":"Unify the way ttpforge executes files or scripts (#510)"}},{"before":"995ce75510be6cbc4e59f6f3c56ceac2966332f8","after":"4499933bdcc8228cc98809587c85f14a331a9bbb","ref":"refs/heads/main","pushedAt":"2024-08-21T20:08:36.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"facebook-github-bot","name":"Facebook Community Bot","path":"/facebook-github-bot","primaryAvatarUrl":"https://github.com/avatars/u/6422482?s=80&v=4"},"commit":{"message":"Properly process powershell nested scripts as TTP steps (#509)\n\nSummary:\nPull Request resolved: https://github.com/facebookincubator/TTPForge/pull/509\n\n## Problem scope\nLet's test with the following simple powershell script\n```\n% cat nested.ps\necho \"start\"\nif ($true) {\n echo \"nested\"\n}\necho \"stop\"\n```\n\nHere is results of running this script differently\n```\n% pwsh -File nested.ps\nstart\nnested\nstop\n% pwsh nested.ps\nstart\nnested\nstop\n% cat nested.ps | pwsh -File -\nPS /data/users/nesusvet/fbsource/fbcode> echo \"start\"\nstart\nPS /data/users/nesusvet/fbsource/fbcode> if ($true) {\n>> echo \"nested\"\n>> }\n>> echo \"stop\"\n>> %\n% cat nested.ps | pwsh -Command -\nstart\n```\n\n## Initial proposal\nInstead of writing the TTP step body to power shell process stdin, we might rely on a new temp file to hold the body of TTP step to pass it to PowerShell as only argument. This produces the best results.\n\n### Limitations\nRuntime environment where standard golang library call to `os.CreateTemp` fails or the file created is not writable.\n\n## Can We Do Better?\n\nActually **yes** when we better understand the way PowerShell processes scripts from stdin.\nIt is expected to wrap your commands into `&{}` block before passing it to PowerShell's stdin.\nSee [documentation](https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_pwsh?view=powershell-7.4#-command---c) on `-Command` param for details.\n\nResolves https://github.com/facebookincubator/TTPForge/issues/481\n\nReviewed By: CrimsonK1ng\n\nDifferential Revision: D61387125\n\nfbshipit-source-id: 90f08e803bd2d02152686d3fe3be0535654de124","shortMessageHtmlLink":"Properly process powershell nested scripts as TTP steps (#509)"}},{"before":"62a1e9dd9c9f539e9d2f1ba1036d9cc7bd6defc6","after":null,"ref":"refs/tags/v1.1.0","pushedAt":"2024-08-09T21:23:57.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"d3sch41n","name":"Sam Manzer","path":"/d3sch41n","primaryAvatarUrl":"https://github.com/avatars/u/106620054?s=80&v=4"}},{"before":"62a1e9dd9c9f539e9d2f1ba1036d9cc7bd6defc6","after":"995ce75510be6cbc4e59f6f3c56ceac2966332f8","ref":"refs/heads/main","pushedAt":"2024-08-09T21:19:03.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"facebook-github-bot","name":"Facebook Community Bot","path":"/facebook-github-bot","primaryAvatarUrl":"https://github.com/avatars/u/6422482?s=80&v=4"},"commit":{"message":"Update goreleaser action (#508)\n\nSummary:\nPull Request resolved: https://github.com/facebookincubator/TTPForge/pull/508\n\nNeed to fix this error for new TTPForge release\n\n {F1798300338}\n\nReviewed By: d0n601\n\nDifferential Revision: D61042469\n\nfbshipit-source-id: 5b76217b7b1db0ba73c5886e8024642bae336582","shortMessageHtmlLink":"Update goreleaser action (#508)"}},{"before":"b86f75bc0d1bda1bc7b24b6d3e339558e9989a4b","after":"62a1e9dd9c9f539e9d2f1ba1036d9cc7bd6defc6","ref":"refs/heads/main","pushedAt":"2024-08-05T15:29:22.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"facebook-github-bot","name":"Facebook Community Bot","path":"/facebook-github-bot","primaryAvatarUrl":"https://github.com/avatars/u/6422482?s=80&v=4"},"commit":{"message":"Fix Open Source Copyright Headers (#507)\n\nSummary:\nPull Request resolved: https://github.com/facebookincubator/TTPForge/pull/507\n\nThe open source automated [repository](https://www.internalfb.com/intern/opensource/github/repo/1770409709999349/) checkup has been flagging certain files as needing a copyright header.\n\nI've excluded the `go.mod` and `go.sum` file, and added the other headers where appropriate as per this test: https://www.internalfb.com/phabricator/paste/view/P1510438766\n\nFixes the following:\n```\nCOPYRIGHT_HEADERS_EXIST: Copyright Headers\n****************************************\nFIX IT! https://our.intern.facebook.com/intern/opensource/github/repo/1770409709999349/repo_settings/header_exemptions/\nEvery project specific source file must contain a doc block with an appropriate copyright header. Unrelated files must be listed as exceptions in the Copyright Headers Exceptions page in the repo dashboard.\nA copyright header clearly indicates that the code is owned by Meta. Every open source file must start with a comment containing \"Meta Platforms, Inc. and affiliates\"\nhttps://github.com/facebookincubator/TTPForge/blob/main/go.mod:\nThe first 16 lines of 'go.mod' do not contain the patterns:\n\t(Meta Platforms, Inc. and affiliates)|(Facebook, Inc(\\.|,)? and its affiliates)|([0-9]{4}-present(\\.|,)? Facebook)|([0-9]{4}(\\.|,)? Facebook)\n\tCopyright\nhttps://github.com/facebookincubator/TTPForge/blob/main/go.sum:\nThe first 16 lines of 'go.sum' do not contain the patterns:\n\t(Meta Platforms, Inc. and affiliates)|(Facebook, Inc(\\.|,)? and its affiliates)|([0-9]{4}-present(\\.|,)? Facebook)|([0-9]{4}(\\.|,)? Facebook)\n\tCopyright\nhttps://github.com/facebookincubator/TTPForge/blob/main/integration-tests.sh:\nThe first 16 lines of 'integration-tests.sh' do not contain the patterns:\n\t(Meta Platforms, Inc. and affiliates)|(Facebook, Inc(\\.|,)? and its affiliates)|([0-9]{4}-present(\\.|,)? Facebook)|([0-9]{4}(\\.|,)? Facebook)\n\tCopyright\nhttps://github.com/facebookincubator/TTPForge/blob/main/run-all-ttp-tests.sh:\nThe first 16 lines of 'run-all-ttp-tests.sh' do not contain the patterns:\n\t(Meta Platforms, Inc. and affiliates)|(Facebook, Inc(\\.|,)? and its affiliates)|([0-9]{4}-present(\\.|,)? Facebook)|([0-9]{4}(\\.|,)? Facebook)\n\tCopyright\nhttps://github.com/facebookincubator/TTPForge/blob/main/cmd/test-resources/repos/another-repo/some-ttps/cleanup-tests/test.sh:\nThe first 16 lines of 'cmd/test-resources/repos/another-repo/some-ttps/cleanup-tests/test.sh' do not contain the patterns:\n\t(Meta Platforms, Inc. and affiliates)|(Facebook, Inc(\\.|,)? and its affiliates)|([0-9]{4}-present(\\.|,)? Facebook)|([0-9]{4}(\\.|,)? Facebook)\n\tCopyright\nhttps://github.com/facebookincubator/TTPForge/blob/main/cmd/test-resources/repos/test-repo/ttps/steps/hello-world.sh:\nThe first 16 lines of 'cmd/test-resources/repos/test-repo/ttps/steps/hello-world.sh' do not contain the patterns:\n\t(Meta Platforms, Inc. and affiliates)|(Facebook, Inc(\\.|,)? and its affiliates)|([0-9]{4}-present(\\.|,)? Facebook)|([0-9]{4}(\\.|,)? Facebook)\n\tCopyright\n\n```\n\nDifferential Revision: D60686691\n\nfbshipit-source-id: ed574ac6de234c062a21a4beccfc4d1e3b8db404","shortMessageHtmlLink":"Fix Open Source Copyright Headers (#507)"}},{"before":"3cfe49e3b2f1e68a5dbd4b7e1f3b68b603fea72b","after":"b86f75bc0d1bda1bc7b24b6d3e339558e9989a4b","ref":"refs/heads/main","pushedAt":"2024-07-30T15:21:18.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"facebook-github-bot","name":"Facebook Community Bot","path":"/facebook-github-bot","primaryAvatarUrl":"https://github.com/avatars/u/6422482?s=80&v=4"},"commit":{"message":"Update expect action for clarity (#505)\n\nSummary:\nPull Request resolved: https://github.com/facebookincubator/TTPForge/pull/505\n\nThe console output displayed when using `expect` action was cumbersome and a little difficult to interpret.\n\nExpect function by itself, is good enough to display the input and output succintly.\n\nChanging the logging level to DEBUG, so that it can be displayed if required when calling the `expect` action\n\nReviewed By: nicolagiacchetta\n\nDifferential Revision: D60423533\n\nfbshipit-source-id: 5dad159b44cd4796ea593861484b1baad1595565","shortMessageHtmlLink":"Update expect action for clarity (#505)"}},{"before":"ac0970458aab0ab1c6d658e0108c1ddbd1ebcef1","after":"3cfe49e3b2f1e68a5dbd4b7e1f3b68b603fea72b","ref":"refs/heads/main","pushedAt":"2024-07-25T18:20:50.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"facebook-github-bot","name":"Facebook Community Bot","path":"/facebook-github-bot","primaryAvatarUrl":"https://github.com/avatars/u/6422482?s=80&v=4"},"commit":{"message":"Refactor expect step, increase test coverage, update pre-commit config (#503)\n\nSummary:\nPull Request resolved: https://github.com/facebookincubator/TTPForge/pull/503\n\n**Added:**\n\n- `ssh-pw-expect.yaml`: Demonstrate expect step with SSH password.\n- `expect.yaml`: Added YAML front matter for better structuring.\n- Introduced `ExpectSpec` struct to encapsulate expect script and responses.\n- Detailed comments for `ExpectSpec` attributes.\n- Enhanced validation for `ExpectStep`, ensuring `ExpectSpec` is provided.\n- Dynamic timeout handling in expect responses.\n- `.semgrepignore` to avoid creating false positives with tests and examples\n\n**Changed:**\n\n- Refactored `expectstep.go`:\n - Introduced `ExpectSpec` for inline script and responses.\n - Improved validation and execution logic for expect steps.\n - Refactored `Execute` method to accommodate `ExpectSpec`.\n - Updated `prepareCommand` method to use `ExpectSpec` inline script.\n - Enhanced logging and error messages in `Execute` and `Validate` methods.\n- Updated `expectstep_test.go`:\n - Mocked SSH interaction within expect steps.\n - Refactored test cases for better coverage.\n - Improved logging and error handling across `expectstep.go`.\n- Updated tests to reflect changes in `ExpectStep` structure and logic.\n\n**Removed:**\n\n- `.pre-commit-config.yaml`: Removed `go-vet` hook for streamlined configuration.\n- Removed unnecessary imports and streamlined existing ones.\n\nReviewed By: w51d\n\nDifferential Revision: D60238880\n\nfbshipit-source-id: 8930ad1d6d59900a3be49a65682b3199c1312f5a","shortMessageHtmlLink":"Refactor expect step, increase test coverage, update pre-commit config ("}},{"before":"4e68927cd354bae9022e66b1f78c23e70cdd6237","after":"ac0970458aab0ab1c6d658e0108c1ddbd1ebcef1","ref":"refs/heads/main","pushedAt":"2024-07-18T15:03:10.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"facebook-github-bot","name":"Facebook Community Bot","path":"/facebook-github-bot","primaryAvatarUrl":"https://github.com/avatars/u/6422482?s=80&v=4"},"commit":{"message":"Reduce outputs from powershell-baked TTPs (#502)\n\nSummary:\nPull Request resolved: https://github.com/facebookincubator/TTPForge/pull/502\n\nTo prevent sensitive info exposure in logs\n\nInspired by https://stackoverflow.com/a/69036873\nResolves https://github.com/facebookincubator/TTPForge/issues/479\n\nReviewed By: andreizharinov\n\nDifferential Revision: D59864499\n\nfbshipit-source-id: bad80f2fec93378c0dc967b777c082386e7069b5","shortMessageHtmlLink":"Reduce outputs from powershell-baked TTPs (#502)"}},{"before":"0d980eaa76861f9c9b3213cece9f0151969125ff","after":"4e68927cd354bae9022e66b1f78c23e70cdd6237","ref":"refs/heads/main","pushedAt":"2024-06-26T00:20:57.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"facebook-github-bot","name":"Facebook Community Bot","path":"/facebook-github-bot","primaryAvatarUrl":"https://github.com/avatars/u/6422482?s=80&v=4"},"commit":{"message":"Add new expect action (#501)\n\nSummary:\n**Added:**\n- expect.yaml: Added a new expect action example\n- expectstep.go: Introduced ExpectStep for managing expect commands using\n the go-expect library.\n- expectstep_test.go: Added tests for the new ExpectStep functionality.\n\n**Changed:**\n- .pre-commit-config.yaml: Upgraded pre-commit hooks to v4.6.0.\n- codespell: Updated codespell configuration to skip additional content.\n- go.mod: Updated to Go 1.22.0, added dependencies for go-expect and other\n libraries, and updated existing dependencies.\n- step.go: Added support for parsing ExpectStep actions.\n\n**Removed:**\n- Removed duplicate go-vet configurations in\n .pre-commit-config.yaml.\n\nPull Request resolved: https://github.com/facebookincubator/TTPForge/pull/501\n\nReviewed By: d0n601\n\nDifferential Revision: D59012858\n\nPulled By: l50\n\nfbshipit-source-id: 24a767f983c2f3d205c4e69388cded938aae9f63","shortMessageHtmlLink":"Add new expect action (#501)"}},{"before":"9f1b74ff06799edeed7786efc9a64f1947d01628","after":"0d980eaa76861f9c9b3213cece9f0151969125ff","ref":"refs/heads/main","pushedAt":"2024-06-25T16:14:46.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"facebook-github-bot","name":"Facebook Community Bot","path":"/facebook-github-bot","primaryAvatarUrl":"https://github.com/avatars/u/6422482?s=80&v=4"},"commit":{"message":"Fix race conditions and add hooks (#500)\n\nSummary:\n**Added:**\n- Created `.hooks/run-go-tests.sh` to run Go tests with options for coverage,\n all tests, short tests, and tests for modified files.\n- Added `go-unit-tests` pre-commit hook to `.pre-commit-config.yaml` to run\n unit tests on modified Go files.\n- Addressed multiple race conditions in tests\n - Introduced `logMutex` to sync logging in `cmd/run_test.go`.\n - Added `initOnce` to ensure `InitLog` runs only once in `pkg/logging/logger.go`\n\n**Changed:**\n- Updated copyright in `pkg/logging/logger.go` and `pkg/logging/logger_test.go`\n to © 2024-present.\n- Refactored `pkg/logging/logger.go` to use `sync.Once` for logger initialization.\n\nPull Request resolved: https://github.com/facebookincubator/TTPForge/pull/500\n\nReviewed By: d0n601\n\nDifferential Revision: D59009307\n\nPulled By: l50\n\nfbshipit-source-id: a8223b2163c02fe4d306da91ad5a15a748c9382c","shortMessageHtmlLink":"Fix race conditions and add hooks (#500)"}},{"before":"cdc8a847942cde8dd1eb1395ca4f10d42491c425","after":"9f1b74ff06799edeed7786efc9a64f1947d01628","ref":"refs/heads/main","pushedAt":"2024-06-24T15:40:50.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"facebook-github-bot","name":"Facebook Community Bot","path":"/facebook-github-bot","primaryAvatarUrl":"https://github.com/avatars/u/6422482?s=80&v=4"},"commit":{"message":"Don't rely on current directory as base in file-system tests (#499)\n\nSummary:\nPull Request resolved: https://github.com/facebookincubator/TTPForge/pull/499\n\nTo de-flaky the tests\n\nhttps://www.internalfb.com/intern/test/281475092932540?ref_report_id=0\n\nDifferential Revision: D58868495\n\nfbshipit-source-id: d3821a9b553d0e63dafd0228ba10d23e4f3b5f47","shortMessageHtmlLink":"Don't rely on current directory as base in file-system tests (#499)"}},{"before":"5ae80162883543ecbfe95103e3fba3678867dfd7","after":"cdc8a847942cde8dd1eb1395ca4f10d42491c425","ref":"refs/heads/main","pushedAt":"2024-06-07T22:06:04.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"facebook-github-bot","name":"Facebook Community Bot","path":"/facebook-github-bot","primaryAvatarUrl":"https://github.com/avatars/u/6422482?s=80&v=4"},"commit":{"message":"Fix Flaky - TestFindFilePath (#498)\n\nSummary:\nPull Request resolved: https://github.com/facebookincubator/TTPForge/pull/498\n\nThe TestFindFilePath seems to have been failing for a long time, and has been disabled as a result.\n\nFrom what I could tell the majority of the failures were caused by line 107 of `common_test.go`\n\nError:\n\n```\nmkdir /data/sandcastle/boxes/eden-trunk-hg-fbcode-fbsource/buck-out/v2/gen/fbcode/fec7e7876e628ce7/security/redteam/purple_team/ttpforge/pkg/blocks/__blocks_test__/temp_test_directory: file exists\n```\nhttps://www.internalfb.com/intern/testinfra/diagnostics/15762598732684907.281475092932540.1717744299/\nhttps://www.internalfb.com/intern/testinfra/diagnostics/15762598732684907.281475092932540.1717744298/\netc...\n\nModifying `os.Mkdir` to `os.MkdirAll` should prevent an error from being thrown in the event that this directory already exists on the system.\n\nReviewed By: l50\n\nDifferential Revision: D58301576\n\nfbshipit-source-id: 871e316ade1b493d9866ea7fcefee417f578a44e","shortMessageHtmlLink":"Fix Flaky - TestFindFilePath (#498)"}},{"before":"4e24ca5d88ba3708e8da31c1a9096068d650bd29","after":"5ae80162883543ecbfe95103e3fba3678867dfd7","ref":"refs/heads/main","pushedAt":"2024-04-05T15:36:33.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"facebook-github-bot","name":"Facebook Community Bot","path":"/facebook-github-bot","primaryAvatarUrl":"https://github.com/avatars/u/6422482?s=80&v=4"},"commit":{"message":"Update public README.md with project history (#495)\n\nSummary:\nPull Request resolved: https://github.com/facebookincubator/TTPForge/pull/495\n\nThere seems to be some confusion circulating on LinkedIn about the history of this project - adding clarification to the README.md\n\nReviewed By: CrimsonK1ng\n\nDifferential Revision: D55750812\n\nfbshipit-source-id: 4623bfa0d2a3577068fc0ad14acc5de8d27f24ce","shortMessageHtmlLink":"Update public README.md with project history (#495)"}},{"before":"cbddffef186ce56c1e9859cb9075aeb1e2f7ded2","after":"4e24ca5d88ba3708e8da31c1a9096068d650bd29","ref":"refs/heads/main","pushedAt":"2024-04-05T11:06:30.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"facebook-github-bot","name":"Facebook Community Bot","path":"/facebook-github-bot","primaryAvatarUrl":"https://github.com/avatars/u/6422482?s=80&v=4"},"commit":{"message":"create ttp cmd not to fail if folder does not exists (#496)\n\nSummary:\nPull Request resolved: https://github.com/facebookincubator/TTPForge/pull/496\n\nThe create ttp cmd is failing if the folder where we want to create the new ttp does not exist:\n\n```\n./ttpforge create ttp ttps/nicola/my-ttp.yaml\nWARN No config file specified and default configuration file not found!\nWARN You probably want to run `ttpforge init`!\nWARN However, if you know what you are doing, then carry on :)\nERROR failed to run command:\n failed to create new TTP file: open ttps/nicola/my-ttp.yaml: no such file or directory\n\n```\n\nThis diff fixes the issue.\n\nReviewed By: d0n601\n\nDifferential Revision: D55757581\n\nfbshipit-source-id: 1ff904e347354c614b2d78b1167a6766fa2a81bf","shortMessageHtmlLink":"create ttp cmd not to fail if folder does not exists (#496)"}},{"before":null,"after":"3aee09eb974a51e23b132c586624335ef194a19d","ref":"refs/heads/export-D55757581","pushedAt":"2024-04-04T18:22:35.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"facebook-github-bot","name":"Facebook Community Bot","path":"/facebook-github-bot","primaryAvatarUrl":"https://github.com/avatars/u/6422482?s=80&v=4"},"commit":{"message":"create ttp cmd not to fail if folder does not exists\n\nSummary:\nThe create ttp cmd is failing if the folder where we want to create the new ttp does not exist:\n\n```\n[ngiacchetta@devvm1745.lla0 /data/users/ngiacchetta/nicola]$ ./ttpforge create ttp ttps/nicola/my-ttp.yaml\nWARN No config file specified and default configuration file not found!\nWARN You probably want to run `ttpforge init`!\nWARN However, if you know what you are doing, then carry on :)\nERROR failed to run command:\n failed to create new TTP file: open ttps/nicola/my-ttp.yaml: no such file or directory\n\n```\n\nThis diff fixes the issue.\n\nDifferential Revision: D55757581","shortMessageHtmlLink":"create ttp cmd not to fail if folder does not exists"}},{"before":"c5adb53c26a7082ca43dcaec369be31c0b74c7e0","after":"cbddffef186ce56c1e9859cb9075aeb1e2f7ded2","ref":"refs/heads/main","pushedAt":"2024-04-01T22:14:34.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"facebook-github-bot","name":"Facebook Community Bot","path":"/facebook-github-bot","primaryAvatarUrl":"https://github.com/avatars/u/6422482?s=80&v=4"},"commit":{"message":"Validate UUIDs in YAML (#494)\n\nSummary:\nX-link: https://github.com/facebookincubator/ForgeArmory/pull/111\n\nPull Request resolved: https://github.com/facebookincubator/TTPForge/pull/494\n\nAdding validation to check for UUIDs in TTP files if strict validation is specified.\n\nReviewed By: d3sch41n\n\nDifferential Revision: D54953656\n\nfbshipit-source-id: 792d6acb7bbe11e6da4ab8417534f6b108db3d04","shortMessageHtmlLink":"Validate UUIDs in YAML (#494)"}},{"before":"efc792751bc04a90109cd797d31f057934f3d38e","after":"c5adb53c26a7082ca43dcaec369be31c0b74c7e0","ref":"refs/heads/main","pushedAt":"2024-03-15T21:04:45.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"facebook-github-bot","name":"Facebook Community Bot","path":"/facebook-github-bot","primaryAvatarUrl":"https://github.com/avatars/u/6422482?s=80&v=4"},"commit":{"message":"Add API Version and UUID to Example TTPs (#493)\n\nSummary:\nPull Request resolved: https://github.com/facebookincubator/TTPForge/pull/493\n\nModified each file within `example-ttps` to include the new `api_version` and `uuid` tags.\n\nReviewed By: d3sch41n\n\nDifferential Revision: D54961591\n\nfbshipit-source-id: 569ba05aa5e253a913cf02944ce964d751c48ff4","shortMessageHtmlLink":"Add API Version and UUID to Example TTPs (#493)"}},{"before":"a3b5ad81bf17e05dbc0f5448cdec07e40ad033b8","after":"efc792751bc04a90109cd797d31f057934f3d38e","ref":"refs/heads/main","pushedAt":"2024-03-13T23:28:51.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"facebook-github-bot","name":"Facebook Community Bot","path":"/facebook-github-bot","primaryAvatarUrl":"https://github.com/avatars/u/6422482?s=80&v=4"},"commit":{"message":"Add `ttpforge create ttp` Cobra Command (#482)\n\nSummary:\nPull Request resolved: https://github.com/facebookincubator/TTPForge/pull/482\n\nProvide a convenient command for populating new metadata fields (api_version, uuid, requirements, etc) when creating new TTPS\n\nReviewed By: inesusvet\n\nDifferential Revision: D54027592\n\nfbshipit-source-id: 0b3c524ddfa81e34658e9d939bf6f41d401b1dd0","shortMessageHtmlLink":"Add ttpforge create ttp
Cobra Command (#482)"}},{"before":"f134eb59679b9991d6fe14f4aa7b281d7e45175e","after":"a3b5ad81bf17e05dbc0f5448cdec07e40ad033b8","ref":"refs/heads/main","pushedAt":"2024-03-13T15:04:18.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"facebook-github-bot","name":"Facebook Community Bot","path":"/facebook-github-bot","primaryAvatarUrl":"https://github.com/avatars/u/6422482?s=80&v=4"},"commit":{"message":"Update run-all-ttp-tests.sh (#492)\n\nSummary:\nPull Request resolved: https://github.com/facebookincubator/TTPForge/pull/492\n\nUpdate script to iterate over command line arguments in order to pass multiple directories for validation.\n\nReviewed By: d3sch41n\n\nDifferential Revision: D54753268\n\nfbshipit-source-id: 6487485ded83fb6ef2a33bc7a162cd9ff831eb81","shortMessageHtmlLink":"Update run-all-ttp-tests.sh (#492)"}},{"before":"03792f38829662f4c031dd7895287b44c39c6684","after":null,"ref":"refs/heads/export-D54090822","pushedAt":"2024-03-12T20:43:17.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"inesusvet","name":"Ivan Styazhkin","path":"/inesusvet","primaryAvatarUrl":"https://github.com/avatars/u/1741851?s=80&v=4"}},{"before":"35d0f83bfcf61a137d3355ce8f3d98c12850059a","after":"f134eb59679b9991d6fe14f4aa7b281d7e45175e","ref":"refs/heads/main","pushedAt":"2024-03-12T20:28:57.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"facebook-github-bot","name":"Facebook Community Bot","path":"/facebook-github-bot","primaryAvatarUrl":"https://github.com/avatars/u/6422482?s=80&v=4"},"commit":{"message":"Action Method Order Constitency Pass (#491)\n\nSummary:\nPull Request resolved: https://github.com/facebookincubator/TTPForge/pull/491\n\nEach action having its methods in a different order was driving me crazy. Small cleanup to generally try to order them by execution order.\n\nReviewed By: inesusvet\n\nDifferential Revision: D54090822\n\nfbshipit-source-id: 9cfb5611684a60a314c0c636cefacaabcc14c711","shortMessageHtmlLink":"Action Method Order Constitency Pass (#491)"}},{"before":"bdf432f618646b9d6f8e50c5995d647322d522cd","after":"03792f38829662f4c031dd7895287b44c39c6684","ref":"refs/heads/export-D54090822","pushedAt":"2024-03-12T18:26:55.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"inesusvet","name":"Ivan Styazhkin","path":"/inesusvet","primaryAvatarUrl":"https://github.com/avatars/u/1741851?s=80&v=4"},"commit":{"message":"Action Method Order Constitency Pass (#491)\n\nSummary:\n\nEach action having its methods in a different order was driving me crazy. Small cleanup to generally try to order them by execution order.\n\nReviewed By: inesusvet\n\nDifferential Revision: D54090822","shortMessageHtmlLink":"Action Method Order Constitency Pass (#491)"}},{"before":"06e44dcdaefc113a81cae619d2ffaaaa627f5714","after":"bdf432f618646b9d6f8e50c5995d647322d522cd","ref":"refs/heads/export-D54090822","pushedAt":"2024-03-12T17:54:15.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"inesusvet","name":"Ivan Styazhkin","path":"/inesusvet","primaryAvatarUrl":"https://github.com/avatars/u/1741851?s=80&v=4"},"commit":{"message":"Action Method Order Constitency Pass\n\nSummary: Each action having its methods in a different order was driving me crazy. Small cleanup to generally try to order them by execution order.\n\nReviewed By: inesusvet\n\nDifferential Revision: D54090822","shortMessageHtmlLink":"Action Method Order Constitency Pass"}},{"before":"9d547bfc2cd8e553099e9c0f5ee359a158c71e64","after":"35d0f83bfcf61a137d3355ce8f3d98c12850059a","ref":"refs/heads/main","pushedAt":"2024-03-01T12:32:31.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"facebook-github-bot","name":"Facebook Community Bot","path":"/facebook-github-bot","primaryAvatarUrl":"https://github.com/avatars/u/6422482?s=80&v=4"},"commit":{"message":"Follow up changes\n\nSummary:\nRename file, actualize success message.\n\nReference to open issue about file naming in golang projects\nhttps://github.com/golang/go/issues/36060\n\nReviewed By: l50\n\nDifferential Revision: D54360635\n\nfbshipit-source-id: 1631f876273e89baa53755254fdc57d7d662dd4f","shortMessageHtmlLink":"Follow up changes"}},{"before":"80219a31b33f313c32ddf8880456cf225dd99734","after":"d9621a85b92cbd4171e6aa945f461b51f9e68aff","ref":"refs/heads/export-D54360635","pushedAt":"2024-03-01T09:52:38.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"inesusvet","name":"Ivan Styazhkin","path":"/inesusvet","primaryAvatarUrl":"https://github.com/avatars/u/1741851?s=80&v=4"},"commit":{"message":"Follow up changes\n\nSummary:\nRename file, actualize success message.\n\nReference to open issue about file naming in golang projects\nhttps://github.com/golang/go/issues/36060\n\nReviewed By: l50\n\nDifferential Revision: D54360635","shortMessageHtmlLink":"Follow up changes"}},{"before":"88d5d66665030d81083b99a65a83dc7ab6e115b1","after":"06e44dcdaefc113a81cae619d2ffaaaa627f5714","ref":"refs/heads/export-D54090822","pushedAt":"2024-02-29T19:41:57.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"inesusvet","name":"Ivan Styazhkin","path":"/inesusvet","primaryAvatarUrl":"https://github.com/avatars/u/1741851?s=80&v=4"},"commit":{"message":"Action Method Order Constitency Pass\n\nSummary: Each action having its methods in a different order was driving me crazy. Small cleanup to generally try to order them by execution order.\n\nReviewed By: inesusvet\n\nDifferential Revision: D54090822","shortMessageHtmlLink":"Action Method Order Constitency Pass"}},{"before":null,"after":"88d5d66665030d81083b99a65a83dc7ab6e115b1","ref":"refs/heads/export-D54090822","pushedAt":"2024-02-29T18:02:55.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"facebook-github-bot","name":"Facebook Community Bot","path":"/facebook-github-bot","primaryAvatarUrl":"https://github.com/avatars/u/6422482?s=80&v=4"},"commit":{"message":"Action Method Order Constitency Pass\n\nSummary: Each action having its methods in a different order was driving me crazy. Small cleanup to generally try to order them by execution order.\n\nReviewed By: inesusvet\n\nDifferential Revision: D54090822","shortMessageHtmlLink":"Action Method Order Constitency Pass"}},{"before":"ee90ebcf3309818c2138be91626fb2312c709c6e","after":"80219a31b33f313c32ddf8880456cf225dd99734","ref":"refs/heads/export-D54360635","pushedAt":"2024-02-29T17:38:31.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"inesusvet","name":"Ivan Styazhkin","path":"/inesusvet","primaryAvatarUrl":"https://github.com/avatars/u/1741851?s=80&v=4"},"commit":{"message":"Follow up changes\n\nSummary:\nRename file, actualize success message.\n\nReference to open issue about file naming in golang projects\nhttps://github.com/golang/go/issues/36060\n\nDifferential Revision: D54360635","shortMessageHtmlLink":"Follow up changes"}},{"before":null,"after":"ee90ebcf3309818c2138be91626fb2312c709c6e","ref":"refs/heads/export-D54360635","pushedAt":"2024-02-29T16:40:02.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"inesusvet","name":"Ivan Styazhkin","path":"/inesusvet","primaryAvatarUrl":"https://github.com/avatars/u/1741851?s=80&v=4"},"commit":{"message":"Follow up changes\n\nSummary: Rename file, actualize success message\n\nDifferential Revision: D54360635","shortMessageHtmlLink":"Follow up changes"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEpX8qowA","startCursor":null,"endCursor":null}},"title":"Activity · facebookincubator/TTPForge"}